1с как выбрать значение из справочника
Возможно использовать эту заготовку в обработках, где требуется подбор элементов справочников пользователем. Существующий стандартный способ из конфигурации мне показался громоздким, и я решил написать свой "мини". Результатом выбора является таблица значений со ссылкой на подобранные объекты. Элементы справочника не повторяются, даже если пользователь выбирает их несколько раз.
Для элемента формы, отвечающего за правило подбора заполняем его "список значений для выбора" необходимыми вариантами как на рисунке 1. Устанавливаем событие "ПриИзменении" для этого элемента, устанавливаем событие "ПередОткрытием" для всей формы, вставляем этот код и всё.
Благодарю за внимание!
Процедура КнопкаВыполнитьНажатие ( Кнопка )
ТаблицаКонтрагенты = ПолучитьТаблицуЭлементовИзПоляФормы ( "Контрагенты" , Истина);
Для каждого СтрокаТаблицы Из ТаблицаКонтрагенты Цикл
Сообщить ( СтрокаТаблицы . Ссылка . Наименование );
ОбработкаПрерыванияПользователя ();
КонецЦикла;
ТаблицаНоменклатура = ПолучитьТаблицуЭлементовИзПоляФормы ( "Номенклатура" );
Для каждого СтрокаТаблицы Из ТаблицаНоменклатура Цикл
Сообщить ( СтрокаТаблицы . Ссылка . Наименование );
ОбработкаПрерыванияПользователя ();
КонецЦикла;
КонецПроцедуры
Процедура ПередОткрытием ( Отказ , СтандартнаяОбработка )
УстановитьПравилоПодбораВПолеФормы ( ЭлементыФормы . ПравилоКонтрагенты . Значение , "Контрагенты" );
УстановитьПравилоПодбораВПолеФормы ( ЭлементыФормы . ПравилоНоменклатура . Значение , "Номенклатура" );
КонецПроцедуры
Процедура ПравилоКонтрагентыПриИзменении ( Элемент )
УстановитьПравилоПодбораВПолеФормы ( Элемент . Значение , "Контрагенты" );
КонецПроцедуры
Процедура ПравилоНоменклатураПриИзменении ( Элемент )
УстановитьПравилоПодбораВПолеФормы ( Элемент . Значение , "Номенклатура" );
КонецПроцедуры
//Правило выбора элементов из справочника в поле формы
Процедура УстановитьПравилоПодбораВПолеФормы ( ЗначениеПравила , НазваниеСправочника )
ЭлементыФормы [ НазваниеСправочника ]. Доступность = Истина;
Если ЗначениеПравила = "Равно" ИЛИ ЗначениеПравила = "НеРавно" Тогда
ЭлементыФормы [ НазваниеСправочника ]. ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов . ГруппыИЭлементы ;
ЭлементыФормы [ НазваниеСправочника ]. ОграничениеТипа = Новый ОписаниеТипов ( "СправочникСсылка." + НазваниеСправочника );
Если ПредыдущаяПараПравил <> "РавноНеРавно" Тогда
ЭлементыФормы [ НазваниеСправочника ]. Значение = Справочники [ НазваниеСправочника ]. ПустаяСсылка ();
КонецЕсли;
ПредыдущаяПараПравил = "РавноНеРавно" ;
ИначеЕсли ЗначениеПравила = "ВГруппе" ИЛИ ЗначениеПравила = "НеВГруппе" Тогда
ЭлементыФормы [ НазваниеСправочника ]. ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов . Группы ;
ЭлементыФормы [ НазваниеСправочника ]. ОграничениеТипа = Новый ОписаниеТипов ( "СправочникСсылка." + НазваниеСправочника );
Если ПредыдущаяПараПравил <> "ВГруппеНеВГруппе" Тогда
ЭлементыФормы [ НазваниеСправочника ]. Значение = Справочники [ НазваниеСправочника ]. ПустаяСсылка ();
КонецЕсли;
ПредыдущаяПараПравил = "ВГруппеНеВГруппе" ;
ИначеЕсли ЗначениеПравила = "ВСписке" ИЛИ ЗначениеПравила = "НеВСписке" Тогда
ЭлементыФормы [ НазваниеСправочника ]. ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов . ГруппыИЭлементы ;
ЭлементыФормы [ НазваниеСправочника ]. ОграничениеТипа = Новый ОписаниеТипов ( "СписокЗначений" );
Иначе
ЭлементыФормы [ НазваниеСправочника ]. Доступность = Ложь;
ЭлементыФормы [ НазваниеСправочника ]. ОграничениеТипа = Новый ОписаниеТипов ( "СправочникСсылка." + НазваниеСправочника );
ЭлементыФормы [ НазваниеСправочника ]. Значение = Справочники [ НазваниеСправочника ]. ПустаяСсылка ();
КонецЕсли;
ЭлементыФормы [ НазваниеСправочника ]. Значение = ЭлементыФормы [ НазваниеСправочника ]. ОграничениеТипа . ПривестиЗначение ( ЭлементыФормы [ НазваниеСправочника ]. Значение );
КонецПроцедуры
//Возвращает таблицу выбранных элементов справочника с колонкой "Ссылка"
Функция ПолучитьТаблицуЭлементовИзПоляФормы ( НазваниеСправочника , ВключатьГруппы = Ложь)
ИсходнаяТаблица = Новый ТаблицаЗначений ();
ИсходнаяТаблица . Колонки . Добавить ( "КолонкаЭлементов" , Новый ОписаниеТипов ( "СправочникСсылка." + НазваниеСправочника ));
ЗначениеПравила = ЭлементыФормы [ "Правило" + НазваниеСправочника ]. Значение ;
Если ЗначениеПравила = "Равно" ИЛИ ЗначениеПравила = "ВГруппе" Тогда
Если ЭлементыФормы [ НазваниеСправочника ]. Значение = Справочники [ НазваниеСправочника ]. ПустаяСсылка () Тогда
ВыборВключаетЭлементы = Ложь;
Иначе
ВыборВключаетЭлементы = Истина;
КонецЕсли;
ИначеЕсли ЗначениеПравила = "НеРавно" ИЛИ ЗначениеПравила = "НеВГруппе" Тогда
ВыборВключаетЭлементы = Ложь;
ИначеЕсли ЗначениеПравила = "ВСписке" Тогда
ВыборВключаетЭлементы = Истина;
ИначеЕсли ЗначениеПравила = "НеВСписке" Тогда
Если ЭтаФорма [ НазваниеСправочника ]. Количество () = 0 Тогда
ВыборВключаетЭлементы = Истина;
Иначе
ВыборВключаетЭлементы = Ложь;
КонецЕсли;
Иначе
ВыборВключаетЭлементы = Истина;
КонецЕсли;
Если ТипЗнч ( ЭлементыФормы [ НазваниеСправочника ]. Значение ) = Тип ( "СписокЗначений" ) Тогда
Для Каждого текСтрока Из ЭлементыФормы [ НазваниеСправочника ]. Значение Цикл
табСтрока = ИсходнаяТаблица . Добавить ();
табСтрока . КолонкаЭлементов = текСтрока . Значение ;
КонецЦикла;
Иначе
табСтрока = ИсходнаяТаблица . Добавить ();
табСтрока . КолонкаЭлементов = ЭлементыФормы [ НазваниеСправочника ]. Значение ;
КонецЕсли;
Запрос = Новый Запрос ;
Запрос . Текст = "
|ВЫБРАТЬ * ПОМЕСТИТЬ ИсходнаяТаблица ИЗ &ИсходнаяТаблица КАК ИсходнаяТаблица
|;
|ВЫБРАТЬ
| Ссылка
|ИЗ
| Справочник." + НазваниеСправочника + "
|ГДЕ
| " + ?( ВключатьГруппы , "" , " НЕ ЭтоГруппа И " ) + "
| Ссылка " + ?( ВыборВключаетЭлементы , "" , "НЕ" ) + " В ИЕРАРХИИ (ВЫБРАТЬ КолонкаЭлементов ИЗ ИсходнаяТаблица)
|" ;
Запрос . УстановитьПараметр ( "ИсходнаяТаблица" , ИсходнаяТаблица );
Возврат Запрос . Выполнить (). Выгрузить ();
КонецФункции
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 В таких случаях, иногда, может помочь следующий с ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За ZIP-архив Чтение 0
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный Посмотреть все результаты поиска похожих
Еще в этой же категории
Создание и запись нового элемента справочника 14
НаКлиенте Процедура ПоКнопкеНовыйКонтрагент(Команда) // Вставить содержимое обработчика. Перем НовыйКонтрагент; НовыйКонтрагент = Новый Структура(" Наименование, ПолноеНаименование, ИНН" ); НовыйКонтрагент.Наименование = " РиК ООО" ; НовыйКон Как для Выбора Элемента Справочника Открыть Форму Выбора с нужной Открытой Группой? 8
Порядок действий такой: 1. В поле ввода " Номенклатура" добавь событие ПриНачалеВыбора. 2. Установи в них СтандартнаяОбработка = Ложь; 3. Получи форму выбора нужного справочника 4. Установи отбор по родителю 5. Открой форму для выбора Теп Перебрать, выбрать элементы справочника 7
Выборка = Справочники.Сотрудники.Выбрать(); //или Выборка = Справочники.Сотрудники.ВыбратьИерархически(); Пока выборка.Следующий() = 1 Цикл . //действия с очередным элементом . Сообщить(" Сотрудник " + выборка.Наименование); КонецЦикла; / Перебрать, выбрать элементы подчиненного справочника 7
Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику. // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Вы Как сделать подбор элементов справочника в табличную часть документа? 7
Нужно на форме документа сделать кнопочку Подбор для справочника сотрудники и чтобы выбранные элементы добавлялись в табличное поле документа? В данной статье я приведу пример подбора элемента справочника в Список значений и в Табличную часть! Со Посмотреть все в категории Справочники
В форме размещаем кнопку "Подбор". Это может быть кнопка панели инструментов или отдельно стоящая кнопка.
В обработчике события Нажатие для кнопки пишем:
При этом происходят довольно интересные вещи:
1. В первой строке получаем форму выбора. Это особая форма, которая может не совпадать с формой списка (а может совпадать). Форму выбора можно создать самому, или она будет сгенерирована системой автоматически, или форма списка может работать в режиме выбора.
Если вы получили не форму подбора, а обычную форму (методом ПолучитьФорму или ПолучитьФормуСписка), то по умолчанию у нее не установлено свойство РежимВыбора. Нужно или установить это свойство в Истина, или оповещать о выборе элемента самостоятельно (см. метод формы ОповеститьОВыборе).
а) Первым параметром можно передать имя формы или объект описания метаданных типа формы. Если у объекта несколько форм выбора, то здесь можно указать, какую форму нужно использовать.
б) Вторым параметр указывается владелец формы - форма или элемент управления, из которого производится вызов формы выбора. После совершения выбора именно владельцу формы будет послано оповещение о выборе, которое инициирует событие "ОбработкаВыбора" (у формы или элемента формы).
в) Третьим параметром можно указать ключ уникальности для поиска среди уже открытых форм. Если форма с таким ключом уникальности будет найдена, то будет возвращена именно она. Это удобно, если не нужно открывать новых форм выбора.
2. Вторая строка устанавливает режим, при котором после выбора значения форма не будет закрываться, т.е. это и и есть основная функция подбора. При множественном выборе это свойство имеет смысл установить в Истина, но об этом ниже. Здесь же можно присвоить и другие свойства открываемой формы, например, расположение на экране, задать значения реквизитов формы или экспортных переменных модуля формы.
3. Третья строка открывает форму выбора. После первой строки форма еще не была открыта, но ее модуль уже был скомпилирован и инициализирован.
В свойствах формы должен быть назначен обработчик события "ОбработкаВыбора".
2. Множественный выбор
При таком выборе пользователь может выделить сразу несколько элементов (например, с помощью клавиши Ctrl) и после нажатия кнопки "Выбрать" система вернет массив выбранных элементов, а не один элемент, как в первом случае.
Тогда обработчик события ОбработкаВыбора можно написать так:
Примечание: Для ручной генерации события выбора из формы подбора нужно использовать функцию ОповеститьОВыборе.
Очень часто возникает необходимость программно открыть какую-то форму выбора (документа, справочника), выбрать нужное значение, и передать это значение на форму, которая инициализировала открытие формы выбора. Давайте разберемся, как это делать.
А делается это при помощи уже знакомого нам метода ОткрытьФорму.
Для тех, кто не знаком с вышеприведенным методом, рекомендую первым делом ознакомиться с моими статьями, где я подробно о нем рассказываю:
Открытие управляемой формы 1С с передачей параметров
Открытие управляемой формы 1С в отдельном окне
Для этой статьи я в конфигураторе 1С создам обработку, на форму этой обработки помещу команду, при выполнении которой, откроется форма выбора справочника Номенклатура, и запишу выбранное значение в реквизит формы обработки.
Здесь и далее приведена конфигурация из книги «Основы разработки в 1С: Такси».
Замечу, что в моей конфигурации нет формы выбора
т.е. мы будем открывать автоматически сгенерированную форму выбора.
Поэтому в методе ОткрытьФорму, когда мы будем выбирать нужную управляемую форму 1С, то просто выбираем ФормаВыбора.
Для того, чтобы получить какое-то значение с формы нужно использовать шестой параметр метода ОткрытьФорму – ОписаниеОповещенияОЗакрытии, который имеет тип ОписаниеОповещение.
Алгоритм такой: первым делом мы создаем новый объект с типом ОписаниеОповещения, в параметрах конструктора объекта указываем экспортную процедуру формы, которая сработает после выбора нужного значения с открытой формы. Создаем эту процедуру, где будем обрабатывать выбранное значение. Она должна иметь два параметра: РезультатВыбора и ДополнительныеПараметры. Вот такой должен получиться код:
&НаКлиенте
Процедура ВыбратьНоменклатуру ( Команда )
ОписаниеВыбора = Новый ОписаниеОповещения ( «ОбработатьВыборНоменклатуры» , ЭтаФорма );
Процедура ОбработатьВыборНоменклатуры ( РезультатЗакрытия , ДопПараметры ) Экспорт
Если Не ЗначениеЗаполнено ( РезультатЗакрытия ) Тогда
Возврат;
КонецЕсли;
Где ВыбраннаяНоменклатура это реквизит формы.
Заметьте, процедура ОбработатьВыборНоменклатуры, которую мы указали в описании оповещения, обязательно должна быть экспортной.
Теперь нам осталась указать объект описание выбора в шестом параметре метода ОткрытьФорму
&НаКлиенте
Процедура ВыбратьНоменклатуру ( Команда )
ОписаниеВыбора = Новый ОписаниеОповещения ( «ОбработатьВыборНоменклатуры» , ЭтаФорма );
ОткрытьФорму ( «Справочник.Номенклатура.ФормаВыбора» .
ОписаниеВыбора ,
РежимОткрытияОкнаФормы . БлокироватьОкноВладельца );
И всё! Сейчас при выполнении команды, откроется форма выбора, и если какая-то номенклатура будет выбрана, то она запишется в реквизит формы в процедуре ОбработатьВыборНоменклатуры.
Изучайте управляемые формы 1С с моими статьями:
Открытие управляемой формы существующего объекта
Открытие управляемой формы 1С на основании другого объекта
Открытие обычной формы в управляемом приложении 1С
Очень подробно вопросы по работе с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
Многие начинающие думают, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Книга «Программировать в 1С за 11 шагов»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
- Без сложных технических терминов. Написана понятным и простым языком — для новичка.
- Более 700 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
В этой статье я расскажу, что такое параметры выбора и связи параметров выбора в 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
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Читайте также: