Имя: Пароль:
1C
1С v8
Вопрос по РегистрНакопленияЗапись.ДокументОснование
0 Dmitriy_
Kolesnikov
 
19.12.19
20:54
У записи некоего типового регистра накопления есть реквизит ДокументОснование (ОпределяемыйТип).
Когда я смотрю отладчиком обработку заполнения этого типа, то вижу, что это Неопределено.
И так остается до самого последнего момента отладки.
Но потом когда открываю регистр в пользовательском режиме, то вижу, что ДокументОснование заполнен.
Почему такое может быть?
1 Franchiser
 
гуру
19.12.19
20:57
Бывает в подписки не заходит отладчик, если заранее не поставить там точку останова
2 shuhard
 
19.12.19
20:58
(0) [Почему такое может быть?]
1) не там стоит точка отладки, т.е. не в модуле Регистра
2) запись идёт фоновым заданием, на которое не настроен отладчик
3 Dmitriy_
Kolesnikov
 
19.12.19
21:02
Погодите, какие подписки?
Всё из ОбработкиПроведения инициируется.
В общем модуле я нашел кусок кода, который заполняет движения.
Все реквизиты, заполненные там, я потом вижу в пользовательском режиме.
А ДокументОснование - нет, потому что в момент заполнения он имеет тип Неопределено.
Причем есть даже три строчки кода, посвященные именно ДокументуОснованию, но после их выполнения значение реквизита как было Неопределено, так и осталось.
4 Franchiser
 
гуру
19.12.19
21:03
(3) подписка записи регистров
5 shuhard
 
19.12.19
21:14
(3) ещё раз, поставь точку останова в модуле Регистра перед записью
6 Dmitriy_
Kolesnikov
 
19.12.19
21:29
(5) процедура ПередЗаписью для этого регистра отсутствует. Модуль набора записей пустой.
7 Franchiser
 
гуру
19.12.19
21:34
(0) тут пишешь про обработку заполнения
(3) тут про обработку проведения.
Что в итоге ты делаешь? На обработке проведения может не заканчиваться запись в регистр, возможно далее происходит дозаполнение измерений/реквизитов.
8 Dmitriy_
Kolesnikov
 
19.12.19
21:41
(1) проверил подписки - три какие-то БСПшные, не имеющие никакого отношения к заполнению реквизитов. Точно не то.
(7) возможно, некорректно выразился.
Из обработки проведения документа вызывается процедура заполнения записей регистра. Вот ее-то я и смотрю отладчиком.

    РегистраторНачислений = Движения.Начисления.Отбор.Регистратор.Значение;
    Для Каждого Строка Из Начисления Цикл
        НоваяСтрока = Движения.Начисления.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
        НоваяСтрока.ПериодРегистрации = ПериодРегистрации;
        НоваяСтрока.ГоловнаяОрганизация = ГоловнаяОрганизация;
        НоваяСтрока.Организация = Организация;
        НоваяСтрока.ВидРасчета = Строка.Начисление;
        НоваяСтрока.ДокументОснование = Строка.ДокументОснование;
        Если Не ЗначениеЗаполнено(НоваяСтрока.ДокументОснование) Тогда
            НоваяСтрока.ДокументОснование = РегистраторНачислений;
        КонецЕсли;


Это типовой кусок кода.
Вот тут НоваяСтрока.ДокументОснование = Неопределено всегда и при любых условиях, что ему ни присваивай.
9 Franchiser
 
гуру
19.12.19
21:46
Поставь точку останова на КонецПроцедуры Обработкапроведения() и посмотри что в Движения по этому регистру: заполнен ли документ основания.
10 Dmitriy_
Kolesnikov
 
19.12.19
21:46
А не может это быть из-за отборов, наложенных на набор записей?
11 Dmitriy_
Kolesnikov
 
19.12.19
21:47
(9) смотрел - НЕ заполнен. Ни ДокументОснование, ни регистратор.
12 Franchiser
 
гуру
19.12.19
21:47
(8) это типовой код вызываемой процедуры заполнения? Может Записывать =Истина не стоит?
13 Franchiser
 
гуру
19.12.19
21:49
(10) тут не видно какие отборы ставятся при записи в регистр
14 Franchiser
 
гуру
19.12.19
21:51
(11) не понял, как может быть не заполнен регистратор: для регистра накопления он обязан быть заполнен
15 Dmitriy_
Kolesnikov
 
19.12.19
21:55
Я туплю.
Смотрю цикл, заполняющий Регистр расчета Начисления :)
А сам думаю про регистр накопления НачисленияУдержанияПоСотрудникам.

А всё потому, что в 5 часов утра надо спать.
16 shuhard
 
19.12.19
21:55
(6) [процедура ПередЗаписью для этого регистра отсутствует. Модуль набора записей пустой.]
ну что ты  как маленький, сделай событие, отладься, убери за собой
17 Dmitriy_
Kolesnikov
 
19.12.19
22:46
(16) смысл? Ответ в (15) - невнимательность.