1. Поле для ввода текста по строке и отработка событий в справочнике Склады в 1С 8.3
2. Методы для отработки событий и заполнения поля для ввода текста в справочнике Контрагенты в 1С 8.3
1. Поле для ввода текста по строке и отработка событий в справочнике Склады в 1С 8.3
При работе с управляемой формой важен сервис. Одна из дополнительных возможностей - поле для ввода текста по строке. Если закончить ввод, то сформируется список выбора. Это очень ускоряет ввод данных. Но один нюанс есть: такая возможность поддерживается только для ссылочных полей. На самом деле сервис и возможности гораздо шире. Рассмотрим, как же этот механизм организован. Примеры будут реализованы в конфигурации Управляемое приложение.
Для справочника Склады поля, по которым можно вводить текст по строке: мы видим, что это «Наименование» и «Код». При проектировании системы эти поля можно и изменить. Для понимания корректной реализации нужно учитывать события, которые отрабатываются при выполнении такого ввода.
Справочник Склады: поле для ввода текста по строке
При наборе текста отрабатываются разные события. Это зависит от действий пользователя. Если сделать паузу во время заполнения поля для ввода текста по строке, то будет вызвано событие «Автоподбор». Это же событие будет вызвано, если нажать стрелку вниз.
Часто при разработке сервисов в 1С 8.3 список выбора ограничивается (событие «Начало выбора»). Не надо забывать также ограничивать ввод текста по строке.
Рассмотрим документ «Расход товара». В данном случае отгрузка должна быть только по организации ООО "Товары". Рассмотрим такую реализацию с помощью события «Автоподбор»
При заполнении поля для ввода текста по строке нужно иметь только данную организацию.
Документ Продажа товара
И механизм ее реализации.
Отказ от стандартной обработки в коде события «Автоподбор»
В данном случае в коде происходит отказ от стандартной обработки, а для выбора будет только организация ООО «Товары». Вопрос ограничения выбора решен.
Если же в процессе заполнения поля для ввода текста по строке не делать паузы и, введя часть наименования, нажать Tab или Enter, то будет вызвано событие «Окончание ввода текста». Это событие расширения поля для ввода текста.
В нашем случае для реквизита «Организации» будут выполнены те же действия, что и для предыдущего события. Разница в способе вызова этого события.
Код события «Окончание ввода текста»
С этими событиями разобрались. Они расположены в модуле формы документа 1С. В нашем случае - в модуле формы документа «Расход товара».
Данные события отработали. А следующее событие, которое отработает - это «Обработка получения данных выбора». И особенность его в том, что оно находится в разделе «Модуль менеджера объекта», которое хранится в поле. Для моего примера – это справочник «Организации».
Данное событие будет отрабатывать во всех случаях, когда будет формироваться список выбора.
Код события «Обработка получения данных выбора»
Для показа возможностей системы рассмотрим пример поступления товара от поставщика на примере документа «Приход товара». Во время заполнения табличной части документа необходимо подбирать товар по конкретному поставщику. И показывать не все товары, а только товары данного поставщика. Для этого есть необходимый реквизит справочника «Товары» - «Поставщик». А в описании реквизита табличной части документа «Товары» - свойство «Связи параметров выбора».
Заполнение табличной части документа в 1С Приход товара: свойство «Связи параметров выбора»
На рисунке настроен отбор по поставщику. При этом при наборе наименования список товара будет ограничен только товаром данного поставщика.
Документ Поступление товара: выбор товара«VekoNT02»
Далее усложним выбор. Нужно, чтобы для выбора были доступны только товары без пометки на удаление. Для этого товар «VekoNT02» пометим на удаление и установим свойство «Параметры выбора».
Установка свойства для товара в разделе “Параметры выбора”
Теперь проверим в 1С 8.3 список выбора.
Документ «Поступление товара» в 1С 8.3: список выбора
Как видим, цель достигнута. Помеченных на удаление элементов справочника нет среди выбираемых. Данные настройки работают не только при заполнении поля для ввода текста по строке, но и при выборе через основную форму номенклатуры. Они нам необходимы, чтобы показать связь данных свойств с вводом по строке.
А вот теперь вернемся к событию «ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)». Рассмотрим связь описанных свойств параметров выбора и Связи параметров выбора с механизмом формирования данных по строке. Они будут описаны в переменной «Параметры» и будут использованы для формирования в 1С 8.3 списка выбора, если СтандартнаяОбработка = Истина;
Переменная «Параметры»: формирование в 1С 8.3 списка выбора
Как видим, они переданы и будут использованы для формирования данных выбора, и их можно дополнить. Для данного события добавлю требование показывать только товар, а не услуги. Для иллюстрации такой возможности в режиме Предприятия добавлен элемент справочника «Доставка электротовара». И дополнительный описанный фильтр уменьшит список выбора. Этот список будет без услуг.
Рассмотрим случай, когда для данного события «ОбработкаПолученияДанныхВыбора» мы не будем пользоваться стандартной обработкой события, а станем формировать данные выбора по алгоритму. Посмотрим описание алгоритма выбора справочника Склады.
Описание алгоритма выбора справочника Склады
При выборе склада, если он не используется, выдается предупреждение, если для склада реквизит «НеИспользовать» установлен в Истину.
Предупреждение при выборе склада
Это достаточно удобно. Нужно отметить, что данное событие выбирается достаточно часто. Кроме случаев, рассмотренных выше, данное событие используется при быстром выборе, когда используется не его основная форма, а небольшой список.
2. Методы для отработки событий и заполнения поля для ввода текста в справочнике Контрагенты в 1С
Автоподбор и окончание в 1С ввода текста отрабатываются для любых типов в поле для ввода текста, а не только для ссылочных полей. А поэтому возможны, например, дополнительные обработки строковых типов. Варианты применения такого подхода разнообразны.
Для события «ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)» в момент вызова обработчика переменная «ДанныеВыбора» не определена. Для более гибкого анализа хотелось бы ее получить. В данном случае речь идет о ссылочных типах. Для такого случая имеется метод «ПолучитьДанныеВыбора». Особенность этого метода в том, что если вызывать его в обработчике «ОбработкаПолученияДанныхВыбора» и не принять дополнительных действий, то может возникнуть бесконечная рекурсия.
Пример использования метода для справочника Контрагенты в 1С 8.3
Метод «ПолучитьДанныеВыбора» в справочнике Контрагенты в 1С 8.3
Как видим, от рекурсии избавиться просто через свойство «Рекурсия». В данном случае только 1 раз этот метод «ПолучитьДанныеВыбора» отработает. Использование метода позволяет воспользоваться стандартным формированием списка выбора, а впоследствии его изменить согласно логике работы алгоритма для конкретного случая.
Это основное для понимания механизма 1С ввода текста по строке. Обработчики, описанные ниже, служат для дальнейшей необходимой обработки результата выбора, а также для формирования единого механизма обработки списков выбора.
Это событие «Обработка выбора». Оно используется достаточно часто, а поэтому кратко можно сказать, что в нем пользователь уже выбрал какое-то значение. Здесь можно отказаться от выбора и поместить иное значение. Данное событие можно использовать, например, для заполнения поля ввода строкового типа, когда список формируется из элементов справочника, а заполнить нужно их представлением.
Нужно отметить событие «Начало выбора». Оно возникает в поле для ввода текста при нажатии кнопки выбора или клавиши F4. Если переопределить формирование списка выбора при автоподборе или при окончании ввода текста, то необходимо сформировать подобный список и при начале выбора. По факту это будет единый подход в формировании в 1С 8.3 списка выбора.
В данной статье рассмотрены способы формирования заполнения поля для ввода текста при вводе по строке. Этот способ достаточно мощный и имеет свои тонкости и особенности. Он дополняет общий подход при заполнении в 1С 8 управляемых форм. Данный механизм необходимо использовать при реализации сервиса обработки данных при вводе по строке, и не забывать про это.
Специалист компании "Кодерлайн"
Евгений Мазай