1С динамический список иерархический

Отображение иерархических динамических списков в табличном поле имеет ряд особенностей .

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

Следует отметить , что не существует возможности установки отбора по родителю программно или интерактивно ( посредством команды " Установить отбор и сортировку списка ").

Может возникнуть ситуация , когда в табличном поле необходимо отобразить строки , подчиненные определенному родителю , включая подчиненные строки . Так как используя свойство табличного поля " ТекущийРодитель " можно получить только строки , подчиненные указанному родителю , то не существует стандартной возможности сделать такой отбор . Для решения данной проблемы рекомендуется использовать следующую методику .

Читайте также:  Как вернуть экран в нормальный размер

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

Требуется в табличном поле , отображающем справочник как список отображать все строки , подчиненные текущей строке табличного поля , отображающего древовидный справочник . Для этого при обработке события " ПриАктивизацииСтроки " табличного поля , отображающего древовидный справочник необходимо установить отбор списку справочника , отображаемому как список . Например :

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

Более подробно ознакомиться с отличиями работы табличного поля при отображении динамических списков можно в разделе Особенности работы табличного поля с динамическими списками.

apolenary
14.03.2012 11:06
Прочитано: 7081
Добрый день.
Подскажи как можно реализовать на УП (релиз 8.2.14.519) следующее:
Имеется справочник с иерархическим списком вроде такого:

Иерархический список
Узел1
Узел11
Элемет111
Узел12
Узел121
Элемет1211
Элемет1212
Элемет121
Узел13
Элемент131
Узел2
Узел21
Элемет211
Узел22
Узел221
Элемет2211
Элемет2212
Элемет221
Узел23
Узел3
Узел31
Элемет311
Узел32
Узел321
Элемет3211
Элемет3212
Элемет321
Узел33

Как можно вывести только одну ветку и только узлы:
Узел2
Узел21
Узел22
Узел221
Узел23

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

Сам запрос как сделать я нашел:
ВЫБРАТЬ
Справочник1.Наименование КАК Наименование,
Справочник1.Родитель КАК Родить
ИЗ
Справочник.Справочник1 КАК Справочник1
ГДЕ
Справочник1.Родитель В ИЕРАРХИИ(&Родитель)
И Справочник1.ЭтоГруппа
УПОРЯДОЧИТЬ ПО
Наименование ИЕРАРХИЯ

Но если результат добавляю просто в Динамический список, то данные выводятся просто списком без дерева. Как это можно реализовать?

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

Читайте также:  Бла бла кар и подобные сайты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Ветчинница vetta инструкция по применению

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

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

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

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

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