Имя: Пароль:
1C
1С v8
Обработка ПоискИЗаменаЗначений
0 ezmemo
 
08.02.12
14:44
Почему обработка ПоискИЗаменаЗначений
не ищет изменения и не исправляет регистры?
Исправлять, так все!

Например мне нужно во всей базе заменить одного Контрагента на другого.
И хотелось бы после замены не перепроводить измененные документы.
1 МурЬка
 
08.02.12
14:52
Почему не исправляет? Она вроде в движениях правит.
2 МурЬка
 
08.02.12
14:53
Абсолютно случайно она у меня даже и открыта...

           Для Каждого Движение ИЗ СтрокаТаблицы.Метаданные.Движения Цикл
               
               ЭтоДвижениеРегистраБухгалтерии = Метаданные.РегистрыБухгалтерии.Содержит(Движение);
               ЕстьКорреспонденция = ЭтоДвижениеРегистраБухгалтерии и Параметры[Движение.Имя + "Корреспонденция"];
               
               НаборЗаписей  = Параметры.Объект.Движения[Движение.Имя];
               НаборЗаписей.Прочитать();
               НадоЗаписывать = Ложь;
               ТаблицаНабора = НаборЗаписей.Выгрузить();
               Для Каждого Измерение ИЗ Движение.Измерения Цикл
                   Если Измерение.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
                       СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Измерение.Имя);
                       Пока СтрокаТабЧасти <> Неопределено Цикл
                           СтрокаТабЧасти[Измерение.Имя] = ПравильныйЭлемент;
                           НадоЗаписывать = Истина;
                           СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Измерение.Имя);
                       КонецЦикла;
                   КонецЕсли;
               КонецЦикла;
               
               ЕСли Метаданные.РегистрыСведений.Содержит(Движение) Тогда
                   Для Каждого Ресурс ИЗ Движение.Ресурсы Цикл
                       Если Ресурс.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
                           СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Ресурс.Имя);
                           Пока СтрокаТабЧасти <> Неопределено Цикл
                               СтрокаТабЧасти[Ресурс.Имя] = ПравильныйЭлемент;
                               НадоЗаписывать = Истина;
                               СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Ресурс.Имя);
                           КонецЦикла;
                       КонецЕсли;
                   КонецЦикла;
               КонецЕсли;
               
               Для Каждого Реквизит ИЗ Движение.Реквизиты Цикл
                   Если Реквизит.Тип.СодержитТип(ТипЗнч(Ссылка)) Тогда
                       СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Реквизит.Имя);
                       Пока СтрокаТабЧасти <> Неопределено Цикл
                           СтрокаТабЧасти[Реквизит.Имя] = ПравильныйЭлемент;
                           НадоЗаписывать = Истина;
                           СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, Реквизит.Имя);
                       КонецЦикла;
                   КонецЕсли;
               КонецЦикла;
               
               Если Метаданные.РегистрыБухгалтерии.Содержит(Движение) Тогда
                   
                   Для ИндексСубконто = 1 по Параметры[Движение.Имя + "Субконто"] Цикл
                       Если ЕстьКорреспонденция Тогда
                           СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоДт"+ИндексСубконто);
                           Пока СтрокаТабЧасти <> Неопределено Цикл
                               СтрокаТабЧасти["СубконтоДт"+ИндексСубконто] = ПравильныйЭлемент;
                               НадоЗаписывать = Истина;
                               СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоДт"+ИндексСубконто);
                           КонецЦикла;
                           СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоКт"+ИндексСубконто);
                           Пока СтрокаТабЧасти <> Неопределено Цикл
                               СтрокаТабЧасти["СубконтоКт"+ИндексСубконто] = ПравильныйЭлемент;
                               НадоЗаписывать = Истина;
                               СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "СубконтоКт"+ИндексСубконто);
                           КонецЦикла;                                
                       Иначе                            
                           СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "Субконто"+ИндексСубконто);
                           Пока СтрокаТабЧасти <> Неопределено Цикл
                               СтрокаТабЧасти["Субконто"+ИндексСубконто] = ПравильныйЭлемент;
                               НадоЗаписывать = Истина;
                               СтрокаТабЧасти = ТаблицаНабора.Найти(Ссылка, "Субконто"+ИндексСубконто);
                           КонецЦикла;                            
                       КонецЕсли;                        
                   КонецЦикла;                    
               КонецЕсли;
                               
               
               Если НадоЗаписывать Тогда
                   НаборЗаписей.Загрузить(ТаблицаНабора);
                   Если ОтключатьКонтрольЗаписи Тогда
                       НаборЗаписей.ОбменДанными.Загрузка = Истина;
                   КонецЕсли;
                   Попытка
                       НаборЗаписей.Записать();
                   Исключение
                       БылиИсключения = Истина;
                       Если ВыполнятьВТранзакции Тогда
                           Перейти ~ОТКАТ;
                       КонецЕсли;
                   КонецПопытки;
               КонецЕсли;
           КонецЦикла;
3 ezmemo
 
08.02.12
15:37
Наверно у меня старая версия.

Сейчас попробую.
Результаты сообщу.
Независимо от того, куда вы едете — это в гору и против ветра!