[РЕШЕНО] Как в СКД написать условие "В"

Тема в разделе "Система компоновки данных (СКД)", создана пользователем Vitaly, 23 мар 2015.

  1. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте.
    В отчете на СДК в конструкторе запроса Условие:
    Реализация.СпособПродаж В (&СпособПродаж)
    Как теперь этому условию установить параметр?
    Нахожу в Схеме компоновки данных в параметрах Способ продаж, что в выражении писать?
    Пробовал так:
    СпособПродаж=Новый Массив();
    Массив.Добавить(Перечисления.СпособПродажи.Наличный);
    Массив.Добавить(Перечисления.СпособПродажи.БанковскиеКарты);
    Но конечно такой фокус не работает.
    Как можно это реализовать?

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

    Спасибо.
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    На закладке параметры установите этот флажок.
    upload_2015-3-23_21-18-2.png
    --- Объединение сообщений, 23 мар 2015 ---
    В коде.
    Код:
        ПараметрНачалоПериода               = СхемаКомпоновкиДанных.Параметры.НачалоПериода;
        ПараметрНачалоПериода.Значение      = НачалоМесяца(НачалоПериода);
        ПараметрНачалоПериода.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда;
    
    Свои значения проставьте.
    --- Объединение сообщений, 23 мар 2015 ---
    Либо так
    Код:
        Параметр_ДатаНачала               = НастройкиКомпоновки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНачала"));
    Параметр_ДатаНачала.Использование = Истина;
    Параметр_ДатаНачала.Значение      = НачалоПериода;
    
    Vitaly нравится это.
  3. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Спасибо. Но у меня перестали значения подбираться. Я сделал так.
    В параметрах поставил галочку доступен список значений.
    upload_2015-3-24_9-9-28.png
    В модуле объекта написал код:
    Код:
    ПараметрВидРеализации               = СхемаКомпоновкиДанных.Параметры.ВидРеализации;
    МассивВидРеализации=Новый Массив;
    МассивВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("Розничная торговля"));
    МассивВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("Оптовая торговля"));
    ПараметрВидРеализации.Значение      = МассивВидРеализации;
    ПараметрВидРеализации.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда;
  4. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Что значит перестали значения подбираться? И если мне память не изменяет, то нужно список значений, а не массив использовать.
    Vitaly нравится это.
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Вы там галочку, "Ограничить доступность" уберите У Вас там перед Использованием 2 галочки стоит 1 не стоит так оставьте только первую
    Vitaly нравится это.
  6. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    У меня идет соединение в компоновке данных с одной из таблиц (на которую установлен данный отбор), соответственно на выходе один столбец, который подбирается из этой таблице выгружается пустой.
    Если подобрать в приложении эти виды реализации вручную, то они корректно выводятся.
    Список значений не помог - результат тот же.
    Код:
    ПараметрВидРеализации               = СхемаКомпоновкиДанных.Параметры.ВидРеализации;
    СписокВидРеализации=Новый СписокЗначений;
    СписокВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("
    Розничная торговля"));
    СписокВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("
    Оптовая торговля"));
    ПараметрВидРеализации.Значение      = СписокВидРеализации;
    ПараметрВидРеализации.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда;
  7. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Так в вы где этот код вставили. вы его когда исполняете? может у Вас компановцик уже результат получил, а Вы толькопотом отбор ставите.
  8. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Не помогает. Мне необходимо чтобы два значения программно в отбор подбирались, чего не получается добиться.
  9. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Ну можно Ваш код посмотреть где отбор ставите и где компановщик выполняется.
    Vitaly нравится это.
  10. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Я этот код просто в модуль объекта вставил
    upload_2015-3-24_9-30-34.png
    --- Объединение сообщений, 24 мар 2015 ---
    Если я отбор уже в самом пользовательском интерфейсе ставлю
    upload_2015-3-24_9-31-54.png
    то все корректно работает.
  11. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Тогда это в запросе уже реализовывайте.
    Vitaly нравится это.
  12. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    upload_2015-3-24_9-33-25.png


    upload_2015-3-24_9-34-3.png
    --- Объединение сообщений, 24 мар 2015 ---
    А как? Создавать там массив и ставить отбор в самом условие?
  13. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Обычно такое рекомендуется делать в обработчике события формы отчета ПередЗагрузкойВариантаНаСервере

    Что то типа

    Код:
    Процедура ПередЗагрузкойВариантаНаСервере(Настройки)
    
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ВидРеализации",ВашМассив);
    
    Конецпроцедуры
    Vitaly нравится это.
  14. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Да, в самом запросе условие ставьте. Это будет "жесткое" условие.
  15. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Ему надо этот параметр заполнить
    ВидРеализации В (&ВидРеализации)

    Нет конечно можно вот сюда втыкнуть позапрос В (Позапрос) котрый выберет нужные элементы, но это при условии что у него
    вот это
    СписокВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("
    Розничная торговля"));
    СписокВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("
    Оптовая торговля"));

    Это предопределенные элементы, которые в запросе можно через ЗНАЧЕНИЕ получить иначе же все равно параметры устанавливать
  16. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Говорит Не задано значение параметра "ВидРеализации".
  17. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Покажите код
    Vitaly нравится это.
  18. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    В том и проблема что это не предопределенные элементы.
    --- Объединение сообщений, 24 мар 2015 ---
    Код:
    Процедура ПередЗагрузкойВариантаНаСервере(Настройки)
    
        МассивВидРеализации=Новый Массив;
        МассивВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("Розничная торговля"));
        МассивВидРеализации.Добавить(Справочники.дсВидыРеализации.НайтиПоНаименованию("Оптовая торговля"));
        Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ВидРеализации",МассивВидРеализации);
    
    Конецпроцедуры
  19. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Можете отчет выложить?
    --- Объединение сообщений, 24 мар 2015 ---
    Вы отладчиком там поставьте точку остановки туда он попадает или нет?
    просто может быть что попадает, а затем пользовательские настройки затирают
    Vitaly нравится это.
  20. TopicStarter Overlay
    Vitaly
    Offline

    Vitaly Опытный в 1С

    Регистрация:
    21 фев 2014
    Сообщения:
    366
    Симпатии:
    0
    Баллы:
    26
    Не получилось разобраться.
    Прикрепил.

    Вложения:

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