Андроид. Windows. Антивирусы. Гаджеты. Железо. Игры. Интернет. Операционные системы. Программы.

Переопределение события ввода по строке. Переопределение события ввода по строке Добавить поля доступные для ввода по строке

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

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

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

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

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

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

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

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

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

Таблица = Запрос.Выполнить().Выгрузить();

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

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

ДанныеВыбора.ЗагрузитьЗначения(Массив);

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

КонецПроцедуры

Вы перешли на 1С 8.3 Бухгалтерия и не знаете, как ввести начальные остатки? Тогда вам надо прочитать эту статью. Ввод начальных остатков в 1С 8.3 вручную делают в случаях, когда нет возможности перенести их программными средствами. В 1С 8.3 есть удобный помощник ручного формирования остатков. Как им пользоваться читайте далее.

Ввод начальных остатков в 1С 8.3 делают в специальном окне – «Помощник ввода остатков». Сначала в нем указывают название организации и дату ввода остатков. Далее вводят остатки по счетам. В окне «помощника» указаны все основные бухгалтерские счета, которые используются в учете. Каждый счет имеет свои особенности, «помощник» учитывает их при ручном формировании остатков. Например, при вводе сальдо по основным средствам надо ввести информацию о сумме износа и сроке полезного использования. Читайте в этой статье, как ввести начальные остатки в 1С 8.3 Бухгалтерия в 5 шагов по счетам 01,10,41,60.

Шаг 1. Зайдите в 1С 8.3 в «Помощник ввода остатков»

Зайдите в раздел «Главное» (1) и нажмите на ссылку «Помощник ввода остатков» (2). Откроется окно «помощника».

В открывшемся окне укажите вашу организацию (3) и дату формирования начального сальдо (4). Если учет в новой программе вы начнете с 1 января, то дату установите 31 декабря.

Шаг 2. Введите в 1С 8.3 начальные остатки по основным средствам

В окне «помощника» кликните левой клавишей мышки на счет 01.01 «Основные средства …» (1) и нажмите кнопку «Ввести остатки по счету» (2). Откроется окно для внесения сальдо по основным средствам.

В окне ввода сальдо укажите подразделение (3), в котором установлено основное средство и нажмите кнопку «Добавить» (4). Откроется окно «Основные средства: новая строка».

В открывшемся окне заполните поля:

  • «Основное средство» (5). Выберете из справочника нужное ОС;
  • «Первоначальная стоимость (БУ)», «Первоначальная стоимость (НУ)» (6). Укажите первоначальную стоимость в бухгалтерском и налоговом учете;
  • «Стоимость (БУ)», «Стоимость (НУ)» (7). Укажите стоимость ОС;
  • «Амортизация (износ) (БУ)», «Амортизация (износ) (НУ)» (8). Укажите бухгалтерскую и налоговую амортизацию, начисленную на дату внесения сальдо;
  • «Способ отражения …» (9). Выберете из справочника нужный способ, например «Амортизация (счет 20.01)».

Во вкладке «Бухгалтерский учет» заполните поля:

  • «Способ поступления» (11). Выберете способ поступления, например «Приобретение за плату»;
  • «Порядок учета» (12). Выберете из справочника нужное значение, в нашем примере это «Начисление амортизации»;
  • «Материально-ответственное лицо» (13). Укажите сотрудника, отвечающего за основное средство;
  • «Способ начисления амортизации» (14). Выберете нужное значение, например «Линейный способ»;
  • «Срок полезного использования …» (15). Укажите срок полезного использования основного средства.

Во вкладке «Налоговый учет» заполните поля:

  • «Порядок включения …» (16). Выберете из справочника нужное значение, например «Начисление амортизации»;
  • «Срок полезного использования (в месяцах)» (17). Укажите срок полезного использования основного средства в налоговом учете.

Во вкладке «События» заполните поля:

  • «Дата» (19). Укажите дату принятия к учету ОС;
  • «Событие» (20). Выберете нужное значение, например «Принятие к учету с вводом в эксплуатацию»;
  • «Название документа» (21). Введите название документа, по которому основное средство принималось к учету, например «Акт ввода в эксплуатацию»;
  • «Номер документа» (22). Укажите номер документа, по которому основное средство принималось к учету.

Формирование сальдо по основному средству завершено. Для сохранения данных нажмите кнопку «Записать и закрыть» (23).

В окне «Ввод остатков (Основные средства)» нажмите кнопку «Провести и закрыть» (24). Теперь в учете есть проводки по вводу остатков. Далее откроется окно, в котором будет видна операция по формированию сальдо по основным средствам.

В окне «Ввод остатков» мы видим операцию по внесенному сальдо (25). В эту операцию можно добавлять другие основные средства и вносить различные правки. Для этого надо два раза кликнуть по ней левой клавишей мышки. Чтобы посмотреть проводки, сформированные по операции, нажмите кнопку «ДтКт» (26). Откроется окно «Движение документа: Ввод остатков…».

В открывшемся окне мы видим проводки по формированию остатков по счетам 01.01 «Основные средства …» (27) и 02.01 «Амортизация основных средств …» (28), сформированные «помощником». Эти счета корреспондируют с техническим счетом «000» (29).

Шаг 3. Введите в 1С 8.3 начальные остатки по материалам

В окне «помощника» кликните левой клавишей мышки на счет 10.01 «Сырье и материалы» (1) и нажмите кнопку «Ввести остатки по счету» (2). Откроется окно для внесения сальдо по материалам.

В окне ввода остатков укажите подразделение (3), в котором находятся материалы и нажмите кнопку «Добавить» (4). В новой строке укажите:

  • Счет учета материалов (5);
  • Название материала (6);
  • Склад, на котором находится материал (7);
  • Его количество (8);
  • Общую стоимость материалов в бухгалтерском и налоговом учете (9).

Если вам нужно ввести остатки по спецодежде и материалам, переданным в переработку, то воспользуйтесь вкладками «Спецодежда….» (10) и «Материалы, переданные …» (11).

Для завершения операции нажмите кнопку «Провести и закрыть» (12). Операция по внесению сальдо по материалам завершена.

Шаг 4. Введите в 1С 8.3 начальные остатки по товарам на складах

В окне «помощника» кликните левой клавишей мышки на счет 41.01 «Товары на складах» (1) и нажмите кнопку «Ввести остатки по счету» (2). Откроется окно для внесения сальдо по товарам.

  • Счет учета товара (4);
  • Название товара (5);
  • Склад, на котором находится товар (6);
  • Его количество (7);
  • Общую стоимость товара в бухгалтерском и налоговом учете (8).

Для завершения операции нажмите кнопку «Провести и закрыть» (9). Операция по внесению сальдо по товарам завершена.

Шаг 5. Введите в 1С 8.3 начальные остатки по расчетам с поставщиками и подрядчиками

В окне «помощника» кликните левой клавишей мышки на счет 60.01 «Расчеты с поставщиками и подрядчиками» (1) и нажмите кнопку «Ввести остатки по счету» (2). Откроется окно для внесения сальдо по счету 60.01.


В окне ввода остатков нажмите кнопку «Добавить» (3). В новой строке укажите:

  • Счет учета расчетов с поставщиками (4);
  • Название поставщика (5);
  • Договор с поставщиком (6);
  • Документ расчетов, по которому возникло сальдо с поставщиком (7);
  • Сумму задолженности перед поставщиком (8).

Для завершения операции нажмите кнопку «Провести и закрыть» (9). Операция по внесению сальдо по расчетам с поставщиками завершена.

По аналогии с вводом сальдо по поставщикам делается операция по введению остатков по счету 62 «Расчеты с покупателями».

Напоминаем, что после ввода остатков по всем счетам вам необходимо проверить балансовое равенство между входящими сальдо по дебету и кредиту в сводной оборотно-сальдовой ведомости. При этом по вспомогательному счету «000» входящее сальдо должно равняться нулю. Сформируйте оборотно-сальдовую ведомость чтобы проверить балансовое равенство и убедиться в отсутствии сальдо по счету «000».

Хитрости при работе в 1С:Бухгалтерии 8.3 (редакция 3.0) Часть 2

2017-02-09T10:31:17+00:00

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

Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». Материал предполагает, что вы уже ознакомились с предыдущими нашими статьями, посвященными интерфейсу. В это же статье мы продолжим знакомство с новыми возможностями интерфейса «Такси» и рассмотрим, какие интересные новшества получили управляемые формы в этом интерфейсе.

Применимость

В статье рассматривается интерфейс «Такси» конфигурации, разработанной на платформе 1C 8.3.5.1098. Дополнения к текущим релизам платформы (8.3.11) приведены в заключении. Поэтому вся представленная информация актуальна.

Новое в управляемых формах в «1С:Предприятие 8.3»

Разработчики платформы «1С:Предприятие 8.3» в очередной раз основательно поработали над удобством работы пользователей с управляемыми формами.

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

Ранее, в полях ввода, при вводе с клавиатуры начальных символов, система искала подходящие элементы.

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

В конфигураторе у ссылочных объектов метаданных для настройки ввода по строке, была создана отдельная закладка “Поле ввода”:

На ней представлены следующие возможности для формирования списка выбора при вводе по строке:

  • использование полнотекстового поиска;
  • поиск по вхождению подстроки или по началу строки;
  • выполнение поиска непосредственно или в фоновом режиме.

В свойстве “Способ поиска строки при вводе по подстроке” можно выбрать – следует ли искать только по первым символам строки или в любой ее части.

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

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

Естественно, использование поиска по любой части строки может привести к ухудшению производительности системы, особенно при большом объеме данных.

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

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

Во время полнотекстового поиска будут найдены как целые слова, так и строки, в которых набранные символы являются частью целых слов (используется оператор * полнотекстового поиска).

Например, пользователь вводит следующие части слов в поле ввода, система во всплывающем окне отображает найденные при помощи механизма полнотекстового поиска варианты:

Результаты полнотекстового поиска, соответствующего введенной поисковой строке, приведены на рисунке:

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

При совместном использовании этого функционала и ввода по строке существует следующая особенность.

Указанные выше обработчики не влияют на представление значений в списке выбора – в списке отражается основное представление объекта.

Однако после выбора в поле отображается ожидаемое переопределенное представление объекта.

Для увеличения нажмите на изображение.

Разработчики считают, что ошибок в таком поведении платформы нет, и что более ценно показать, почему конкретный результат найден (выделить, например, подстроку, по которой объект был найден), чем отобразить оторванное от результата поиска представление соответствующего значения.

Рассмотренные выше свойства ввода по строке задавались на уровне всего объекта метаданных.

В конкретном месте конфигурации разработчик может переопределить эти свойства.

Например, при помощи обработчиков событий АвтоПодбор и ОкончаниеВводаТекста конкретного поля ввода или при помощи обработчика события ОбработкаПолученияДанныхВыбора в модуле менеджера объекта.

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

Для увеличения нажмите на изображение.

Выпадающий список для поля ввода

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

Теперь этот список может отображать историю выбранных ранее значений. Список с историей показывается на экране при установке курсора в поле, при нажатии кнопки Выбрать из списка, или кнопки на клавиатуре со Стрелкой вниз.

Включить отображение истории можно у полей ввода, связанных с данными типа справочник, документ, бизнес-процесс, задача, план видов характеристик, план видов расчета, план счетов и план обмена. В конфигураторе для этого предусмотрено свойство, расположенное на закладке “Поле ввода”:

Для увеличения нажмите на изображение.

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

Кроме этого, если в списке поля ввода пользователь не нашел интересующего элемента, он может нажать кнопку “Показать все” для открытия формы списка, чтобы выбрать элемент из всего справочника.

Также в списке поля ввода есть команда “Создать новый объект”. При этом будет открыта форма нового элемента.

В этой форме пользователь заполняет необходимые поля. После записи и закрытия формы ссылка на только что созданный элемент будет подставлена в поле ввода.

Типовой шаблон использования команды “Создать новый элемент” выглядит следующим образом. Пользователь вводит название нужного элемента в поле ввода.

Если такого элемента в базе данных система не обнаружит – будет выведено сообщение об этом. После нажатия кнопки в списке, на экране откроется форма нового элемента с заполненным наименованием.

Рассмотренные новшества позволяют увеличить скорость ввода информации в систему.

Сохранение настроек динамических списков

В платформе 8.3 настройки динамического списка можно сохранять автоматически. Для этого в конфигураторе, для нужного реквизита формы, необходимо установить свойство “Автоматическое сохранение пользовательских настроек”. По умолчанию, при создании списка эта настройка включена.

У корневого элемента конфигурации появилось новое свойство – Хранилище пользовательских настроек динамических списков.

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

Для увеличения нажмите на изображение.

Настройка списков в пользовательском режиме вызывается при помощи соответствующего пункта меню:

Внешний вид формы похож на настройку отчетов.

Для увеличения нажмите на изображение.

Условия, по которым выполнен отбор списка, автоматически отображаются в нижней части настроек. Эти настройки будут включены в форму списка.

В режиме конфигуратора для этого необходимо заполнить свойство таблицы формы Группа пользовательских настроек.

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

При такой настройке форма будет иметь поля в виде “быстрых отборов”.

Для увеличения нажмите на изображение.

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

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

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

Если режим совместимости конфигурации установлен в значение “Не использовать”, то для динамического списка, у которого в качестве основной таблицы указана таблица журнала документов, кнопка “Создать” автоматически формируется в виде подменю со списком документов, входящих в журнал.

Для увеличения нажмите на изображение.

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

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

Для увеличения нажмите на изображение.

В пользовательском режиме эта кнопка будет выглядеть следующим образом:

Для увеличения нажмите на изображение.

Т.к. материал в статье описан для платформы 8.3.5, то актуализируем его.

  • До версии 8.3.7 ввод по строке работал недостаточно быстро, поэтому в этом релизе была изменена структура данных индекса полнотекстового поиска, что привело к повышению скорости при работе системы в тех местах, где используется данный механизм. Отметим, что новый формат полнотекстового поиска используется в том случае, если режим совместимости установлен в значение «Не использовать». В режиме совместимости с с версией 8.3.6 поведение не изменилось. Также отметим, что в следующем релизе платформы 1С (8.3.8) механизм ввода по строке и при использовании строки поиска динамического списка был также улучшен, и теперь он обеспечивает поиск данных, которые еще не попали в полнотекстовый поиск. Ранее такого поведения не наблюдалось.
  • Выпадающий список поля ввода управляемой формы также претерпел некоторые улучшения. В версии 8.3.8 он стал автоматически подстраивать свою ширину под ширину отображаемых в нем данных, плюс клавиши Home и End стали обрабатываться прямо в поле ввода. Благодаря этим улучшениям стало удобнее использовать поле ввода с выпадающим списком.
  • Механизм сохранения настроек динамических списков также был улучшен, и в версии 8.3.6 свойства расширения таблицы формы для динамического списка Период и Отображение стали храниться в тех же разрезах, что и другие настройки динамического списка, что сильно упростило работу с ними разработчику. Теперь они стали доступны в обработчике управляемой формы ПриЗагрузкеПользовательскихНастроекНаСервере() , чего ранее не было.

На этом знакомство с управляемыми формами в интерфейсе «Такси» мы завершим, но в следующей статье познакомимся с новыми возможностями, которые представила платформа «1С:Предприятие» редакции 8.3.

Печать (Ctrl+P)

Для прикладных объектов (справочники, документы, планы видов характеристик, планы счетов, планы видов расчета, регистры, бизнес-процессы и задачи, а также планы обмена) в свойстве Ввод по строке можно указать те реквизиты, по которым выполняется поиск. Если ввод по строке разрешен (заданы соответствующие реквизиты), то допустимо в поле ввода соответствующего типа не выполнять выбор из формы объекта, а ввести информацию, которая содержится в заданных реквизитах объекта.
Например, в справочнике Номенклатура ввод по строке разрешен у реквизита наименования. У справочника есть несколько наименований, в котором находится несколько товаров, начинающихся со слова Ве. Тогда, введя в поле ввода
номенклатуры подстроку Ве, мы получим список товаров, которые начинаются с этого слова Ввод по строке

В качестве реквизитов, по которым будет выполняться поиск, могут выступать:
● Для справочников, планов видов характеристик, планов счетов, планов видов расчета, планов обмена – Код и Наименование.
● Для документов – Номер .
● Для бизнес-процессов и задач – Номер и Наименование .
● Реквизиты, имеющие тип Число или Строка , для которых свойство Индексироват ь имеет значение Индексировать или Индексировать с доп. упорядочиванием. Примером последних может служить поле для ввода артикула, штрихкода, ИНН.

Настройка ввода по строке

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


Настройка ввода по строке

Если полей несколько, то установить порядок их следования. При поиске по строке поиск выполняется в полях в той последовательности, в которой они приведены в данном диалоге. Например, для элемента справочника Номенклатура ввод может осуществляться как по коду, так и по артикулу. Если значение кода одного элемента совпадет со значением артикула другого, то в список найденные значения попадут в том порядке, в котором указаны при настройке.
ВНИМАНИЕ! При выполнении поиска данных (во время ввода по строке) действуют ограничения доступа к данным.
Кроме указания того, по каким полям будет выполняться поиск, система позволяет дополнительно настроить некоторые параметры поиска. Свойство Способ поиска строки предназначено для указания способа поиска строки:
● Только в начале поля, выбранного для ввода по строке (значение Начало). В этом случае поисковая строка не разбивается на слова, а введенный текст ищется целиком. Например, если поиск выполняется в следующих данных: Иванов Максим и Максимов , то при вводе в поле ввода слова Максим будут найдены данные Максимов , а при вводе в поле ввода Иван Макс не будет найдено ничего.
● В любой части поля (значение Любая часть). Если строка поиска состоит из нескольких слов и поиск выполняется в любой части, то для поиска используется запрос, аналогичный следующему (для двух полей и двух слов):

(Поле1 ПОДОБНО “%Слово1%” ИЛИ Поле2 ПОДОБНО “%Слово1%”) И (Поле1 ПОДОБНО “%Слово2%” ИЛИ Поле2 ПОДОБНО “%Слово2%”)
Свойство Полнотекстовый поиск позволяет задействовать полнотекстовый поиск при организации ввода по строке. Полнотекстовый поиск нельзя использовать для таблиц внешних источников данных. Использование полнотекстового поиска обладает несколькими особенностями:
1. Полнотекстовый поиск всегда выполняется по началу слов.
2. Полнотекстовый поиск используется для первоначального отбора объектов, в которых будет выполняться дальнейший поиск (уменьшается количество объектов, в которых будет выполняться поиск).
3. К результатам полнотекстового поиска будут добавлены все непроиндексированные ссылки из таблицы, по которой выполнялся ввод по строке.
4. В списке отобранных объектов будет выполняться поиск по полям, которые отобраны для использования в механизме ввода по строке способом, который задан свойством Способ поиска строки .
5. Для каждого слова из поискового запроса в конце добавляется символ “*”.
Указанные особенности могут привести к тому, что:
● Полнотекстовый поиск может чрезмерно сузить набор данных для поиска, если используется поиск по любой части вместе с полнотекстовым поиском. В результате данные найдены не будут. При этом отключение полнотекстового поиска приведет к нахождению нужных данных. Это произойдет потому, что полнотекстовый поиск ищет только по началу слова. Если искомый текст не находится в начале слова – ввод по строке не найдет такие данные.
● Неактуальный индекс полнотекстового поиска может негативно сказаться на результатах поиска.
● Если полнотекстовый поиск завершился с ошибкой, то будет применяться обычный поиск, в соответствии со свойством Способ поиска строки. Это может привести к ситуации, когда найденный объект превратиться в ненайденный (для способа поиска по любой части слова). Например: в поле ввода введен символ «а», который есть не только в начале, а и в середине массива слов, в котором выполняется поиск. Для большого набора данных полнотекстовый поиск завершится с ошибкой (слишком большой результат поиска) и с помощью обычного поиска будут найдены данные, которые внутри себя содержат букву «а». Затем пользователь введет еще одну букву (например, «ц») и поисковая строка станет «ац». В этом случае полнотекстовый поиск отберет только те данные, которые начинаются на «ац» и проигнорирует те данные, которые содержат «ац» внутри себя.
Если выпадающий список формируется системой (а не с помощью программного кода прикладного решения), то представления найденных объектов формируются по специальному алгоритму. Представление найденного объекта состоит из двух частей: представление реквизита, содержащего строку поиска (обязательная часть) и дополнительное представление (не обязательная часть).
Собственно представление формируется следующим образом:
● Определяется поле, содержащее поисковую строку:
● В случае использования полнотекстового поиска или при обычном поиске по нескольким словам таким полем будет первое поле, из состава полей, указанных в свойстве Ввод по строке, в котором найдено первое слово из поисковой строки.
● При использовании обычного поиска по одному слову таким полем будет реквизит, в котором выполнялся поиск.
● Представление значения, расположенного в определенном поле будет являться обязательной частью представления найденного объекта для выпадающего списка.
● Определяется, необходимо или нет формировать дополнительное представление. Для этого определяется состав полей, который будет использоваться для формирования дополнительного представления:
● Если у найденного объекта есть только одно поле, используемое для формирования представления, и поисковая строка обнаружена в этом реквизите – используются поля альтернативного представления.
● В противном случае используются поля основного представления. Список полей основного и альтернативного представления приведен ниже.
● Если список полей для формирования дополнительного представления является пустым – дополнительное представление не формируется. В противном случае дополнительное представление формируется следующим образом:
● В круглые скобки заключается текстовое представление всех полей, которые выбраны для формирования дополнительного представления,через “, “;
● Сформированное дополнительное представление добавляется справа, через пробел, к обязательной части представления найденного объекта.
● Для формирования основного и альтернативного представления используются следующие поля:
● Справочник, бизнес-процесс, план видов характеристик, план счетов, план видов расчета:
● Основное представление: Наименование , Код .
● Альтернативное представление: в зависимости от того, какое выбрано основное представление, для альтернативного представления используется оставшееся поле.
● Документ:
● Основное представление: Номер , Дата .

● Задача:
● Основное представление: Наименование, Номер, Дата .
● Альтернативное представление: отсутствует.
● Внешний источник данных:
● Основное представление: поле указанное в свойстве Поле представления таблицы внешнего источника данных.
● Альтернативное представление: отсутствует.
Свойство Режим получения данных выбора управляет тем, как платформа осуществляет поиск данных при вводе по строке. Если свойство установлено в значение Фоновый, то для получения данных используется фоновое задание, а в выпадающем списке отображается анимированная картинка, аналогичная фоновому выполнению отчета (см. здесь). Фоновое задание используется в том случае, если за 200 мс требуемые данные не получены для отображения пользователю. Для файлового варианта информационной базы возможно получение данных в фоновом режиме в том случае, если в момент получения данных не выполняется другое фоновое или регламентное задание. Во время фонового получения результатов выбора пользователь может продолжать редактировать поле ввода. Указанием значения Непосредственно в качестве значения свойства приводит к тому, что поиск выполняется без использования фоновых заданий.
При настройке ввода по строке рекомендуется следовать следующим рекомендациям:
● Значение Фоновый для свойства Режим получения данных выбора рекомендуется устанавливать для объектов, в которых планируется большое количество данных.
● Полнотекстовый поиск рекомендуется включать для объектов, в которых ожидается большое количество данных.
● Поиск строки в любом месте рекомендуется включать совместно с фоновым поиском, либо в таблицах, в которых не ожидается большого количества данных. Желательно, так же при большом количестве данных, если включается поиск в любом месте, то включать и полнотекстовый поиск (чтобы большая часть поисков выполнялась бы через полнотекстовый поиск).

Особенности поведения поля ввода

При вводе данных в поле ввода следует учитывать некоторые особенности работы со списком выбора. Если в результате набора обнаружено несколько объектов, начинающихся с введенного текста, то список этих объектов будет расположен в выпадающем списке. Во время ввода пользователь может с помощью кнопок Стрелка вверх и Стрелка вниз передвигаться по списку, при этом продолжая набор текста в самом поле. В этом случае для осуществления выбора требуется выбрать необходимый элемент и подтвердить выбор нажатием кнопки Enter или Tab. Для формирования списка
выбора для поля ввода используется следующий алгоритм:
1. Выполняется получение данных при выполнении поиска в первом поле (из списка выбранных полей) по началу строки и по подстроке. Количество записей, полученных в результате поиска по началу строки, будем называть РС, а количество записей, полученных в результате поиска по подстроке, будем называть РП.
2. Если РС+РП<=10, то в выпадающий список попадут все результаты каждого поиска.
3. Если РП и РС больше 5 (каждый), то в список выбора попадет по 5 записей из каждого списка.
4. Если любое из значений РП или РС меньше 5, то в выпадающий список попадут все записи из меньшего списка и столько записей из большего списка, чтобы дополнить выпадающий список до 10.
5. Если общее количество записей в выпадающем списке оказалось меньше 10, то выполняем алгоритм с шага 1 для следующего поля из списка выбранных полей, используя разницу между 10 и количеством полученных результатов как число необходимых к получению данных на следующем шаге.

Программное формирование списка выбора

Если разработчика не устраивает, каким образом формируется список выбора, он может переопределить его самостоятельно.
Сделать это можно двумя способами:
● Непосредственно в форме – в этом случае особое формирование списка выбора будет работать только для этого, единственного поля. Для этого необходимо определить обработчики событий НачалоВыбора , АвтоПодбор и ОкончаниеВводаТекста .
● В модуле менеджера соответствующего объекта – в этом случае особое формирование списка выбора будет выполняться для всех полей ввода, в которых вводятся значения используемого объекта.
Если поле связано с данными, имеющими тип ссылки на прикладной объект (например, СправочникСсылка, ПеречислениеСсылка и т. д.), то список выбора можно сформировать или в модуле менеджера соответствующего объекта, или с помощью обработчиков модуля формы. В остальных случаях список выбора можно сформировать только с помощью обработчиков модуля формы.
Подробнее остановимся на втором способе.
Для программного формирования списка выбора необходимо переопределить обработчик события ОбработкаПолученияДанныхВыбора менеджера
объекта. Обработчик получает набор параметров, определяющих условия формирования списка выбора. Набор параметров представляет собой
структуру, которая содержит:
● Строку поиска – текстовую строку, содержащую текст, который пользователь ввел в поле ввода. Данное свойство присутствует всегда (свойство
СтрокаПоиска).
● Отбор – структура, которая описывает отбор так, как его описывает параметр формы Отбор для расширения формы для динамического списка.
Данное свойство присутствует всегда.
Отбор, указанный в данном свойстве, будет конвертироваться (по возможности) в запрос полнотекстового поиска, уточняя этот запрос для
повышения скорости поиска.
● Свойство, которое указывает режим выбора групп и элементов (передается только для иерархических списков) – свойство ВыборГруппИЭлементов.
● Свойство, которое определяет способ поиска строки: по началу слова или по любой части (свойство СпособПоискаСтроки).
● Необходимость использования полнотекстового поиска (свойство ПолнотекстовыйПоиск).
● Режим получения данных выбора (свойство РежимПолученияДанныхВыбора).
● Кроме этого, в структуре передаются элементы, которые заданы в свойствах элемента формы – Связи параметров выбора (см. здесь) и Параметры
выбора (см. здесь).
Кроме того, в обработчик передается переменная, в которую следует вернуть сформированный список выбора, и параметр СтандартнаяОбработка,
который определяет поведение системы после того, как произойдет выход из обработчика.
Если разработчик устанавливает параметр СтандартнаяОбработка в значение Ложь, то ему необходимо самому полностью формировать список выбора.
Если флажок стандартной обработки установить в значение Истина, то можно предоставить системе возможность сформировать список выбора, но при
этом можно модифицировать параметры выбора (добавить дополнительные значения отбора, изменить режим выбора групп и элементов и т. д.).
Примечание 1. Если система сама формирует список выбора, при формировании списка учитываются ограничения доступа к данным.
Примечание 2. Примеры, приведенные ниже, не являются законченным. Они предназначены для демонстрации различных механизмов получения списков выбора.
Так, следующий код в случае любого текста, вводимого пользователем, будет предоставлять выбор из трех товаров, с кодами 00000002, 00000003 и 00000004.
Пример:

Процедура ОбработкаПолученияДанныхВыбора (ДанныеВыбора , Параметры , СтандартнаяОбработка )
ДанныеВыбора = Новый СписокЗначений ;
(“00000002”));
ДанныеВыбора.Добавить(Справочники.Товары.НайтиПоКоду (“00000003”));
ДанныеВыбора.Добавить(Справочники.Товары.НайтиПоКоду (“00000004”));

СтандартнаяОбработка = Ложь ;
КонецПроцедуры

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

Процедура
Параметры.Отбор.Вставить (“Вид”, Перечисления.ВидыТоваров.Товар );
КонецПроцедуры

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

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

Также следует обратить внимание на еще один способ формирования списка выбора: передачу в качестве значения элемента списка значений не ссылки на искомый объект (как в примерах выше), а структуру особого содержания.
Эта структура состоит из следующих элементов:
● Значение – собственно значение выбираемого элемента. Элемент структуры с таким именем должен быть обязательно.
● ПометкаУдаления – признак, что выбираемое значение помечено на удаление в информационной базе. Элемент структуры с таким именем не является обязательным.
● Предупреждение – строка с текстом предупреждения, которое отобразит «1С:Предприятие» при выборе такого элемента из списка значений.
Элемент структуры с таким именем не является обязательным.
Если в структуре свойство ПометкаУдаления равно значению Истина и не указано свойство Предупреждение, то система автоматически сформирует текст предупреждения. Если свойство Предупреждение указано, то отображается именно оно. Следует помнить, что текст Предупреждение завершается вопросом Продолжить? и отображается в качестве вопроса с вариантами ответа Да и Нет.
Далее будет показана модификация предыдущего примера, в котором для складов с установленным в значение Истина реквизитом НеИспользовать будет сформировано предупреждение Этот склад не должен использоваться.
Также можно совмещать в одном списке выбора и значения типа Структура, и простые значения.
Пример:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь ;
ДанныеВыбора = Новый СписокЗначений;
// Сформируем список с предупреждениями
Запрос = Новый Запрос ;
Запрос.Текст = “ВЫБРАТЬ
| Склады.Ссылка,
| Склады.Наименование,
| Склады.НеИспользовать
|ИЗ
| Справочник.Склады КАК Склады”;
Результат = Запрос.Выполнить() ;
ВыборкаДетальныеЗаписи = Результат.Выбрат ь();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Структура = Новый Структура (“Значение”,

Похожие публикации