Запись в регистр сведений по условию

1. valen_tuve 10.04.23 12:07 Сейчас в теме
Добрый день.

В систему добавлен самописный РС ТранспортныеРасходы. Независимый, в пределах секунды.
Данные в него должны записываться при проведении документа ПриобретениеУслугПрочихАктивов, только если в документе стоит статья расходов Услуги по доставке продукции (44.02) и заполнено поле Сумма транспортных расходов. В таких докуметах стоит признак Булево Транспортные расходы Истина.
Не получается сделать отбор по статье и полю расходов и при проведении регистр добавляет данные по документу еще раз а не перезаписывает. Подскажите, что нужно добавить в код модуля?

НаборЗаписей = РегистрыСведений.ФФБТранспортныеРасходы.СоздатьНаборЗаписей();
			
	НаборЗаписей.Отбор.Период.Установить(Дата);	

	НаборЗаписей.Прочитать();
	НаборЗаписей.Очистить();
	
	Если ЗначениеЗаполнено(ТранспортныеРасходы) Тогда
	
	Для Каждого ТекСтрокаРасходы Из Расходы Цикл
				
		НоваяЗапись = НаборЗаписей.Добавить();
		НоваяЗапись.Период = Дата;	
		НоваяЗапись.ДокументОснование = Номер;
		НоваяЗапись.ЗаказКлиента = ТекСтрокаРасходы.ЗаказКлиента;
		НоваяЗапись.Контрагент = Контрагент;
		НоваяЗапись.Клиент = Партнер;
		НоваяЗапись.Номенклатура = ТекСтрокаРасходы.Номенклатура;
		НоваяЗапись.СтатьяРасходов = ТекСтрокаРасходы.СтатьяРасходов;
		НоваяЗапись.АналитикаРасходов = ТекСтрокаРасходы.АналитикаРасходов;		
		НоваяЗапись.СуммаТранспортныхРасходов = ТекСтрокаРасходы.СуммаТранспортныхРасходов;
	КонецЦикла;	
	НаборЗаписей.Записать();
Иначе
	Отказ = Истина;
	КонецЕсли;
Показать
По теме из базы знаний
Найденные решения
12. nomad_irk 76 10.04.23 17:03 Сейчас в теме
(11)так если значение булево, то и проверять нужно как булево.
Заполнено-то оно всегда.
Т.е.

Если ТранспортныеРасходы Тогда
valen_tuve; +1 Ответить
2. nomad_irk 76 10.04.23 12:23 Сейчас в теме
(1) что будет, когда Дата будет отличаться на секунду и больше? У вас именно это и происходит, по всей видимости.

ответ, насколько понял суть проблемы:
т.к. другие условия неизвестны, то сделать РС подчиненным регистратору.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 10.04.23 12:23 Сейчас в теме
(1) что будет, когда Дата будет отличаться на секунду и больше? У вас именно это и происходит, по всей видимости.

ответ, насколько понял суть проблемы:
т.к. другие условия неизвестны, то сделать РС подчиненным регистратору.
5. valen_tuve 10.04.23 13:30 Сейчас в теме
(4) У меня есть в коде Если Значение заполнено Транспортные расходы тогда делать запись в регистр, но не отрабатывает.


(2) попробую подчинить регистратору, спасибо
6. glek 119 10.04.23 13:55 Сейчас в теме
(5) Записать с признаком ложь добавляет записи, а не перезаписывает. Ну читайте СП что-ли.
7. пользователь 10.04.23 13:56
Сообщение было скрыто модератором.
...
8. nomad_irk 76 10.04.23 13:58 Сейчас в теме
(6)По-умолчанию - Истина - в том же С-П.

(5) Не понятно, что есть ТранспортныеРасходы, заполнение которого проверяется?
Если оно установлено на форме и не установлено в реквизите объекта, то быть может ЭУ на форме привязан не к тому реквизиту объекта?

Вы лучше расскажите как вы себе представляете логику записи в регистр?

Простой пример, исходя из приведенного вами кода:

1. Есть документ1, с датой Дата1, при проведении выполнили запись в регистр.
Создали Документ2, с датой Дата1, при проведении прочитали регистр, очистили и записали заново другие данные.

2. Есть документ1, с датой Дата1, при проведении выполнили запись в регистр.
Отредактировали Документ1, поставили дату Дата2, при проведении прочитали регистр - он пустой. записали новые данные.

Именно такая логика работы считается правильной?
9. valen_tuve 10.04.23 16:25 Сейчас в теме
(8) вопрос решился изменением на подчинен регистратору. Не нашел информации, можно ли при таком варианте писать в регистр по условию (например, только по определенной статье расхода)?
10. nomad_irk 76 10.04.23 16:45 Сейчас в теме
(9)а что собственно мешает вам это сделать?
Ессно, можно.
11. valen_tuve 10.04.23 16:59 Сейчас в теме
У меня есть условие, что писать только если стоит признак в документе Транспортные расходы (Булево), но пишет в любом случае.
12. nomad_irk 76 10.04.23 17:03 Сейчас в теме
(11)так если значение булево, то и проверять нужно как булево.
Заполнено-то оно всегда.
Т.е.

Если ТранспортныеРасходы Тогда
valen_tuve; +1 Ответить
13. valen_tuve 11.04.23 10:37 Сейчас в теме
(12) Спасибо, это помогло.
Только если стоит признак Транспортные расходы, документ проведен, и движение по регистру есть, если снять галочку Транспортные расходы и провести снова - регистр не очищается. Если сначала отменить проведение, тогда все ОК.
3. starjevschik 10.04.23 12:44 Сейчас в теме
(1)
только если в документе стоит статья расходов Услуги по доставке продукции (44.02) и заполнено поле Сумма транспортных расходов

самое простое - добавить в код модуля эти условия.
valen_tuve; +1 Ответить
4. glek 119 10.04.23 12:59 Сейчас в теме
(1) Набор.Записать(ИСТИНА)
Оставьте свое сообщение

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