1с связи параметров выбора

Обновлено: 07.07.2024

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

Рассмотрим пример, у нас есть справочник Регионы, и нужно в базе хранить дополнительную информацию об этих регионах (расположение, количество жителей, экономический статус и т.п). Мы можем для этого использовать реквизиты объекта, но у данного варианта имеется ряд недостатков. Во-первых, мы можем не знать точно, какие характеристики у регионов будут на момент разработки конфигурации. Во-вторых, не все характеристики для всех регионов могут быть применимы. Например, для какого-то региона нужно использовать характеристики А, Б, В, а для другого – Б,Д,Е, тогда лишние характеристики на форме элемента справочника будут загружать форму.

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

Таким образом, можно резюмировать: если у обычного справочника все элементы одного типа (ссылка на этот справочник), то у плана видов характеристик элементы могут быть разных типов, в зависимости от того, как настроено при конфигурировании.

Реализуем следующую задачу: создадим возможность хранения различных характеристик справочника Регионы. Характеристики могут быть в виде примитивных типов (например, площадь региона), а также и в виде каких-то определенных значений (например, положение региона: «Север», «Юг» и т.д.), которые будут создавать сами пользователи.

Создадим план видов характеристик Дополнительные свойства регионов.

План видов характеристик 1С

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

План видов характеристик 1С

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

К примеру, у региона может быть характеристика Положение региона, которая содержит произвольные значения положения региона («Север», «Юг», «Запад» и т.д.), а также может быть характеристика «Экономический статус», которая содержит значения экономического статуса региона («Донор», «Развивающийся» и т.д.), значения этих характеристик не должны пересекаться. Если мы выбрали характеристику Положение региона, то должны видеть только значения положения, а не экономического статуса.

Можно, конечно, создать отдельные справочники Положения регионов и Экономические статусы, но мы не можем быть уверены, что потом не добавятся еще какие-либо новые характеристики, которые будут содержать произвольные значения, и нам не придётся дорабатывать конфигурацию. Самым оптимальным решением будет создать единый справочник для хранения всех значений подобных характеристик. Этот справочник должен быть подчинен плану видов характеристик Дополнительные свойства регионов. В этом случае у любой характеристики (элемента плана видов характеристик), тип которой «ссылка на подчиненный справочник», будет свой набор значений, ни с чем не пересекающийся.

Создадим такой справочник, назовем его Свойства регионов и на закладке «Владельцы» установим единственного владельца, план видов характеристик Дополнительные свойства регионов.

План видов характеристик 1С

После создания справочника, перейдем в план видов характеристик Дополнительные свойства регионов и в поле «Тип значения характеристик» закладки «Основные» добавим новый тип – ссылку на справочник Свойства регионов. Теперь мы сможем создать элементы (характеристики) нашего плана видов характеристик с этим типом, а также создать элементы справочника Свойства регионов, подчиненные нужной характеристике.

План видов характеристик 1С

Но это еще не всё, в плане видов характеристик нужно указать, что значения характеристик хранятся именно в справочнике Свойства регионов. Указывается это в свойстве «Дополнительные значения характеристик» закладки «Основные».

План видов характеристик 1С

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

Сделаем это, создадим непериодический и независимый регистр сведений, который назовем Значение свойств регионов.

Регистр сведений 1С

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

Регистр сведений 1С

У измерения Регион установим свойство Ведущее.

И создадим ресурс «Значение», тип которого будет характеристика плана видов характеристик «Дополнительные свойства регионов».

Регистр сведений 1С

В результате в ресурсе Значение будут те значения характеристик, которые определены для плана видов характеристик «Дополнительны свойства регионов».

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

План видов характеристик 1С

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

План видов характеристик 1С

У характеристик Расположение и Экономический статус создадим подчиненные им элементы справочника Свойства регионов.

План видов характеристик 1С

План видов характеристик 1С

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

Регистр сведений 1С

Если мы попробуем создать новую запись регистра сведений, в которой выберем какое-нибудь свойство (например, Площадь), то обнаружим, что необходимо указать какой тип должен быть в поле Значение.

Регистр сведений 1С

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

Регистр сведений 1С

После таких настроек, тип у поля Значение будет подбираться автоматически.

Регистр сведений 1С

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

Регистр сведений 1С

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

Регистр сведений 1С

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

План видов характеристик 1С

План видов характеристик 1С

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

План видов характеристик 1С



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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.


В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком

Для моих читателей, купон на скидку 25%: hrW0rl9Nnx

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

можно оплатить вручную:

2 thoughts on “ План видов характеристик 1С ”

Опечатка в абзаце (слово ГАРАЖЕЙ => регионов)
Попробуем при помощи регистра сведений Значение свойств регионов привязать какую-нибудь характеристику и её значение к определенному региону. Заходить в сам регистр не нужно, достаточно открыть элемент справочника Регионы и выполнить команду Значение свойств ГАРАЖЕЙ, которая расположена вверху формы элемента (она появилась, потому что мы установили флаг Ведущее у измерения Регион ранее).

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


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


Самые простые параметры редактирования

Наиболее простыми для использования являются следующие параметры: Формат редактирования, Быстрый выбор, Выбор групп и элементов. С ними все понятно, поэтому их пропустим.

Маска - также описывать не буду. Он используется только для ввода значений строкового типа. Правила настройки этого параметра можно найти в Синтаксис-помощнике по слову Маска.

Форма выбора - позволяет указать, какую форму необходимо использовать для выбора значения параметра. Путь к форме необходимо прописывать точно также, как для метода ОткрытьФорму(), который также описан в СП.



Связи параметров выбора

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

Пример 1

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

Тогда достаточно в поле Параметр выбора указать имя реквизита из справочника Договоры контрагентов, в нашем случае это Владелец, поэтому запишем: Отбор.Владелец.
Зачем добавлять слово Отбор, опишу ниже.

В колонку Поле - нужно выбрать параметр Контрагент.


Теперь, если у параметра Контрагент стоит флаг Использование и контрагент выбран, то при выборе договора, будет накладываться отбор по владельцу.
Если же Контрагент не выбран или флаг у контрагента не установлен, то при выборе договора будут отображаться все договоры.

Поле Изменение значения влияет на то, очищать ли договор, если пользователь выбрал другого контрагента или не очищать.


Параметры выбора

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

Пример 2

Поля Контрагент и Договор из первого примера.
Мы хотим, чтобы пользователь мог выбрать только договор с видом С покупателем или Прочее и не помеченный на удаление.
Добавляем два параметра:
1. Параметр выбора = Отбор.ПометкаУдаления; Значение = ЛОЖЬ
2. Параметр выбора = Отбор.ВидДоговора; Значение = список из двух элементов : С покупателем, Прочее
Эти два параметра будут устанавливаться всегда независимо от выбранности/невыбранности параметра Контрагент.


Зачем нужно слово Отбор?

Почему в поле Параметр выбора необходимо использовать приставку Отбор? Какие еще параметры можно указывать и на что это влияет?

Это один из ключевых вопросов данной статьи, который и стал поводом к ее написанию.

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

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

Чтобы получше разобраться поэкспериментируем

Пример 3

Добавим по два параметра в Параметры выбора и в Связи параметров выбора.


Поставим точку останова в форме выбора при создании на сервере


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

Значит приставка перед точкой - является именем структуры, а после точки - имя ключа в этой структуре.


Связь по типу

В настройке данного параметра сбивает с толку наличие поля Элемент связи с типом число.
Чтобы понять как его настраивать разберем два примера.

Пример 4

Создадим в СКД параметр Счет.
И еще три параметра Субконто1, Субконто2, Субконто3.
Мы хотим, чтобы если выбран Счет, то во параметре СубконтоN автоматически устанавливался отбор со значениями соответствующего субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = Счет (ПараметрыДанных.Счет), Элемент связи = 1 (номер субконто)
Для остальных двух параметров аналогично, только Элемент связи будет 2 и 3.


Теперь при выбранном параметре Счет, в полях СубконтоN будут доступны только значения, соответствующие типу субконто


Пример 5

Создадим в СКД параметры Вид субконто и Субконто.
Мы хотим, чтобы при выборе вида, были доступны только значения соответствующие виду субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = ВидСубконто (ПараметрыДанных.ВидСубконто), Элемент связи = 0 (не имеет значение в данном случае)



Заключение

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

Но такие связи приходится настраивать довольно редко, и часто в таких случаях проще решить задачу с помощью кода, чем разбираться как это все настраивается.

Думаю, что данное описание поможет разобраться в этом механизме и начать его применять.

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

СВЯЗИ ПАРАМЕТРОВ ВЫБОРА

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

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

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

Поясню на конкретных примерах. Представим себе форму, в которой есть два реквизита типа Контрагент. Скажем нужно указать первого контрагента, а потом выбрать второго. Однако второго контрагента можно выбрать только из той же группы контрагентов, в которой находится первый. Здесь условие связи параметров выбора могло бы быть таким: Отбор.Родитель = Контрагент.Родитель. Однако правое выражение через точку не поддерживается платформой и потому такое условие связи ввести нельзя.

Для второго примера представим себе форму, в которой в шапке есть реквизит типа Договор, а в табличной части - реквизит Статья. При этом выбор статей ограничен списком из регистра соответствия статей договору. Такое условие связей могло бы выглядеть так: Отбор.Ссылка = РС.Статья И РС.Договор = ДоговорКонтрагента. Однако в этом случае в условии задействована дополнительная таблица и такое условие также задать стандартно нельзя.

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

  • ввод через форму выбора;
  • ввод из списка выбора;
  • определение однозначного значения выбора (предсказание выбора);
  • проверка соответствия значения ограничениям по связям параметров выбора.

ПАРАМЕТРЫ ВЫБОРА

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

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

ОБХОД ОГРАНИЧЕНИЙ ПАРАМЕТРОВ ВЫБОРА

Практика

На практике мне попадались следующие решения:

  • Передача в параметры формы выбора подготовленного списка ссылок для выбираемого типа данных
  • Использование специализированной формы выбора с предопределенным запросом динамического списка
  • Выбор из подготовленного списка значений

Недостатками этих решений являются:

  • Не универсальность (необходимо разрабатывать специализированные формы выбора)
  • Невозможность переиспользования данного подхода для формирования списка выбора
  • Невозможность переиспользования для проверки введенного значения

Решение

В рамках наложенных ограничений платформы, недостающие параметры можно передать косвенно через указание реквизита формы. Так, если по приведенному примеру выше, нам нужно указать связь по родителю реквизита Контрагент, то условие связи параметров может быть таким: Отбор.КонтрагентРодителя = Контрагент. Тогда в форму выбора или же в предопределенную процедуру обработки выбора будет передан параметр с именем КонтрагентРодителя и значением реквизита формы Контрагент. Далее нам достаточно отработать условие по этому параметру, а именно использовать этот параметр для получения значения через точку Контрагент.Родитель и уже это, полученное косвенно, значение параметра использовать для установки необходимого отбора по родителю.

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

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

ПОДСИСТЕМА РАБОТА С ДАННЫМИ ВЫБОРА


Рисунок 1. Диаграмма последовательности

Предлагаемая подсистема реализует интерфейс для работы следующих сценариев:

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

Подключение к подсистеме производится через вставку вызова в форме выбора и добавление предопределенной процедуры менеджера объекта ОбработкаПолученияДанныхВыбора.

Обработка параметров, функция ПолучитьТекстЗапроса

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

Основное назначение функции - в получении текста запроса по переданным параметрам. В отличии от стандартного поведения платформы, когда в форму выбора передаются параметры, эта функция не имеет ограничений: в ней можно реализовать любые условия выбора. Однако и здесь есть ограничение платформы: результирующий запрос не должен содержать объединений ни в одном из пакетов запроса. Это ограничение накладывается реализацией динамического списка, в котором на текущий момент объединения не поддерживаются (однако объединение можно использовать во вложенном запросе!).

В следующем листинге демонстрируется пример-заготовка реализации такой функции. Данная реализация основана на использовании объектной модели запроса. Работа с объектной моделью осуществляется с использованием подсистемы "Работа со схемой запроса". С шаблонами построения текста запроса при использовании подсистемы можно подробнее ознакомиться в одноименной статье.

