19.04.2002, 19:56 | #1 |
Продавец игрушек
|
Ошибка при переименование номенклатуры и не только
Есть в Аксапте такая возможность: переименование ключевых полей.
При этом возникает обновление всех ссылок. Например, при переименовании номенклатуры вызывается метод <b>InventTable::renamePrimaryKey</b>, который по умолчанию обновляет все связанные ссылки и может сделать что-то ещё (у нас он обновляет связи в классификаторе). Проблема и ошибка (как мне кажется) Аксапты в том, что: Обновление ссылок происходит в пределах одной компании. Т.е., если у нас есть две компании с общей номенклатурой (InventTable), но разными проводками по номенклатуре (InventTrans), то, переименовывая номенклату, находясь в одной компании, мы получаем оборванные ссылки Номенклатура-Проводки в другой компании, поскольку там проводки не обновились. Думаю, это проявляется не только в номенклатуре. Есть соображения?
__________________
С уважением, Роман Кошелев. |
|
19.04.2002, 20:16 | #2 |
Участник
|
Во как... Спасибо, буду знать.
Переименовать вручную. Только юзай doupdate(), а не update() Какие таблицы надо затрагивать видно в перекрестных ссылках или в Visual MorphXplorer |
|
19.04.2002, 20:37 | #3 |
Продавец игрушек
|
Как программным способом узнать, какие таблицы и какие поля в них обновлять?
__________________
С уважением, Роман Кошелев. |
|
19.04.2002, 20:58 | #4 |
Участник
|
а зачем программным?
ты себе жизнь не усложняешь? сделай job на изменение кода в inventTable. Перечисли в этом job'е все связанные таблицы (пусть их будет хоть 100). Запускай его при необходимости. Будет необходимость в изменении кода другой таблицы - сделаешь другой job. Время программирования таких job'ов - максимум полчаса. А вот если делать универсальный job... Не знаю сколько времени будешь разбирать связи в AOTе... По-моему, в данном случае рациональнее сделать десяток специализированных job'ов, чем один универсальный. |
|
19.04.2002, 21:05 | #5 |
Продавец игрушек
|
Никогда не работал с Job'ами. Для чего они нужны?
Что в них писать? Есть пример?
__________________
С уважением, Роман Кошелев. |
|
19.04.2002, 21:08 | #6 |
Участник
|
Хм...
класс - набор методов. Запустить класс "вручную" пролематично. Если тебе нужен ОДИН независимый метод, который можно легко запускать руками, то это как раз job. Job можно запусать и из меню. Однако, если возникает такая необходимость, то это первый признак того, то функционал надо переносить в класс. |
|
25.04.2002, 16:57 | #7 |
Продавец игрушек
|
Исправил
Метод исправления ошибки:
1. Переименовываем номенклатуру, находясь в одной компании. При этом теряются связи в другой компании. 2. Переходим в эту несчастную компанию, переименовываем номенклатуру в старое значение (при этом подцепляются связи в новой и отцепляются в старой компаниях). 3. Завершающим шагом в третий раз переименовываем (в новое название). Все связи во всех коомпаниях сохранены. Очевидно, что этот метод подходит и для N>2 компаний. К сообщению присоединён xpo-пример. Вот его код: PHP код:
Можно переопределить это всё прямо в SysRecordInfo, но мне некогда. А так выглядит реальное пакетное переименовывание номенклатуры (10 сек на позицию)
__________________
С уважением, Роман Кошелев. |
|
26.04.2002, 11:02 | #8 |
Moderator
|
Прошу прощения, Роман, за вопрос не по теме, но:
У Вас на форме расположены три кнопки. Логично предположить, что процедура запускается нажатием кнопки "Start". Судя по другим кнопкам, система каким-то образом перехватывает нажатие на эти самые другие кнопки ВО ВРЕМЯ работы процедуры. Если это так, то как это запрограммировать? Ведь обычно во время какой-либо длительной операции АХАРТА не отвечает на внешние события. |
|
26.04.2002, 14:36 | #9 |
Продавец игрушек
|
Дрон,
Картинка, которую вы видите, суть форма HB_LongOperation, которая используется нами для контроля над длительными операциями. Проект переименования номенклатуры задействует эту форму. Проект переименования не универсальный, так что будьте аккуратнее. <hr> Проект "HB_Tutorial_LongOperation": http://www.axforum.info/forums/showt...s=&postid=1919 Проект "Переименование номенклатуры": http://www.axforum.info/forums/showt...=&threadid=700
__________________
С уважением, Роман Кошелев. |
|
26.04.2002, 15:42 | #10 |
Moderator
|
Спасибо, то что надо!
|
|
22.10.2004, 15:38 | #11 |
программист
|
Что-то не пойму....
Добрый день!
Прочитал ветку и решил проверить свою старую модификацию... И, на удивление, все прошло удачно! Все ссылки были сохранены в других компаниях... Может я что-то не так понял? Тестировал на 2.5. Заранее спасибо... |
|
22.10.2004, 16:51 | #12 |
программист
|
Еще раз здрасте...
Задам свой вопрос поточнее... Я меняю ключевое поле ( ItemId - номер номенклатуры ) в одной компании... При этом меняются ВСЕ ссылки на номенклатуру... по ВСЕМ компаниям во ВСЕХ таблицах (отборочные накладные, например). InventTrans у нас общая (может ошибка касается только складских проводок?). Разъясните, пожалуста... Ну очень важно... |
|