Имя: Пароль:
1C
1С v8
Установка периода для записи независимого регистра в обработчике ПередЗаписью
0 Тим
 
11.01.12
18:07
Есть периодический независимый регистр КомментарииКДокументам.

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

МенеждерЗаписи = РегистрыСведений.КомментарииКДокументам.СоздатьМенеджерЗаписи();
           МенеждерЗаписи.Владелец = ЭтотОбъект.Ссылка;
           МенеждерЗаписи.Комментарий = ЭтаФорма.ЭлементыФормы.Комментарий.Значение;
           МенеждерЗаписи.Записать();

В обработчике события ПриЗаписи модуля регистра:

Процедура ПередЗаписью(Отказ, Замещение)
   Для Каждого Строка Из ЭтотОбъект Цикл
       Если
           НЕ ЗначениеЗаполнено(Строка.Период)
       Тогда    
           Строка.Период = ТекущаяДата();
       КонецЕсли;    
   КонецЦикла;    
КонецПроцедуры

Значение периода устанавличается, но далее получаю ошибку:

Запись не верна! Значение поля не соответствует установленному отбору: ***(Регистр сведений: комментарии к документам; Поле: Период)
Если в коде вызова записи регистра добавить:

МенеждерЗаписи.Период = ТекущаяДата();

всё работает корректно. Некритично, но интересно. Даже без явного
вызова чтения записей применяется неявный отбор, где Период - пустое значение?
1 kosts
 
11.01.12
18:19
(0) поставь точку останова на конце процедуры посмотри период в объекте и в строках, может отличаются...
2 GROOVY
 
11.01.12
18:21
(0) Кстати, не рекомендую юзать функцию ЗначениеЗаполнено если заранее известен тип проверяемого значения (в нашем случае Дата).
3 Mort
 
11.01.12
18:39
(2) Почему?
4 Тим
 
11.01.12
18:39
(2) - почему? Медленная? Или ненадежная? :)
5 kosts
 
11.01.12
18:47
(2) Тоже практически не использую ЗначениеЗаполнено().
Плюс к аргументам - дополнительный контроль типа при исполнении.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.