Ошибка в запросе. Не соблюдается условие в параметре виртуальной таблицы

1. MikhailDr 07.02.19 15:03 Сейчас в теме
"ВЫБРАТЬ РАЗЛИЧНЫЕ
			|	ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма,
			|	бит_ОборотыПоБюджетам.ЦФО КАК ЦФО,
			|	бит_ОборотыПоБюджетам.СтатьяОборотов КАК СтатьяОборотов,
			|	бит_ОборотыПоБюджетам.Проект КАК ПроектБИТ,
			|	ПоступлениеТоваровУслугТовары.Проект КАК ПроектТабЧасть,
			|	бит_ОборотыПоБюджетамПоступление.Проект КАК ПроектБИТПоступление,
			|	ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК СубконтоКт1,
			|	ХозрасчетныйДвиженияССубконто.СубконтоКт3 КАК СубконтоКт3,
			|	ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1,
			|	ХозрасчетныйДвиженияССубконто.СубконтоДт3 КАК СубконтоДт3
			|ИЗ
			|	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
			|			,
			|			,
			|			Счет В (&Счет)
			|				И СубконтоДт1 В (&СубконтоКт1)
			|				И СубконтоДт3 В (&СубконтоКт3),
			|			,
			|			) КАК ХозрасчетныйДвиженияССубконто
			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.бит_ОборотыПоБюджетам КАК бит_ОборотыПоБюджетам
			|		ПО ХозрасчетныйДвиженияССубконто.Регистратор = бит_ОборотыПоБюджетам.Регистратор
			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.бит_ОборотыПоБюджетам КАК бит_ОборотыПоБюджетамПоступление
			|		ПО ХозрасчетныйДвиженияССубконто.СубконтоДт3 = бит_ОборотыПоБюджетамПоступление.Регистратор
			|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
			|		ПО ХозрасчетныйДвиженияССубконто.СубконтоДт3 = ПоступлениеТоваровУслугТовары.Ссылка
			|			И ХозрасчетныйДвиженияССубконто.СубконтоДт1 = ПоступлениеТоваровУслугТовары.Номенклатура"
Показать



В параметр СубконтоКт1 передано значение справочника номенклатура "Универсальный токарно-винторезный станок", но в результат почему-то попадает запись со значением СубконтоДт1 "ЦКБА", что вообще справочник контрагентов.

Почему нарушается условие запроса?
По теме из базы знаний
Найденные решения
10. sergathome 4 07.02.19 16:26 Сейчас в теме
(8) ответ тот же - виртуальная таблица формируется с запросом порядка субконто из плана счетов и на выходе корректна. в параметрах же самой виртуалки возможны всякие чудеса, связанные с "особенностями" формирования этих самых таблиц. (7) вам правильно пишет - добавьте вид и всё пройдёт.

ЗЫ чудеса заключаются в следующем - когда вы пишете в параметрах Субконто1 = &П1, без указания ВидСубконто1 = Тип1, то, если при физической записи в регистр, а такое редко, но бывает, последовательность субконто в соответствии не совпала с последовательностью в плане счетов, вы получите неработающее условие. Указание Вида субконто перекрывает номер, который в этом случае, используется как идентификатор пары Вид-Значение.
Не уверен, что понятно написал ;)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kumi2012 104 07.02.19 15:05 Сейчас в теме
СубконтоКт1 и СубконтоДт1 - разные понятия.
alex-l19041; +1 Ответить
3. MikhailDr 07.02.19 15:27 Сейчас в теме
(2) Вообще не особо. Это аналитики счета и они у разных документов могут совпадать.

В данной конкретной задаче я ищу ДТ1 из документов "Комплектация", "Поступление", "ГТДИмпорт" и т.д. которые совпадут с КТ1 документа "Реализация". И эти аналитики действительно совпадают.

Но по какой-то причине, условие параметра виртуальной таблицы не соблюдается для одной из строк таблицы, что я получаю в результате запроса. В остальных случаях все норм.
4. kumi2012 104 07.02.19 15:36 Сейчас в теме
(3) В запросе нет условия на совпадение дебетовой аналитики с кредитовой аналитикой.
5. MikhailDr 07.02.19 15:43 Сейчас в теме
(4) Да, там стоит условие, что дебетовая аналитика должна соответствовать параметру, который я назвал СубконтоКт1, я могу изменить название, суть от этого не измениться.

Давайте я спрошу по другому

Почему, если я ставлю условие в параметре виртуальной таблицы СубконтоДт1 = &УниверсальныйТокарноВинторезныйСтанок, то получаю записи, где СубконтоДт1 = ЦКБА, что является контрагентом.
6. sergathome 4 07.02.19 16:15 Сейчас в теме
(5) Вы уверены, что СубконтоДт1 = ЦКБА, а не СубконтоДт2 = ЦКБА ;) проверьте получше. С порядком субконто вообще всякие чудеса бывают, ибо сказано в большом толстом жёлтом талдмуде - субконто в регистре есть тип Соответствие, для которого порядок не писан...
9. MikhailDr 07.02.19 16:22 Сейчас в теме
(6) Уверен. С условием "где" как ни странно все заработало
7. kumi2012 104 07.02.19 16:17 Сейчас в теме
(5) Добавьте условие
ВидСубконтоДт1 = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ххххх)
8. MikhailDr 07.02.19 16:22 Сейчас в теме
(7) Я добавил условие "ГДЕ" причем тоже самое, что и в параметрах виртуальной таблицы и все заработало нормально. Но вопрос почему так у меня остается.
10. sergathome 4 07.02.19 16:26 Сейчас в теме
(8) ответ тот же - виртуальная таблица формируется с запросом порядка субконто из плана счетов и на выходе корректна. в параметрах же самой виртуалки возможны всякие чудеса, связанные с "особенностями" формирования этих самых таблиц. (7) вам правильно пишет - добавьте вид и всё пройдёт.

ЗЫ чудеса заключаются в следующем - когда вы пишете в параметрах Субконто1 = &П1, без указания ВидСубконто1 = Тип1, то, если при физической записи в регистр, а такое редко, но бывает, последовательность субконто в соответствии не совпала с последовательностью в плане счетов, вы получите неработающее условие. Указание Вида субконто перекрывает номер, который в этом случае, используется как идентификатор пары Вид-Значение.
Не уверен, что понятно написал ;)
11. MikhailDr 07.02.19 21:37 Сейчас в теме
(10)
По вашему объяснению я понял, что субконто при записи были перепутаны. Редкая ошибка системы.

Вариант со значением лучше, чем дополнительное условие "где"? Я просто подумал, что "где" в любом случае отработает после параметра виртуальной таблицы, на производительности это не сильно скажется.

Просто для Дт1 значение будет всегда "Номенклатура", а вот для Дт3 все не так однозначно, там куча документов. Можно конечно все прописать, но хотелось бы самое оптимальное решение.
12. sergathome 4 08.02.19 09:17 Сейчас в теме
(11) "перепутывание субконто" это не ошибка, это баг, который фича. причём описанная в документации, если хорошо поискать. меня самого это выбешивает периодически, но вот так разработчики платформы придумали исходно и менять не хотят.
Задавать параметры виртуальных таблиц правильнее, поскольку приводит к более раннему наложению отбора в результирующем запросе.
Оставьте свое сообщение

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