Эта разработка позволит проделать такую операцию на SQL-базах
Посик ссылок успешно нашел нам все ссылки на элемент справочника, и возникла необходимость этот элемент заменить на другой. Перепроводить документы нельзя.Типовая замена элемента не подошла т.к. нужно было заменить элемент не только в реквизитах но и в проводках а так же в движениях по регистрам. Так родилась эта обработка.
— Поиск ссылок на объекты осуществляется с помощью прямых запросов.
— Замена ссылок в рекивзитах документов и справочников происходит при помощи штатной замены значения реквизита.
— В проводках реквизиты так же меняются в штатном режиме.
— В регистрах замена значений происходит при помощи прямого запроса.
— После замены необходим пересчет итогов по регистрам.
Ага, зачет менять измерение регистра в движениях, при этом не заботясь об итогах регистра.
СпрДоговоры = СоздатьОбъект(«Справочник.Договора»);
{ЗАМЕНА.ERT(504)}: Неудачная попытка создания объекта (Справочник.Договора)
(1) Не учел. Спасибо за замечание. Значит потребуется пересчет итогов.
Опер = СоздатьОбъект(«Операция»);
{ЗАМЕНА.ERT(516)}: Неудачная попытка создания объекта (Операция)
(2) Не до конца от своей задачи отвязал. Прошу прощения. Обновил версию.
+ Не учитываются периодические величины, установленные документом.
Их тоже нужно прямым запросом апдейтить.
Да, пересчет нужен как регистров, так и бух итогов..
Либо толкай их сам прямым запросом.
Да и, замену ссылок во всех табличках лучше тоже проапдейтить прямым запросом — всё быстрее.
Делал такое же:http://infostart.ru/public/66865/
(0) Добавь функцию глРазложить — а то попробовать обработку не могу 🙁
(10) Добавил.
(11) В целом довольно таки шустро. Правильность не анализировал, но смутили два момента:
1. Обработка не проходит синтакс.контроль… (мелочь конечно, но все-таки…)
2. State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name ‘DTSC3’.
Сорри, но на плюс не тянет 🙁
(12) 1. Исправлена синтаксическая ошибка. Ночь у нас уже 🙂
2. Добавил определение максимального количества субконто.
😥
Опер = СоздатьОбъект(«Операция»);
{ЗАМЕНА.ERT(516)}: Неудачная попытка создания объекта (Операция)
А так конечно + 🙂
тзРеквизитовПроверки = СоздатьОбъект(«ИндексированнаяТаблица»);
{C:USERSАДМИНИСТРАТОРDESKTOPЗАМЕНА ЭЛЕМЕНТА.ERT(346)}: Неудачная попытка создания объекта (ИндексированнаяТаблица)
прям беда(((
(15) Обработка использует 1С++, без этого замена и поиск ссылок работать не будет. Предполагается, что компонента запускается при старте базы.