8.х СКД Отбор "Не в списке"

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ЧКДзержинский, 21 фев 2017.

  1. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    530
    Симпатии:
    3
    Баллы:
    29
    Всем доброго дня.
    Создан в СКД простенький отчет в основе которого запрос к регистру бухгалтерии без условий, точнее к виртуальной таблице ДвиженияССубконто.
    Запускаю отчет, устанавливаю отбор по СчетДт и СчетКт, а также отбор по СубконтоДт.
    Когда в отборе ставится условие СубконтоДт "В списке" , то отбор срабатывает, если же ставлю условие "Не в списке", то отбор не срабатывает.
    --- Объединение сообщений, 21 фев 2017 ---
    Та же проблема с "Равно" и "Не равно"
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.411
    Симпатии:
    974
    Баллы:
    204
    Исходя из описания проблемы: чем не устраивает типовая форма списка регистра бухгалтерии или отчет "Журнал проводок"?
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    960
    Баллы:
    204
    А в консоле СКД какой вид запрос принимает смотрели?
  4. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    530
    Симпатии:
    3
    Баллы:
    29
    Посмотрел и там вроде все нормально. Я подозреваю, что тут дело в самой ВР ДвиженияССубконто, в консоли запросов набросал такой запрос:
    ВЫБРАТЬ * ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&Д1, &Д2,Организация = &Организация И СчетДт = &СчДт И СчетКт = &СчКт И СубконтоДт1 <> &Субконто1)

    В данном случае тоже не срабатывает условие СубконтоДт1 <> &Субконто1, хотя если ставлю СубконтоДт1 = &Субконто1, то условие срабатывает.

    Вот если записать запрос так:
    ВЫБРАТЬ * ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&Д1, &Д2,Организация = &Организация И СчетДт = &СчДт И СчетКт = &СчКт)
    ГДЕ СубконтоДт1 <> &Субконто1

    тогда условие срабатывает

    Если решите проверить мой запрос, то для чистоты эксперимента СчетДт = 62.01, а СчетКт = 90.01.1, соответственно СубконтоДт1 - это контрагенты
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.411
    Симпатии:
    974
    Баллы:
    204
    Что значит "срабатывает/не срабатывает" условие?
    Если у вас параметр - список значений, то условие должно быть В(&Параметр) или НЕ В(&Параметр)
    Последнее редактирование: 22 фев 2017
  6. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    530
    Симпатии:
    3
    Баллы:
    29
    Даже вот не знаю, как объяснить :). А что по-вашему может значить "срабатывает/не срабатывает" условие?

    В первом посте я писал, что не срабатывают отборы "Не в списке" и "Не равно".
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.411
    Симпатии:
    974
    Баллы:
    204
    Вы ж как-то определили, что не работает так, как вы ожидаете.
    Условие срабатывает всегда, результат может вас не устраивать :)

    "Все дело в волшебных пузырьках" © реклама и, вероятно, в производительности запросов(?).

    Работает вот так:
    Код:
    ВЫБРАТЬ * ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто
    (&Д1, &Д2,Организация = &Организация И СчетДт = &СчДт И СчетКт = &СчКт
    И ВЫРАЗИТЬ(СубконтоДт1 КАК Справочник.Контрагенты) <> &Субконто1
    )
  8. TopicStarter Overlay
    ЧКДзержинский
    Offline

    ЧКДзержинский Опытный в 1С

    Регистрация:
    7 дек 2006
    Сообщения:
    530
    Симпатии:
    3
    Баллы:
    29
    Запрос я привел, чтобы показать, что проблема в виртуальной таблице ДвиженияССубконто, так то можно обойтись и условием ГДЕ СубконтоДт1 <> &Субконто1
    Проблема в том, что СКД при настройке отбора пишет именно СубконтоДт1 <> &Субконто1, точнее СубконтоДт1 &lt;&gt; &amp;П5.
    Пользователь может выбрать и другой счет для отбора и там будет другой тип субконто.
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.411
    Симпатии:
    974
    Баллы:
    204
    Проблема имхо, не в таблице как таковой, а в том, что Субконто - составной тип данных и платформа, по всей видимости, стремится не выполнять соединения со всеми таблицами, в которых содержится значения субконто.

    Условие в ГДЕ - это снижение производительности.

    Почему так работает - вопрос конечно хороший, но это уже нужно спрашивать программистов, которые делают платформу.

    Вы ж тоже самое можете получить через форму списка регистра бухгалтерии, там и отбор, вроде, работает адекватно, потому что другой вид запроса у динамического списка в отличии от запроса через СКД/Консоль запросов.
  10. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
    Там отбор работает также как и везде - в условии "ГДЕ".
    Возможно, для того, чтобы получить корректный результат с субконто в параметрах ВТ одного параметра недостаточно, может вид субконто поможет?
    Имхо никакой разницы в производительности не будет, где указывать субконто =) Это не период, не счет..

Поделиться этой страницей