Замена элементов в реквизитах и проводках документов, реквизитах справочников и движениях регистров. (SQL)

Иногда возникает необходимость заменить один элемент справочника на другой по всей конфигурации. При этом нежелательно перепроводить документы.
Эта разработка позволит проделать такую операцию на SQL-базах

Посик ссылок успешно нашел нам все ссылки на элемент справочника, и возникла необходимость этот элемент заменить на другой. Перепроводить документы нельзя.Типовая замена элемента не подошла т.к. нужно было заменить элемент не только в реквизитах но и в проводках а так же в движениях по регистрам. Так родилась эта обработка.

 

— Поиск ссылок на объекты осуществляется с помощью прямых запросов.

— Замена ссылок в рекивзитах документов и справочников происходит при помощи штатной замены значения реквизита.

— В проводках реквизиты так же меняются в штатном режиме.

— В регистрах замена значений происходит при помощи прямого запроса.

— После замены необходим пересчет итогов по регистрам.

 

 

16 Comments

  1. Ёпрст

    Ага, зачет менять измерение регистра в движениях, при этом не заботясь об итогах регистра.

    Reply
  2. Ёпрст

    СпрДоговоры = СоздатьОбъект(«Справочник.Договора»);

    {ЗАМЕНА.ERT(504)}: Неудачная попытка создания объекта (Справочник.Договора)

    Reply
  3. MadDAD

    (1) Не учел. Спасибо за замечание. Значит потребуется пересчет итогов.

    Reply
  4. Ёпрст

    Опер = СоздатьОбъект(«Операция»);

    {ЗАМЕНА.ERT(516)}: Неудачная попытка создания объекта (Операция)

    Reply
  5. MadDAD

    (2) Не до конца от своей задачи отвязал. Прошу прощения. Обновил версию.

    Reply
  6. Ёпрст

    + Не учитываются периодические величины, установленные документом.

    Их тоже нужно прямым запросом апдейтить.

    Reply
  7. Ёпрст

    Да, пересчет нужен как регистров, так и бух итогов..

    Либо толкай их сам прямым запросом.

    Reply
  8. Ёпрст

    Да и, замену ссылок во всех табличках лучше тоже проапдейтить прямым запросом — всё быстрее.

    Reply
  9. Noy

    Делал такое же: http://infostart.ru/public/66865/

    Reply
  10. Noy

    (0) Добавь функцию глРазложить — а то попробовать обработку не могу 🙁

    Reply
  11. MadDAD

    (10) Добавил.

    Reply
  12. Noy

    (11) В целом довольно таки шустро. Правильность не анализировал, но смутили два момента:

    1. Обработка не проходит синтакс.контроль… (мелочь конечно, но все-таки…)

    2. State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name ‘DTSC3’.

    Сорри, но на плюс не тянет 🙁

    Reply
  13. MadDAD

    (12) 1. Исправлена синтаксическая ошибка. Ночь у нас уже 🙂

    2. Добавил определение максимального количества субконто.

    Reply
  14. misha226

    😥

    Опер = СоздатьОбъект(«Операция»);

    {ЗАМЕНА.ERT(516)}: Неудачная попытка создания объекта (Операция)

    А так конечно + 🙂

    Reply
  15. Ламия

    тзРеквизитовПроверки = СоздатьОбъект(«ИндексированнаяТаблица»);

    {C:USERSАДМИНИСТРАТОРDESKTOPЗАМЕНА ЭЛЕМЕНТА.ERT(346)}: Неудачная попытка создания объекта (ИндексированнаяТаблица)

    прям беда(((

    Reply
  16. MadDAD

    (15) Обработка использует 1С++, без этого замена и поиск ссылок работать не будет. Предполагается, что компонента запускается при старте базы.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *