установить значение параметра динамического списка 1с

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

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

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

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

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

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

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

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

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

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

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

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

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

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

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

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

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

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

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

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

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

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

Источник

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

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

Для вывода используется используется запрос:

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

Чтобы при открытии не отображалась информацию по другим клиентам, необходимо установить параметр динамического списка, сделаем это так:

Можно и просто настроить отбор через настройки, используя ЭлементОтбораКомпоновкиДанных

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

Похожие FAQ

Еще в этой же категории

Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора

Как ограничить список выбора? 8
Ограничим список элементов, установив отбор в открываемой форме //Пример 1 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка) ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент); ЭлементОтбораВидПДР = Форма Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Источник

Установить параметр динамического списка

Добрый день! Вот запрос динамического списка справочника номенклатуры. Параметр «Родитель», когда пытаюсь его установить в процедуре ПриОткрытии выдает ошибку, что он не найден! Как быть тогда?
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Ссылка,
СпрНоменклатура.Код КАК Код,
СпрНоменклатура.Наименование КАК Наименование,
СпрНоменклатура.Артикул КАК Артикул,
СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
СпрНоменклатура.Родитель КАК Родитель,
ВЫБОР
КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ КАК ИндексКартинки,
ВЫБОР
КОГДА ТоварыНаСкладах.Склад.Родитель = &Родитель
ТОГДА СУММА(ЕСТЬNULL(ТоварыНаСкладах.ВНаличииОстаток, 0))
КОНЕЦ КАК Колво
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладах
ПО (ТоварыНаСкладах.Номенклатура = СпрНоменклатура.Ссылка)
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
<ГДЕ
(СпрНоменклатура.Ссылка В
(ВЫБРАТЬ
Сегменты.Номенклатура
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
ГДЕ
Сегменты.Сегмент = &СегментНоменклатуры))>

СГРУППИРОВАТЬ ПО
СпрНоменклатура.Ссылка,
СпрНоменклатура.Код,
СпрНоменклатура.Наименование,
СпрНоменклатура.Артикул,
СпрНоменклатура.ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения,
СпрНоменклатура.СтавкаНДС,
СпрНоменклатура.Родитель,
ВЫБОР
КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ,
ТоварыНаСкладах.Склад.Родитель

Источник

УФ, Где установить параметры запроса динамического списка?

Собственно сабж.
надо установить СвойствоШирины в «Ширина» и СвойствоДлины в «Длина»
Чет нигде не нашел.
Вот сам запрос:

