УТ 10.3 Проведенные документы без движений.

1. pentanom 30 12.01.25 11:53 Сейчас в теме
В базе обнаружились проведенные документы без движений. Для поиска таких документов написал запрос
	Запрос.Текст = "ВЫБРАТЬ
	               |	ВозвратТоваровОтПокупателя.Ссылка
	               |ИЗ
	               |	Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК РегНакопления
	               |		ПО ВозвратТоваровОтПокупателя.Ссылка = РегНакопления.Регистратор
	               |ГДЕ
	               |	РегНакопления.Регистратор ЕСТЬ NULL
	               |	И ВозвратТоваровОтПокупателя.Дата МЕЖДУ &НачДата И &КонДата
	               |	И ВозвратТоваровОтПокупателя.Проведен";
Показать
но в нем я указываю конкретный регистр накопления, а нужно получать документы для которых нет движений вообще, как на картинке.
Как такое можно сделать?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. nomad_irk 80 13.01.25 08:03 Сейчас в теме
(1) Циклом по метаданным собрать все регистры, где могут быть движения у нужных видов документов.
Циклом собрать запрос через объединение таблиц.

Делов минут на 15 с перекурами.
2. grafit 8 12.01.25 13:30 Сейчас в теме
На картинке, результат отчета, который обрабатывает ВСЕ регистры. Поэтому без перебора регистров, в которых работает этот документ, не обойтись
3. karamazoff 122 12.01.25 13:37 Сейчас в теме
как-то так
выб = Документы.ПоступлениеДопРасходов.Выбрать();
Пока выб.Следующий() цикл
об = выб.ПолучитьОбъект();
об.Движения.Количество(); // если 0 это оно
КонецЦикла;
4. pentanom 30 12.01.25 14:47 Сейчас в теме
(3)
как-то так
Сделал. Запустил отладчик (см. картинку). Точно известно, что документ проведен и у него нет движений, но условие
		Если ОбъектДок.Движения.Количество() = 0 Тогда
			Сообщить("-   "+ВыборкаДок.Ссылка);
		КонецЕсли;                    
не срабатывает, а сообщение выводится и для объектов, у которых есть движения. Может быть я где-то ошибся?
Прикрепленные файлы:
5. pentanom 30 12.01.25 14:53 Сейчас в теме
(3) Переписал
	ВыборкаДок = Документы.ВозвратТоваровОтПокупателя.Выбрать(НачалоДня(НачПериода),КонецДня(КонПериода));
	Пока ВыборкаДок.Следующий() Цикл
		ОбъектДок = ВыборкаДок.ПолучитьОбъект();
		Если ОбъектДок.Движения.Количество() = 0 Тогда
			Сообщить("-   "+ВыборкаДок.Ссылка);
		КонецЕсли;                    
	КонецЦикла;
но и так не работает:(.
6. grafit 8 12.01.25 16:32 Сейчас в теме
|ГДЕ
...
| И ВозвратТоваровОтПокупателя.Проведен = ИСТИНА";

А данный метод - Движения.Количество() покажет количество регистров в структуре конфигурации, по которым документ должен делать движения. Т.е. у всех доков ВозвратТоваровОтПокупателя количество движений будет одно и тоже, независимо от того, проведен или непроведен.
7. pentanom 30 12.01.25 17:34 Сейчас в теме
(6)
| И ВозвратТоваровОтПокупателя.Проведен = ИСТИНА";
"= ИСТИНА" не обязательно.
Оставьте свое сообщение

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