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

Содержание
  1. 1. Как переопределять работу поля ввода в части ввода по строке
  2. 1.1. Событие АвтоПодборТекста
  3. 1.2. Событие ОкончаниеВводаТекста
  4. 2. Использование результатов поиска по строке
  5. 2.1. Работа стандартного (системного) обработчика события АвтоПодборТекста с результатами поиска по строке
  6. 2.2. Устройство механизма преобразования текста в поле ввода в значение и обработчик события ОкончаниеВводаТекста
  7. 2.3. Работа стандартного (системного) обработчика события ОкончаниеВводаТекста с результатами поиска по строке
  8. 3. Настройка состава и порядка полей, используемых в стандартных (системных) обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста
  9. 4. Модальные действия в обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста
  10. 5. Управление механизмом автопоиска и автоподбора с помощью прав
  11. 6. Работа механизма автопоиска и автоподбора с правами на уровне записей
  12. Прием №4: Поиск в текущей колонке сразу после начала набора текста.
  13. Прием №5: Ввод в поле ввода по строке.
  14. Прием №6: Суммирование выделенных ячеек в отчетах.
  15. Прием №7: Сохраняйте любые печатные формы в любом удобном формате.
  16. Прием №8: Групповая печать документов.
  17. Прием №9: Печать журнала или табличной части документа.

1. Как переопределять работу поля ввода в части ввода по строке

Для переопределения работы поля ввода в части ввода по строке можно обрабатывать события поля ввода "АвтоПодборТекста" и "ОкончаниеВводаТекста".

1.1. Событие АвтоПодборТекста

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

В этом примере при вводе в поле ввода буквы "п" и прерывании редактирования в поле ввода появился слово "пункт", при этом выделена будет его часть "ункт" (начало слова было уже введено и выделение на него не делается):

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

1.2. Событие ОкончаниеВводаТекста

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

Необходимость формирования значения по тексту в поле ввода возникает в различных ситуациях, например при переходе из поля ввода к другому элементу управления, нажатии в поле ввода кнопки выбора (клавиша F4) и в ряде других ситуаций.

Стандартный (системный) обработчик события ищет некоторое значение, которое соответствует набранному тексту. Если найдено одно значение – оно сохраняется в качестве значения поля ввода. Если найдено несколько значений – в выпадающем списке предоставляется возможность выбрать из них нужное значение. Если не найдено ни одного значения – выдается сообщение о том, что в элементе управления введены некорректные данные.

В этом примере обеспечивается следующая функциональность для поля ввода: если в поле ввода набрать слово "одежда", то при формировании значения по имеющемуся в поле ввода тексту (например, при переходе из поля ввода к другому элементу управления в форме), пользователю будет предоставлена возможность выбрать одно из двух значений: "Рубашка" или "Брюки":

— введем в поле ввода слово "одежда":

— нажмем на клавишу Tab для перехода к следующему элементу управления: при этом появится выпадающий список из двух значений:

— выберем в выпадающем списке первое значение с помощью клавиши "Enter". выбранное значение будет установлено в поле ввода, а мы перейдем к следующему элементу управления:

2. Использование результатов поиска по строке

При поиске значения по тексту могут быть следующие результаты поиска:
· не найдено ни одного значения;
· найдено одно значение;
· найдено больше одного, но не более некоторого количества значений (в системе используется константа — 50 значений);
· найдено некоторое количество значений или больше (т.е. > 50).

В каждом из этих случаев стандартные (системные) обработчики событий "АвтоПодборТекста" и "ОкончаниеВводаТекста" ведут себя определенным образом.

2.1. Работа стандартного (системного) обработчика события АвтоПодборТекста с результатами поиска по строке

1. По имеющемуся в поле ввода тексту ищется одно подходящее значение

2. Значение найдено?

2.1. Получается текстовое представление найденного значения

2.2. В поле ввода дописываются недостающие завершающие символы текстового представления найденного значения.

Пример : пусть поле ввода имеет тип "СправочникСсылка.Номенклатура"; в свойстве "Ввод по строке" указаны поля "Код", "Наименование"; в справочнике есть два элемента с наименованиями "Рубашка", "Брюки":

Если мы введем воле ввода текст "Ру", он будет дополнен текстом "башка":

2.2. Устройство механизма преобразования текста в поле ввода в значение и обработчик события ОкончаниеВводаТекста

Рассмотрим процесс формирования значения по тексту, введенному в поле ввода. Ниже приводится алгоритм преобразования текста в поле ввода в значение:

  1. Начало процесса формирования значения по тексту поля ввода.
  2. Получение текста из поля ввода.
  3. Вызов обработчика события "ОкончаниеВводаТекста".
    В параметры вызываемой процедуры записывается:
    Текст — текст из поля ввода;
    Значение — Неопределено. В обработчике события в него можно записать значение или список значений;
    СтандартнаяОбработка = Истина.
  4. В обработчике события разрешили выполнение стандартной обработки?
  5. Через параметр "Значение" вернули список значений?
  6. Кнопка выбора (клавиша F4) нажата ?
  7. В переданном списке количество значений больше одного?
  8. Открытие выпадающего списка в поле ввода и выбор значения из списка. Если в выпадающем списке выбрано значение, оно выставляется в качестве значения в поле ввода, а в качестве текста в поле ввода устанавливается текстовое представление выбранного значения. Если же значение в выпадающем списке не выбрано, состояние поля ввода не меняется.
  9. В переданном списке храниться только одно значение?
  10. В качестве значения в поле ввода устанавливается единственное значение из переданного списка. В качестве текста в поле вода устанавливается текстовое представление устанавливаемого значения.
  11. В параметре "Значение" вернули не список значений, а конкретное значение?
  12. Установка в поле ввода значения по умолчанию того типа, который сейчас выставлен в поле ввода.
  13. В качестве значения в поле ввода устанавливается значение параметра "Значение", а в качестве текста — представление устанавливаемого значения.
  14. Вызов стандартного (системного) обработчика события "ОкончаниеВводаТекста".
  15. Конец процесса формирования значения по тексту поля ввода.

Из описанного алгоритма видно, что смысл подмены стандартного (системного) обработчика может состоять в том, чтобы сформировать свой список значений из одного и более элементов или одно конкретное значение для поля ввода в зависимости от того текста, который есть в поле ввода.

2.3. Работа стандартного (системного) обработчика события ОкончаниеВводаТекста с результатами поиска по строке

Стандартный (системный) обработчик события "ОкончаниеВводаТекста" работает следующим образом:

  1. Начало работы стандартного обработчика.
  2. Получение текста из поля ввода.
  3. Текст в поле ввода не пустой?
  4. Формирование списка значений на основе текста из поля ввода. Например — поиск товаров, у которых наименование товара начинается с имеющегося в поле ввода текста.
  5. В сформированном в пункте 4 списке значений есть элементы?
  6. Кнопка выбора (клавиша F4) нажата? Это условие проверяется, потому что если она нажата, то будет открываться форма выбора и выпадающих списков появляться не должно.
  7. В сформированном в пункте 4 списке значений есть только одно значение?
  8. Устанавливаем единственное значение из списка в поле ввода. В качестве текста в поле ввода устанавливается представление этого значения.
  9. В сформированном в пункте 4 списке значений более 50 элементов?
  10. Открывается выпадающий список у поля ввода. В качестве списка значений для него используется список, сформированный в пункте 4. Пользователь может выбрать в этом списке одно из значений.
  11. Вывод пользователю сообщения о том, что найдено слишком много значений.
  12. Установка в поле ввода значения по умолчанию того типа, который сейчас выставлен в поле ввода.
  13. Конец работы стандартного обработчика.

3. Настройка состава и порядка полей, используемых в стандартных (системных) обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста

Для определения состава полей, используемых стандартными (системными) обработчиками событий " АвтоПодборТекста" и "ОкончаниеВводаТекста" , и их порядка, ряд объектов метаданных поддерживают свойство "Ввод по строке", доступное для редактирования через палитру свойств и в форме редактирования объекта метаданных. К таким объектам метаданных относятся "Справочники", "Документы", "Планы видов характеристик", "Планы счетов", "Планы видов расчета", "Планы обмена", "Бизнес-процессы", "Задачи".

Состав полей объекта метаданных, которые могут участвовать в поиске, состоит из некоторых фиксированных полей и реквизитов, для которых указано, что они строкового или числового типа и их нужно индексировать или индексировать с дополнительным упорядочиванием.

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

В качестве значения по умолчанию для свойства "Ввод по строке" в 1С:Предприятии 8 используются следующие поля:

План счетовНаименование, КодПлан обменаНаименование, КодПлан видов характеристикНаименование, КодДокументНомер документаСправочникНаименование, КодБизнес-процессНомерЗадачаНомер, НаименованиеПлан видов расчетаНаименование, Код

Отметим, что поле используется для поиска по строке только в том случае, если длина поля больше нуля. Так, например, если длина наименования в некотором справочнике равна нулю, то поиск по полю "Наименование" выполняться не будет.

Пример . Есть справочник товаров , описываемых кодом (число), наименованием (строка) и артикулом (строка).

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

Если использование артикулов товаров не принято, можно указать в свойстве "Ввод по строке" поля " Наименование", " Код". При этом в выпадающем списке сначала будут идти товары, у которых в поле " Наименование" хранится текст, начинающийся с введенного текста, затем — товары, у которых в поле " Код" хранится введенное значение (текст из поля ввода интерпретируется как число).

4. Модальные действия в обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста

Механизм автоподбора текста в поле ввода и преобразования текста в значение не предусматривает возможности использования разработчиком конфигурации интерактивных действий в обработчиках событий. Кроме того, логика работы стандартных (системных) обработчиков событий достаточно сложная и в обработчиках этих событий не всегда можно узнать, по какому поводу он (обработчик) вызван. Например, обработчик события " ОкончаниеВводаТекста" будет вызываться не только при переходе из поля ввода на другой элемент управления формы, но и при нажатии в поле ввода кнопки выбора (клавиша F4).

Рекомендуется в обработчиках событий " АвтоПодборТекста" и " ОкончаниеВводаТекста" работать исключительно с параметрами обработчиков, формируя нужный текст и значения и отдавая их через параметры обработчиков.

5. Управление механизмом автопоиска и автоподбора с помощью прав

Управлять механизмом автопоиска и автоподбора можно на уровне прав пользователей. Для этого в списке прав для различных объектов метаданных существует право "Ввод по строке".

Если у пользователя нет права на ввод по строке для соответствующего объекта метаданных , в поле ввода запрещается редактирование текста и работа механизма автопоиска и автоподбора блокируется.

6. Работа механизма автопоиска и автоподбора с правами на уровне записей

Данные, используемые системой в обработчиках событий автопоиска и автоподбора, могут иметь ограничения на доступ к ним. Достичь этого можно с помощью механизма ограничения прав доступа к данным на уровне записей. В этой ситуации сама платформа 1С:Предприятие 8 выбирает только разрешенные записи и дополнительной поддержки на уровне обработчиков событий для этого не требуется.

Если же есть необходимость поиска подходящих данных в обработчиках событий автопоиска и автоподбора, в запросе нужно использовать служебное слово "РАЗРЕШЕННЫЕ", указывающее, что при встрече данных, доступ к которым ограничен, нужно их просто пропускать: в противном случае будет выдана ошибка времени исполнения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Этой статьей я продолжаю серию заметок об эффективных приемах работы в 1С:Бухгалтерия 8.3. Рассказываю о хитростях, которые мало кто знает и ещё меньше людей используют в своей работе. Приемы, о которых пойдет речь, способны существенно сэкономить время и повысить вашу квалификацию как специалиста. Первая часть доступна здесь.
п

Прием №4: Поиск в текущей колонке сразу после начала набора текста.

Как вы ещё не пользуетесь этой потрясающей возможностью? В любом журнале (будь-то справочник или документы) выделите любую строчку в любом столбце и просто начинайте набирать текст.

Система автоматически будет отбирать строки, в которых содержится вводимое вами значение в одном из столбцов:

Если нужно отменить фильтр — нажмите кнопку Esc на клавиатуре или на крестик в поле поиска:

Но что, если нам нужно искать не во всех колонках, а только в конкретной?

Для поиска в текущей (выделенной) колонке используйте комбинацию Alt + F или пункт меню "Ещё"->"Расширенный поиск":

Для мгновенного отбора (без отображения диалогового окна) по текущей колонке и по выделенному в ней значению используйте комбинацию Ctrl + Alt + F или пункт меню "Ещё"->"Найти. ".

Например, давайте отберём все документы в номере которых встречается цифра 8. Для этого выделим столбец "Номер" в любой строке и нажмём Alt + F.

В открывшемся окне наберём цифру 8 и нажмём "Найти":

Отлично, в списке остались документы в номере которых (в любой позиции) содержится цифра 8:

Для отмены отбора нажмём комбинацию Ctrl + Q или удалим отбор с верхней панели (крестик):

Внимание! Если поиск не срабатывает (получается пустой отбор) — вероятно у вас включён полнотекстовый поиск и не обновлён его индекс.

Полнотекстовый поиск настраивается в разделе "Администрирование" пункт "Поддержка и обслуживание":

Далее регламентные операции и уже здесь или отключаем полнотекстовый поиск или обновляем его индекс (пункт "Настроить" кнопка "Обновить индекс"):

Прием №5: Ввод в поле ввода по строке.

Пусть вам требуется забить поле контрагент в документе "Поступление товаров и услуг" и вы знаете, что контрагент называется как-то на "аэро".

И вы вместо того, чтобы выбирать контрагента из списка, просто возьмите и начните в поле ввода контрагент набирать текст "аэро". Как видите система сама подсказывает возможные варианты контрагентов, которые начинаются с этих букв. Искомый аэрофлот найден — осталось просто выбрать его.

И так можно в любых полях!

Прием №6: Суммирование выделенных ячеек в отчетах.

Просто выделяйте нужные ячейки мышкой — сумма автоматически отобразится в поле указанном на рисунке. А если нужно выделить ячейки не находящиеся рядом — используйте клавишу CTRL. Зажмите её и выделяйте нужные ячейки в отчете, чтобы получить их сумму.

Прием №7: Сохраняйте любые печатные формы в любом удобном формате.

Любой отчет или печатную форму документа можно сохранить в подходящем формате на компьютер. Просто сформируйте печатную форму и нажмите на значок дискеты в верхней части окна программы.

Теперь выберите имя и формат для документа. Это может быть excel, word, pdf, html и многие другие популярные форматы.

Прием №8: Групповая печать документов.

Прием №9: Печать журнала или табличной части документа.

Продолжение здесь (ч. 3).

Мы молодцы, на этом всё

Кстати, подписывайтесь на новые уроки.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Оцените статью
Добавить комментарий