Листинг 1. Общая структура функции ПолучитьТекстЗапроса на примере справочника _ДемоНоменклатура

Динамический список формы выбора

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

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

Для работа подсистемы необходимо настроить динамический список формы выбора: установить произвольный запрос и изменить псевдоним основной таблицы на имя "Источник".

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

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

Листинг 2. Демонстрация разделения параметров в функции ПолучитьТекстЗапроса

Листинг 3. Подключение формы выбора к подсистеме

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

Список данных выбора


Рисунок 2. Список выбора

Механизм получения списка данных выбора аналогичен описанному для динамического списка формы выбора.

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

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

Листинг 4. Подключение процедуры к подсистеме

Проверка на соответствие условиям параметров выбора. Заполнение по-умолчанию.

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

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

Листинг 5. Проверка соответствия переменной СсылкаНаЗначение переданным параметрам выбора из структуры Параметры

СТЕНД "РАБОТА С ДАННЫМИ ВЫБОРА"


Рисунок 3. Форма обработки стенда

Для демонстрации работы подсистемы выбран справочник _ДемоНоменклатура из демо-конфигурации БСП. С помощью расширения конфигурации в справочнике доработан менеджер объекта и форма выбора. В модуль менеджера добавлена функция ПолучитьТекстЗапроса и предопределенная процедура ОбработкаДанныхВыбора. В форме выбора добавлен вызов процедуры ЗаполнитьТекстЗапросаДинамическогоСписка.

В функции ПолучитьТекстЗапроса реализована обработка дополнительных параметров:

  1. Организация и Контрагент - формируется список номенклатуры, которая использовалась в документах реализации
  2. Договор контрагента - формируется список номенклатуры, определенный в регистре сведений НоменклатураДоговора
  3. Дополнительные реквизиты - отбор по реквизитам из табличной части номенклатуры
  4. Дополнительные свойства - отбор по свойствам, определенным в регистре сведений СвойстваОбъектов

В процедуре используются приемы по формированию текста запроса в объектной модели с использованием подсистемы РаботаСоСхемойЗапроса. Более подробно читайте здесь.

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

Связи параметров выбора в 1С

Начнем со связей параметров выбора.

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

Справочники в 1С

Причем справочник Контрагенты является владельцем справочника ДоговорыКонтрагентов.

Владельцы справочника 1с

А также, я создам документ Оплата, в котором нужно указывать контрагента, договор контрагента и сумму.

Документ 1с

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

Форма выбора справочников 1С

Что, согласитесь может быть неудобно. И гораздо удобнее, чтобы выходили только договоры выбранного контрагента. Для того, чтобы пользователи могли видеть договоры контрагента, который указан в поле Контрагент, необходимо настроить связи параметров выбора. Для этого, нужно зайти в палитру свойств реквизита Договор, в которой интересует свойство Связи параметров выбора. Если нажать на кнопку «…» этого свойства, то откроется окно «Связи параметров выбора». В этом окне можно настраивать различные связи реквизита, палитру свойств которого мы открыли, с остальными реквизитами. Мы настроим связь с реквизитом Контрагент.

Связи параметров выбора

После выбора реквизита Контрагент таблица «Параметры» заполнится автоматически.

Связи параметров выбора

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

Связи параметров выбора

Всё! Теперь, когда мы будем выбирать договоры в документе Оплата, то будут выходить только договоры выбранного контрагента.

Связи параметров выбора

Параметры выбора в 1С

Помимо настроек связи параметра выбора со значением другого реквизита, в 1С 8.3. можно настраивать параметры выбора. Например, можно сделать так, чтобы для выбора были доступны только непомеченные на удаление элементы.

К примеру, у нас бывают договоры контрагентов, которые помечены на удаление.

Эти же элементы отображаются в форме выбора договоров в документе Оплата.

Пометка на удаление 1С

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

Настройка параметров выбора

Если всё сделано правильно, то свойство Параметры выбора реквизита документа Договор должно заполниться.

Параметры выбора

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

Параметры выбора

О том, как работать с проверкой заполнения реквизитов объектов, читайте в этой статье:

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

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

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Читайте также: