Не вдаваясь в подробности на простом условном(упрощенном) примере продемонстрируем использование штатных средств, предоставляемых нашей горячо любимой фирмой 1С для автоматизации/быстрого выполнения "оперативных" хотелок пользователей.
Для этого воспользуемся ГОТОВЫМ ИНСТРУМЕНТАРИЕМ. Мы не будем брать непроверенных обработок со всяких шареварных ресурсов. Мы возьмем отмеченный качеством продукт, а именно: воспользуемся набором универсальных отчетов и обработок с диска ИТС (где взять диск ИТС? Ну, дружище! Мы же сейчас не решаем задачу "где взять диск ИТС"... Это мы будем проходить во втором семестре...).
Итак, в нашей информационной базе мы успешно установили набор универсальных отчетов и обработок. На данный момент нас интересуют универсальные обработки, а именно: универсальная обработка подбора объектов UChoice.ert
Где она лежит? Лежит она обычно вот здесь (см.рис.1,2)
(при клике на рисунке - рисунок в полный размер)
Лежит она не на виду
А среди залежей прочего добра
(сейчас мы решаем УЖЕ СДЕЛАННУЮ ЗАДАЧУ, т.е. используем набросанный на скорую руку вполне рабочий пример по формированию ПРОИЗВОЛЬНОЙ ПО СОСТАВУ номенклатурной спецификации).
Итак, запустили обработку, отвечаем на вопросы:
- выбираем с чем мы будем работать: со справочником "Номенклатура"
Выбираем тип объекта
Выбираем конкретный справочник
Именно здесь пользователь, руководствуясь одному ему известными соображениями, делает подбор нужных ему элементов. Условия могут быть самые разные - от вхождения последовательностей символов в строковые реквизиты до выбора целых групп. Плюс к этому на прочих закладках мы имеем дополнительные возможности по селекции нужных нам элементов по "сложным" условиям подчиненных справочников и прочие мелкие "вкусняшки"... Кто работал активно в типовой "Торговле и Склад" - имеет перед собой более продвинутый аналог МФ (множественного фильтра) - только здесь мы вообще ничего не программируем - используем ГОТОВЫЙ УНИВЕРСАЛЬНЫЙ МЕХАНИЗМ.
Для примера, чтобы не грузить неокрепшие мозги читающих данную сагу неофитов 1С, мы ограничимся отбором номенклатуры одной группы...
Выбрали фильтр по группе
Важное замечание: "мы" - это пользователи, которым вы - программисты/внедренцы - должны "навтыкать", чтобы умели пользоваться прикладным инструментарием...
после того, как мы жмакнули кнопку "найти элементы - имеем список найденных элементов по ХИТРОЗАДАННЫМ РАНЕЕ УСЛОВИЯМ (здесь для удобства можем определить состав показываемых колонок и вкл/выкл пометки).
Смотрим на список... и... что-то с ним можно сделать?
Список найденных элементов
И, если мы кликнем нашу верную мышь, то под списком найденных элементов получим список плугинов, которые доступны для КОНКРЕТНО ЭТОГО НАБОРА ЗАПИСЕЙ, что мы и видим на рисунке:
Список действий к набору записей
Итак, мы выбираем "печать спецификации для клиента" и получаем что-то, что работает по уже нами написанному алгоритму, причем мы, как программисты, можем сосредоточиться ИМЕННО НА НАПИСАНИИ ЭФФЕКТИВНОГО УЗКОСПЕЦИАЛИЗИРОВАННОГО АЛГОРИТМА, а не тратить свое дорогое время (которое можно потратить на вино и ба.. сории! пиво и девушек...) на всякую, извините за выражение, хренотень по выбору/фильтрации/селекции/фигнявсякая данных... НАША МЕГАЗАДАЧА - эффективно обработать данные! А не заниматься сушкой мозгов над подсчетом и тупым извлечением наборов символов из базы...
Примерчик у нас ПРОСТОЙ (условный), на оригинальность не претендует, и делает совсем ничего: для выбранного клиента печатает спецификацию:
Задаем доп.данные
Итог всей нашей работы
Комплект
Нас же интересует UCPlugIn.txt - файл, в котором определяется состав и область применимости плугинов. Открываем этот файлик в единственно достойном файловом навигаторе FAR и наблюдаем следующую картину:
Подключаем плугины
"Определение" плугина включает в себя:
- наименование файла обработки (данная обработка выполняет СОДЕРЖАТЕЛЬНУЮ ЧАСТЬ РАБОТЫ над полученным извне перечнем объектов);
- имя плугина в списке, предоставляемом пользователю;
- тип объекта, к которому будет применен данный плугин (в нашем случае обработка применяется к СПРАВОЧНИКУ);
- конкретный вид объекта (а именно: справочник НОМЕНКЛАТУРЫ).
Здесь следует немного притормозить наших ретивых скакунов и развернуть повествование подробнее.
Будьте внимательны при определении области действия плугина! если вы создали плугин "Печать списка" с надеждой получить универсальную печать любого справочника и по недомыслию "привязали" его к конкретному справочнику.номенклатура - то хоть уписяйтесь от натуги, но при обработке справочника Контрагентов этой универсальной обработкой подбора объектов вы свой ПЛУГИН В СПИСКЕ ДОСТУПНЫХ НА ФОРМЕ В ВЫБОРЕ СПИСКА - НЕ УВИДИТЕ! Это же самое относится к правильности указания имени файла и т.д.
В стандартной поставке с диска ИТС идет ПРИМЕР НАПИСАНИЯ ПЛУГИНА (Пример написания новой обработки). Данный пример содержит обобщенную заготовку кода обработки полученного извне списка объектов. Посмотрим на этот код:
Типовая "болванка" плугина
Для написания своего плугина (печать спецификации) была взята "болванка" плугина и чуть-чуть докручена до вывода полученного списка элементов на печать в красивом виде: приделан вывод таблицы печатной формы, что показано на следующем рисунке:
Пишем свой плугин
Ах, да! На написание программы с произвольными фильтрами и кучей дополнительных возможностей - нам потребовалось 35 строк кода и порядка 15 минут времени.
Сподвигло меня на написание этой статьи ряд факторов:
- регулярные "тупые" вопросы на тему как напечатать/найти/получить;
- обилие изобретаемых велосипедов (всяческие перенумерации, удалялки, переименовывалки, заменялки);
- ТОТАЛЬНОЕ НЕЗНАНИЕ О ТАКОЙ ВОЗМОЖНОСТИ;
- желание сэкономить время не только себе, но и прочим разработчикам/программистам, которые уже вышли "из пеленок", "пошли в школу", но по-прежнему упонрно не хотят учится читать...
- еще что-то.. уже и не помню...
В данной статье вопросы безопасности и ограничения/разделения прав доступа - не рассматриваются (статья не про это). Тем не менее - отмечу, что как любой универсальный инструмент - данная обработка и ее плагины могут натворить немало бед при попадании в корявые ручонки (http://www.infostart.ru/file.php?0,file=410 ;-) Поэтому - не поленитесь (если это необходимо) в обработках-плугинах вставлять "проверку" на легитимность использования данного плугина текущим пользователем.
Всем спасибо за вниманием и ваши голоса в поддержку данной статьи.
Следующая лекция - на тему "Основные и базовые ед.измерения: как с ними бороться и получать от них удовольствие".