Имя: Пароль:
1C
1С v8
Задвоение движений
0 Andrey77
 
30.10.12
13:47
Добрый день. Подскажите, почему в обычной открытой форме при проведении документа задваиваются движения, а в управляемой нет? Спасибо.
1 Нуф-Нуф
 
30.10.12
13:50
отладчик наше все
2 Andrey77
 
30.10.12
13:52
:)
3 Нуф-Нуф
 
30.10.12
13:54
че ржешь. лезь в отладчик :))))
4 Andrey77
 
30.10.12
13:55
В принципе, перед записью движений можно просто их очищать. Но интересно, почему происходит собственно задвоение. Именно, когда открыта форма. Из списка документ перепроводится нормально, а вот когда открыта форма, такая вот ерунда.
Модуль проведения прост:
   // регистр ОстаткиНоменклатуры Приход
   Движения.ОстаткиНоменклатуры.Записывать = Истина;
   Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
       Движение = Движения.ОстаткиНоменклатуры.Добавить();
       Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
       Движение.Период = Дата;
       Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
       Движение.Склад = Склад;
       Движение.Партия = Ссылка;
       Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;
       Движение.Себестоимость = ТекСтрокаСписокНоменклатуры.Сумма;
   КонецЦикла;
5 Andrey77
 
30.10.12
15:49
Все. Вроде бы нашел, почему. Если кому интересно (вдруг, кто будет искать):

Очистка движений в модуле (которая  реализована в конструкторе и которую рекомендуется реализовать в модулях разработчикам конфигураций) необходима для поддержки многократного проведения документа одним объектом (экземпляром объекта в памяти), чтобы не происходила повторная запись движений. Это требуется, прежде всего, для работы обычных форм, так как они не создают каждый раз объект. © Нуралиев С.
Программист всегда исправляет последнюю ошибку.