Имя: Пароль:
1C
1С v8
Запрос по виртуальной таблице ДвиженияССубконто и проводка со счетом 000
0 dimawrx
 
20.06.22
13:16
Надо определить, есть ли в проводках документа по регистру бухгалтерии записи с видом субконто Номенклатура.
Делаю такой запрос:

Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ХозрасчетныйДвиженияССубконто.Регистратор
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
|            ,
|            ,
|            Регистратор = &Регистратор
|                И (ВидСубконтоДт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
|                    ИЛИ ВидСубконтоДт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
|                    ИЛИ ВидСубконтоДт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
|                    ИЛИ ВидСубконтоКт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
|                    ИЛИ ВидСубконтоКт2 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)
|                    ИЛИ ВидСубконтоКт3 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура)),
|            ,
|            ) КАК ХозрасчетныйДвиженияССубконто";

Запрос работает, кроме случая, когда в проводке используется счет 000, на котором нет субконто, то есть не выбирает записи типа Дт 10 Кт 000.
Это нормальное поведение платформы и надо по другому делать запрос?
1 DCKiller
 
20.06.22
13:18
А на 10 счете субконто точно "Номенклатура"? Или м.б. какие-нибудь "Материалы"... Ну так, на всякий случай.
И сформированы ли эти проводки Дт 10 Кт 000 именно тем регистратором, по которому отбираешь записи?
2 RomanYS
 
20.06.22
13:21
(0) таблица ДвиженияССубконто самая кривая и тормозная. Если это весь запрос, то логичнее просто заменить на реальную таблицу Субконто
3 dimawrx
 
20.06.22
13:25
(1)
Да, номенклатура, вот такие проводки, как на скрине, не отбираются
https://disk.yandex.ru/i/TIRKxUPivXuzcQ
4 DCKiller
 
20.06.22
13:31
Запрос выполняется в обычном модуле или в СКД?
Попробуй, как вариант, для каждого "ИЛИ" создать отдельную таблицу (разбить на несколько ОБЪЕДИНИТЬ)
5 RomanYS
 
20.06.22
13:36
+(2) в плоской таблице Субконто есть то, что тебе нужно. И все твои отборы попадут в индекс.
Вместо этого ты берешь монструозную виртуальную таблицу и накладываешь условия или на 6 полей. Зачем?
6 dimawrx
 
20.06.22
13:43
(4) Обычный модуль.
(5) Спасибо, попробую сделать через Субконто. Этот запрос был написан лет 15 назад и ошибка только сейчас проявилась.
7 dimawrx
 
20.06.22
13:59
(5) Еще раз спасибо! С Субконто записи стали выбираться, запрос стал проще и быстрее.
8 Ёпрст
 
20.06.22
14:22
(5) с 15 релиза это уже не монструозная виртуальная табличка, а реальная табличка.. и должно работать и так
9 RomanYS
 
20.06.22
15:15
(8) ну менее монструозной она от это не стала. Ну и возможно это и есть причина проблем ТС - при переходе на реальную таблицу, заполнилась она криво и из-за этого проводки не находятся.