Хм... Наткнулся на странность в запросе. Что-то не разберусь:
Условие:
выбирает нужную мне запись по второму (нижнему) условию ИЛИ.
Но после расскомментирования комментария - запись не попадает в результат. Почему так? Там же ИЛИ !?
Условие:
СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
//И СубконтоДт3 В
// (ВЫБРАТЬ
// ФизЛица.ФизическоеЛицо
// ИЗ
// ФизЛица)
ИЛИ
СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
И СубконтоКт3 В
(ВЫБРАТЬ
ФизЛица.ФизическоеЛицо
ИЗ
ФизЛица)
Показатьвыбирает нужную мне запись по второму (нижнему) условию ИЛИ.
Но после расскомментирования комментария - запись не попадает в результат. Почему так? Там же ИЛИ !?
По теме из базы знаний
- Исправление ошибки отсутствия субконто в проводках после редактирования плана счетов.
- Выгрузка и загрузка данных XML. Ускоряем выгрузку регистров бухгалтерии
- Преобразование отбора компоновки данных к линейному условию для запроса
- Три костыля. Сказ про фокусы в коде
- Инструментарий для анализа и редактирования регистров 1С (Управляемые формы)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Может дело в том, что условие в параметрах ВТ указано?:
ВЫБРАТЬ
ХозрасчетныйДвиженияССубконто.Регистратор,
ХозрасчетныйДвиженияССубконто.СубконтоДт3,
ХозрасчетныйДвиженияССубконто.СубконтоКт3,
ИСТИНА,
ХозрасчетныйДвиженияССубконто.Сумма
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
&ДатаНач,
&ДатаКон,
Активность
И
ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.КорректировкаПоступления)
И ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.РегламентнаяОперация)
И
(
СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
И СубконтоДт3 В
(ВЫБРАТЬ
ФизЛица.ФизическоеЛицо
ИЗ
ФизЛица)
ИЛИ
СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
И СубконтоКт3 В
(ВЫБРАТЬ
ФизЛица.ФизическоеЛицо
ИЗ
ФизЛица)
)
,
,
) КАК ХозрасчетныйДвиженияССубконто
Показать
Перенес в условие ГДЕ - заработало как нужно. Но я ожидал, что в условии ГДЕ будет работать медленнее, а оно работает в 3-5 раз быстрее.
Что-то я теперь вдвойне недопонимаю... Почему (0) так работает и почему в ГДЕ быстрее выполняется, чем в параметрах ВТ? Может кто-то разъяснить?
Что-то я теперь вдвойне недопонимаю... Почему (0) так работает и почему в ГДЕ быстрее выполняется, чем в параметрах ВТ? Может кто-то разъяснить?
ВЫБРАТЬ
ХозрасчетныйДвиженияССубконто.Регистратор,
ВЫБОР КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт3.Ссылка ЕСТЬ NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ,
ХозрасчетныйДвиженияССубконто.СубконтоКт3,
ИСТИНА,
ХозрасчетныйДвиженияССубконто.Сумма
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
&ДатаНач,
&ДатаКон,
Активность
И
ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.КорректировкаПоступления)
И ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.РегламентнаяОперация)
// И
// (
// СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
// И СубконтоДт3 В
// (ВЫБРАТЬ
// ФизЛица.ФизическоеЛицо
// ИЗ
// ФизЛица)
// ИЛИ
// СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
// И СубконтоКт3 В
// (ВЫБРАТЬ
// ФизЛица.ФизическоеЛицо
// ИЗ
// ФизЛица)
// ) ,
,
) КАК ХозрасчетныйДвиженияССубконто
ГДЕ
СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
И СубконтоДт3 В
(ВЫБРАТЬ
ФизЛица.ФизическоеЛицо
ИЗ
ФизЛица)
ИЛИ
СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
И СубконтоКт3 В
(ВЫБРАТЬ
ФизЛица.ФизическоеЛицо
ИЗ
ФизЛица)
Показать
По поводу почему условие в параметрах не сработало хз.
А вот то что запрос быстрее выполнился, то тут все банально - таблица движений простая в построении, и скуль формируя план запроса ее легко оптимизирует.
вероятно, скуль при повторном запросе подтянул данные из кеша, когда в консоли формируешь запрос несколько раз подряд, он с каждым разом выполняется быстрее.
А вот то что запрос быстрее выполнился, то тут все банально - таблица движений простая в построении, и скуль формируя план запроса ее легко оптимизирует.
вероятно, скуль при повторном запросе подтянул данные из кеша, когда в консоли формируешь запрос несколько раз подряд, он с каждым разом выполняется быстрее.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот