Что такое параметры выбора для реквизита документа

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

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

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

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

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

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

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

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

Документ 1с

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проверка заполнения в 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

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

Книга написана понятным и простым языком — для новичка.

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

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

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

Промо-код на скидку в 15% — 48PVXHeYu

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


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

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

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Содержание:

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

2.      Реквизиты объектов метаданных и элементы формы в 1С 8.3. Разница в использовании свойства «Связи параметров выбора»

3.      Как использовать свойства связи параметров выбора в 1С. Пример

4.      Связи параметров выбора в 1С программно  

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

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

Формы прикладных объектов — это именно те элементы интерфейса программы, которые видит и с которыми работает пользователь.

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

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

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

Вот именно одним из таких «фильтров» является свойство «Связи параметров выбора» (Рисунок 1).

Рисунок 1

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

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

2.    Реквизиты объектов метаданных и элементы формы в 1С 8.3. Разница в использовании свойства «Связи параметров выбора»

Следует отметить, что свойство «Связи параметров выбора» есть и у реквизитов объектов метаданных в 1С (Рисунок 2).

Рисунок 2

И у элементов формы в 1С 8.3(Рисунок 3)

Рисунок 3

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

В большинстве случаев с методологической точки зрения корректнее настраивать свойство «Связи параметров выбора» у реквизита объекта метаданных. 

3.    Как использовать свойства связи параметров выбора в 1С. Пример

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

Рассмотрим использование свойства связи параметров выбора в 1С на простейшем примере.

Вот данные справочника «Контрагенты» (Рисунок 4).

Рисунок 4

И соответственно данные справочника «Договоры» (Рисунок 5).

Рисунок 5

При пустом значении свойства «Связи параметров выбора» (Рисунок 6)…

Рисунок 6

…В режиме 1С:Предприятия в документе «Приходная накладная» при выборе договора отображается полный список договоров, по всем контрагентам (Рисунок 7).

Рисунок 7

Теперь установим значение свойства «Связи параметров выбора» (Рисунок 8, Рисунок 9, Рисунок 10).

Рисунок 8

Рисунок 9

Рисунок 10

И вот что получаем (Рисунок 11).

Рисунок 11

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

При настройке свойства в конфигураторе 1С Связи параметров выбора в форме настройки есть параметр «Режим изменения связанного значения» установленный в значение «Очищать» (Рисунок 12).

Рисунок 12

При таком параметре в случае изменения или очистки значения поля «Контрагент» значение поля «Договор» тоже будет очищено.

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

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

4.    Связи параметров выбора в 1С программно

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

Если рассматривать пример выше, то фрагмент программного кода будет выглядеть так:

(Рисунок 13)

Рисунок 13

Вызывать процедуру установки связи нужно из процедуры:

Специалист компании ООО «Кодерлайн» 

Александр Арутюнов.

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

Содержание[Убрать]

    • Введение
      • Связи параметров выбора
        • Пример: Фильтр по контрагенту
        • Пример: Фильтр по Пометке удаления
        • Пример: 2 условия связи
      • Параметры выбора
        • Пример: Отбор по контрагенту

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

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

Если кратко то, Связи параметров выбора настраивают отбор в открываемой форме на основе реквизитов текущего объекта, а Параметры выбора — настраивают отбор на основе жестко установленных значениях

Введение

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

Для примера будет использована кофигурация со следующими объектами:

Справочник.Контрагенты

Справочник.Договоры

Документ.Приходная

Реквизит: Контрагент

Реквизит: Договор

Список контрагентов

Для контрагентов созданы следующие договоры

graphic

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

graphic

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

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

Пример: Фильтр по контрагенту

Для этого нужно сделать следующую настройку

graphic

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

И при выбранном Контрагенте «Контрагент 1» откроется следующая форма

graphic

Я не зря пояснял, что наш объект это документ, а не выбранное значение Контрагент, и это хорошо видно на следующем примере

Пример: Фильтр по Пометке удаления

Сделаем следующую настройку

graphic

И тогда при значении «Контрагент 1» у нас откроется следующая форма

graphic

С первого взгляда может показаться, что фильтр отсутствует, но если приглядетсья, то видно, что в списке нет элемента «Договор 2-2», который помечен на удаление. Программа взяла значение пометки удаления документа и отфильтровала по ней список, а т.к. документ не помечен на удаление, то здесь показаны все элементы не помеченные на удаление.

Теперь давайте пометим документ на удаление и заново откроем список.

graphic

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

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

Пример: 2 условия связи

Сделаем следующую настройку

graphic

Отменим удаление документа, выберем контрагента «Контрагент 2» и откроем форму выбора договоров

В форме доступен только один договор «Договор 2-1».

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

Предназначены для указания конкретных значений отбора

Пример: Отбор по контрагенту

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

Выбираем тип значения

graphic

и выбираем само значение

graphic

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

graphic

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

graphic

И конечно же можно использовать свойства Связи параметров выбора и Параметры выбора одновременно

graphic

И тогда при выборе договора для контрагента «Контрагент 2», откроется форма

graphic

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

Недостаточно прав для комментирования

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

Значение заполнения

Это свойство позволяет установить значение по-умолчанию для реквизита.
Например, решим такую задачу: в справочнике «Сотрудники» есть реквизит «Вид приема на работу», который принимает одно из 3-х значений: «Штатный», «Внутренний совместитель» и «Внешний совместитель»:
imageДля новых сотрудников по-умолчанию нужно устанавливать вариант приема на работу — «Штатный». Для того чтобы решить эту задачу достаточно в конфигураторе перейти в свойства реквизита и выбрать значение по-умолчанию в свойстве «Значение заполнения»:
imageВ результате при создании нового элемента справочника значение реквизита будет заполнено выбранным значением по-умолчанию:

Проверка заполнения

Это свойство реквизита, которое позволяет сделать реквизит обязательным для заполнения.
Например, решим такую задачу: в справочнике «Контрагенты» есть реквизит «УНП», который пользователь должен заполнить обязательно.
imageПри попытке сохранить контрагента с пустым «УНП» должна выдаваться ошибка.

Для решения такой задачи достаточно в конфигураторе в настройках реквизита «УНП» установить свойство «Проверка заполнения» в значение «Выдавать ошибку»:

imageВ результате при попытке сохранения контрагента с пустым «УНП» пользователь получит сообщение об ошибке заполнения и сохранение выполняться не будет:
image

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

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

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

Это свойство позволяет настроить фильтр списка, который открывается при выборе значения реквизита.

Пример задачи:
В справочнике «Номенклатура» хранится список всех товаров и услуг организации:

imageВ документе «Расходная накладная» товары и услуги хранятся в разных табличных частях:
imageВ заполнении табличной части «Товары» пользователь при выборе товара должен видеть списке только товары, а при заполнении табличной части «Услуги» — только услуги (без товаров). При этом в справочнике «Номенклатура» есть реквизит типа «Булево» — «Услуга», который позволяет однозначно определить тип номенклатуры:
imageДля решения этой задачи нужно в конфигураторе настроить свойство «Параметры выбора» реквизита «Номенклатура» для каждой табличной части:
imageimageДля реквизита «Номенклатура» табличной части «Товары» добавляем в настройки параметров выбора условие вида «Услуга = Ложь», для реквизита «Номенклатура» табличной части «Услуги» — условие вида «Услуга = Истина». В результате при выборе значения реквизита список будет отфильтрован согласно этому условию.
imageimageТаким образом, в этой статье мы познакомились с полезными свойствами реквизитов объектов 1С, которые позволяют быстро и просто решать часто возникающие на практике задачи без программирования, это свойства:

  • Значение заполнения (настройка значения по-умолчанию)
  • Проверка заполнения (обязательность заполнения реквизита)
  • Связи параметров выбора (настройка связи между реквизитами одного объекта)
  • Параметры выбора (настройка фильтра списка при выборе значения реквизита)


2019-05-01 13:39

Программирование

Параметры выбора позволяют установить отбор для открываемой формы выбора объекта не изменяя код в самой форме выбора. Например, на форме есть реквизит «ДокументОтгрузки» с типом ДокументСсылка.РеализацияТоваровУслуг. Нам необходимо в этом поле выбрать только тот документ, у которого партнер будет равен какому-то определённому партнеру, и сам документ должен быть проведен. Соответственно, в открываемой форме выбора документов отгрузки должны стоять соответствующие отборы по партнеру и по признаку проведенности документа, но саму форму выбора мы не должны трогать. Для этого, в процедуре ПриСозданииНаСервере в форме, на которой расположено поле «ДокументОтгрузки» прописываем следующий код:

МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Партнер", ПартнерДляОтбора));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Проведен", Истина));
НовыеПараметрыВыбора =  Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.ДокументОтгрузки.ПараметрыВыбора = НовыеПараметрыВыбора;

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

Рассмотрим различные варианты установки отбора при выборе объекта на документе ДокументОтборПриемаТовара. У документа имеются следующие реквизиты (см. рисунок 1):

  • ПоставщикОтбор (тип СправочникСсылка.Поставщики);
  • ТоварОтбор (тип СправочникСсылка.Товары);
  • ОтветственныйОтбор (тип СправочникСсылка.Ответственный);
  • ПриемТовара (тип ДокументСсылка.ПриемТовара).
Рисунок 1. Структура документа ДокументОтборПриемаТовара

Выбирать будем документ ПриемТовара, а отбор в форме выбора будет устанавливаться по реквизитам с постфиксом Отбор.

Документ ПриемТовара имеет реквизиты (см. рисунок 2):

  • Поставщик (тип СправочникСсылка.Поставщики);
  • Ответственный (тип СправочникСсылка.Ответственный);
  • Комментарий (Тип Строка).

А так же табличную часть Товары, состоящую из реквизитов Товар (тип СправочникСсылка.Товары) и Количество (тип Число).

Рисунок 2. Структура документа ПриемТовара

1. Установка отбора в свойствах реквизита объекта метаданных

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

Рисунок 3. Отбор в свойствах реквизита объекта метаданных

Больше ничего делать не нужно, платформа сама завернет указанные параметры выбора в структуру (см. рисунок 4) и поместит её в параметр Отбор формы выбора, далее, анализируя данный параметр формы, платформа устанавливает отборы для динамического списка.

Рисунок 6. Значение параметра формы выбора Отбор

2. Установка отбора в свойствах элемента формы

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

Рисунок 5. Отбор в свойствах элемента формы

Свойства элемента формы имеют приоритет над свойствами реквизита объекта.

3. Установка собственного отбора при создании формы выбора на сервере

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

Рисунок 6. Связь параметра Товар с реквизитом ТоварОтбор

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

  
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Товар = Неопределено;
ЭтотОбъект.Параметры.Свойство("Товар", Товар);
Если Товар <> Неопределено Тогда
ФиксОтбор = ЭтотОбъект.Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
ЭлементОтбора = ФиксОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Товар");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Товар;
ЭлементОтбора.Использование = Истина;
КонецЕсли;

КонецПроцедуры

4. Программная установка параметров выбора

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

  
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// Создаем связи параметров выбора.
МассивСвязей = Новый Массив;
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Поставщик", "Объект.ПоставщикОтбор");
МассивСвязей.Добавить(НоваяСвязь);
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Ответственный", "Объект.ОтветственныйОтбор");
МассивСвязей.Добавить(НоваяСвязь);
НоваяСвязь = Новый СвязьПараметраВыбора("Товар", "Объект.ТоварОтбор");
МассивСвязей.Добавить(НоваяСвязь);

// Создаем параметры выбора.
МассивПараметров = Новый Массив;
НовыйПараметр = Новый ПараметрВыбора("Отбор.Проведен", Истина);
МассивПараметров.Добавить(НовыйПараметр);

// Устанавливаем связи параметров и параметры выбора для элемента формы.
Элементы.ПриемТовара.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязей);
Элементы.ПриемТовара.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);

КонецПроцедуры

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

5. Установка параметров выбора в момент начала выбора

Этот вариант позволяет «на лету» устанавливать параметры выбора. Усложним задачу и будем устанавливать отбор только по заполненным реквизитам отбора.
В модуле формы документа ДокументОтборПриемаТовара в событии НачалоВыбора для элемента ПриемТовара, который связан с реквизитом объекта ПриемТовара, напишем код, который будет устанавливать параметры выбора в зависимости от заполненности реквизитов отбора:

  
&НаКлиенте
Процедура ПриемТовараНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

МассивПараметров = Новый Массив;
Если ЗначениеЗаполнено(Объект.ПоставщикОтбор) Тогда
НовыйПараметр = Новый ПараметрВыбора("Отбор.Поставщик", Объект.ПоставщикОтбор);
МассивПараметров.Добавить(НовыйПараметр);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОтветственныйОтбор) Тогда
НовыйПараметр = Новый ПараметрВыбора("Отбор.Ответственный", Объект.ОтветственныйОтбор);
МассивПараметров.Добавить(НовыйПараметр);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ТоварОтбор) Тогда
НовыйПараметр = Новый ПараметрВыбора("Товар", Объект.ТоварОтбор);
МассивПараметров.Добавить(НовыйПараметр);
КонецЕсли;
НовыйПараметр = Новый ПараметрВыбора("Отбор.Проведен", Истина);
МассивПараметров.Добавить(НовыйПараметр);
Элементы.ПриемТовара.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);

КонецПроцедуры

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

6. Открытие формы выбора с установленным параметром формы Отбор в момент начала выбора

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

  
&НаКлиенте
Процедура ПриемТовараНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Отбор = Новый Структура;
Если ЗначениеЗаполнено(Объект.ПоставщикОтбор) Тогда
Отбор.Вставить("Поставщик", Объект.ПоставщикОтбор);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ОтветственныйОтбор) Тогда
Отбор.Вставить("Ответственный", Объект.ОтветственныйОтбор);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ТоварОтбор) Тогда
Отбор.Вставить("Товары", Новый Структура("Товар", Объект.ТоварОтбор));
КонецЕсли;
Отбор.Вставить("Проведен", Истина);
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("Документ.ПриемТовара.ФормаВыбора", ПараметрыФормы, Элемент);

КонецПроцедуры

Отборы на динамический список платформа наложит сама, писать дополнительно код больше не нужно, как в варианте №3.

А что будет, если отбор в связях параметров выбора и параметры выбора пересекаются?

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

Параметры выбора у реквизита. Сделать отбор по коду при открытии формы.

Я
   synapce

23.08.21 — 19:17

Всем привет.

Есть форма списка справочника «Детали». Иерархический справочник. И есть у него группа «Радиодетали» с кодом ММ-000341. Мне нужно сделать отбор при открытии — чтобы попадались только эти радиодетали.

Указал в параметрах выбора Отбор.Код(ММ-000341)

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

Пробовал по родителю подобное — не выводит элементов вообще.  

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

1С Бухгалтерия 3.0

  

Партнерская программа EFSOL Oblako

   Chameleon1980

1 — 23.08.21 — 19:22

отбор дс в иерархии

   synapce

2 — 23.08.21 — 19:25

(1) а где именно ставить, подскажете?

   Chameleon1980

3 — 23.08.21 — 19:26

а где вы пытаетесь свой отбор установить?

   synapce

4 — 23.08.21 — 19:26

(3) в конфигураторе свойства элементы формы

   synapce

5 — 23.08.21 — 19:28

(3) свойство реквизита. В Форме Выбора — указываю нужную мне форму выбора и в параметрах выбора указываю отбор

   Chameleon1980

6 — 23.08.21 — 19:29

http://prntscr.com/1qfv7wh

только программно, например в ПриСозданииНаСервере

   Chameleon1980

7 — 23.08.21 — 19:31

   Chameleon1980

8 — 23.08.21 — 19:32

ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка

   acht

9 — 23.08.21 — 19:37

(0) > Пробовал по родителю подобное — не выводит элементов вообще.

Показывай код или скриншот настроек

   synapce

10 — 23.08.21 — 19:49

(9) показать, увы, не могу, рабочая база. Делаю не кодом — средствами платформы.

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

   acht

11 — 23.08.21 — 19:53

(10) «ММ-000341» — это строка. Если ты ставшишь отбор по Код = строка, то это и будет ровно один элемент. Тот у которого код равен строке. Если ты ставишь отбор по Родитель = строка, то не будет ни одного элемента, потому что ссылка строке никогда не равна.

   synapce

12 — 23.08.21 — 19:54

(11) получается, что так, да. А…как тогда поставить правильно? Если выбираю, соответственно, справочникссылку — он мне выводит «пустое значение» в выбор. Как этот момент обойти, чтобы нормально выводил?

   acht

13 — 23.08.21 — 19:59

(12) Программно — найти ссылку по коду и передать ее при открытии формы через параметр Отбор в событии ПриНачалеВыбора, типа так:

СтандартнаяОбработка = Ложь;

ПараметрыФормыВыбора = Новый Структура(«Отбор», Новый Структура);

ПараметрыФормыВыбора.Отбор.Вставить(«Родитель», Справочники.Детали.НайтиПоКоду(«ММ-000341»);

ОткрытьФорму(«Справочники.Детали.ФормаВыбора», ПараметрыФормыВыбора, Элементы.ТоЧтоВыбираем);

   acht

14 — 23.08.21 — 20:00

(12) Можно попробовать еще сделать этот элемент-родителя предпределенным, там по-моему тогда удастя его в форме выбрать. Но не уверен.

   synapce

15 — 23.08.21 — 20:10

(14) спасибо за код, ругается в данный момент, что нет такого элемента «Открыть форму»)

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

   acht

16 — 23.08.21 — 20:17

(15) Наоборот надо.

ПараметрыФормыВыбора.Отбор.Вставить(«Родитель», ПолучитьРодителяНаСервереБезКонтекста());

   synapce

17 — 23.08.21 — 20:20

(16) стоп, стоп, можете пояснить, что в этом случае, куда вписывается?

Все, что выше нижней строчки- на сервере

А нижнюю — на клиенте определяем, да?

   synapce

18 — 23.08.21 — 20:21

(16) можете плз написать, что куда относится?

   acht

19 — 23.08.21 — 20:24

(18) Совсем молодежь плохая пошла.

&НаКлиенте

Процедура ЧтоТоТамНачалоВыбора(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    СсылкаНаГруппу = ПолучитьРодителяНаСервереБезКонтекста();

    ПараметрыФормыВыбора = Новый Структура(«Отбор», Новый Структура);

    ПараметрыФормыВыбора.Отбор.Вставить(«Родитель», СсылкаНаГруппу);

    ОткрытьФорму(«Справочники.Детали.ФормаВыбора», ПараметрыФормыВыбора, Элементы.ЧтоТоТам);

КонецПроцедуы

&НаСервереБезКонтекста

Функция ПолучитьРодителяНаСервереБезКонтекста()

    Возврат  Справочники.Детали.НайтиПоКоду(«ММ-000341»);

КонецФункции

   synapce

20 — 23.08.21 — 20:37

(19) показывает в данный момент просто ничего, а скажите, что указывать в «Элементы.чТототам». Я поставил просто «,Элемент»)

   synapce

21 — 23.08.21 — 20:38

(19) вроде и вопрос элементарный, а что-то туплю жестко…

   acht

22 — 23.08.21 — 21:39

(20) В «Элементы.ЧтоТоТам» надо указат элемент, которому прилетит событие выбора и установятся новые данные. Элемент тоже подойдет, если это поле, в котором происходит выбор.

Что возвращает Справочники.Детали.НайтиПоКоду(«ММ-000341») ?

   synapce

23 — 23.08.21 — 21:54

(22) Работает в данный момент только тогда, если укажу Ссылка вместо Родитель. Тогда возвращает как раз одну строку с этим наименованием. С Родитель — просто ничего не выводит

Справочники.Детали.НайтиПоКоду(«ММ-000341»)  — как раз возвращает ту самую строчку «Радиодетали»

   synapce

24 — 23.08.21 — 22:05

(22) Указал Родитель, затем изменил строку на

ОткрытьФорму(«Справочники.Детали.ФормаВыбора», ПараметрыФормыВыбора, ЭтаФорма);

— показались элементы дочерние (3 строки), но они тоже имеют своих «дочек», в данный момент они — без дочерних элементов, просто как три строки) ОТгадка где-то рядом)

   acht

25 — 24.08.21 — 08:53

(24) Оно у тебя еще и с вложенными группами…

Тогда отставить параметр формы Отбор. Кури параметр ФиксированныеНастройки. Туда надо передать настройки компоновки с установленным отбором с видом сравнения «В иерархии».

   Вафель

26 — 24.08.21 — 08:57

Нужен не отбор, а что то типа ТекущийРодитель

  

acht

27 — 24.08.21 — 09:02

(26) Это будет не отбор, а начальное позиционирование.

Понравилась статья? Поделить с друзьями:
  • Что такое производственные мощности в бизнес плане
  • Что такое производственный вид бизнеса определение
  • Что такое расчетный счет при заполнении реквизитов
  • Что такое реквизит документа перечислите реквизиты
  • Что такое реквизит объекта конфигурации справочник