Имя: Пароль:
1C
1С v8
Корректировка записей регистра сведений обработкой
0 Молодой 1Снег
 
14.07.11
20:26
Есть регистр сведений. Подчиненный регистратору. Возможно ли внести изменения в него не перепроводя сам документ?
Написал такой код в обработке. Но изменения в регистр не вносятся.


   Док = документы.ВводНачальныхОстатков.Выбрать(,);
   
   Пока Док.Следующий() Цикл
       Если не док.Проведен тогда
           продолжить;
       КонецЕсли;
       ДокЗап = док.ПолучитьОбъект();
           
       НаборДвижений    = ДокЗап.Движения.МестонахождениеОСБухгалтерскийУчет;
       ТаблицаДвижений  = НаборДвижений.Выгрузить();
       ТекПодразделение = Подр;
       
       Для Каждого СтрокаОС Из ДокЗап.ОС Цикл
           
           НоваяСтрока = ТаблицаДвижений.Добавить();
           НоваяСтрока.Период           = ДокЗап.Дата;
           НоваяСтрока.Организация      = ДокЗап.Организация;
           НоваяСтрока.ОсновноеСредство = СтрокаОС.ОсновноеСредство;
           НоваяСтрока.МОЛ              = СтрокаОС.МОЛРегл;
           НоваяСтрока.Местонахождение  = Подр;
           
       КонецЦикла;
       
       НаборДвижений.Загрузить(ТаблицаДвижений);
       НаборДвижений.УстановитьАктивность(Истина);
       
       
   КонецЦикла
1 Молодой 1Снег
 
14.07.11
20:30
Дело в том, что бухи в свое время забыли заполнить реквизит Подразделение в документе "Ввод начальных остатков ОС". Документ уже в закрытом периоде и изменить его нельзя.
Теперь у них не списываются ОС, ругается что не заполнено Местонахождение.
2 73
 
14.07.11
20:30
А где набор записывается?
3 PR
 
14.07.11
20:31
А прочитать где?
4 Молодой 1Снег
 
14.07.11
20:33
Понял, код не верный.
Сначала нужно прочитать значения регистра. Изменить одно измерение и записать. Так?
5 PR
 
14.07.11
20:34
(4) Можно и так.
Но вообще кошернее создать набор записей, установить отбор по регистратору, прочитать, изменить и записать.
6 Молодой 1Снег
 
14.07.11
20:44
Сделал по-другому. Теперь не устанавливается отбор по регистратору. Что не так делаю?


   Док = документы.ВводНачальныхОстатков.Выбрать(,);
   
   Пока Док.Следующий() Цикл
       Если не док.Проведен тогда
           продолжить;
       КонецЕсли;
       ДокЗап = док.ПолучитьОбъект();
       
       НаборЗаписей = РегистрыСведений.МестонахождениеОСБухгалтерскийУчет.СоздатьНаборЗаписей();
       НаборЗаписей.Отбор.Регистратор.Установить(ДокЗап);
       НаборЗаписей.Прочитать();
       Для Каждого Запись Из НаборЗаписей Цикл
           Запись.Местонахождение = Подр;
       КонецЦикла;
       НаборЗаписей.Записать();
       
   КонецЦикла
7 PR
 
14.07.11
20:46
(6) НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
8 Молодой 1Снег
 
14.07.11
20:48
Да точно, ссылка! Спасибо!!!