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

30.06.09

Разработка - Механизмы платформы 1С

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

Не вдаваясь в подробности на простом условном(упрощенном) примере продемонстрируем использование штатных средств, предоставляемых нашей горячо любимой фирмой 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С Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

В статье расписаны примеры из жизни использования "Виртуального" работника. Разобраны вопросы, возникающие при работе с ним.

28.11.2021    1828    user707242_Gold_karas    18    

5

Механизмы платформы 1С Программист Платформа 1С v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    7780    Vortigaunt    5    

11

Механизмы платформы 1С Программист Оперативный учет 7.7 Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    10456    Vortigaunt    26    

5

Механизмы платформы 1С Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    95863    Serginio    116    

188

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

В 1С 8 наличие картинок товаров предусмотрено изначально, а в 7.7 такого нет. Проблема существует и ее исправляют, но это, как правило, частные случаи, касающиеся, например, печати прайса http://infostart.ru/public/289876/ , показу картинок в справочнике номенклатура http://infostart.ru/public/17125/, файловый менеджер картинок товара http://infostart.ru/public/15239/ или просто конфигурации работы с картинками http://infostart.ru/public/21142/ (не стремился дать полный обзор, поэтому не попавшие не обижайтесь :). Что не устроило – информация разбросана по статьям, необходимость дополнительно напрягаться, чтобы это заработало. Здесь я попытался собрать все «до кучи», а так же дать необходимые ссылки для желающих «копнуть вглубь».

1 стартмани

18.11.2014    44803    95    kitminsk    18    

20

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    24217    tomvlad    5    

14

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

02.07.2012    18940    maxpiter    62    

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

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

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

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