Ввод по строке 1с что это
Перейти к содержимому

Ввод по строке 1с что это

  • автор:

Ввод по строке

При выборе ссылочных данных в 1С есть возможность выбрать элемент справочника или документ набирая ключевые реквизиты объекта который мы хотим найти. Выглядит это следующим образом: пользователь, набирает «масло моторное» в поле ввода с типом «Справочник.Номенклатура»и нажимает ввод. 1С находит все записи которые начинаются с названия «масло моторное» и показывает их в виде выпадающего списка. Такой же ввод возможен и для документов. Это поведение системы можно настроить на закладке «Формы». Там есть поле «Ввод по строке», по умолчанию для справочников указана возможность поиска по коду и наименованию, но туда можно добавить и свои реквизиты, для того, что бы добавить этот реквизит, он должен быть индексирован и реквизит должен быть примитивного типа(строка, дата, число). (надо добавить скрин)

1С ввод по строке что такое

Использование режима "ввод по строке" может быть запрограммировано произвольным образом не только для реквизитов ссылочных типов (Справочник, Документ, План видов характеристик, План счетов, План видов расчета, Перечисление), но и для реквизитов типа "Строка". Написание программного кода осуществляется в обработчиках поля ввода АвтоПодборТекста() и ОкончаниеВводаТекста() . Например, по набору первых символов в поле ввода колонки табличного поля системой может быть автоматически предложено дополнение вводимого текста до уже существующего в этой колонке значения. При окончании ввода текста (нажатию Enter или сходе с элемента управления), системой может быть предложен список с найденными, по первым введенным символам, значениям колонки.

Пример программного управления режимом "ввод по строке" для поля ввода типа строка, продемонстрирован во внешней обработке.
После запуска обработки добавьте строку в таблицу значений. В колонке "Цвет" введите первые символы названия цвета, после чего будет предложено дополнение вводимого текста.

Обработка TextBox.epf находится в каталоге 1CITSEXEEXAMPLES81

ВЫ МОЖЕТЕ ПРЯМО СЕЙЧАС СКОПИРОВАТЬ ОБРАБОТКУ
НА ЖЕСТКИЙ ДИСК ВАШЕГО КОМПЬЮТЕРА

При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования!

В 1С 8.3 по умолчанию настройки справочника номенклатуры такие:

При такой настройке, механизм поиска в справочнике номенклатуры работает так:

— в документе вводим первые символы Пета и видим такой результат подсказки:

Но, такой поиск не удобен и менеджеры захотели подбирать номенклатуру по артикулу, например 1320

Для этого изменим настройки указав поиск по Любой части и включив полнотекстовый поиск:

Сохраняем конфигурацию и в режиме предприятие обновляем Полнотекстовый поиск: Меню — Все функции — Стандартные — Управление полнотекстовый поиском

После этого пробуем в документе выполнить поиск по 1320 и видим:

Все Менеджеры пищат как дети на новогодней елке!

Пока писал эту статью нашел в интернете другое решение для платформы 8.2:

ОбработкаПолученияДанныхВыбора( , , )

В модуле менеджера справочника "Номенклатура" пишем:

В обработчике — ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбраблтка) для нас важны все три параметра. В первый "ДанныеВыбора" мы загружаем наш список номенклатуры, полученный по нашему алгоритму. Из параметра "Параметры" мы получим значение введенное пользователем, а третьему параметру "СтандартнаяОбработка" мы должны поставить значение "Ложь"(отключаем стандартный алгоритм системы).

В результате одной небольшой процедурой мы полностью решили поставленную задачу.

Справочные статьи по моментам разработки на платформе 1с

Чтобы использовать ввод по строке в документах нужно на уровне справочника указать поля по которым будет использоваться ввод по строке. По умолчанию это предопределенные реквизиты «Наименование» и «Код».

Для переопределения события ввода по строке в модуле менеджера документа (в котором собственно и будем творить бардак) создаем событие
ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

В этом модуле можно определить новый массив для данных выбора

«Параметры» — Содержит параметры выбора.
Их можно дополнительно настроить в обработчике события.
Структура, в которой обязательно должны содержаться следующие ключи:

  • СтрокаПоиска (SearchString) — строка, используемая при поиске данных, Неопределено — осуществляется быстрый выбор;
  • Отбор (Filter) — отбор, используемый при поиске данных;
  • ВыборГруппИЭлементов (ChoiceFoldersAndItems) — указывается использование групп и элементов (только для иерархических данных); тип ИспользованиеГруппИЭлементов;
  • СпособПоискаСтроки (StringSearchMode) — указывается способ поиска при вводе по строке; тип СпособПоискаСтрокиПриВводеПоСтроке; параметр может отсутствовать;
  • ПолнотекстовыйПоиск (FullTextSearch) — указывается необходимость использования полнотекстового поиска при вводе по строке; тип — ПолнотекстовыйПоискПриВводеПоСтроке; параметр может отсутствовать;
  • РежимПолученияДанныхВыбора (ChoiceDataGettingMode) — указывает режим запуска поиска. Тип РежимПолученияДанныхВыбораПриВводеПоСтроке; параметр может отсутствовать.

Пример дублирования типового поведения:

Листинг процедуры ОбработкаПолученияДанныхВыбора:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

Запрос = Новый Запрос(«ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование ПОДОБНО &Наименование»);
Запрос.УстановитьПараметр(«Наименование», «%» + Параметры.СтрокаПоиска + «%»);
// Конструкция «%» + Параметры.СтрокаПоиска + «%» показывает что в начале и в конце строки
//может быть неопределенное количество символов

//Выгружаем таблицу в массив чтобы потом загрузить ее в данные выбора
Массив = Таблица.ВыгрузитьКолонку(«Ссылка»);

ДанныеВыбора = Новый СписокЗначений; // Переопределяем данные выбора т.к. по
//умолчанию они имею тип — «неопределено»

СтандартнаяОбработка = Ложь; //ключевое вырожение отлючает стандартное выполнение
//и позволяет рабртать новому алгоритму

1с ввод по строке что такое

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

Пример программного управления режимом «ввод по строке» для поля ввода типа строка, продемонстрирован во внешней обработке.
После запуска обработки добавьте строку в таблицу значений. В колонке «Цвет» введите первые символы названия цвета, после чего будет предложено дополнение вводимого текста.

Обработка TextBox.epf находится в каталоге 1CITSEXEEXAMPLES81

ВЫ МОЖЕТЕ ПРЯМО СЕЙЧАС СКОПИРОВАТЬ ОБРАБОТКУ
НА ЖЕСТКИЙ ДИСК ВАШЕГО КОМПЬЮТЕРА

При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования!

В 1С 8.3 по умолчанию настройки справочника номенклатуры такие:

При такой настройке, механизм поиска в справочнике номенклатуры работает так:

— в документе вводим первые символы Пета и видим такой результат подсказки:

Но, такой поиск не удобен и менеджеры захотели подбирать номенклатуру по артикулу, например 1320

Для этого изменим настройки указав поиск по Любой части и включив полнотекстовый поиск:

Сохраняем конфигурацию и в режиме предприятие обновляем Полнотекстовый поиск: Меню — Все функции — Стандартные — Управление полнотекстовый поиском

После этого пробуем в документе выполнить поиск по 1320 и видим:

Все Менеджеры пищат как дети на новогодней елке!

Пока писал эту статью нашел в интернете другое решение для платформы 8.2:

ОбработкаПолученияДанныхВыбора( , , )

В модуле менеджера справочника «Номенклатура» пишем:

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

В результате одной небольшой процедурой мы полностью решили поставленную задачу.

Справочные статьи по моментам разработки на платформе 1с

Чтобы использовать ввод по строке в документах нужно на уровне справочника указать поля по которым будет использоваться ввод по строке. По умолчанию это предопределенные реквизиты «Наименование» и «Код».

Для переопределения события ввода по строке в модуле менеджера документа (в котором собственно и будем творить бардак) создаем событие
ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

В этом модуле можно определить новый массив для данных выбора

«Параметры» — Содержит параметры выбора.
Их можно дополнительно настроить в обработчике события.
Структура, в которой обязательно должны содержаться следующие ключи:

  • СтрокаПоиска (SearchString) — строка, используемая при поиске данных, Неопределено — осуществляется быстрый выбор;
  • Отбор (Filter) — отбор, используемый при поиске данных;
  • ВыборГруппИЭлементов (ChoiceFoldersAndItems) — указывается использование групп и элементов (только для иерархических данных); тип ИспользованиеГруппИЭлементов;
  • СпособПоискаСтроки (StringSearchMode) — указывается способ поиска при вводе по строке; тип СпособПоискаСтрокиПриВводеПоСтроке; параметр может отсутствовать;
  • ПолнотекстовыйПоиск (FullTextSearch) — указывается необходимость использования полнотекстового поиска при вводе по строке; тип — ПолнотекстовыйПоискПриВводеПоСтроке; параметр может отсутствовать;
  • РежимПолученияДанныхВыбора (ChoiceDataGettingMode) — указывает режим запуска поиска. Тип РежимПолученияДанныхВыбораПриВводеПоСтроке; параметр может отсутствовать.

Пример дублирования типового поведения:

Листинг процедуры ОбработкаПолученияДанныхВыбора:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

Запрос = Новый Запрос(«ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование ПОДОБНО &Наименование»);
Запрос.УстановитьПараметр(«Наименование», «%» + Параметры.СтрокаПоиска + «%»);
// Конструкция «%» + Параметры.СтрокаПоиска + «%» показывает что в начале и в конце строки
//может быть неопределенное количество символов

//Выгружаем таблицу в массив чтобы потом загрузить ее в данные выбора
Массив = Таблица.ВыгрузитьКолонку(«Ссылка»);

ДанныеВыбора = Новый СписокЗначений; // Переопределяем данные выбора т.к. по
//умолчанию они имею тип — «неопределено»

СтандартнаяОбработка = Ложь; //ключевое вырожение отлючает стандартное выполнение
//и позволяет рабртать новому алгоритму

Поле для ввода текста по строке в управляемых формах 1С 8

При работе с управляемой формой важен сервис. Одна из дополнительных возможностей — поле для ввода текста по строке. Если закончить ввод, то сформируется список выбора. Это очень ускоряет ввод данных. Но один нюанс есть: такая возможность поддерживается только для ссылочных полей. На самом деле сервис и возможности гораздо шире. Рассмотрим, как же этот механизм организован. Примеры будут реализованы в конфигурации Управляемое приложение.

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

Справочник Склады: поле для ввода текста по строке

При наборе текста отрабатываются разные события. Это зависит от действий пользователя. Если сделать паузу во время заполнения поля для ввода текста по строке, то будет вызвано событие «Автоподбор». Это же событие будет вызвано, если нажать стрелку вниз.

Часто при разработке сервисов в 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 управляемых форм. Данный механизм необходимо использовать при реализации сервиса обработки данных при вводе по строке, и не забывать про это.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *