xmlTSDOrdersVasilek/Catalogs/Номенклатура/Ext/ManagerModule.bsl

127 lines
8.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
//
// СтрокаПоиска = СтрЗаменить(Параметры.СтрокаПоиска, """", ""); // нормализация
//
// Если СтрокаПоиска <> "" Тогда //И Параметры.Свойство("ВводПоСтрокеРасширенный") Тогда
//
// МаксимумСтрокРезультата = 20;
//
// МассивСловПоиска = СтрРазделить(СтрокаПоиска, " ", Ложь);
// КоличествоСловПоиска = МассивСловПоиска.Количество();
//
// Если КоличествоСловПоиска > 0 Тогда
//
// СтандартнаяОбработка = Ложь;
// СписокВыбора = Новый СписокЗначений;
//
// Запрос = Новый Запрос;
//
// УсловияПоиска = "";
// ПриоритетСортировки = "";
// Для НомерСловаПоиска = 1 По КоличествоСловПоиска Цикл
//
// СловоПоиска = МассивСловПоиска[НомерСловаПоиска - 1];
// ДлинаСловаПоиска = СтрДлина(СловоПоиска);
//
// Запрос.УстановитьПараметр("СловоПоиска" + НомерСловаПоиска, "%" + СловоПоиска + "%");
// УсловияПоиска = УсловияПоиска + "
// | И Номенклатура.Наименование ПОДОБНО &СловоПоиска" + НомерСловаПоиска;
//
// ПриоритетСортировки = ПриоритетСортировки + СтрШаблон("
// | КОГДА ПОДСТРОКА(Номенклатура.Наименование, 1, %1) = ""%2""
// | ТОГДА %3", Формат(ДлинаСловаПоиска, "ЧГ="), СловоПоиска, НомерСловаПоиска);
//
// КонецЦикла;
//
// Запрос.Текст =
// "ВЫБРАТЬ ПЕРВЫЕ " + МаксимумСтрокРезультата + "
// | Номенклатура.Ссылка КАК Ссылка,
// | Номенклатура.Наименование КАК Наименование,
// | Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
// | ВЫБОР" + ПриоритетСортировки + "
// | ИНАЧЕ 9
// | КОНЕЦ КАК ПриоритетСортировки
// |ИЗ
// | Справочник.Номенклатура КАК Номенклатура
// |ГДЕ
// | ИСТИНА" + УсловияПоиска + "
// |УПОРЯДОЧИТЬ ПО
// | ПриоритетСортировки, Наименование";
//
// Выборка = Запрос.Выполнить().Выбрать();
// Пока Выборка.Следующий() Цикл
//
// СписокВыбора.Добавить(Новый Структура("Значение, ПометкаУдаления", Выборка.Ссылка, Выборка.ПометкаУдаления), ПодсветитьСлова(Выборка.Наименование, МассивСловПоиска));
//
// КонецЦикла;
//
// ДанныеВыбора = СписокВыбора;
//
// КонецЕсли;
//
// КонецЕсли;
//
//КонецПроцедуры
//Функция ПодсветитьСлова(ИсходнаяСтрока, МассивСловПодсветки, Знач ШрифтПодсветки = Неопределено, Знач ЦветПодсветки = Неопределено)
//
// МассивРезультирующихСтрок = Новый Массив;
//
// Если ШрифтПодсветки = Неопределено Тогда
// ШрифтПодсветки = Новый Шрифт(,, Истина); // жирный
// КонецЕсли;
//
// Если ЦветПодсветки = Неопределено Тогда
// ЦветПодсветки = Новый Цвет(0, 153, 0); // светло-зеленый из стандартной подсветки ввода по строке
// КонецЕсли;
//
// ИсходнаяСтрокаНормализованная = НРег(ИсходнаяСтрока); // нормализация
// ДлинаИсходнойСтроки = СтрДлина(ИсходнаяСтрокаНормализованная);
//
// // получим список диапазонов символов для подсветки
// СписокДиапазонов = Новый СписокЗначений;
// Для НомерСлова = 1 По МассивСловПодсветки.Количество() Цикл
// СловоПодсветки = НРег(МассивСловПодсветки[НомерСлова - 1]); // нормализация
// ПозицияНачалаСлова = 1;
// ДлинаСлова = СтрДлина(СловоПодсветки);
// Пока ПозицияНачалаСлова <> 0 И ПозицияНачалаСлова <= ДлинаИсходнойСтроки Цикл
// ПозицияНачалаСлова = СтрНайти(ИсходнаяСтрокаНормализованная, СловоПодсветки, , ПозицияНачалаСлова);
// Если ПозицияНачалаСлова > 0 Тогда
// МассивДиапазона = Новый Массив;
// МассивДиапазона.Добавить(ПозицияНачалаСлова);
// МассивДиапазона.Добавить(ПозицияНачалаСлова + ДлинаСлова - 1);
// СписокДиапазонов.Добавить(МассивДиапазона, Формат(ПозицияНачалаСлова, "ЧЦ=3; ЧВН="));
// ПозицияНачалаСлова = ПозицияНачалаСлова + ДлинаСлова;
// КонецЕсли;
// КонецЦикла;
// КонецЦикла;
//
// // отсортируем список диапазонов по возрастанию начал диапазонов
// СписокДиапазонов.СортироватьПоПредставлению();
//
// // сформируем массив результирующих строк с разным оформлением (подсветкой)
// СтартоваяПозиция = 1;
// Для Каждого ЭлементДиапазона Из СписокДиапазонов Цикл
// НачалоДиапазона = ЭлементДиапазона.Значение[0];
// КонецДиапазона = ЭлементДиапазона.Значение[1];
// Если НачалоДиапазона > СтартоваяПозиция Тогда // часть строки без подсветки
// ЧастьБезВыделения = Сред(ИсходнаяСтрока, СтартоваяПозиция, НачалоДиапазона - СтартоваяПозиция);
// МассивРезультирующихСтрок.Добавить(Новый ФорматированнаяСтрока(ЧастьБезВыделения));
// СтартоваяПозиция = НачалоДиапазона;
// КонецЕсли;
// Если КонецДиапазона >= СтартоваяПозиция Тогда // часть строки с подсветкой
// ЧастьВыделяемая = Сред(ИсходнаяСтрока, СтартоваяПозиция, КонецДиапазона - СтартоваяПозиция + 1);
// МассивРезультирующихСтрок.Добавить(Новый ФорматированнаяСтрока(ЧастьВыделяемая, ШрифтПодсветки, ЦветПодсветки));
// СтартоваяПозиция = КонецДиапазона + 1;
// КонецЕсли;
// КонецЦикла;
//
// Если СтартоваяПозиция <= ДлинаИсходнойСтроки Тогда // "хвост" без выделения
// Хвост = Сред(ИсходнаяСтрока, СтартоваяПозиция, ДлинаИсходнойСтроки - СтартоваяПозиция + 1);
// МассивРезультирующихСтрок.Добавить(Новый ФорматированнаяСтрока(Хвост));
// КонецЕсли;
//
// Возврат Новый ФорматированнаяСтрока(МассивРезультирующихСтрок);
//
//КонецФункции