gifts2017

[ОБУЧАЛОВКА] Как перестать парить себе мозги и не фанить тюльку...

Опубликовал Сергей (Che) Коцюра (CheBurator) в раздел Управление - Пользователю системы

Секреты настоящего мастерства: не покупаем Камазов там, где можно проехать на велосипеде...
Зачастую встает ряд всяких задач, которые и делать ломает - а надо! Ну там, типа, срочно продажникам какую-нибудь спецификацию напечатать (причем с кучей условий по выбору печатаемого), то закупам срочно понадобился перечень приходных документов, в которых товар "СуперПупер" встречается... ну и как обычно такого "тихого бреда" наши любимые юзера рожают вагон и маленькую тележку каждый день.

Не вдаваясь в подробности на простом условном(упрощенном) примере продемонстрируем использование штатных средств, предоставляемых нашей горячо любимой фирмой 1С для автоматизации/быстрого выполнения "оперативных" хотелок пользователей.

Для этого воспользуемся ГОТОВЫМ ИНСТРУМЕНТАРИЕМ. Мы не будем брать непроверенных обработок со всяких шареварных ресурсов. Мы возьмем отмеченный качеством продукт, а именно: воспользуемся набором универсальных отчетов и обработок с диска ИТС (где взять диск ИТС? Ну, дружище! Мы же сейчас не решаем задачу "где взять диск ИТС"... Это мы будем проходить во втором семестре...).

Итак, в нашей информационной базе мы успешно установили набор универсальных отчетов и обработок. На данный момент нас интересуют универсальные обработки, а именно: универсальная обработка подбора объектов UChoice.ert

Где она лежит? Лежит она обычно вот здесь (см.рис.1,2)
(при клике на рисунке - рисунок в полный размер)


Лежит она не на виду


А среди залежей прочего добра
Запускаем обработку на исполнение и отвечаем на вопросы...
(сейчас мы решаем УЖЕ СДЕЛАННУЮ ЗАДАЧУ, т.е. используем набросанный на скорую руку вполне рабочий пример по формированию ПРОИЗВОЛЬНОЙ ПО СОСТАВУ номенклатурной спецификации).

Итак, запустили обработку, отвечаем на вопросы:
- выбираем с чем мы будем работать: со справочником "Номенклатура"

Выбираем тип объекта

Выбираем конкретный справочник
Вот здесь мы очутились в интересном месте! Мы уже имеем готовый универсальный механизм фильтрации нужных нам объектов? который самостоятельно предоставляет достаточно сообразительный и удобный интерфейс для РЕАЛИЗАЦИИ ПРОИЗВОЛЬНЫХ "ХОТЕЛОК" ПОЛЬЗОВАТЕЛЕЙ.

Именно здесь пользователь, руководствуясь одному ему известными соображениями, делает подбор нужных ему элементов. Условия могут быть самые разные - от вхождения последовательностей символов в строковые реквизиты до выбора целых групп. Плюс к этому на прочих закладках мы имеем дополнительные возможности по селекции нужных нам элементов по "сложным" условиям подчиненных справочников и прочие мелкие "вкусняшки"... Кто работал активно в типовой "Торговле и Склад" - имеет перед собой более продвинутый аналог МФ (множественного фильтра) - только здесь мы вообще ничего не программируем - используем ГОТОВЫЙ УНИВЕРСАЛЬНЫЙ МЕХАНИЗМ.

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



Выбрали фильтр по группе
После того, как мы задали ВСЕ НЕОБХОДИМЫЕ УСЛОВИЯ - жмакаем кнопочку "Найти элементы" - справа внизу на предырущем рисунке.

Важное замечание: "мы" - это пользователи, которым вы - программисты/внедренцы - должны "навтыкать", чтобы умели пользоваться прикладным инструментарием...

после того, как мы жмакнули кнопку "найти элементы - имеем список найденных элементов по ХИТРОЗАДАННЫМ РАНЕЕ УСЛОВИЯМ (здесь для удобства можем определить состав показываемых колонок и вкл/выкл пометки).

Смотрим на список... и... что-то с ним можно сделать?


Список найденных элементов
А сделать с ним можно ВСЯКОЕ! Степень "всякости" определяется исключительно нашими нуждами/фантазией. и, ЧТО НЕМАЛОВАЖНО, данная обработка поддерживает механизм PLUG-INов, т.е. совершенно произвольных алгоритмов, которые мы можем "применить" к найденному набору записей. В этом, собственно говоря, и есть самая "вкусняшка" обработки универсального подбора объектов.

И, если мы кликнем нашу верную мышь, то под списком найденных элементов получим список плугинов, которые доступны для КОНКРЕТНО ЭТОГО НАБОРА ЗАПИСЕЙ, что мы и видим на рисунке:


Список действий к набору записей
Среди приведенных плугинов наблюдаем "ДЛЯ КЛИЕНТА..." и "ДЛЯ СКЛАДА..." - это два совершенно маленьких плугинчика, реализующие мелкие частные задачи... Что именно делают плугинчики - это уже определяем мы (программисты) сами... Дядя Нуралиев Большую Красную Кнопку (которая делает ВСЕ) - еще не придумал... (однако ее придумал я, на досуге длинными осенними вечерами: http://www.infostart.ru/profile/174/projects/841/).

Итак, мы выбираем "печать спецификации для клиента" и получаем что-то, что работает по уже нами написанному алгоритму, причем мы, как программисты, можем сосредоточиться ИМЕННО НА НАПИСАНИИ ЭФФЕКТИВНОГО УЗКОСПЕЦИАЛИЗИРОВАННОГО АЛГОРИТМА, а не тратить свое дорогое время (которое можно потратить на вино и ба.. сории! пиво и девушек...) на всякую, извините за выражение, хренотень по выбору/фильтрации/селекции/фигнявсякая данных... НАША МЕГАЗАДАЧА - эффективно обработать данные! А не заниматься сушкой мозгов над подсчетом и тупым извлечением наборов символов из базы...

Примерчик у нас ПРОСТОЙ (условный), на оригинальность не претендует, и делает совсем ничего: для выбранного клиента печатает спецификацию:


Задаем доп.данные
и получаем НУЖНЫЙ НАМ РЕЗУЛЬТАТ


Итог всей нашей работы

Комплект
Ushoice.ert - непосредственно сама "главная" обработка. Остальные файлы *.ert - готовые плугины с диска ИТС.

Нас же интересует UCPlugIn.txt - файл, в котором определяется состав и область применимости плугинов. Открываем этот файлик в единственно достойном файловом навигаторе FAR и наблюдаем следующую картину:


Подключаем плугины
Как видно, а файл содержит подробный комментарий по синтаксису подсоединения плугинов, мною был определен плугин для печати спецификации.

"Определение" плугина включает в себя:
- наименование файла обработки (данная обработка выполняет СОДЕРЖАТЕЛЬНУЮ ЧАСТЬ РАБОТЫ над полученным извне перечнем объектов);
- имя плугина в списке, предоставляемом пользователю;
- тип объекта, к которому будет применен данный плугин (в нашем случае обработка применяется к СПРАВОЧНИКУ);
- конкретный вид объекта (а именно: справочник НОМЕНКЛАТУРЫ).

Здесь следует немного притормозить наших ретивых скакунов и развернуть повествование подробнее.

Будьте внимательны при определении области действия плугина! если вы создали плугин "Печать списка" с надеждой получить универсальную печать любого справочника и по недомыслию "привязали" его к конкретному справочнику.номенклатура - то хоть уписяйтесь от натуги, но при обработке справочника Контрагентов этой универсальной обработкой подбора объектов вы свой ПЛУГИН В СПИСКЕ ДОСТУПНЫХ НА ФОРМЕ В ВЫБОРЕ СПИСКА - НЕ УВИДИТЕ! Это же самое относится к правильности указания имени файла и т.д.

В стандартной поставке с диска ИТС идет ПРИМЕР НАПИСАНИЯ ПЛУГИНА (Пример написания новой обработки). Данный пример содержит обобщенную заготовку кода обработки полученного извне списка объектов. Посмотрим на этот код:



Типовая "болванка" плугина
Нас интересует блок "Начало-конец алгоритма", который ВЫПОЛНЯЕТСЯ В ЦИКЛЕ ДЛЯ КАЖДОГО ПОЛУЧЕННОГО ИЗВНЕ ЭЛЕМЕНТА СПИСКА. А этот список, как уже отмечалось ранее, формируется ШТАТНОЙ УНИВЕРСАЛЬНОЙ ОБРАБОТКОЙ и мы не морочим себе голову изобретением велосипеда с треугольными колесами.

Для написания своего плугина (печать спецификации) была взята "болванка" плугина и чуть-чуть докручена до вывода полученного списка элементов на печать в красивом виде: приделан вывод таблицы печатной формы, что показано на следующем рисунке:




Пишем свой плугин
Вот, собственно, и все.
Ах, да! На написание программы с произвольными фильтрами и кучей дополнительных возможностей - нам потребовалось 35 строк кода и порядка 15 минут времени.

Сподвигло меня на написание этой статьи ряд факторов:
- регулярные "тупые" вопросы на тему как напечатать/найти/получить;
- обилие изобретаемых велосипедов (всяческие перенумерации, удалялки, переименовывалки, заменялки);
- ТОТАЛЬНОЕ НЕЗНАНИЕ О ТАКОЙ ВОЗМОЖНОСТИ;
- желание сэкономить время не только себе, но и прочим разработчикам/программистам, которые уже вышли "из пеленок", "пошли в школу", но по-прежнему упонрно не хотят учится читать...
- еще что-то.. уже и не помню...

В данной статье вопросы безопасности и ограничения/разделения прав доступа - не рассматриваются (статья не про это). Тем не менее - отмечу, что как любой универсальный инструмент - данная обработка и ее плагины могут натворить немало бед при попадании в корявые ручонки (http://www.infostart.ru/file.php?0,file=410 ;-) Поэтому - не поленитесь (если это необходимо) в обработках-плугинах вставлять "проверку" на легитимность использования данного плугина текущим пользователем.

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. blindcat2006 (blindcat2006) 10.10.07 10:21
ты б в писатели пошел, может нас научишь... (С)
:) :) :)
Улыбнуло.
Спасибо напомнил, иногда сам пользую, но чаще по запарке забываю.
Из той же серии для БИ - "Универсальный бухгалтерский отчет" - тоже весчь!
2. Доржи Цыденов (support) 10.10.07 11:22
КЛАСС! По-больше бы таких статей на портале :)
3. v_id (v_id) 10.10.07 11:32
А сохранять и потом, при необходимости, восстанавливать "ХИТРОЗАДАННЫЕ УСЛОВИЯ" не научишь?
4. Сhe Burashka (CheBurator) 10.10.07 12:20
(3) делается достаточно элементарно, но данную задачу можно решить чуть по другому, а именно - надо где-то как-то ЗАФИКСИРОВАТЬ РЕЗУЛЬТАТ хитрозаданных условий... ;-)
5. Brr (brr) 10.10.07 12:40
Не все пользователи "вооруженные" UChoice одинаково полезны для базы. :)
Некоторые просто опасны. С ее помощью можно такого наворотить, что лучше не надо.
6. Сhe Burashka (CheBurator) 10.10.07 13:31
Да, конечно же... Совершенно не упомянул об этом в статье, потому как статься не про разделение/ограничение полномочий... тем не менее - исправляюсь...
7. v_id (v_id) 11.10.07 09:22
(4) Прошу прощения за настойчивость, но можно, хотя бы в общих чертах, рассказать (лучше, конечно, показать :)) как сохранять/восстанавливать условия при вызове из документа.

Вопрос не праздный, просто сделал в ЗиК заполнение из UChoice.ert. А хотелось бы и настройки запоминать
8. Сhe Burashka (CheBurator) 11.10.07 10:56
Можно... но не сразу.. время будет - прикручу...
9. Viacht (viacht) 11.10.07 11:01
Отличная статья! Читаю третий раз, распечатал, понимание пришло после третьего стакана.
10. Сhe Burashka (CheBurator) 11.10.07 11:15
Учел. Буду к статьям прилагать адреса ближайших магазинов...
Ufimtsev; +1 Ответить
11. Аркадий Кучер (Abadonna) 13.10.07 06:53
Так-таки мерзкую морду фара воткнул в картинки ;)
ms33; Ufimtsev; +2 Ответить 1
12. Сhe Burashka (CheBurator) 13.10.07 17:25
(11) а что еще прикажете делать, если в тотале штатного просмотра/редактирования текстов нет...?
13. Аркадий Кучер (Abadonna) 13.10.07 19:12
(12) Чаво??? Ты давно тотал смотрел?
AkePad - не чета синемордой мерзости, к тому ж на выбор - SDI и MDI, плюс возможность отслеживать изменения файла, если они произошли во время просмотра.
Не едал ты ничего слаще морковки, не едал...
ms33; Ufimtsev; +2 Ответить 1
14. $erg (Black Fox) 16.10.07 13:04
Спасибо за грамотную статью о том, как НЕ усложнять себе жизнь.
Ufimtsev; +1 Ответить
15. GENDALF (Gendalf) 16.10.07 14:24
ДАА.... Спасибище... хоть оно и не плещется.... :) но Спасибище...
Ufimtsev; +1 Ответить
16. Сhe Burashka (CheBurator) 16.10.07 17:16
(13) Для холивар фар-тотал будет посвящена отдельная ветка на форуме. Просьба сюда всяких бяк по этому поводу не постить! ;-)
Ufimtsev; +1 Ответить
17. menen (menen) 18.10.07 02:59
Ставлю + ... Много своих плагинов написал для UChoice ...

Правда отмечу минус этой штучки - если требуется обработать десяток тысяч элементов ...
18. menen (menen) 18.10.07 03:02
К той же серии относится обработка "Универсальный подбор элементов справочника" - только бери и вставляй в свою конфигурацию
19. Сhe Burashka (CheBurator) 18.10.07 09:07
(17) ..то тогда отключаем обновление формы...
(18) это частный случай данной обработки.
Спасибо за внимание к статье.
Ufimtsev; +1 Ответить
20. qwerfv (qwerfv) 26.08.09 13:32
не нашёл продолжения на тему "Основные и базовые ед.измерения: как с ними бороться и полчучать от низ удовольствие".

А за эту статью спасибо! Она великолепна.
21. Сергей (Che) Коцюра (CheBurator) 26.08.09 15:47
(20) статья не готова, потому как времени не особо много и заинтересованных мало...
22. Сергей Лесовой (Synoecium) 07.08.13 19:11
простите, а что такое фанить тюльку?
23. Gen Tay (GenTay) 27.10.13 13:57
24. Алекс Маслюков (Alex_1066) 08.07.16 11:47
Статья актуальна даже спустя время.. Жаль только, что картинки рассмотреть подробнее не удалось. За хороший и здоровый юмор тоже спасибо.. )
25. Алекс Маслюков (Alex_1066) 08.07.16 11:52
А может можно ещё сделать картинки читаемыми?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа