1с отбор по владельцу в свойствах реквизита

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

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

    • Введение
      • Связи параметров выбора
        • Пример: Фильтр по контрагенту
        • Пример: Фильтр по Пометке удаления
        • Пример: 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

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

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

  Маркет42 - Место для твоих разработок  

Как открыть справочник ЗначениеСвойствОбъектов с отбором по Владельцу?

Я
   fantomrik

27.04.13 — 16:50

Добрый день!

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

http://s1.ipicture.ru/uploads/20130427/ZNgmIZFK.jpg

http://s1.ipicture.ru/uploads/20130427/4MjX2Eqe.jpg

  

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

   fantomrik

1 — 27.04.13 — 23:15

ап

   fantomrik

2 — 28.04.13 — 11:06

апну

   Фокусник

3 — 28.04.13 — 12:58

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

   fantomrik

4 — 28.04.13 — 13:38

Нашел решение, возможно кому то пригодится.

1. Добавляем к отчету реквизит тип ПВХ Свойства объектов.

2. На форме у реквизита справочника ЗначенияСвойстОбъектов в свойствах устанавливаем «Связь по владельцу» с созданным выше реквизитом и вешаем на обработчик «Начало выбора» реквизита справочника присвоение реквизиту ПВХ значения свойства: ревизитСвойстваОбъектов = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(«Решение комиссии»);

  

fantomrik

5 — 28.04.13 — 13:39

(3) Да наверно и так можно было, но (4) более простой способ получается.

Программист всегда исправляет последнюю ошибку.

Отбор по владельцу в 1с : Предприятие 8

Отбор по владельцу является классической “плюшкой” в 1с : Предприятии 8. Применение подобного отбора предполагают многие задания в 1с. Следует учитывать, что наличие такого отбора оценивается при решении задач на 1с специалист по платформе. Приведем механизм организации такого механизма без использования программирования.

Использование отбора рассмотрим на примере двух Справочников:

  • Справочник Контрагенты
  • Справочник Контактные Лица Контрагентов

Не трудно догадаться, что справочник Контрагенты будет владельцем справочника Контактные Лица Контрагентов.

Отбор по владельцу в 1с
Справочник контактные лица

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

Во-первых выберем на форме документа столбец содержащий ссылку на Справочник Контактные Лица Контрагентов.

Отбор по владельцу в 1с
Настройка отбора по владельцу

Во-вторых настроим связи параметров выбора.

Отбор по владельцу в 1с
Связи при настройки отбора по владельцу в 1с

Мы настроили отбор по владельцу в 1с:Предприятии 8 без строчки кода на 1с.

Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить — сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ
НаСервере
П


10060 (0x0000274C): Попытка установить соединение была безуспешной 22
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и


17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ


1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools — это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем


COM-соединение не обнаружило свободной лицензии / ключ защиты 0
Иногда при подключении к 1С возникает ошибка:
COM-соединение не обнаружило свободной лицензии!
COM-соединение не обнаружило ключ защиты программы!
https://helpf.pro/uploads/img/_1-UsuyAg6E2P.jpg
В таких случаях, иногда, может помочь следующий с


Посмотреть все результаты поиска похожих

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

Есть два справочника: Контрагенты (владелец) и ДоговорыКонтрагентов(подчиненный) и документ ПоступлениеОплатыПоДоговору.

На форме документа соответственно: Контрагент, ДоговорКонтрагента.

Вопрос: как сделать так чтобы в выпадающем списке отображались только те договоры, которые относятся к выбранному контрагенту, что на форме?

Помню что где-то в настройках то ли объекта документа, то ли в настройках элемента управления формы.
Что где выставить надо?

И еще сопутствующий вопрос. В 8.3 по умолчанию, когда открываешь выпадающий список выпадают не значения, а список последних выбранных значений и кнопки «добавить» и «показать всех». Как сделать так чтобы отображались сразу значения из источника данных? В 8.2 такого не было.

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

Cправочник «Договора» подчинен справочнику «Контрагенты»:

Для документа «ПриходнаяНакладная» в свойствах реквизита «Договор» выставляем «Связи параметров выбора: Отбор.Владелец(Контрагент)»

Для этого по нажатию […] выбираем в списке «Связи параметров выбора» реквизит «Контрагент»:

В таблице Имя-Реквизит-Режим изменения должно стоять: Отбор.Владелец — Контрагент — Очищать

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

Поиск:
1С:Предприятие • Владелец • Отбор • Параметр • Управляемая форма

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Понравилась статья? Поделить с друзьями:
  • 1 3 дяди федоровой компании 5 букв сканворд
  • 1с отчетность для группы компаний стоимость
  • Яндекс панорамы сервисы от компании яндекс
  • 1 курьяновская улица 24 2 гибдд часы работы
  • 1с поиск документа по нескольким реквизитам