Ошибка при вызове метода контекста (Записать). Регистр сведений. Модуль набора записи.

1. levran 201 29.03.17 13:57 Сейчас в теме
Уважаемые! Необходимо устанавливать значение для любой НОВОЙ записи регистра.

Ситуация следующая.
Был разработан регистра сведений ОтправленныеСообщения. Непериодический, Независимый.
Под этот регистр написаны обработки, данные пишутся, все хорошо, все работает.

В какой-то момент было в конфигураторе добавлено измерение ДатаЗаписиВРегистр.

Чтобы не сломался старый код, который написан уже много где и чтобы не искать все обработки по этому регистру, было принято решение использовать модуль набора записи предопределенная процедура ПриЗаписи. Который будет заполнять новыезаписи поле ДатаЗаписиВРегистр всегда текущей датой.

	

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

Показать


Но увы и ах, данная конструкция не работает.



{ОбщийМодуль.Тест.Модуль(1948)}: Ошибка при вызове метода контекста (Записать): Запись не верна! Значение поля не соответствует установленному отбору: ОтправленныеСообщения: 29.03.2017 15:50:09, , +71111111, Прием , , 29.03.2017 15:50:09 (Регистр сведений: Отправленные сообщения; Поле: ДатаЗаписиВРегистр)


Подскажите где ошибка?
По теме из базы знаний
Найденные решения
6. levran 201 29.03.17 15:34 Сейчас в теме
Забыл написать что в ПередЗаписью была таже самая ошибка.

Ответ как нужно сделать: Переопределить отбор.

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

КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. japopov 68 29.03.17 14:05 Сейчас в теме
(1) При записи регистра система пытается контролировать состав передаваемых Измерений. Попробуйте для начала переместить ДатаЗаписиВРегистр из измерений в реквизиты.
3. levran 201 29.03.17 14:20 Сейчас в теме
(2) Это новое измерение нужно для гарантии уникальных измерений по записям, так как другие могут быть все равны.
5. japopov 68 29.03.17 14:58 Сейчас в теме
(3) Тогда Вы грубо нарушаете порядок работы.
Все данные дополняются ПередЗаписью. ПриЗаписи уже поздно. :-)
4. ditp 91 29.03.17 14:33 Сейчас в теме
А почему ПриЗаписи, а не ПередЗаписью ?
6. levran 201 29.03.17 15:34 Сейчас в теме
Забыл написать что в ПередЗаписью была таже самая ошибка.

Ответ как нужно сделать: Переопределить отбор.

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

КонецПроцедуры
Показать
7. klaos 9 30.05.17 16:20 Сейчас в теме
Нашли причину? такая же проблема.
8. user1464256 16.09.20 21:34 Сейчас в теме
Добрый вечер уважаемые.у меня проблемка я не программист 1с, но мне нужно срочно оформить документ но выходит ошибка.
Ошибка при вызове метода контекста.
Подскажите пожалуйста как это исправить🙏🙏🙏
9. FatPanzer 16.09.20 21:44 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот