Имя: Пароль:
1C
1С v8
УПП. Где происходит запись движений в регистр накопления "Расчеты с контрагентами".
,
0 ass_kak_dollar
 
12.02.21
11:09
В процедуре "обработка проведения" документа "Приходный кассовый ордер" формируется таблица для движений. После срабатывает подписка "ПередЗаписьюРегистраНакопленияДатаЗапретаРедактирования". Она ссылается на функцию общего модуля НастройкаПравДоступа.ПередЗаписьюРегистраНакопленийПроверкаДоступностиПериода. В ней запись движения не происходит (проверено и перепроверено). Но сразу после неё отладчик вываливается в функцию "ПослеЗаписи" формы приходника и запись уже существует. Подскажите куда искать =(
1 DrShad
 
12.02.21
11:13
ДвиженияПоРегистрамОперативныхВзаиморасчетов
2 ass_kak_dollar
 
13.02.21
14:07
(1) движения помещаются в таблицу, но еще не записываются
3 acht
 
13.02.21
14:44
(0) Включи замер производительности, отключи замер производительности
4 ass_kak_dollar
 
13.02.21
16:36
(3) пытался, не помогло
5 Cthulhu
 
13.02.21
16:44
УправлениеВзаиморасчетами.ОтражениеОплатыВРегистреОперативныхРасчетовПоДокументам ?.......
6 ass_kak_dollar
 
13.02.21
17:10
(5) нет

Что удалось выяснить: после выполнения обработки проведения и соответственно загрузки таблицы движений, срабатывает подписка на события "ПередЗаписьюРегистраНакопленияДатаЗапретаРедактирования"

вот обработчик этой подписки:

Процедура ПередЗаписьюРегистраНакопленийПроверкаДоступностиПериода(Источник, Отказ, Замещение) Экспорт
    
    Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    ПроверкаПериодаЗаписейРегистров(Источник, Отказ, "РегистрНакопления");    
    #Если НЕ ВнешнееСоединение Тогда
        Если Отказ Тогда
            Сообщить("Редактирование данных этого периода запрещено. Изменения не могут быть записаны...", СтатусСообщения.Важное);
        КонецЕсли;
    #КонецЕсли
КонецПроцедуры

На последней строке кода данные ещё не записаны, но когда перехожу на следующую итерацию (проверяется следующий регистр) данные уже есть. Больше никуда отладчик не ходит. Вываливается в ПослеЗаписи документа по окончанию процедуры
7 ass_kak_dollar
 
13.02.21
17:11
база серверная, -debug прописан
8 hhhh
 
13.02.21
17:38
(6) ну так и должно быть. После обработки ПередЗаписью происходит сама запись. Потом запускаются ПриЗаписи и ПослеЗаписи? в чем вопрос?
9 d4rkmesa
 
13.02.21
18:09
(6) В  8. правильно сказали, в документе ПриходныйКассовыйОрдер в св-вах установлено "Записывать модифицированные", это значит запись по-умолчанию происходит неявно, без вызова Движения.РасчетыСКонтрагентами.Записать().
10 hhhh
 
13.02.21
18:18
(6) да, запись происходит на последней строчке кода, строка КонецПроцедуры.
11 Фрэнки
 
13.02.21
20:15
Ну для полной и окончательной уверенности можно непосредственно в модуле набора записей регистра посмотреть. Если процедуры там нет, то вставить ее туда и воткнуть точку останова.

Таким образом, при большом желании можно попробовать декодировать поведение в обратном порядке, по стеку вызова функций.
12 ass_kak_dollar
 
14.02.21
00:40
(8) (9) Понял, спасибо, буду знать!
13 Фрэнки
 
14.02.21
00:48
(12) знать заранее прикольно :-)
Но через отладку из модуля набора записей надежней :-)
14 Фрэнки
 
14.02.21
00:49
К тому же, УПП сейчас у всех в наличии только перепаханные и перепиленные и вкривь и вкось... могут быть серьезные сюрпризы.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший