Поиск документов по регистрационному номеру 1С:ДО [Расширение]

24.01.24

Задачи пользователя - Поиск данных

Упрощение и ускорение поиска документов в 1С:Документооборот.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Поиск документов по регистрационному номеру 1С:ДО [Расширение]
.cfe 15,95Kb
0
0
2 SM
Скачать Купить за 2 150 руб.

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

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

 

Содержание

  1. Описание работы
  2. Установка и настройка расширения
  3. Подробности работы

 

1. Описание работы

После установки расширения достаточно ввести в поле глобального поиска символ "=" (или "= ") и далее указать любой текст, после чего в результатах будут все документы, регистрационный номер номер которых содержит введённый текст (символ "=" в начале строки не учитывается).

Например, "=ДА" (или "= ДА") в демонстрационной базе ДО КОРП 3.0:

 

 

По умолчанию результаты поиска сортируются по возрастанию даты регистрации документов, а если нужно сортировать по убыванию даты регистрации, необходимо после символа "=" добавить символ "-" (минус).

Кроме того, можно не указывать символ "=" в начале строки, тогда система сама предложит поискать введённый текст среди регистрационных номеров документов:

 

 

Подсказка по использованию поиска отображается при нажатии на гиперссылку "Что искать" внизу списка результатов поиска:

 

 

По нажатию на один из вариантов будет произведён поиск, как будто в поле был введён текст "=ДА":

 

 

Или как как будто в поле был введён текст "=-ДА":

 

 

 

2. Установка и настройка расширения

Работа расширения проверена в Документооборот КОРП, редакция 3.0 (3.0.12.22) и Документооборот 8 КОРП, редакция 2.1 (2.1.32.6), но, учитывая характер доработки, расширение должно заработать и во всех остальных версиях (Документооборот государственного учреждения, ПРОФ, Холдинг).

Для установки расширения в режиме предприятия необходимо войти в базу под пользователем с полными правами, открыть "Функции для технического специалиста...", выбрать пункт "Управление расширениями конфигурации" ветки "Стандартные", нажать "Добавить", выбрать файл расширения на диске, а после - снять галочку "Безопасный режим" и перезапустить 1С (можно нажать на кнопку "Перепустить" в окне списка расширений.

 
 Установка расширения в режиме предприятия в картинках

 

 

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

 
 Установка расширения в режиме конфигуратора в картинках

 

 

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

 

 

  • Значение строки, которая определяет выводимое количество результатов поиска, хранится в константе "Количество результатов глобального поиска (ПРН)", значение по умолчанию: 15.
  • Значение строки, которая определяет очерёдность плана поиска поиска по рег. номеру среди остальных планов глобального поиска, хранится в константе "Порядок поиска по рег. номеру в плане поиска (ПРН)", значение по умолчанию: 1.
  • Значение строки, которая активирует поиск по регистрационному номеру, хранится в константе "Префикс глобального поиска по рег. номеру (ПРН)", значение по умолчанию: "=" (символ равно).
  • Значение строки, которая задаёт сортировку результатов по убыванию, хранится в константе "Префикс сортировки по убыванию (ПРН)", значение по умолчанию: "-" (символ минус).

 

3. Подробности работы

Разработка вдохновлена статьей Расширение глобального поиска 1С, или Глобальный поиск "на максималках". Кроме того, в процессе я заглядывал в статью о глобальном поиске на ИТС (23-я платформа).

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

Поэтому я выбрал символ "=", который вводится легко, не нужно нажимать SHIFT, он одинаков в любой раскладке. Хотя мне и кажется, что он не совсем логичен, и нагляднее было бы использовать строку типа "рн" (регистрационный номер) или "рег", но такое неудобно вводить. В любом случае, строку поиска всегда можно поменять на более удобную.

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

Для этого в ПриНачалеРаботыСистемы я добавляю клиентский ПланПоиска (а так же устанавливаю подсказку ввода и описание поиска):

 
 Добавление своего плана поиска в ГлобальныйПоиск в ПриНачалеРаботыСистемы

 

&После("ПриНачалеРаботыСистемы")
Процедура ПРН_ПриНачалеРаботыСистемы()        
	ГлобальныйПоиск.УстановитьПодсказкуВвода(НСтр("ru='Что искать?'") + " (CTRL + SHIFT + F)");
	ОписаниеГлобальногоПоискаМассив = Новый Массив;
	ОписаниеГлобальногоПоискаМассив.Добавить(Новый ФорматированнаяСтрока(НСтр("ru='Что искать:'"), Новый Шрифт(,, Истина)));
	ОписаниеГлобальногоПоискаМассив.Добавить(Символы.ПС);
	ОписаниеГлобальногоПоискаМассив.Добавить(Символы.ПС);
	ОписаниеГлобальногоПоискаМассив.Добавить(НСтр("ru='Введите '"));
	ОписаниеГлобальногоПоискаМассив.Добавить(Новый ФорматированнаяСтрока("=", Новый Шрифт(,11, Истина), WebЦвета.Зеленый));
	ОписаниеГлобальногоПоискаМассив.Добавить(НСтр("ru=' для поиска документа по '"));
	ОписаниеГлобальногоПоискаМассив.Добавить(Новый ФорматированнаяСтрока(НСтр("ru='регистрационному номеру'"), Новый Шрифт(,, Истина), WebЦвета.Зеленый));
	ОписаниеГлобальногоПоискаМассив.Добавить(Символы.ПС);
	ОписаниеГлобальногоПоискаМассив.Добавить(Символы.ПС);
	ОписаниеГлобальногоПоискаМассив.Добавить(НСтр("ru='Введите '"));
	ОписаниеГлобальногоПоискаМассив.Добавить(Новый ФорматированнаяСтрока("=", Новый Шрифт(,11, Истина), WebЦвета.Зеленый));
	ОписаниеГлобальногоПоискаМассив.Добавить(Новый ФорматированнаяСтрока("-", Новый Шрифт(,15, Истина), WebЦвета.Зеленый));
	ОписаниеГлобальногоПоискаМассив.Добавить(НСтр("ru=' для поиска документа по '"));
	ОписаниеГлобальногоПоискаМассив.Добавить(Новый ФорматированнаяСтрока(НСтр("ru='регистрационному номеру'"), Новый Шрифт(,, Истина), WebЦвета.Зеленый));
	ОписаниеГлобальногоПоискаМассив.Добавить(Символы.ПС);
	ОписаниеГлобальногоПоискаМассив.Добавить(НСтр("ru='и сортировки результатов по убыванию даты регистрации'"));
	ОписаниеГлобальногоПоискаМассив.Добавить(Символы.ПС);
	ОписаниеГлобальногоПоискаМассив.Добавить(Символы.ПС);
	ОписаниеГлобальногоПоискаМассив.Добавить(НСтр("ru='Введите строку для поиска, ссылку или арифметическое выражение'"));
	ГлобальныйПоиск.УстановитьОписание(Новый ФорматированнаяСтрока(ОписаниеГлобальногоПоискаМассив));

	ПорядокПоиска = ПРН_ГлобальныйПоискСерверПовтИспВызов.ПорядокПоиска();
	ПрефиксПоиска = ПРН_ГлобальныйПоискСерверПовтИспВызов.ПрефиксПоиска();
	ПланПоиска = ГлобальныйПоиск.ПолучитьПлан();
	ПланПоиска.Вставить(0, "ДобавитьПоискПоРегНомеру", "ПРН_ГлобальныйПоискКлиент", Ложь, Ложь, ПорядокПоиска, ПрефиксПоиска);
	ГлобальныйПоиск.УстановитьПлан(ПланПоиска);
КонецПроцедуры

 

 

Клиентский поиск не ищет документ, а лишь добавляет два специальных результата в начало (ПорядокПоиска по умолчанию равен 1, значение хранится в константе) всех результатов поиска:

 
 Добавление специального результата в результаты глобального поиска

 

// Добавляет в результаты поиска специальный результат, по нажатию на который выполнится
// поиск документа по регистрационному номеру. См. ПРН_ГлобальныйПоискСервер.ПоискПоРегистрационномуНомеру
//
// Параметры:
//  СтрокаПоиска - Строка - пользовательский ввод
//  РезультатыПоиска - РезультатГлобальногоПоиска
//  ДопПараметры - Произвольный - передается из ПланаПоиска, см. ПРН_ПриНачалеРаботыСистемы модуля приложения.
//
Процедура ДобавитьПоискПоРегНомеру(СтрокаПоиска, РезультатПоиска, ДопПараметры) Экспорт
	// Поиск с сортировкой по возрастанию даты регистрации
	ЭлементРезультатаПоиска = Новый ЭлементРезультатаГлобальногоПоиска;
	ЭлементРезультатаПоиска.ВидПоиска = "ПоискПоРегНомеру";
	ЭлементРезультатаПоиска.Описание = "ПоискПоРегНомеруДатаВозр";
	ЭлементРезультатаПоиска.Значение = СтрокаПоиска;
	// Представление
	МассивСтрок = Новый Массив;
	МассивСтрок.Добавить(НСтр("ru='Найти документ по рег. номеру (Дата '"));
	МассивСтрок.Добавить(БиблиотекаКартинок.ПереместитьВверх);
	МассивСтрок.Добавить("): ");
	МассивСтрок.Добавить(Новый ФорматированнаяСтрока( 
        СтрокаПоиска, 
        Новый Шрифт(,, Истина), 
		WebЦвета.Зеленый));
	ЭлементРезультатаПоиска.Представление = Новый ФорматированнаяСтрока(МассивСтрок);
	ЭлементРезультатаПоиска.Картинка = БиблиотекаКартинок.НайтиВСодержании;	
	РезультатПоиска.Вставить(0, ЭлементРезультатаПоиска);
	
	// Поиск с сортировкой по убыванию даты регистрации
	ЭлементРезультатаПоиска = Новый ЭлементРезультатаГлобальногоПоиска;
	ЭлементРезультатаПоиска.ВидПоиска = "ПоискПоРегНомеру";
	ЭлементРезультатаПоиска.Описание = "ПоискПоРегНомеруДатаУбыв";
	ЭлементРезультатаПоиска.Значение = СтрокаПоиска;
	// Представление
	МассивСтрок = Новый Массив;
	МассивСтрок.Добавить(НСтр("ru='Найти документ по рег. номеру (Дата '"));
	МассивСтрок.Добавить(БиблиотекаКартинок.ПереместитьВниз);
	МассивСтрок.Добавить("): ");
	МассивСтрок.Добавить(Новый ФорматированнаяСтрока( 
        СтрокаПоиска, 
        Новый Шрифт(,, Истина), 
		WebЦвета.Зеленый));
	ЭлементРезультатаПоиска.Представление = Новый ФорматированнаяСтрока(МассивСтрок);
	ЭлементРезультатаПоиска.Картинка = БиблиотекаКартинок.НайтиВСодержании;	
	РезультатПоиска.Вставить(1, ЭлементРезультатаПоиска);
КонецПроцедуры

 

 Теперь при любом поиске первыми будут отображаться вот такие строки:

 

 

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

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

 

&После("ПриВыбореРезультатаГлобальногоПоиска")
// При нажатии на специальный результат поиска имитируется поиск с заданным префиксом.
// См. ПРН_ГлобальныйПоискСервер.ПоискПоРегистрационномуНомеру
Процедура ПРН_ПриВыбореРезультатаГлобальногоПоиска(ЭлементРезультата, СтандартнаяОбработка)
	Если ЭлементРезультата.ВидПоиска = "ПоискПоРегНомеру"
		И (ЭлементРезультата.Описание = "ПоискПоРегНомеруДатаУбыв" Или ЭлементРезультата.Описание = "ПоискПоРегНомеруДатаВозр") Тогда
		СтандартнаяОбработка = Ложь;
		ПрефиксПоиска = ПРН_ГлобальныйПоискСерверПовтИспВызов.ПрефиксПоиска();
		Если ЭлементРезультата.Описание = "ПоискПоРегНомеруДатаУбыв" Тогда
			ПрефиксПоискаПоУбыванию = ПРН_ГлобальныйПоискСерверПовтИспВызов.ПрефиксСортировкиПоУбыванию();
			ПрефиксПоиска = ПрефиксПоиска + ПрефиксПоискаПоУбыванию;
		КонецЕсли;
		ГлобальныйПоиск.НачатьПоиск(ПрефиксПоиска + ЭлементРезультата.Значение); 
	КонецЕсли;
КонецПроцедуры

 

 

После этого сработает событие ПриГлобальномПоиске модуля управляемого приложения, план поиска будет очищен (чтобы не искало лишнего) и в него будет добавлен только один элемент - поиск по регистрационному номеру:

 
 Замена плана поиска при введение заданного префикса в начало строки поиска

 

&После("ПриГлобальномПоиске")
// В случае заданного префикса в строке поиска будет запущен специальный поиск.
// См. ПРН_ГлобальныйПоискСервер.ПоискПоРегистрационномуНомеру 
//
Процедура ПРН_ПриГлобальномПоиске(СтрокаПоиска, ПланПоиска)
	ПорядокПоиска = ПРН_ГлобальныйПоискСерверПовтИспВызов.ПорядокПоиска();
	ПрефиксПоиска = ПРН_ГлобальныйПоискСерверПовтИспВызов.ПрефиксПоиска();
	Если СтрНачинаетсяС(СтрокаПоиска, ПрефиксПоиска) И СтрДлина(СтрокаПоиска) > СтрДлина(ПрефиксПоиска) Тогда
		ПланПоиска.Очистить();
		ПланПоиска.Добавить("ПоискПоРегистрационномуНомеру", "ПРН_ГлобальныйПоискСервер", Истина, Истина, ПорядокПоиска);
	КонецЕсли;
КонецПроцедуры

 

 

 

Процедура поиска учитывает, что расширение может работать как в ДО 2.1, так в и ДО 3.0 банальной заменой текста запроса, т.к. отличия между конфигурациями для целей расширения - только разные справочники:

  • в ДО 2.1 справочники ВнутренниеДокументы, ВходящиеДокументы и ИсходящиеДокументы
  • в ДО 3.0 только один справочник ДокументыПредприятия

Проверено на следующих конфигурациях и релизах:

  • Документооборот КОРП, релизы 2.1.32.6

Расширение Глобальный поиск 1С:Документооборот 1С:Документооборот 2.1 1С:Документооборот 3.0

См. также

Поиск данных Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработки помогут Вам легко и, главное, быстро (в 5 раз и быстрее штатной обработки 1С), выполнить поиск дублирующих данных в Ваших базах 1С на платформах 8.1-8.3. Это позволит уменьшить объем лишней информации в справочниках и документах, планах видов характеристик и др., упростит работу с данными пользователям. А так же можно, одним нажатием, узнать в каких ссылочных объектах есть вообще дубли! Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. А так же обновления Вы получаете бесплатно в течение года с момента приобретения данных обработок! (Обновление от 27.11.2023, версия 6.12)

10800 руб.

14.05.2012    157305    335    253    

567

Архивирование (backup) Журнал регистрации Поиск данных Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал регистрации изменений документов в 1С для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма «История изменений». Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

21600 руб.

15.05.2017    43089    12    24    

40

Поиск данных Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Отображение и просмотр реквизитов справочника или документа - с бесконечным открытием подуровней.

2 стартмани

14.06.2024    2882    5    RustIG    26    

22

Поиск данных Системный администратор Программист Платформа 1С v8.3 Россия Абонемент ($m)

Статья об опыте развертывания и интеграции с базой данных Manticore Search для быстрого полнотекстового поиска.

1 стартмани

30.11.2023    3774    andreysidor4uk    18    

49

Поиск данных Корректировка данных Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

PowerOffice - обработка для поиска, просмотра и обработки данных для пользователей. Доступ к объектам на просмотр и редактирование данных определяется правами пользователя.

1 стартмани

05.06.2023    2162    24    PowerBoy    1    

16

Поиск данных Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Получение ссылки в 1С по бинарной строке из PostgreSQL в виде строки формата bytea или из MSSQL в виде шестнадцатиричной строки. Кроме ссылочных объектов ссылки могут быть получены и для перечислений. Это может быть полезно при анализе логов журнала регистрации или СУБД.

1 стартмани

04.04.2023    2847    2    berserg    2    

12

Поиск данных Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.08.2022    3186    26    KVIKS    3    

11
Оставьте свое сообщение