1С динамический список добавить колонку программно

В 1С Предприятии 8.2 формы списка объектов конфигурации построены с помощью динамического списка. Например, форма списка справочника Номенклатура содержит основной реквизит типа Динамический список , отображающий основную таблицу Справочник.Номенклатура и динамический список формируется путем запроса к этой таблице.

Однако бывает необходимо добавить произвольные колонки в динамический список. Рассмотрим эту ситуацию на примере отображения актуальной цены в списке справочника Номенклатура .

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

Создадим форму списка справочника Номенклатура и откроем палитру свойств основного реквизита формы Список . Установим флаг ПроизвольныйЗапрос и в строке Настройка списка нажмем Открыть .

В поле Запрос введем следующий текст запроса:

ВЫБРАТЬ
СправочникНоменклатура.Код,
СправочникНоменклатура.Наименование,
ЦеныСрезПоследних.Цена
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка

Теперь перетащим поле Цена из окна реквизитов в окно элементов формы.

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

Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/ПроизвольнаяКолонкаВДинамическомСписке.dt. Пример выполнен на версии платформы 8.2.9.356.

Guesto notes

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

Задача

Считаем, что есть типовая форма списка номенклатуры с динамическим списком. На форму необходимо добавить страницы: на первой выводить типовой список, а на второй список номенклатуры и данные РС «Данные для обработки». На текущий момент форма выглядит так:

Читайте также:  Шаблоны для отрывных объявлений а4

Решение

План работ следующий:

  1. Создать страницы на форме;
  2. Переместить типовой динамический список на нужную страницу;
  3. Создать динамический список и вывести его на нужную страницу.

Далее будет показан код по логическим блокам, в конце статьи будет представлен итоговый код

Создание страниц

Собственно создадим группу с видом «Страницы», и в нее добавим две группы с видом «Страница»

Программное формирование реквизитов и элементов формы можно в статье 1С. Программное добавление и удаление реквизитов формы

Перемещение элементов формы

Для перемещения типового динамического списка воспользуемся методом коллекции элементов формы Переместить()

Программное создание динамического списка

Добавляем реквизит формы с типом Динамический список и определяем основные свойства.

Теперь создадим элементы формы относящиеся к динамическому списку

Небольшая хитрость

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

Результат

Теперь проверяем, что у нас получилось. Первая страница, на которую мы перенесли типовой список

Вторая страница с нашим сформированным списком

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

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

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

Читайте также:  Сокет PGA988: какие процессоры подходят?

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

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

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

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

Получите 267 видеоуроков по 1С бесплатно:

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Сумма проекций сил на ось

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

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

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

Оцените статью
Добавить комментарий

Adblock detector