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

24.01.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Поиск документов по регистрационному номеру 1С:ДО [Расширение]
.cfe 15,95Kb ver:1.0.1.8
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 Платные (руб)

Если вам нужно автоматически генерировать представления (view) к вашей базе данных 1С (есть две версии - для СУБД MS SQL Server и для PostgreSQL) по структуре метаданных 1С, то вам необходима данная обработка. Наш "Генератор View", другими словами - это коннектор к данным 1С для Power BI - незаменимый помощник для бизнес-аналитиков, работающих с базами 1С из Yandex Datalens/Power BI и т.д. Работает для обычных и управляемых форм под 1С 8.3

230000 руб.

31.07.2020    13741    13    48    

25

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

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

10800 руб.

14.05.2012    158960    336    253    

570

Розничная торговля WEB-интеграция Поиск данных Пользователь Платформа 1С v8.3 Оперативный учет 1С:Розница 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Альтернатива сервису 1С Номенклатура, не требует подписки ИТС, ищет данные в открытых источниках. Для поиска товара по штрихкоду в сети интернет, полезно для первоначального заполнения базы.

1999 руб.

15.10.2020    18978    23    63    

24

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

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

5 стартмани

25.09.2024    2223    0    Артано    14    

19

Поиск данных Программист Платформа 1С v8.3 Россия Бесплатно (free)

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

18.08.2024    1804    1cnik2    23    

14

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

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

1 стартмани

14.06.2024    3391    7    RustIG    26    

22

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

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

1 стартмани

30.11.2023    4554    andreysidor4uk    18    

53

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

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

1 стартмани

05.06.2023    2324    25    PowerBoy    1    

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