Как сделать поле выбора в 1с в табличной части
Выпадающий список (меню), это элемент управления пользовательского интерфейса, давно и прочно прописавшийся во всех распространенных системах разработки, в том числе и в системе разработки 1С.
Удобен он тем, что экономит место на форме, и позволяет сделать выбор из выпадающего списка с несколькими значениями, который открывается при определенном действии пользователя, обычно - при нажатии мышкой на кнопке открытия или выбора в поле списка. Список значений может быть большим или маленьким, заранее заданным, или формирующимся динамически, но показывается он на форме только тогда, когда нужен пользователю для осуществления выбора значения.
1С платформа 8.3 может работать в режимах обычного и управляемого приложения.
Рассмотрим, как реализуется создание выпадающего списка и чем различается его использование в разных режимах работы 1С Предприятие 8.3.
Для примера возьмем простой справочник (Код, Наименование) с реквизитом «ВыборИзСписка», с типом данных «Число».
1. Обычное приложение 1С
В режиме обычного приложения 1С в редакторе формы, в панели инструментов редактора выбираем элемент управления «Поле выбора» и размещаем его на форме элемента справочника:
Размещение Поля выбора в обычном приложения 1С
Также это можно сделать командой главного меню «Форма / Вставить элемент управления».
Теперь откроем панель свойств этого элемента управления и посмотрим, какие свойства нам могут понадобиться:
- «Данные». Это тот реквизит, значение которого показывается в поле выбора, и в котором будет сохранено выбранное из списка значение, непосредственно или после дополнительной обработки. В нашем случае это реквизит «ВыборИзСписка» справочника «Справочник1»;
- «Строки списка выбора» - ссылка на сам список, из которого мы будем выбирать. Подробнее разберем его ниже;
- «НачалоВыбораИзСписка» - событие, возникающее при нажатии на кнопку открытия списка, но ДО его показа пользователю. С ним в модуле формы связан одноименный метод, в котором обычно реализуется программное заполнение списка выбора;
- «ОбработкаВыбора» - событие, возникающее после того, как пользователь сделал в списке выбор, но до помещения выбранного значения в элемент управления. В модуле формы с ним связан одноименный метод, в котором проводится программная обработка выбранного значения или связанных с ним данных.
Откроем список выбора по ссылке свойства «Строки списка выбора»:
Строки списка выбора в обычном приложении 1С
Здесь колонка «Значение» – это собственно значения, которые будут использованы при выборе, а «Представление» - то, что будет видеть пользователь в списке. Значения могут быть только типов «Число», «Строка», «Дата», «Булево».
Т.е. это тот вариант, когда мы жестко задаем список выбора в конфигураторе, и он остается неизменным при работе 1С 8.3 Предприятие.
Однако в ходе формирование выпадающего списка нам может понадобиться менять состав списка выбора в зависимости от каких-либо условий или параметров. Сделать это можно в любой момент жизни формы – при открытии или при наступлении какого-либо события в других элементах управления формы, обуславливающего состав списка.
Как пример очистки и заполнения списка в момент открытия формы:
Заполнение списка при формировании выпадающего списка
Или уже в момент открытия списка для выбора:
Заполнение списка после формирования выпадающего списка
Если же после выбора из списка значения нам нужно выполнить какие-либо действия, обусловленные выбранным значением, то сделать это удобнее всего в процедуре «ОбработкаВыбора» этого элемента управления. Здесь в параметр «Выбранное значение» передается значение, которое мы выбрали в списке:
Процедура ОбработкаВыбора
Посмотрим теперь, как выглядит наш выпадающий список в режиме обычного приложения в 1С:
Выпадающий список в режиме в 1С
2. Управляемое приложение 1С
В режиме управляемого приложения 1С элемент управления на форме размещается иначе, чем в обычном при формировании выпадающего списка. В окне редактора форм из правой верхней части переносим реквизит или параметр в левую верхнюю часть – в список элементов. При этом на форму помещается элемент управления «Поле ввода» и у него в палитре свойств уже прописано свойство «ПутьКДанным» (в нашем случае – реквизит «ВыборИзСписка»).
Начало создания выпадающего списка в управляемом приложении 1С
В палитре свойств элемента управления в управляемом приложении 1С нам будут интересны следующие:
- В разделе «Использование» свойство «РежимВыбораИзСписка» отмечаем галочкой. При этом на элементе управления появляется кнопка открытия списка;
Кнопка открытия списка в управляемом приложении 1С
- Свойство «СписокВыбора» заполняется и работает так же, как и в обычном приложении, только окно ввода списка открывается при нажатии кнопки «…»;
Окно ввода списка в управляемом приложении 1С
- В разделе «События» уже знакомые нам «НачалоВыбораИзСписка» и «ОбработкаВыбора», которые работают так же, как и в обычном приложении в 1С, с учетом того, что в управляемом приложении 1С мы можем выполнять нужные действия по подготовке выпадающего списка с несколькими значениями и обработке результата выбора раздельно – на Клиенте и на Сервере, в зависимости от того, где и какие данные нам доступны:
Создание обработчика событий в управляемом приложении 1С
Ну и внешне, конечно, управляемое приложение в 1С отличается от обычного, и в нем наш выпадающий список для 1С будет выглядеть так:
Выпадающий список в 1С
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Здравствуйте!
Подскажите, пожалуйста, мне необходимо в ТЧ документа в одной из колонок сделать выпадающий список с несколькими значениями, написала вот так, но это неправильно:
&НаСервере
Функция ВернутьСпособыПогашенияЗадолженности()
СписокДляВыбора = Новый ТаблицаЗначений;
СписокДляВыбора.Колонки.Добавить("СпособПогашенияЗадолженности");
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.ПоДокументу;
СписокДляВыбора.Добавить().СпособПогашенияЗадолженности = Перечисления.СпособыПогашенияЗадолженности.НеПогашать;
Возврат СписокДляВыбора;
КонецФункции
Так не прокатывает, т.к. ТЗ не передать с сервера на клиент. Пробовала передавать Элемент на сервер, чтобы там ему присвоить ТЗ в СписокВыбора, но с клиента на сервер Элемент не передать.
Как тогда быть?
(1) ~ZasrAnka~, ну зачем так все усложнять( все делается без кода. у тебя тип реквизита к которому привязана колонка должен быть ПеречисленияСсылка.СпособыПогашенияЗадолженности
и все!
Я то это понимаю. А вот бухи в бп 2.0 захотели, чтобы у них не было значения Не погашать. Что и сделали программисты, убрали это значение. А теперь необходимо эти изменения перенести на 3.0.
Да можно без кода тупо заполнить список выбора нужными значениями.
А если программно надо, то в модуле менеджера перечисления в процедуре ОбработкаПолученияДанныхВыбора, пишите:
Я запарился искать ответ на этот же вопрос только в управляемых формах на платформе 8,3,13 и в расширении.
У меня вообще не заходит в обработчик "НачалоВыбораИзСписка"
на ИТС этот вопрос не рассматривается.
Но эксперементально удалось выяснить вот что:
1 В обработчике "НачалоВыбора" поля табличной части прописать отказ стандартной обработки и создать свой список значений (из ссылок типа самого поля конечно) и засунуть в параметр "ДанныеВыбора".
ВСЕ! И ничего больше делать не нужно, все работает по кнопке выбор.
если хочется красивый список выбора как раньше смотри скрин.
значение свойства "БыстрыйВыбор" в значении НЕТ (это значение будет в режиме Авто) показывает команду "показать все", а в значении ДА убирает эту команду! причем если ткнуть "показать все" то в нашем случае список выпадает заново и все равно состоит из наших значений по моему это идиотизм.
Я был искренне удивлен от такого логичного функционала, быстрого выбора и выбора из списка.
по-моему 8,2 был лучше.
Нужно на форме документа сделать кнопочку Подбор для справочника сотрудники и чтобы выбранные элементы добавлялись в табличное поле документа?
В данной статье я приведу пример подбора элемента справочника в Список значений и в Табличную часть!
Создаем на форме следующие элементы:
Логика такова:
При нажатии на кнопку ПОДБОР (Процедура КоманднаяПанельПодбор) должена открыться форма подбора сотрудников:
Для Списка значений (СЗ) - ОткрытьФормуВыбораСотрудника(ЭлементыФормы.СписокСотрудников, ЭтотОбъект, Ложь, );
Для Табличного поля (ТП) - ОткрытьФормуВыбораСотрудника(ЭлементыФормы.ТабличноеПолеРаботники, ЭтотОбъект, Ложь, );
Далее открывается форма подбора сотрудника, при двойном щелчке - сотрудник должен добавится в СЗ или ТП.
Для этого у СЗ и ТП в Свойства - События добавляем ОбработкуВыбора :
Для Списка значений (СЗ) - Процедура СписокСотрудниковОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Для Табличного поля (ТП) - Процедура ТабличноеПолеРаботникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
А в них пропишем проверку, добавлен сотрудник или нет - чтобы не было задвоений!
И так, код будет следующий:
Код 1C v 8.х
Автор: Мигачев Евгений
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ; Посмотреть все результаты поиска похожих
Еще в этой же категории
Создание и запись нового элемента справочника 14
НаКлиенте Процедура ПоКнопкеНовыйКонтрагент(Команда) // Вставить содержимое обработчика. Перем НовыйКонтрагент; НовыйКонтрагент = Новый Структура(" Наименование, ПолноеНаименование, ИНН" ); НовыйКонтрагент.Наименование = " РиК ООО" ; НовыйКон Как для Выбора Элемента Справочника Открыть Форму Выбора с нужной Открытой Группой? 8
Порядок действий такой: 1. В поле ввода " Номенклатура" добавь событие ПриНачалеВыбора. 2. Установи в них СтандартнаяОбработка = Ложь; 3. Получи форму выбора нужного справочника 4. Установи отбор по родителю 5. Открой форму для выбора Теп Перебрать, выбрать элементы справочника 7
Выборка = Справочники.Сотрудники.Выбрать(); //или Выборка = Справочники.Сотрудники.ВыбратьИерархически(); Пока выборка.Следующий() = 1 Цикл . //действия с очередным элементом . Сообщить(" Сотрудник " + выборка.Наименование); КонецЦикла; / Перебрать, выбрать элементы подчиненного справочника 7
Перебор элементов справочника принадлежащих элементу другого справочника, т.е когда один справочник подчинен другому справочнику. // Получить выборку по указанному контрагенту. Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Вы Как программно открыть и выбрать элемент справочника, выбор элемента справочника? 7
Просто открыть: // Получить форму выбора справочника как подчиненную форме документа ФормаСписка = Справочники.Номенклатура.ПолучитьФормуСписка( , ЭтаФорма); // Открыть полученную форму ФормаСписка.Открыть(); Открыть для выбора элемента: Ф Посмотреть все в категории Справочники
Для иллюстрации механизма подбора информации в форме будем использовать задачу подбора элементов справочника Номенклатура в табличную часть документа ПриходнаяНакладная как наиболее распространенную. Поскольку механизм подбора реализован на уровне форм, то в других случаях просто будут задействованы иные прикладные объекты. Сама механика подбора не изменится.
Для организации подбора в форму документа следует открыть форму справочника как подчиненную форме документа в целом либо одному из элементов формы. Способ получения формы справочника может быть любым, также как и сама форма справочника, которая будет использована. Важно лишь то, что эта форма должна быть открыта как подчиненная.
Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:
- когда в форме справочника будет выполнен интерактивный выбор;
- когда в форме справочника будет вызван метод ОповеститьОВыборе .
Одиночный подбор
При одиночном подборе форма справочника будет закрываться сразу после выбора элемента. Для выбора следующего элемента необходимо будет снова инициировать подбор.
Откроем форму документа ПриходнаяНакладная , создадим команду Подбор и назначим для нее обработчик:
В этой процедуре мы открываем форму выбора для справочника Номенклатура , указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная ( Элементы.Материалы ). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы , так как она является владельцем открытой формы выбора.
Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора :
В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение .
Множественный подбор
При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть() .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Подбор с использованием множественного выбора
Еще одним способом организации подбора является возможность выделения в списке сразу нескольких строк. Режим множественного выделения в списке устанавливается, как правило, во всех формах списков по умолчанию. Однако возможность выбрать сразу несколько элементов из списка по умолчанию, как правило, отключена.
Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора :
Множественный подбор с использованием множественного выбора
Последний способ подбора сочетает в себе оба рассмотренных ранее способа. Мы будем отмечать сразу несколько элементов справочника и подбирать их в документ без закрытия формы выбора. Затем снова отмечать несколько элементов справочника и подбирать их в документ. Для этого нам будет необходимо при открытии формы выбора установить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Использование метода ОповеститьОВыборе()
Метод формы ОповеститьОВыборе() используется в тех случаях, когда алгоритм формирования данных подбора сложен и кроме собственно выбора элемента справочника от пользователя требуется указание некоторой дополнительной информации. В этом случае метод ОповеститьОВыборе() вызывается тогда, когда вся необходимая информация подбора сформирована.
Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.
Также метод ОповеститьОВыборе() может использоваться в тех случаях, когда требуется передать в форму документа не только выбранный элемент справочника (или массив элементов), а некоторую произвольную структуру данных.
Справка
ТабличноеПоле.ДобавитьСтроку()
Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».
- Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
- Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
- Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).
Доступность: Толстый клиент.
ДанныеФормыКоллекция.Добавить()
Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции .
Доступность: тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Возникла острая необходимость в ФормеСписка документа ЗаказПокупателя создать колонку в которой ячейки имели бы кнопку выбора из выпадающего списка, с соответствующим выбором.
Желательно выбором из элемента справочника.
Чтобы выглядело так же как на прилагаемой иллюстрации.
Пробовал штатными инструментами конфигуратора, меняя различные настройки в палитре свойств колонки и ячейки, с привязкой к справочнику или создавая список выбора.
Ничего не выходит.
Так же пробовал писать в модуле:
Результат – нулевой. Даже внешний виз ячеик не меняется
Пожалуйста, научите новичка (нулевого уровня) как решить задачу.
Предполагаю, что где-то в настройках установлено блокирование вывода кнопок.
Тот же вопрос и насчет форм списка справочников, хотя я принципиальной разницы не увидел.
ср, 28/12/2016 - 13:13
Это поле связано с данными объекта?
ср, 28/12/2016 - 20:22
Я новичок, поэтому опишу как задумывается и что имеется.
В настоящий момент реализовано следующим образом:
В форму заказа покупателя добавлено несколько полей выбора с кнопкой выбора.
Через выпадающий список выбираются наименование записанное в справочник.
(В каждом списке их немного и они очень редко меняются)
Эти значения выведены в колонку списка заказов покупателя (ФормаСписка).
По этим данным в колонках можно отсортировать или отфильтровать заказы покупателя.
Когда необходимо поменять в том или ином заказе покупателя значение этих данных, оператор, находит в форме списка заказов покупателя нужный и кликает по нему, открывается заказ покупателя (ФормаДокумента), где из выпадающего списка выбирается следующее значение, затем записать и закрыть.
На что уходит, порою много времени.
Поэтому хочется создать такую форму списка, в которой можно менять эти данные не открывая заказа. (выбрал – автоматически сохранился, выбрал значение у следующего и т.д.)
Читайте также: