gifts2017

Быстрый поиск документов по числовой составляющей номера.

Опубликовал Антон Юхлин (antonrost) в раздел Администрирование - Поиск данных

   Наверняка у многих бывает ситуация, когда нужно найти документ по номеру, но изобретательные пользователи (а иногда и программисты) вносят такое большое количество и разнообразие различных префиксов и прочего мусора, что на слух догадаться что такое, например, "АВ С5-1236пр" абсолютно невозможно.
   При использовании этой разработки необходимость "чтения мыслей" отпадает. Достаточно нажать кнопку поиск (или, при желании, функциональную клавишу), ввести "1236",и на экран выводится легкий для чтения список документов с этой числовой составляющей номера, сгрупированный по фирмам и видам документов. Список фильтруется по условиям отбора и периода журнала. Пара щелчков мышью, и нужный документ активизируется.
   При наличии FormEx.dll список выводится в виде дерева.
   Если в номере вообще нет цифр, то нужно искать номер 99999999 (восемь девяток).
ВНИМАНИЕ !!!!!!!!!!!!!!!!!!!!!!!
ВНИМАНИЕ !!!!!!!!!!!!!!!!!!!!!!!
ВНИМАНИЕ !!!!!!!!!!!!!!!!!!!!!!!
ВНИМАНИЕ !!!!!!!!!!!!!!!!!!!!!!!

При использовании УРБД документы, обработанные обработкой "Проставить номер для отбора.ert", будут считаться модифицированными и выгрузятся при следующем обмене.

При желании можно воспользоваться методом "РегистацияИзменений()" для исключения этого эффекта, но у меня это не реализовано.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Вроде всё учел. Если чего-то не хватает - говорите.

Скачать файлы

Наименование Файл Версия Размер
- 51
.zip 9,25Kb
25.09.09
51
.zip 9,25Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. AntonRost (antonrost) 20.07.06 12:58
Если не у всех есть глРазложить:
//******************************************************************************
// глРазложить(Стр,Разделитель)
//
// Параметры:
// Стр - строка, которую необходимо разложить на подстроки.
// Параметр передается по значению.
// Разделитель - строка-разделитель, по умолчанию - запятая.
//
//
// Возвращаемое значение:
// список значений, элементы которого - подстроки
//
// Описание:
// Функция "расщепляет" строку на подстроки, используя заданный
// разделитель. Разделитель может иметь любую длину.
// Если в качестве разделителя задан пробел, рядом стоящие пробелы
// считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
// игнорируются.
// Например,
// глРазложить(",ку,,,му", ",") возвратит список значений из пяти элементов,
// три из которых - пустые строки, а
// глРазложить(" ку му", " ") возвратит список значений из двух элементов
//
Функция глРазложить(Знач Стр, Разделитель = ",", нижрег = 0) Экспорт
СЗ = СоздатьОбъект("СписокЗначений");
Если ПустоеЗначение(Стр) = 1 Тогда
Возврат СЗ;
КонецЕсли;
Если Разделитель = " " Тогда
Стр = СокрЛП(Стр);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
Если НижРег = 1 Тогда
СЗ.ДобавитьЗначение(Нрег(Стр));
Иначе
СЗ.ДобавитьЗначение(Стр);
КонецЕсли;
Возврат СЗ;
КонецЕсли;
Если НижРег = 1 Тогда
СЗ.ДобавитьЗначение(Нрег(Лев(Стр,Поз-1)));
Иначе
СЗ.ДобавитьЗначение(Лев(Стр,Поз-1));
КонецЕсли;
Стр = СокрЛ(Сред(Стр,Поз));
КонецЦикла;
Иначе
ДлинаРазделителя = СтрДлина(Разделитель);
Пока 1=1 Цикл
Поз = Найти(Стр,Разделитель);
Если Поз=0 Тогда
Если НижРег = 1 Тогда
СЗ.ДобавитьЗначение(Нрег(Стр));
Иначе
СЗ.ДобавитьЗначение(Стр);
КонецЕсли;
Возврат СЗ;
КонецЕсли;
Если НижРег = 1 Тогда
СЗ.ДобавитьЗначение(Нрег(Лев(Стр,Поз-1)));
Иначе
СЗ.ДобавитьЗначение(Лев(Стр,Поз-1));
КонецЕсли;
Стр = Сред(Стр,Поз+ДлинаРазделителя);
КонецЦикла;
КонецЕсли;
КонецФункции // глРазложить
2. Аркадий Кучер (Abadonna) 20.07.06 16:55
Ни фига себе глРазложить !!!
СтрЗаменить(Стр,Разделитель,РазделительСтрок);
Получаем многострочную строку - и делай с ней, что хошь!
Вроде покороче получается ;)
3. AntonRost (antonrost) 20.07.06 16:59
глРазложить() - функция из типовой "Торговли..." и "Бухгалтерии". Но почему-то не у всех есть.
4. Аркадий Кучер (Abadonna) 20.07.06 17:18
Я над этой глРазложить() еще в 2000-м году смеялся.
Наверняка студент-недоучка писал. У них там ляпов много, например
справочник ДоговорА, нет такого слова в нормальном русском, ДоговорЫ
есть ;)
5. AntonRost (antonrost) 20.07.06 17:24
Со списком значений работать удобнее, чем с текстом, и если есть готовая процедура, то почему бы ею не воспользоваться ?
6. Аркадий Кучер (Abadonna) 20.07.06 17:32
Смотри:
Стр=СтрЗаменить(Стр,","РазделительСтрок);
Для А=1 По СтрКоличествоСтрок(Стр) Цикл
Список.ДобавитьЗначение(СтрПолучитьСтроку(А));
КонецЦикла;
Вот тебе и список, но короче же!
7. Аркадий Кучер (Abadonna) 20.07.06 17:36
Поторопился в наборе:
СтрЗаменить(Стр,",",РазделительСтрок)
СтрПолучитьСтроку(Стр,А)
так...
8. AntonRost (antonrost) 20.07.06 17:38
Можно еще короче: ИзСтрокиСРазделителями(), но если сидеть и оптимизировать каждую функцию в типовой, то на все остальное времени просто не хватит.
9. Аркадий Кучер (Abadonna) 20.07.06 17:52
ИзСтрокиСРазделителями() годится только для запятых, а мой вариант - для чего хочешь, хоть по матершинному слову разделяй
10. AntonRost (antonrost) 21.07.06 07:54
Стр = """"+СтрЗаменить(Стр, "матерщинное слово", """,""")+"""";
СЗ.ИзСтрокиСРазделителями(Стр);
;-)
11. Аркадий Кучер (Abadonna) 21.07.06 13:55
О чем спорим, не пойму!
Тем более не ТВОЮ же я функцию поругал.. ;)
12. AntonRost (antonrost) 21.07.06 13:57
В споре рождается истина... (с)
;)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа