Имя: Пароль:
1C
 
Странный код в Документ.ЗаказПокупателя
,
0 miklenew
 
04.12.15
13:18
Текст тру 1С-ника (штатный)    
Если Проведен Тогда
    НачатьТранзакцию();

    НаборОстаткиТоваров = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();
    НаборОстаткиТоваров.Отбор.Регистратор.Установить(Ссылка);
    НаборОстаткиТоваров.Записать();
    НаборЗаказыПоставщикам = РегистрыНакопления.РазмещениеЗаказовПокупателей.СоздатьНаборЗаписей();
    НаборЗаказыПоставщикам.Отбор.Регистратор.Установить(Ссылка);
    НаборЗаказыПоставщикам.Записать();
КонецЕсли;

ЗаполнитьТабличныеЧастиПередПроведениемУпр(СтруктураПараметров);

Если Проведен Тогда
    ОтменитьТранзакцию();
КонецЕсли;

Текст, который написал бы я:
Если Проведен Тогда

    НаборОстаткиТоваров = РегистрыНакопления.ТоварыВРезервеНаСкладах.СоздатьНаборЗаписей();
    НаборОстаткиТоваров.Отбор.Регистратор.Установить(Ссылка);
    НаборОстаткиТоваров.Записать();
    НаборЗаказыПоставщикам = РегистрыНакопления.РазмещениеЗаказовПокупателей.СоздатьНаборЗаписей();
    НаборЗаказыПоставщикам.Отбор.Регистратор.Установить(Ссылка);
    НаборЗаказыПоставщикам.Записать();

    ЗаполнитьТабличныеЧастиПередПроведениемУпр(СтруктураПараметров);
КонецЕсли;

Но так как написано именно так как написано. Не пойму в чём глубокий смысл штатного кода?
Документ.ЗаказПокупателя -> Кнопка Заполнить и провести
1 Горогуля
 
04.12.15
13:20
да
2 miklenew
 
04.12.15
13:22
Описался. Во втором блоке. Тот что мой. Если не Проведен тогда
3 Горогуля
 
04.12.15
13:22
да пофиг. да
4 miklenew
 
04.12.15
13:23
(3) Гуляй
5 Горогуля
 
04.12.15
13:24
(4) ты мне не указ
6 mikeA
 
04.12.15
13:33
(0) у тебя ЗаполнитьТабличныеЧастиПередПроведениемУпр будет выполняться только когда документ не проведён
в оригинале выполняется всегда
7 mikeA
 
04.12.15
13:36
(6)+ видимо в этой процедуре данные из регистров РазмещениеЗаказовПокупателей и ТоварыВРезервеНаСкладах должны браться запросом БЕЗ УЧЁТА движений этого документа
отсюда и фокусы с транзакцией
8 aleks_default
 
04.12.15
13:38
Смысл кода в том чтобы очистить движения документа перед проведением если он раньше был проведен.
А ты очищаешь итак пустые наборы.
9 miklenew
 
04.12.15
13:53
Всё разобрался при откате транзакции отменяться все действия(все сохранённые действия). А документ объект ещё не записывался. Поэтому он останется неоткаченым
2 + 2 = 3.9999999999999999999999999999999...