1с поиск по полному коду

1С 8.3 : Полнотекстовый поиск в 1С (что это и пример использования)

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

Полнотекстовый поиск можно осуществлять в любой конфигурации на платформе 1С:Предприятие 8

Для того чтобы открыть окно управления полнотекстовым поиском необходимо выполнить следующее:

1с поиск по полному коду

1с поиск по полному коду

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

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

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

Специальные операторы, допустимые при задании поискового выражения

Механизм полнотекстового поиска допускает написание части символов русского слова одноклавишными латинскими символами. Результат поиска при этом не измениться.

1с поиск по полному коду

Два оператора РЯДОМ

Групповой символ «*» может использоваться только в качестве замены конца слова

Оператор нечеткости «#». Если неизвестно точное написание названия, имени.

Программными средствами и средствами 1с: программирование.

Оператор синонимов «!». Позволяет найти слово и его синонимы

Как программно обновить индекс полнотекстового поиска?

Пример полнотекстового поиска данных

Определение переменной СписокПоиска

Кроме этого в процедуре обработки события ПриОткрыии формы определим, что эта переменная будет содержать список полнотекстового поиска, с помощью которого мы и будем осуществлять поиск в данных

Теперь для события нажатия на кнопку Найти напишем код, который позволит нам выполнять поиск в соответствии с тем выражением, которое задано в поле ПоисковоеВыражение

Сначала в этой процедуре мы устанавливаем поисковое выражение, введенное пользователем, в качестве строки поиска для полнотекстового поиска. Затем выполняем метод ПерваяЧасть(), который собственно запускает полнотекстовый поиск и возвращает первую порцию результатов. По умолчанию порция содержит 20 элементов. После этого мы анализируем количество элементов в списке поиска. Если он не содержит ни одного элемента, то мы выводим в форму соответствующее сообщение. В противном случае вызывается процедура ВывестиРезультатПоиска(), которая отображает полученные результаты пользователю.

Создадим в модуле формы процедуру с таким именем и напишем в ней код,

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

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

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

Заключительным «штрихом» будет создание обработчика события onclick поля HTML-документа, расположенного в форме. Дело в том, что результат полнотекстового поиска, представленный в виде HTML-текста, содержит гиперссылки на номера элементов списка поиска. И нам хотелось бы, чтобы при переходе пользователя на эту ссылку система открывала бы форму того объекта, который содержится в этом элементе списка. Для этого мы будем перехватывать событие onclick HTML-документа, содержащегося в поле HTML-документа, получать номер элемента списка из гиперссылки и открывать форму соответствующего объекта. Текст обработчика события onclick поля HTML-документа представлен в коде

Источник

1с поиск по части наименования

Найти элемент справочника в 1С 8 можно тремя способами:

1) Поиск по коду

Описание параметров метода НайтиПоКоду:

2) Поиск по наименованию

Описание параметров метода НайтиПоНаименованию:

3) Поиск по произвольному реквизиту

Описание параметров метода НайтиПоРеквизит:

Nav view search

Navigation

Search

Примеры кода для 1С 8.x. Часть 3. Справочники.

Как обойти все элементы справочника запросом 1с 8.3:

Как обойти элементы с помощью менеджера справочника 1с 8.3:

Создание и запись нового элемента справочника 1с 8.3:
//метод: СоздатьЭлемент()

Создание и запись новой группы справочника (для иерархического справочника) 1с 8.3

Поиск элемента справочника запросом:

Поиск элемента через менеджер справочника 1с 8.3:

//Если элемент найден, возвращается ссылка, иначе пустая ссылка. Если реквизит КодНаименование в справочнике не используется, возвращается Неопределено.

//методы: НайтиПоКоду(), НайтиПоНаименованию(), НайтиПоРеквизиту();

Удаление элементагруппы справочника 1с 8.3:

Выборка элементов подчиненного справочника 1с 8.3:

Перенести элемент в другую группу 1с 8.3:

Как получить и проверить пустую ссылку справочника 1с 8.3

Как узнать принадлежность элемента справочника группе 1с 8.3:

Как скопировать существующий элемент справочника 1с 8.3

Как выяснить уровень вложенности элемента справочника 1с 8.3

Как заблокировать элемент справочника перед изменениями 1с 8.3

Как заполнить новый элемент справочника на основании 1с 8.3

Как открыть форму существующего элемента справочника, имея ссылку на него 1с 8.3

Как открыть форму существующей группы справочника, имея ссылку на нее 1с 8.3

Как открыть форму выбора элемента справочника и отследить её закрытие 1с 8.3

Как открыть форму списка справочника и установить отбор по реквизиту 1с 8.3

Как открыть форму списка справочника с нужным отображением 1с 8.3

Как открыть форму только что созданного, но ещё не записанного элемента справочника в 1с 8.3

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

Текст запроса будет выглядеть так:

где оператор запроса ПОДРОБНО как раз и будет искать вхождения ПараметрСтрокаПоиска по всем элементам справочника Номенклатура.

Установить значение параметра ПараметрСтрокаПоиска можно командой:

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

|Номенклатура.Наименование ПОДОБНОПараметрСтрокаПоиска

Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

Источник

Программная работа со справочниками

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

Создание элемента справочника

Создание новой группы:

Создание нового элемента:

Поиск элементов справочника

Для поиска элементов справочников в языке программирования 1С предусмотрено несколько методов:

Во всех методах если поиск успешный, то будет возвращена ссылка на найденный элемент.

Изменение элементов справочника

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

Программное изменение справочника возможно только на стороне сервера.

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

Удаление элементов справочника

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

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

Пример непосредственного удаления элемента справочника:

Обход элементов справочника

Для обхода элементов справочника в языке программирования 1С предусмотрено два метода:

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

Рассмотрим примеры обхода элементов справочника:

Выбор элементов справочника запросом

Простой пример поиска и вывода товаров со стоимостью больше 1000:

Открытие форм справочника

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

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

Кроме методов ОткрытьФорму () и ПоказатьЗначение () есть и другие (ОткрытьФормуМодально, ОткрытьЗначение, ПолучитьФорму), но их использование не рекомендуется, т.к. часть этих методов использует режим модального открытия, часть противоречит свежим рекомендациям фирмы 1С.

Приведем примеры программного открытия форм справочника:

Внимание!

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

Остались вопросы?
Спросите в комментариях к статье.

Источник

Поиск номенклатуры по коду

Розница 2.2 серверная

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

НО документ заполняется в Файловом варианте базы.

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

Подскажите, пожалуйста, в чем может быть причина?

(8)сделал вывод «Номенклатура \ Код номенклатуры»

в самом документе в ТЧ если вручную вбить код, то выводится для выбора только одна номенклатура

есть файлик, в котором есть коды номенклатуры, например, 12345.
но в базе код номенклатуры 12 345 с пробелом

в другой части кода при чтении файлика:

Код преобразуется так:
Код = Строка(Число(Спис[7]));

в файловой базе так все нормально заполняется, а в серверной нет.

прикрепил всю обработку.

(13)сообщил «12 345:Строка»

т.е. заполнено 6 символов из 11. бывает другое количество?

(19)вынес поиск номенклатуры в отдельную функцию на Сервере:

получаю код как строку: Код = Строка(Число(Спис[7])); и передаю в функцию.
сначала ищу как получилось с символом Триад.
потом символ Триад меняю на пробел у тех позиций, у которых номер не понятно как заводили.

В серверном варианте необходимо включить отладку на сервере, чтобы отладчик работал.
-debug в строке запуска сервера 1С

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

что как-то тут все запутано =)
из всех возможных проблем с поиском кодов Справочники.Номенклатура.НайтиПоКоду(Товар.Код) можно перечислить :
1. пробелы между символами кода лечится функцией СтрЗаменить() или Формат()
2. разная длина кодов как писал starjevschik добавь нули =) Прав(«00000000″+ КОД, ДлинаКода)

З.Ы, отладка в помощь

1. нужно создать функцию на сервере которая будет искать элемент по коду и возвращать ссылку
2.На клиенте обратиться к ней и дальше уже ваши послед дейтсвия

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

сервер, толстый клиент.

СправочникМенеджер. (CatalogManager. )
НайтиПоКоду (FindByCode)
Синтаксис:

Тип: Число; Строка.
Искомый код.
Строка или число в зависимости от настроек справочника в конфигураторе.
(необязательный)

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

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

Тип: СправочникСсылка. ; Неопределено.
Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка.
Если для справочника код не задан (длина = 0), то будет возвращено Неопределено.
Описание:

Осуществляет поиск элемента по его коду.

Сервер, толстый клиент, внешнее соединение.

Источник

Код для поиска номенклатуры в конфигурациях 1С. Использование мнемоники по первым буквам как вариант применения

Как же ускорить работу оператора?

Обратимся к инструментарию:

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

«Возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода ПолучитьДанныеВыбора.»

Что собственно, в конфигурациях ЕРП/УТ/КА и сделано.

В ЕРП/УТ/КА при этом идёт обращение к процедуре общего модуля НоменклатураВызовСервера.НоменклатураОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка); внутри которой собственно и формируется список значений для выбора.

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

Количество, возвращаемых элементов, ограничивается 50 различными значениями.

Вернёмся к проблеме:

Каждый, наверное, согласится, что выбор нужного значения, даже из 10 вариантов уже может быть затруднителен. Что тогда говорить о похожих 50. А чем больше в базе номенклатуры, тем больше их похожих.

Т.е. чем меньше отображенных вариантов, тем быстрее оператор выберет необходимый.

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

— заполняем код для поиска по «мнемоническому» алгоритму, кодируем его по первым буквам слов наименования, отбрасывая «запрещённые» символы (кавычки, запятые,точки, скобки и прочее).

Похожее изделие другого бренда «Сотейник TimA «Art Granit», с антипригарным покрытием, со съемной ручкой. Диаметр 24 см», не будет совпадать по коду поиска уже с третьего введённого символа.

Тут возможны «различные» вариации, в зависимости от области деятельности компании, кому-то подойдёт заполнять всё и это можно реализовать «простым» заполнением реквизита «ПередЗаписью», кому-то «посложнее», с учетом, допустим вида номенклатуры, только для определённых групп номенклатуры, оператор по первым двум введённым символам сразу поймёт надо ли использовать мнемонику.

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

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

Как вариант усовершенствования можно предложить преобразование всех символов к русскоязычной раскладке, при вводе по строке вряд ли удобно помнить что что-то в латинице и переключаться. На Инфостарте есть Транслитерация из латиницы в кириллицу, но придётся вероятно разбираться с нюансами, «СТАГ» для вышеуказанного сотейника годится, но что-то может и плохим вариантом.

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

Номера релизов на которых расширения работают: Бухгалтерия предприятия, редакция 3.0 (3.0.74.69) и Управление нашей фирмой, редакция 1.6 (1.6.19.215)

Для работы расширения необходимо отключать безопасный режим.

Источник

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

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