1с как выбрать несколько значений в поле ввода
Для того чтобы открыть форму выбора с отбором в 1с 8.2 (обычные формы), нам нужно выполнить некоторые действия. Сначала мы ее получим. После этого выставим отбор и программно откроем, вот пример кода:
Отбор на форме в поле ввода 1С 8.2 с несколькими значениями
В примере выше мы рассмотрели как устанавливать отбор на форме выбора по конкретному значению. Теперь давайте рассмотрим ситуацию когда нужно подставить несколько значений, это может быть например как массив, так и выгрузка из результата запроса. Это отбор в поле ввода 1с с несколькими значениями.
Для начала получаем форму выбора, в параметрах передаем "Элемент" (владельца), устанавливаем флаг режима выбора. Потом создаем список значений и массив, отмечаем что в качестве отбора когда устанавливается вид сравнения в списке, может присутствовать объект только с типом СписокЗначений. Добавляем элементы в массив, затем этот массив загружаем в СписокЗначений который в следствии мы устанавливаем в отборе. Также не забываем включить флаг использования данного отбора, и установить ВидСравнения.
Установка отбора в поле ввода на форме в 1С 8.3, событие НачалоВыбора
Теперь рассмотрим отбор в поле ввода на управляемой форме в 1С 8.3. Найдем на форме интересующий нас элемент, в котором мы будем устанавливать отбор, в нашем случае это поле «Организация». Находим событие «НачалоВыбора», щелкаем на лупу и оказываемся в процедуре. Мы видим параметр ДанныеВыбора, этот параметр имеет тип СписокЗначений. Для того чтобы ограничить выбор необходимыми элементами , нам необходимо заполнить СписокЗначений. Элементы выбрать можем только на сервере, поэтому создаем процедуру с директивой компиляции &НаСервере. В данной процедуре заполняем ДанныеВыбора.
Как альтернатива можно воспользоваться вариантом как описано открытие формы выбора с отбором для 1С 8.2, конечно код возможно чуть-чуть придется модифицировать, но суть остается та же.
У нас вы можете заказать услуги сопровождения 1с баз данных, а также любые доработки для 1с.
Работаю в 8.3.5Только начинаю разбираться в платформе, до этого с 1С имел дело только как пользователь. Сейчас стоит задача написать свою небольшую конфу для нашего маленького предприятия. Накупил кучку книжек, сижу изучаю. Голова уже пухнет. Не могу своим мозгом понять как реализовать такой функционал:
Есть документ ЗаказНаряд в котором есть реквизит Комплектность с типом Поле ввода.Ясен пень, у документа есть форма с этим реквизитом.В форме документа, требуется вызывать кнопкой выбора (. ) у этого поля, окно в котором можно отметить галочками значения которые по нажатию ОК в этом окне, попадут в это поле ввода.Сами значения в этом окне должны браться из наименований элементов справочника Подстановки, причем из элементов находящихся в определенной группе этого справочника.Поле ввода необходимо, что бы помимо того, что выберет пользователь, он мог в некоторых случаях дописать некоторые данные руками.
Прошу ткнуть носом как это сделать, ибо голова уже кипит.
На всякий набросал как я себе это вижу.
Комплектность должна быть строка и не обязательно реквизит документа, это может быть просто элемент формы.
Еще у документа должна быть ТЧ как раз для хранения списка значений подстановок.
На обработчик начало выбора для комплектности организовать выбор из списка значений, в который помещены элементы из справочника подстановок.
После отметки нужных подстановок необходимо из помеченных элементов сформировать строку и поместить ее в комплектность и также записать их в ТЧ.
Касаемо дописки, мне кажется нужно сделать отдельный строковый реквизит "ДопКомплектность", и в нем уже дополнения писать и присоединять их к комплектности.
К сожалению не смог понять Ваш совет и сделал по своему.
Путем долгих мучений получилось добиться промежуточного результата.
Я написал функцию которая получает колонку "Наименование" справочника Подстановки, и вызвал ее в событии начала выбора в поле комплектности.
В результате стал выпадать список с нужными мне значениями.
Но как я писал выше, мне требуется вызывать окно, в котором можно отметить галочками нужные мне значения и в результате заполнять этими значениями поле Комплектность.
Тут у меня случился ступор, из которого я не могу выйти. Прошу подсказать как это сделать.
Зачем такая сложная реализация!?
сделайте табличную часть и выведете в нее эти значения и поле флажка, пусть пользователи выбирают галками в табличной части
В смысле просто, в форму документа поместить таблицу с значениями и флажками?
Мне очень критично именно поле ввода с таким функционалом как я описал выше, таблица в форме не подойдет ((
Потихоньку буду вникать в Ваш вариант реализации, ибо опыта ноль, не все понятно сразу.
А если просто с ходу опробовать Ваш код, то в режиме отладки по нажатии у поля кнопки выбора вызывается окно, там есть элементы справочника Подстановки, но в независимости от того, стоят отметки или нет, при нажатии "ОК" сначала ругается на :
В итоге получил тот же результат, но без использования табличной части.
Подскажите, есть какая то разница между способом где используется ТЧ и не используется?
Табличная часть нужна для сохранения списка выбранных значений в документе, другого варианта я просто не знаю.
Это ведь только первый этап - выбрать из списка, вам же нужно будет этими значениями пользоваться. При повторном открытии документа вам нужно будет учитывать, что пользователь выбрал ранее и восстановить при открытии списка пометки его элементов. Пользоваться строкой для этого очень неудобно.
В табличной части реквизит "Подстановка" - это не строка, это ссылка в справочник "Подстановки".
В данном случае достаточно и того, что можно выбрать из списка. Это поле заполняется один раз при создании документа и более выбор не используется.
Огромная Вам благодарность! Очень помогли.
Использование отбора:
Функционал, который используется для интерактивного отбора в списках, можно использовать и для отбора программным способом.
Для этого нужно для события НачалоВыбора соответствующего поля ввода определить процедуру обработки и внутри процедуры программно устанавить отбор для списка.
Далее следует пример процедуры обработки события НачалоВыбора для поля ввода СтатьяПДР. Реквизит (и поле ввода, соответственно) СтатьяПДР имеет тип СправочникСсылка.ПрочиеДоходыИРасходы. Для списка справочника «Прочие доходы и расходы» устанавливается отбор по реквизиту «Вид прочих доходов и расходов» со значением «Прочие внереализационные доходы (расходы)».
Код 1C v 8.х
Обратите внимание на строку кода:
Код 1C v 8.х
Она закрывает доступ к настройке отбора «Вид прочих доходов и расходов». Таким образом, пользователь не может отключить заданный программно отбор и имеет возможность сделать выбор значения только из ограниченного списка.
Внутри процедуры обработки события НачалоВыбора параметру СтандартнаяОбработка нужно обязательно присвоить значение Ложь. В противном случае будет открыт и ограниченный список, и стандартный список, а это, конечно, не входит в наши планы.
В следующем примере для поля ввода СчетДт типа ПланСчетовСсылка.Хозрасчетный устанавливается отбор в виде списка счетов. Список счетов предварительно формируется с помощью запроса.
Использование выбора из списка:
Выбор значения Перечисления обычно осуществляется из маленького списка. Но даже если включить выбор из формы (это делается с помощью свойства «Быстрый выбор» поля ввода), функционал отбора для перечислений все равно неприменим.
В таком случае подходящий способ ограничения списка выбора - использование метода формы ВыбратьИзСписка. Аналогично первому способу, необходимо определить процедуру обработки события НачалоВыбора для поля ввода значения. В следующем примере для поля ввода ВидПДР типа ПеречислениеСсылка.ВидыПрочихДоходовИРасходов программно устанавливается ограниченный список выбора.
Результат работы процедуры показан на рисунке. Метод ВыбратьИзСписка открывает маленький список с набором значений, переданных в процедуру в первом параметре (в примере - список значений ВидыПДР).
Пример ограничения списка выбора для перечисления в 1С 8
В данной статье будет описана процедура множественного выбора в 1С. Мы подробно рассмотрим метод с множественным выбором на данной платформе и проиллюстрируем его на конкретном примере, а также проведём анализ множественного подбора как функции, от которой произошла модель множественного выбора.
Для полного понимания заданий множественного выбора необходимо знать, как работает множественный подбор, так как первое понятие является частным случаем второго, более конкретизированным.
Множественный подбор – это инструмент, который работает в системе 1С 8.3 с формами справочника и делает различные подборки в них. Данная форма будет запущена до тех пор, пока не завершат её работу при помощи метода «Закрыть()».
Рассмотрим форму для документа «ПриходнаяНакладная», далее откроем обработчик команды «Подбор» и сделаем с его помощью замену старого текса новым. Данное действие может быть совершено при помощи кода, который продемонстрирован на скриншоте ниже:
Рис. 1 Работа с множественным подбором в форме справочника в 1С 8.3
Чтобы открыть форму, обращаемся к её параметрам, они регулируют состояние, в котором данная форма будет открыта. Параметры открытия формы имеют вид структуры, в которой один элемент соответствует одному состоянию. И, соответственно, код элемента – это наименование параметра открытия формы.
Данную структуру далее выводим в метод «ОткрытьФорму()». Перед этим также стоит сделать формировку структуры. Видим, что там находится единственный элемент, код которого – «ЗакрыватьПриВыборе».
Далее, после передачи данной структуры в вышеуказанный метод, необходимо поместить параметр в значение «Ложь». Поле этого действия получим, что если кликнуть на номенклатуру, то форма не будет закрыта.
2. Подбор при помощи множественного выбора в 1С
Дальше рассмотрим, как осуществить множественный выбор – по сути, это такой же подбор, только с условием, что можно выбирать несколько строк в списке.
Обычно режим с множественным выделением настроен в конфигурации 1С, согласно стандартным настройкам сразу для всех форм, однако, сама возможность выделения нескольких элементов, а не одного, выключена.
Так что следует запустить возможность выделения нескольких элементов. Для этого нужно задействовать параметр по расширению формы в динамическом списке – «МножественныйВыбор».
Для использования модели множественного выбора необходимо в форме в документе «ПриходнаяНакладная» поменять содержимое в команде «Подбор», как демонстрируется на скриншоте с примером кода ниже:
Рис. 2 Подключение возможности выделения нескольких элементов
После вышеуказанного действия форма с выборами сможет отдавать не по одному элементу, а сразу массив из элементов. Далее следует в обработчике для события «ОбработкаВыбора» сделать обход массива из элементов, которые были им получены. Это можно сделать, как показано на скриншоте с программным кодом ниже:
Рис. 3 Форма с выборами – множественный выбор
Таким образом стандартный множественный выбор в форме выбора был полностью реализован в системе 1С.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Программирование в 1С [1] => 1С:Бухгалтерия [2] => 1С:Управление производственным предприятием [3] => 1С: Розница [4] => 1С: CRM [5] => 1С: Управление торговлей [6] => Бюджетирование [7] => СКД [8] => 1С: Конвертация данных [9] => Администрирование 1С [10] => Конвертация данных [11] => Лицензии 1С [12] => Оптимизация [13] => 1С: Документооборот [14] => 1С: ERP [15] => Транспортная логистика [16] => Техническое задание [17] => Продажи [18] => Ценообразование [19] => Планирование [20] => MS SQL Server [21] => Полезные обработки [22] => МСФО [23] => Отчеты в 1С [24] => XML [25] => Внедрение ERP [26] => Перенос данных [27] => Торговое оборудование [28] => РСБУ [29] => 1С:Управление корпоративными финансами [30] => 1С: Колледж [31] => 1С: Аренда и управление недвижимостью [32] => Финансовый учет ) -->
Выпадающий список (меню), это элемент управления пользовательского интерфейса, давно и прочно прописавшийся во всех распространенных системах разработки, в том числе и в системе разработки 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] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: