[РЕШЕНО] Параметр в СКД, как список значений

Тема в разделе "Система компоновки данных (СКД)", создана пользователем Miller, 9 ноя 2016.

  1. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    147
    Симпатии:
    1
    Баллы:
    29
    Всем привет.

    Мучаю тут отчет на СКД, нужно в параметр запихнуть список значений из константы.

    Вообщем вот части кода ...и скрины.

    В запросе параметр идет тут
    Код:
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&СписокСкладов)
    http://jmp.sh/b151plQ в параметрах указано что доступен список знач и снято ограничение

    В модуле объекта впихиваем параметр уже

    Код:
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
        Ответственный = ПараметрыСеанса.ТекущийПользователь;
           
        Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных;
        Параметры.УстановитьЗначениеПараметра("Ответственный", Ответственный);
        Параметры.УстановитьЗначениеПараметра("СписокСкладов", Константы.ГДА_СписокСкладовДляАвтоматическогоПереключенияДоступности.Получить());
    Констатнта заполнена!

    На выходе получаем пустое значение http://jmp.sh/PShNgMc

    Где ошибка ?
  2. 1с-ник
    Online

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

    Регистрация:
    5 окт 2014
    Сообщения:
    563
    Симпатии:
    98
    Баллы:
    54
    А разве константа может хранить список значений?
    Если только в хранилище значений или строке (ЗначениеВСтрокуВнутр()), но это издевательство какое-то)
    --- Объединение сообщений, 9 ноя 2016 ---
    Ошибка в
    Код:
    Константы.ГДА_СписокСкладовДляАвтоматическогоПереключенияДоступности.Получить()
    Это не может быть список значений
    Miller нравится это.
  3. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    959
    Баллы:
    204
    Как уже колега подметил выше в у константы нет типа список значений, Константы.ГДА_СписокСкладовДляАвтоматическогоПереключенияДоступности.Получить() что вам возвращает?
    Miller нравится это.
  4. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    147
    Симпатии:
    1
    Баллы:
    29
    Перед тем как делать отчет , я побыстрому сделал обработку... самое смешное, что она работает =)
    Самое для меня не понятнное, это присвоение значения Списку складов, через отладку еще не смотрел, но вот двойное Получить() меня больше всего напрягает, в гугле ни где не смог найти про такую конструкцию.

    Код:
    СписокСкладов = Константы.ГДА_СписокСкладовДляАвтоматическогоПереключенияДоступности.Получить().Получить();
       
        запрос = новый запрос;
        запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ЗаказПокупателяТовары.Ссылка,
        |    ЗаказПокупателяТовары.Ссылка.АИТ_КомментарийМенеджера,
        |    ЗаказПокупателяТовары.Ссылка.СуммаДокумента
        |ИЗ
        |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&СписокСкладов)) КАК ТоварыНаСкладахОстатки
        |        ПО ЗаказПокупателяТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
        |ГДЕ
        |    ЗаказПокупателяТовары.Ссылка.АИТ_КомментарийМенеджера.Предзаказ
        |    И ТоварыНаСкладахОстатки.КоличествоОстаток > 0
        |
        |УПОРЯДОЧИТЬ ПО
        |    ЗаказПокупателяТовары.Ссылка.Дата";
       
        запрос.УстановитьПараметр("СписокСкладов",СписокСкладов);
       
       
        ТабличноеПоле1 = запрос.Выполнить().Выгрузить();
        ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
        ЭлементыФормы.ТабличноеПоле1.Колонки.ссылка.ЭлементУправления.КнопкаОткрытия = ИСТИНА;
    
    --- Объединение сообщений, 9 ноя 2016 ---
    Вот через отладчик после присвоения

    http://jmp.sh/zEf6XQq
    --- Объединение сообщений, 9 ноя 2016 ---
    Константа имеет тип
    Хранилище значений
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.722
    Симпатии:
    959
    Баллы:
    204
    Ну хранилище значений это не список значений, получайте теперь то что в хранилище
    Miller нравится это.
  6. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    147
    Симпатии:
    1
    Баллы:
    29
    Дадите совет, как это лучше сделать ?
  7. 1с-ник
    Online

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

    Регистрация:
    5 окт 2014
    Сообщения:
    563
    Симпатии:
    98
    Баллы:
    54
    Ну создай ты список значений, да выгрузи эту ТЗ в него.
    Код:
    СЗ = Новый СписокЗначений;
    СЗ.ЗагрузитьЗначения(СписокСкладов.ВыгрузитьКолонку("Склад"));
    запрос.УстановитьПараметр("СписокСкладов", СЗ);
    
    --- Объединение сообщений, 9 ноя 2016 ---
    Должно "завестись"
    Miller нравится это.
  8. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    147
    Симпатии:
    1
    Баллы:
    29
    пфффффф
    вот и решение.

    Круто =) Спасибо. Я пробовал выгружать и запросом и просто, чет не получалось. тут все ок =)
    --- Объединение сообщений, 9 ноя 2016 ---

    Может еще подскажите, что за метод
    Получить().Получить();
    Последнее редактирование: 9 ноя 2016
  9. 1с-ник
    Online

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

    Регистрация:
    5 окт 2014
    Сообщения:
    563
    Симпатии:
    98
    Баллы:
    54
    У тебя в константе хранилище значений. 1й метод получить() берёт значение константы, а затем второе берёт из хранилища данные, которые имеют тип "ТаблицаЗначений".
    Miller нравится это.
  10. TopicStarter Overlay
    Miller
    Offline

    Miller Опытный в 1С

    Регистрация:
    18 май 2011
    Сообщения:
    147
    Симпатии:
    1
    Баллы:
    29
    Да, так и понял ...
    Спасибо за подробный ответ =)

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