Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Работа с динамическим списком в 1С 8.3 (8.2)

Наконец-то осуществилась мечта любого «семерошника». Как часто пользователи программы 7.7 просили сделать нормальный подбор номенклатуры. Чтобы и остатки можно было видеть, и цены, и установить фильтры. Приходилось придумывать разные хитрости, вплоть до написания внешних компонентов. В 1С 8.2  появились динамические списки. Предлагаю рассмотреть, что это такое и что они нам могут дать в 1С 8.3.

Создание формы выбора

За основу возьмем некую тестовую конфигурацию 1С:»Бухгалтерия предприятия 3.0″. Не будем сейчас делать подбор, просто в справочнике «Номенклатура» добавим еще одну форму выбора и сделаем ее временно основной:

создание нового динамического списка 1с 8.3

При создании система по умолчанию добавит на форму табличное поле с типом «Динамический список».

Зайдем в его свойства и посмотрим, что там.

В первую очередь нас интересует флажок «Произвольный запрос». Он-то и откроет нам все преимущества динамического списка. У нас появится возможность написать собственный запрос, причем с параметрами. Устанавливаем флажок и нажимаем ссылку «Открыть»:

настройки динамического списка

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Откроется окно с уже готовым кодом на языке запросов. Пока что там просто перечислены все поля справочника «Номенклатура».

Как видим, имеется кнопка вызова «Конструктора запроса» и флажок, который дает возможность динамически изменять содержимое списка. То есть когда другой пользователь меняет что-то в справочнике, в нашем списке это тоже изменится. Кроме того, имеется закладка «Настройки», но ее мы коснемся позже.

Собственный запрос в динамическом списке

Сначала создадим нужный нам запрос с остатками и ценами. Примерно так:

запрос в динамическом списке 1с 8.3

Закладка «Настройки»

И вот теперь самое вкусное! Переходим на закладку «Настройки». И сразу видим, что на первой вкладке мы можем делать любые отборы по любому полю в запросе:

настройка динамического списка 1с 8.3

Программная установка параметров запроса в динамическом списке 1С 8.3

Не забываем, что в запросе у нас присутствуют два параметра: «Период» и «Тип цен». Мы должны передать их в запрос, иначе будет ошибка.

Пропишем эти параметры в параметрах формы, а в модуле формы добавим следующие строки:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список.Параметры.УстановитьЗначениеПараметра("Период", Параметры.Дата);
Список.Параметры.УстановитьЗначениеПараметра("ТипЦен", Параметры.ТипЦен);
КонецПроцедуры

Значения параметров можно передать из объекта, откуда вызывается форма, либо другие, установленные по умолчанию.

Далее на форму с «Динамическим списком» можно добавить таблицу значений, куда будут при двойном клике передаваться строки с выбранным товаром и затем переноситься в документ.

Также на форму можно добавить флажок «Запрашивать количество».

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 10 на “Работа с динамическим списком в 1С 8.3 (8.2)
  1. Пишет вот такую ошибку :
    Ошибка при выполнении запроса. Ошибка при выполнении запроса.
    по причине:
    Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля «DataParameters.Period Равно 24.05.2016 0:00:00»

    Ответить

  2. Все работает в 11.2 (11.2.3.195) УТ. Только пришлось вывести доп.Колонку (Родитель) иначе ругается что нет такой колонки.

    Ответить

  3. Как программно сдвинуть колонку в начало?

    Ответить

  4. Не понятно как создать в самом начале список

    Ответить

    • Добавляешь в форму новый реквизит с наименованием Список и типом Динамический список

      Ответить

  5. как получить текст строки поиска динамического списка?

    Ответить

  6. Вот только в «1С:Бухгалтерия предприятия 3.0» нет такого регистра накопления «ОстаткиНоменклатуры». И вообще я там регистра накопления для номенклатуры не нашёл, потому что они скорее всего хранятся там в регистре бухгалтерии (на счету бухгалтерского учёта), по которому запрос, как я понимаю, должен выглядеть иначе.

    Ответить

  7. В форме списка Номенклатуры внизу сделан Динамический список с колонками Склад (перечисляет строками все склады, на котором есть остатки), колонка Количество на этих складах, колонка Свободный остаток (Количество — Количество в резерве) и колонка СкладыРезерва (на которых зарезервирован товар). Когда в верхнем списке Номенклатуры встаём на позицию (не группу), то внизу отображает информацию по остаткам. Но если товар зарезервирован на нескольких складах, то отображает один склад в несколько строк с разными складами резерва.
    Как сделать так, чтобы Склад был одной строкой, а СкладыРезерва перечислялись в одну строку?

    Ответить

  8. А что эффективнее и методически правильнее — делать отбор в запросе в параметрах виртуальных таблиц (если возможно), отбор в запросе через ГДЕ или в настройках Динамического списка?

    Ответить

    • Приоритет на параметрах виртуальных таблиц, далее — отбор в соединении таблиц, далее — секция ГДЕ или настройки Динамического списка (равнозначны).

      Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.