Имя: Пароль:
1C
 
Когда формируются проводки в Авансовом отчёте в конфигурации Комплексная автоматизация 1.1
,
0 Elkin-Palkin
 
20.04.18
14:42
Хочу отловить момент, когда формируются проводки в документе Авансовый отчёт. Конфигурация Комплексная автоматизация 1.1.101.1 практически типовая.
С точки зрения моих знаний проводки могут формироваться:
а) в модуле документа, процедура ОбработкаПроведения()
б) в подписке на событие ОбработкаПроведения

Установил в самом конце в процедуре ОбработкаПроведения() точку останова. Смотрю Движения.Хозрасчетный.Количество(). Равно 0. Проводок не вижу.
Перебрал подписки на события, где источником является документ АвансовыйОтчет и событие "ОбработкаПроведения". Таковых нашёл три.
В каждом из трёх обработчиков этого события поставил точку останова. Заходит отладчик, останавливается - т.е. я правильно идентифицировал их. Но если хочу посмотреть количество проводок с помощью Источник.Движения.Хозрасчетный.Количество(), то получаю 0. Однако документ проводки даёт! Подскажите где рыть?
1 shuhard
 
20.04.18
14:44
(0) используй точку останова в модуле Рг Хозрасчетный
2 Вафель
 
20.04.18
14:46
там может отложенные движения какие
3 Elkin-Palkin
 
20.04.18
14:50
(1) В модуле набора записей регистра бухгалтерии Хозрасчетный в данной конфигурации есть только одна процедура - ПередЗаписью()

В ней в начала есть кусок
Если Количество()>0 Тогда

Иначе Возврат;
Конец

Так вот это самое Количество() таки равно 0. Поэтому там ничего не делается и происходит "Возврат".
4 Elkin-Palkin
 
20.04.18
14:51
(2) Так проводки в документе я вижу сразу же, моментально, после нажатия на кнопку "ОК".
5 shuhard
 
20.04.18
15:45
(3) там два обращения, при втором будет не 0
6 Elkin-Palkin
 
23.04.18
06:41
(5) Поставил точку останова в самом начале процедуры ПередЗаписью() модуля набора записей регистра бухгалтерии Хозрасчетный. Нажал "ОК" в Авансовом отчёте. Остановка на точке произошла только один раз. Второй раз в эту процедуру программа не заходила. Поэтому ответ не понял.
7 drei
 
23.04.18
06:46
Включи замер производительности.
8 Elkin-Palkin
 
23.04.18
07:39
(7) Зачем? Что я там увижу в контексте своего вопроса?
Ну включу, а дальше что мне делать, чтобы увидеть момент формирования проводок?
9 shuhard
 
23.04.18
07:39
(6) брехня
10 Сти
 
23.04.18
08:25
(0) Знания надо периодически пополнять!
3) Проводки могут формироваться где угодно, даже если не вызывается обработка проведения. Хоть из внешней обработки. Хотя это и неприлично как-то.

В данном случае проводки формируются в коде, вызываемом из обработки проведения и время от времени записываются в недрах общих модулей. Например, при отражении в авансовом отчете поступления товаров на склад они формируются в УправлениеЗапасамиПартионныйУчет.СформироватьПроводкиВсеВидыУчета(). Глянь в конец модуля, там что-то типа

Для Каждого ТекущееДвижение Из Движения Цикл
        Если ТекущееДвижение.Значение.Модифицированность() Тогда
            ТекущееДвижение.Значение.Записать(Ложь);
        КонецЕсли;
    КонецЦИкла;

Поставь точку останова на этом деле, посмотри на движения, удивись )

По взаиморасчетам то же самое, да и по всему остальному.
2 + 2 = 3.9999999999999999999999999999999...