Заполнение РС (независимый, непериодический)

1. Arkadag 27.11.21 11:54 Сейчас в теме
Приветствую, Форумчане!

Сделал РС, независимый. непериодический

Создал процедуру его заполнения:

Процедура ЗаполнитьРезультатПроверки(Источник, РезультатПроверки, Ошибка, ТипПроверки)
	
	Запись = РегистрыСведений.РезультатыПроверок.СоздатьМенеджерЗаписи();
	Запись.Дата = ТекущаяДата();
	Запись.ОбъектДанных = Источник;
	Запись.ОписаниеОшибки = ?(РезультатПроверки, Ошибка, "");
	Запись.Результат = ?(РезультатПроверки, "Ошибка", "Успешно");
	Запись.ТипПроверки = ТипПроверки;
	Запись.Записать(); 
	
КонецПроцедуры	
Показать


Отладчик показывает, что данные все заполняются правильно, но сам регистр оказывается пустым, т.е. не записывается.
Что я не так сделал? Вроде всё как по учебнику, ну и раньше вроде такое делал... Что я забыл?

Обращение к этой процедуре идет так:

		Пока Выборка.Следующий() Цикл
***************	
			ЗаполнитьРезультатПроверки(Источник.Ссылка, РезультатПроверки, Выборка.ОписаниеОшибки, Выборка.ТипПроверки);
		КонецЦикла;
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. spacecraft 27.11.21 12:27 Сейчас в теме
(1)
Запись.Дата = ТекущаяДата();

И зачем делать непериодический РС и эмулировать периодичность?
С большой долей вероятности измерение Дата будет одинаковая для всех текущих записей. И если и остальные измерения одинаковые, то запишется только одна запись.
8. FatPanzer 27.11.21 13:07 Сейчас в теме
(4) Так он же даже не признается что такое Дата - измерение или ресурс. Видимо, предлагает нам поучаствовать в кастинге "Битвы экстрасенсов".
2. FatPanzer 27.11.21 12:07 Сейчас в теме
А структуру регистра нам угадывать?
5. Arkadag 27.11.21 12:41 Сейчас в теме
(2) Вот структура из процедуры

Дата, ОбъектДанных, ОписаниеОшибки, Результат, ТипПроверки

(3) Нет никаких транзакций

(4) Дата здесь простой реквизит и к "Периоду" не имеет никакого отношения, просто указывается дата, когда было сделано.
7. FatPanzer 27.11.21 13:06 Сейчас в теме
(5) Ну да, ну да... А что их них является измерением, что является ресурсом - тоже догадываться?
А программный код читать я вроде как и сам умею.
3. ImHunter 333 27.11.21 12:20 Сейчас в теме
(1) С транзакциями не химичишь?
6. Arkadag 27.11.21 12:52 Сейчас в теме
Ошибка выявилась в том, что данная процедура запускается при подписке на событие при проведении документа. Если проведение запрещено, то и запись в регистр не производится. А надо проводить запись при любом раскладе...

Надо искать другое место для записи
9. FatPanzer 27.11.21 13:07 Сейчас в теме
(6) Так сделай подписку ПриЗаписи, а не при проведении.
10. Arkadag 27.11.21 13:14 Сейчас в теме
ФатПанцирь явно в плохом настроении. Можете избавить себя от напряжения участвовать в данном диспуте.
Признаю, не понял сразу вопроса. В регистре только измерения.
Если бы нужно было при записи, делал бы при записи.
Выявлено, что если отказ = истина, то запись в регистр не производится... если подписка на событие пропускает проведение, т.е. отказ = ложь, то запись в регистр осуществляется...
12. spacecraft 27.11.21 14:07 Сейчас в теме
(5)
Дата здесь простой реквизит

(10)
В регистре только измерения.

Так определитесь, или реквизит, или измерение.
13. Arkadag 27.11.21 15:31 Сейчас в теме
(12) Все измерения. Под "простой реквизит" имелось ввиду, что это не является стандартным реквизитом "Период"
14. spacecraft 27.11.21 15:39 Сейчас в теме
(13) вот я и спрашивал, почему не использовали периодический РС? Период это стандартное измерение типа Дата в периодическом РС. Вы сделали из непериодического РС аналог периодического через свое измерение типа Дата.
15. Arkadag 27.11.21 15:48 Сейчас в теме
(14) Хорошо. Всё понял!!!! Вот оказывается в чем дело...

Сделал из своего непереиодического периодический регистр сведений.
Потом оставил его непериодическим, но убрал всё, что связано с "Дата"

Суть проблемы осталась прежней, данные не сохраняются в регистре.
Регистр пытается записаться в подписке на событие. Если подписка на событие возвращает Отказ = истина, т.е. запрещает проводить документ, то никакой записи в РС не производится...

Если разрешает провести документ, то всё записывается и абсолютно не зависит от типа регистра и тем более чем у нас является "Дата"
16. spacecraft 27.11.21 15:51 Сейчас в теме
(15) тут и так понятно, что транзакция откатывается.

Я же обратил внимание еще и на возможно побочный эффект. Когда Дата = ТекущаяДата() и остальные измерения совпадают, то так же не будут все данные сохранены. Только уникальные.
17. Arkadag 27.11.21 16:22 Сейчас в теме
(16) Как можно записать данные до отката транзакции?
18. spacecraft 27.11.21 16:34 Сейчас в теме
(17) только вне транзакции. Уже советовали - фоновым заданием.
20. FatPanzer 27.11.21 16:45 Сейчас в теме
(18) Это если ссылка на источник будет существовать. А если для нового объекта откатывается транзакция - то и фоновое не поможет, ссылки же не будет...
21. spacecraft 27.11.21 16:50 Сейчас в теме
19. spacecraft 27.11.21 16:35 Сейчас в теме
(17) как еще вариант: Создать web/http сервис и через него передавать данные.
11. ImHunter 333 27.11.21 13:28 Сейчас в теме
(6) Формируй таблицу значений, закидывай ее в фоновое задание. Пусть тогда фоновое задание сохраняет.
22. Arkadag 30.11.21 23:06 Сейчас в теме
Всем спасибо. Вроде получилось на базе фоновых заданий... Интересно получилось: таким макаром можно сделать проведение документа при любом раскладе...
Оставьте свое сообщение

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