Установка параметров выбора и связей параметров выбора для объектов метаданных
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. Как правило, такие ограничения бизнес-логики как ограничения выбора, должны быть одинаковыми для всех форм, в которых редактируется тот или иной объект. Поэтому задавать параметры выбора и связи параметров выбора рекомендуется в свойствах объектов метаданных — в реквизитах справочников, документов и т.п.
2. Однако могут встречаться случаи, когда ограничения выбора могут зависеть от конкретного сценария работы. В таких случаях параметры выбора могут быть уточнены по месту, в конкретной форме.
Например, в конфигурации имеются
- справочник Сотрудники , в котором есть реквизиты Организация и ВидСотрудника (перечисление со значениями Основной / Совместитель );
- документ ПриказОПриеме , в котором есть реквизит Организация и Сотрудник ; при этом для реквизита Сотрудник документа ПриказОПриеме задана связь параметра выбора Отбор.Организация с реквизитом Организация .
Требуется реализовать возможность выбора только основных сотрудников в зависимости от значения функциональной опции ВыбратьТолькоИзОсновыхСотрудников . Для этого необходимо
- в форме документа ПриказОПриеме реализовать дополнительный реквизит формы ВидыСотрудников ,
- после чего для поля формы Сотрудник может быть установлена связь параметра выбора Отбор.ВидСотрудника с реквизитом формы ВидыСотрудников ,
- при этом реквизит формы ВидыСотрудников заполняется на основании анализа функциональной опции.
(При этом установить для реквизита Сотрудник документа ПриказОПриеме связь для параметра выбора Отбор.ВидСотрудника нет возможности, т.к. реквизита ВидСотрудника в документе ПриказОПриеме не существует.)
Тогда установка связи для параметра Отбор.Организация в свойствах реквизита Сотрудник документа ПриказОПриеме и связи для параметра Отбор.ВидСотрудника в поле формы документа ПриказОПриеме приведет к тому, что в режиме 1С:Предприятия будут работать обе связи параметра выбора. Таким образом, при выборе сотрудника в форме приказа о приеме отбор в списке сотрудников будет установлен как по организации, заполненной в документе, так и по виду сотрудника, который будет определен на основании функциональной опции.
Параметры выбора в 1С
В этой статье я расскажу, что такое параметры выбора и связи параметров выбора в 1С 8.3, и как с их помощью можно сделать работу пользователей более комфортной.
Связи параметров выбора в 1С
Начнем со связей параметров выбора.
Для большей наглядности, реализуем небольшую задачу. Пусть у нас есть два справочника Контрагенты и ДоговорыКонтрагентов.
Причем справочник Контрагенты является владельцем справочника ДоговорыКонтрагентов.
А также, я создам документ Оплата, в котором нужно указывать контрагента, договор контрагента и сумму.
Если с такими настройками, мы попробуем выбрать договор контрагента, то в форме выбора отобразятся все договоры всех контрагентов.
Что, согласитесь может быть неудобно. И гораздо удобнее, чтобы выходили только договоры выбранного контрагента. Для того, чтобы пользователи могли видеть договоры контрагента, который указан в поле Контрагент, необходимо настроить связи параметров выбора. Для этого, нужно зайти в палитру свойств реквизита Договор, в которой интересует свойство Связи параметров выбора. Если нажать на кнопку «…» этого свойства, то откроется окно «Связи параметров выбора». В этом окне можно настраивать различные связи реквизита, палитру свойств которого мы открыли, с остальными реквизитами. Мы настроим связь с реквизитом Контрагент.
После выбора реквизита Контрагент таблица «Параметры» заполнится автоматически.
В результате, свойство реквизита Связи параметров выбора должно быть заполнено следующим образом.
Всё! Теперь, когда мы будем выбирать договоры в документе Оплата, то будут выходить только договоры выбранного контрагента.
Параметры выбора в 1С
Помимо настроек связи параметра выбора со значением другого реквизита, в 1С 8.3. можно настраивать параметры выбора. Например, можно сделать так, чтобы для выбора были доступны только непомеченные на удаление элементы.
К примеру, у нас бывают договоры контрагентов, которые помечены на удаление.
Эти же элементы отображаются в форме выбора договоров в документе Оплата.
Если мы хотим, чтобы в форме выбора договоров контрагента отображались только непомеченные на удаление элементы справочника, то нужно открыть свойство Параметры выбора реквизита Договор. Откроется форма, в которой необходимо настроить параметры выбора. В моем случае, установить, что Пометка на удаление Ложь.
Если всё сделано правильно, то свойство Параметры выбора реквизита документа Договор должно заполниться.
Если сейчас, мы попытаемся выбрать договор контрагента, то откроется форма выбора, в которой будут отсутствовать элементы, помеченные на удаление.
О том, как работать с проверкой заполнения реквизитов объектов, читайте в этой статье:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
2 Replies to “Параметры выбора в 1С”
Не понятно, зачем так усложнять. Если есть подчинённый справочник, то логично же, что бы по умолчанию разрешалось выбрать только те объекты, которые подчинены владельцу. Зачем дополнительно сделали связи. Ну ил они должны быть заполнены данным значением по умолчанию.
У меня похоже не стандартная задача. На форму добавлен реквизит типа СправочникСсылка.Пользователи Мне надо показывать для выбора пользователей относящихся к определённой группе пользователей. Или же перечислить список возможных значений пользователей. Пробовал реализовать через дополнительный реквизит там странное поведение формы. Форма не позволяет мне перенести этот дополнительный реквизит на страницу Основное документа Заказ поставщику. Причём это для меня явилось неожиданностью, так как в 1С Документооборот я без проблем переместил дополнительный реквизит с страницы Свойства на страницу Реквизиты. Ожидал, что и в другом прпиложении с Управляемыми формами будет так, а нет. Не так. Ну что это за никому не нужное разнообразие подходов. Мне бы не нужен был в конфигурации реквизит. Я бы дополнительным обошёлся. Но пользователи будут забывать указать нужное значение на Странице Дополнительно.
Что такое связь по параметрам выбора
Сегодня опишу такую вещь как “связи параметров выбора”. Много раз пользовался этим механизмом в конфигураторе, настраивая связи.
Но как всегда полет мысли пользователя и моя погоня за удобством работы пользователя в форме провели к тому, что данный функционал нужно было использовать программно.
Вот простой пример кода который иллюстрирует программное использование:
Как видно, ничего сложного в этом коде нет. Главное правильно без ошибок указать имена реквизитов и их путь в конструкторе СвязьПараметраВыбора.
Программное использование позволит более гибко использовать параметры выбора, например если их использование необходимо не всегда, а только в зависимости от заполнения других реквизитов формы.
Так же можно использовать более сложные конструкции и даже использовать те реквизиты, которые не доступны для выбора в режиме конфигуратора.
Это самый просто пример, но он позволит начать изучение темы.
Совместно с использованием заполнения списка выбора этот код позволяет сделать динамические ограничения ввода и фильтрацию в поле ввода в режиме ввода текста, режиме выбора из списка и выбора в форме выбора.
Кайков Константин
программист 1С удаленно
а еще web-программист, разработчик android и просто толковый ИТшник
Связи параметров выбора или как связать поля ввода на форме
Если на форме два поля, один из которых подчинён другому по структуре данных, то часто бывает необходимо ограничить ввод данных по владельцу. Например, есть поле Партнёр и Вид цены поставщика.
Для того, чтобы в поле Вид цены поставщика автоматически выбирались только данные выбранного Партнера, необходимо в свойстве СвязиПараметровВыбора поля Вид цены поставщика сделать настройку Отбор.Владелец(Объект.Партнер).
Проблема в том, что это не совсем очевидно. Ведь в дереве свойств конфигуратора в это поле нельзя ввести данные, это нужно делать через вспомогательную форму.
Связи параметров выбора
Теперь необходимо в колонке Имя вместо Партнер ввести текст Отбор.Владелец. Задача выполнена!
1с связи параметров выбора не работает
Продолжаем наполнять рубрику ‘Джуниор 1с’ полезными заметками. Сегодня у нас так на рассмотрении такое простое свойства элемента формы как ‘Связи параметров выбора’ (ChoiceParameterLinks), которое облегчает жизнь пользователю при выборе значений реквизита формы.
По простому – это свойство отвечает за формирование списка элементов в форме выбора по установленном отбору. Рассмотрим простой пример.
У нас есть справочник [Футбольные клубы] и у него есть реквизит [Страна]:
Пользователь хочет, что бы при выборе футбольного клуба в обработке, появлялся только список из клубов, указанной ранее страны:
Делается это очень просто через свойство элемента формы ‘Клуб’ / ‘Связи параметров выбора’:
Программа нам уже сама подсказывает, через какие поля мы сможем сделать нужный нам отбор. В данном примере делаем отбор через реквизит формы ‘Страна’:
По-простому: указываем какой отбор мы будем применять в списке выбора и реквизит, откуда отбор возьмет необходимое значение. Параметр ‘Режим изменения связанного значения’ определяет, будет ли при изменении реквизита отбора ‘Страна’ очищаться значение в реквизите ‘Клуб’.
Так же стоит заметить что здесь мы можем задать одновременно несколько необходимых нам отборов!
Если конфигурация типовая и не хочется сильно напрягаться с обновлением форм, то эти связи параметров выбора можно сделать и программно:
а еще web-программист, разработчик android и просто толковый ИТшник
Если на форме два поля, один из которых подчинён другому по структуре данных, то часто бывает необходимо ограничить ввод данных по владельцу. Например, есть поле Партнёр и Вид цены поставщика.
Для того, чтобы в поле Вид цены поставщика автоматически выбирались только данные выбранного Партнера, необходимо в свойстве СвязиПараметровВыбора поля Вид цены поставщика сделать настройку Отбор.Владелец(Объект.Партнер).
Проблема в том, что это не совсем очевидно. Ведь в дереве свойств конфигуратора в это поле нельзя ввести данные, это нужно делать через вспомогательную форму.
Связи параметров выбора
Теперь необходимо в колонке Имя вместо Партнер ввести текст Отбор.Владелец. Задача выполнена!
Подчиненные владельцу реквизиты — элементы справочников, которые должны выбираться пользователем в контексте элемента-владельца. В тестовом примере у нас будут справочники «Контрагенты», «Договора» и документ «ПриходнаяНакладная» с реквизитами «Контрагент» и «Договор».
Cправочник «Договора» подчинен справочнику «Контрагенты»:
Для документа «ПриходнаяНакладная» в свойствах реквизита «Договор» выставляем «Связи параметров выбора: Отбор.Владелец(Контрагент)»
Для этого по нажатию […] выбираем в списке «Связи параметров выбора» реквизит «Контрагент»:
В таблице Имя-Реквизит-Режим изменения должно стоять: Отбор.Владелец — Контрагент — Очищать
Если в поле «Имя» стоит что-то другое, нужный вариант можно выбрать из выпадающего списка:
Связи параметров выбора в 1С
С появлением механизма управляемых форм в 1С значительно расширились возможности настройки поведения форм и элементов форм прикладных объектов 1С (справочника, документа и пр.).
Формы прикладных объектов — это именно те элементы интерфейса программы, которые видит и с которыми работает пользователь.
Именно это обстоятельство является главным фактором требующего наличие как можно более развитого и гибкого механизма настройки поведения форм прикладных объектов при работе с ними пользователей (в пользовательском режиме, режиме 1С:Предприятие).
И вот начиная с версии платформы 1С 8.3 появилось большое количество настраиваемых свойств у реквизитов объектов метаданных конфигурации, а также реквизитов и элементов управляемых форм.
Зачастую в процессе работы пользователя с формами и элементами форм возникает необходимость ограничивать объем предлагаемых для выбора данных, другими словами, использовать фильтр.
Вот именно одним из таких «фильтров» является свойство «Связи параметров выбора» (Рисунок 1).
Это свойство предназначено для настройки фильтра формы выбора без написания кода программы, т.е. без программирования.
Другими словами, это свойство позволяет указать список реквизитов, которые будут поставлять значения, используемые при выборе значения реквизита, при открытии формы выбора, при отображении списка быстрого выбора и при выполнении ввода по строке.
2. Реквизиты объектов метаданных и элементы формы в 1С 8.3. Разница в использовании свойства «Связи параметров выбора»
Следует отметить, что свойство «Связи параметров выбора» есть и у реквизитов объектов метаданных в 1С (Рисунок 2).
И у элементов формы в 1С 8.3(Рисунок 3)
Разница в использовании этого свойства у реквизита объекта метаданных и элемента формы в том, что в случае использования свойства связи параметров выбора в 1С реквизита, установленные настройки будут распространяться (действовать) во всех формах объекта метаданных (справочника, документа и пр.) у реквизита, где это свойство настроено. В случае же использования этого свойства у элемента формы настройки будут распространяться только на данную форму объекта и в других формах действовать не будут.
В большинстве случаев с методологической точки зрения корректнее настраивать свойство «Связи параметров выбора» у реквизита объекта метаданных.
3. Как использовать свойства связи параметров выбора в 1С. Пример
Одним из типичных и распространенных примеров подобной ситуации является случай, когда после выбора в документе поступления товаров поставщика при последующем выборе договора не нужно выбирать из всех договоров, а необходимо ограничить список только договорами, заключенными именно с этим поставщиком.
Рассмотрим использование свойства связи параметров выбора в 1С на простейшем примере.
Вот данные справочника «Контрагенты» (Рисунок 4).
И соответственно данные справочника «Договоры» (Рисунок 5).
При пустом значении свойства «Связи параметров выбора» (Рисунок 6).
. В режиме 1С:Предприятия в документе «Приходная накладная» при выборе договора отображается полный список договоров, по всем контрагентам (Рисунок 7).
Теперь установим значение свойства «Связи параметров выбора» (Рисунок 8, Рисунок 9, Рисунок 10).
И вот что получаем (Рисунок 11).
Как видно на скрине, после настройки свойства «Связи параметров выбора» список договоров фильтруется по выбранному в документе контрагенту.
При настройке свойства в конфигураторе 1С Связи параметров выбора в форме настройки есть параметр «Режим изменения связанного значения» установленный в значение «Очищать» (Рисунок 12).
При таком параметре в случае изменения или очистки значения поля «Контрагент» значение поля «Договор» тоже будет очищено.
Такие настройки позволяют получить большую достоверность вводимых данных и минимизировать ошибки при вводе данных уменьшая влияние человеческого фактора.
Значения, указанные в данном свойстве, будут переданы в открываемую форму через структуру Параметры передавая их при вызове метода ОткрытьФорму()
4. Связи параметров выбора в 1С программно
Также у элементов формы можно устанавливать и изменять связи параметров выбора в коде 1С программно.
Если рассматривать пример выше, то фрагмент программного кода будет выглядеть так: