127 lines
8.6 KiB
Plaintext
127 lines
8.6 KiB
Plaintext
|
||
//Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
|
||
//
|
||
// СтрокаПоиска = СтрЗаменить(Параметры.СтрокаПоиска, """", ""); // нормализация
|
||
//
|
||
// Если СтрокаПоиска <> "" Тогда //И Параметры.Свойство("ВводПоСтрокеРасширенный") Тогда
|
||
//
|
||
// МаксимумСтрокРезультата = 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);
|
||
// МассивРезультирующихСтрок.Добавить(Новый ФорматированнаяСтрока(Хвост));
|
||
// КонецЕсли;
|
||
//
|
||
// Возврат Новый ФорматированнаяСтрока(МассивРезультирующихСтрок);
|
||
//
|
||
//КонецФункции |