ВЫБРАТЬ
СправочникНоменклатура.Ссылка,
СправочникНоменклатура.ВерсияДанных,
СправочникНоменклатура.ПометкаУдаления,
СправочникНоменклатура.Предопределенный,
СправочникНоменклатура.Родитель,
СправочникНоменклатура.Код,
СправочникНоменклатура.Наименование,
СправочникНоменклатура.Артикул,
СправочникНоменклатура.ВариантОформленияПродажи,
СправочникНоменклатура.Вес,
СправочникНоменклатура.ВестиУчетПоГТД,
СправочникНоменклатура.ВидНоменклатуры,
СправочникНоменклатура.ГруппаДоступа,
СправочникНоменклатура.ГруппаФинансовогоУчета,
СправочникНоменклатура.ЕдиницаИзмерения,
СправочникНоменклатура.ИспользоватьИндивидуальныйШаблонЦенника,
СправочникНоменклатура.ИспользоватьИндивидуальныйШаблонЭтикетки,
СправочникНоменклатура.ИспользоватьУпаковки,
СправочникНоменклатура.Качество,
СправочникНоменклатура.НаборУпаковок,
СправочникНоменклатура.НаименованиеПолное,
СправочникНоменклатура.Описание,
СправочникНоменклатура.ПодакцизныйТовар,
СправочникНоменклатура.Производитель,
СправочникНоменклатура.СкладскаяГруппа,
СправочникНоменклатура.СтавкаНДС,
СправочникНоменклатура.ТипНоменклатуры,
СправочникНоменклатура.ФайлКартинки,
СправочникНоменклатура.ФайлОписанияДляСайта,
СправочникНоменклатура.ЦеноваяГруппа,
СправочникНоменклатура.ШаблонЦенника,
СправочникНоменклатура.ШаблонЭтикетки,
СправочникНоменклатура.УдалитьИспользоватьСерийныеНомера,
СправочникНоменклатура.УдалитьОписаниеВФорматеHTML,
СправочникНоменклатура.УдалитьФайлКартинки,
СправочникНоменклатура.ОсновнойСегментПоставщиков,
СправочникНоменклатура.ДополнительныеРеквизиты.(
Ссылка,
НомерСтроки,
Свойство,
Значение,
ТекстоваяСтрока
),
ВЫБОР
КОГДА СправочникНоменклатура.ЭтоГруппа
ТОГДА «Г»
ИНАЧЕ «»
КОНЕЦ КАК Г,
ВЫБОР
КОГДА СправочникНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ЭтоГруппа
ТОГДА 8
КОГДА СправочникНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ЭтоГруппа
ТОГДА 7
КОГДА СправочникНоменклатура.Родитель.Родитель.Родитель.Родитель.Родитель.ЭтоГруппа
ТОГДА 6
КОГДА СправочникНоменклатура.Родитель.Родитель.Родитель.Родитель.ЭтоГруппа
ТОГДА 5
КОГДА СправочникНоменклатура.Родитель.Родитель.Родитель.ЭтоГруппа
ТОГДА 4
КОГДА СправочникНоменклатура.Родитель.Родитель.ЭтоГруппа
ТОГДА 3
КОГДА СправочникНоменклатура.Родитель.ЭтоГруппа
ТОГДА 2
КОГДА СправочникНоменклатура.ЭтоГруппа
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК У,
Ширины.Значение КАК Ширина,
Длины.Значение КАК Длина
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК Ширины
ПО (Ширины.Свойство.Наименование = &СвойствоШирины)
И СправочникНоменклатура.Ссылка = Ширины.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК Длины
ПО (Длины.Свойство.Наименование = &СвойствоДлины)
И СправочникНоменклатура.Ссылка = Длины.Ссылка

Источник

Заметки из Зазеркалья

Реализовано в версии 8.3.10.2168.

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

Однако такая универсальность имеет и оборотную сторону. Желание «показать сразу всё» может приводить вас к значительному усложнению запроса. В результате вы будете получать неэффективные планы выполнения и, как результат, снижение производительности при отображении и пролистывании списка.

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

Событие ПриПолученииДанныхНаСервере

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

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

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

Вы можете изменить данные, находящиеся в этих строках, или применить к ячейкам собственное оформление. Доступны такие возможности оформления как ЦветФона, ЦветТекста, Шрифт, ГоризонтальноеПоложение, Видимость, Доступность, Отображать, Текст и Формат.

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

Простейший сценарий использования

Проще всего понять назначение этого обработчика на примере. Пример заключается в том, чтобы в списке товаров показать их остатки из регистра накопления. Количество меньше некоторого значения выделить красным цветом.

До сих пор эта задача решалась левым соединением в запросе динамического списка, и условным оформлением списка, устанавливаемым в конфигураторе.

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

А в обработчике ПриПолученииДанныхНаСервере() только для полученных строк вычисляются остатки. И тут же маленькие остатки выделяются красным.

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

Здесь, методом ПолучитьКлючи(), из коллекции строк динамического списка вы получаете их ключи (ссылки), и передаёте эти ключи в запрос остатков.

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

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

В чём преимущество такого варианта?

Во-первых, запрос списка остаётся простым. Или он не остаётся простым, но количество соединений в нём уменьшается. А это значит, что для него, с большой долей вероятности, будет построен хороший план.

Во-вторых, получение остатков в обработчике будет выполняться только один раз, в то время как запрос списка может быть выполнен несколько раз (в зависимости от настроек списка и сценария листания).

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

Ограничения на изменяемые и добавляемые поля

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

Если не предпринять дополнительных мер, то пользователь может быть сильно удивлён результатами группировки, сортировки или отбора (в том числе и поиска) по тем полям, которые вы изменили. Ведь эти действия будут выполняться по исходным данным, получаемым запросом, а не по тем данным, которые видит пользователь.

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

установить значение параметра динамического списка 1с. Смотреть фото установить значение параметра динамического списка 1с. Смотреть картинку установить значение параметра динамического списка 1с. Картинка про установить значение параметра динамического списка 1с. Фото установить значение параметра динамического списка 1с

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

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *