Алгоритмы и регламентные задания (расширение)







Универсальный механизм для создания алгоритмов и регламентных задач.

Расширение для 1с (8.3.11 + , БСП 2+) 

Основные возможности:

* выплнение произвольного кода на клиенте и сервере
* взаимные вызовы алгоритмов с передачей параметров
* сохраняемые параметры алгоритма (параметры по умолчанию)
* команды объектов
* регламентные задания
* настраиваемые веб сервисы
* лог ошибок в  журнале регистрации
* дополнительные роли — использование и редактирование алгоритмов
* экспорт/импорт .xml

протестировано:

платформа (8.3.12 +) ,  конфигурации УНФ 1.6 (1.6.17.174), БП 3 (3.0.71.86) 

github — https://github.com/pm74/_37583

36 Comments

  1. dsdred

    Петр, я правильно понимаю что:

    Основа это «Конфигурация Алгоритмы» cf или «Алгоритмы расширение (8.3.11).» cfe, а Обработка обновления РЗ. это просто Доп обработка с описанием команд для «Алгоритмы расширение (8.3.11).»?

    Пример файл шаблонов xml какие примеры содержит?

    Reply
  2. pm74

    (1) да все верно

    файл шаблонов — это просто сериализованая в xml ТЗ с колонками Ключ(Строка10) Значение(Строка1024)

    можно редактировать и в 1С , но в файле удобнее

    Reply
  3. dsdred

    (2)Хорошо, сегодня скачаю поэксперементирую.

    Reply
  4. pm74

    (3)

    Reply
  5. pm74

    (3)

    поэксперементирую

    эта версия несколько отличается от видео , в части написания кода , примеры есть во встроенной справке

    напр:

    Пример:
    
    алгоритм1 :   $Ё=1;  Сообщить($Ё); @Процедура(@алгоритм2, Новый Структура(«this,Й»,this,66)); Сообщить($Ё); // выведет  1 1  66  2 99
    
    алгоритм2 : Сообщить($Ё); Сообщить(@Й);  $Ё=2; @$Ё=99;  Сообщить($Ё);
    
    Reply
  6. dsdred

    (5)хорошо, учту

    Reply
  7. zeegin

    Зачем нужно расширение, позволяющее сохранять и исполнять произвольный код, если можно этот произвольный код сразу расположить в расширении и подключить/исполнять штатными средствами, при этом сохраняя безопасный режим не подвергая сервер угрозам.

    Выглядит как ужасный костыль.

    Reply
  8. pm74

    (7)

    Выглядит как ужасный костыль

    улыбнуло , на самом деле этот костыль одна из самых полезных штук которые я для себя сделал

    все дело в параметрах

    Reply
  9. VVi3ard

    Спасибо.

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

    Хотел уже сам делать но идея была другая (ваша с использованием @Процедура оказалась на порядок удобнее чем моя первоначальная идея).

    Спасибо за то что поделились подсистемой.

    Reply
  10. VVi3ard
    &НаСервере
    Процедура ПрочитатьНаСервере(АдресХранилища)
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
    Поток = ДвоичныеДанные.ОткрытьПотокДляЧтения();
    ЧтениеXML = новый ЧтениеXML;
    ЧтениеXML.ОткрытьПоток(Поток);
    ТаблицаШаблонов = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
    ДобавитьНовыйПараметрНаСервере(Новый Структура(«НаименованиеПараметра,ЗначениеПараметра»,»Шаблоны»,ТаблицаШаблонов));
    КонецПроцедуры // ПрочитатьНаСервере()
    

    Показать

    В 1С:Предприятие 8.3 (8.3.9.2170) у ЧтениеXML нет метода ОткрытьПоток он появился только в 8.3.10.2168.

    В описании у вас написано что для работы нужен 8.3.8.

    Думаю стоит поправить в описании что минимальный релиз платформы 8.3.10

    Reply
  11. pm74

    (10)это просто бантик для удобства , не считается, на одной фирме работает на 8.2 хотя где то могут быть небольшие нестыковки , см следующий коммент.

    Reply
  12. pm74

    (9)пожалуйста, если пригодилась пользуйтесь на здоровье,

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

    Reply
  13. VVi3ard

    Появилось еще несколько вопросов по подсистеме, думаю они будут интересны не только мне.

    1. В форме редактирования алгоритмов есть кнопки работы с текстом: «ФормаСохранитьТекст,ФормаВосстановитьТекст» для чего предполагается их использовать?

    2. Совсем не понял идею шаблонов, таблиц шаблонов, в видео есть пара слов об этом но не понятно в чем смысл, плюс в видео вероятно достаточно старая версия подсистемы и там шаблоны немного по другому устроены.

    3. Для чего используются тэги.

    4. Что дает флаг настройки алгоритма «На клиенте», мы ведь сами выбираем откуда выполнить алгоритм (алг_АлгоритмыКлиент.Выполнить…, алг_АлгоритмыСервер.Выполнить….)? Я пока нашел только одно место где это используется для определения того как передавать параметр с типом ТЗ в алгоритм.

    Отдельный вопрос, точнее даже пожелание, не нашел способа выгрузки (Рекурсивной с учетом зависимостей) алгоритмов в файл для переноса их между базами.

    Понятно что можно самому реализовать выгрузку, однако возможно уже есть выгрузка просто в виде отдельного функционала?

    Reply
  14. pm74

    (13)

    «ФормаСохранитьТекст,ФормаВосстановитьТекст»

    текущую версию алгоритма сохранить в хранилище , для восстановления версии — переименовать параметр в ТекстАлгоритма

    (13)

    Совсем не понял идею шаблонов, таблиц шаблонов, в видео есть пара слов об этом но не понятно в чем смысл, плюс в видео вероятно достаточно старая версия подсистемы и там шаблоны немного по другому устроены

    назначение такое же как в КФ , только хранятся в справочниках

    сейчас полностью переделаны , идея с таблицей значений была дебильной изначально ,

    сейчас при наборе ==шаблон просматриваются текущие шаблоны и выскакивает предупреждение если совпадение найдено (приложил гиф. ) , к сожалению при записи гиф не видно выскакивающего предупреждения ( есть на скрине в топе статьи)

    (13) тэги для быстрого поиска в списке

    (13)

    Что дает флаг настройки алгоритма «На клиенте», мы ведь сами выбираем откуда выполнить алгоритм (алг_АлгоритмыКлиент.Выполнить…,

    это в основном для дальнейшего функционала — построения пользовательских интерфейсов + в режиме редактирования алгоритма позволяет его протестировать

    способа выгрузки (Рекурсивной с учетом зависимостей) алгоритмов в файл для переноса их между базами.

    да тоже думал об этом , первоначально было сделано для тз шаблонов просто как элемент справочника , нужно будет добавить

    Reply
  15. pm74

    (13)

    думаю они будут интересны не только мне

    думаю тут вы ошибаетесь )) см 7 ,

    впрочем меня это устраивает, я даже плюсанул

    это все очень далеко до завершения , использую пока больше для повседневки, регламентов и всяких экспериментов

    зы еще примерчик шаблонов

    Reply
  16. VVi3ard

    (14) Что делают кнопки я понял, не понял именно прикладной смысл использования, зачем это нужно?

    т.е. это типа черновика? что бы потом можно было посмотреть предыдущие версии алгоритма?

    А шаблон это получается обычный алгоритм. Т.е. любой алгоритм шаблон, все сводится к тому что можно просто вставить текст из другого алгоритма?

    (14)

    это в основном для дальнейшего функционала — построения пользовательских интерфейсов + в режиме редактирования алгоритма позволяет его протестировать

    Понятно, да у меня как раз возникли сложности с использованием алгоритмов с пользовательским интерфейсом, и если часть сложностей (асинхронные модальные вызовы) не вызвали проблем (просто нет потребности так делать), то с другой частью пришлось разбираться (пример долго описывать, если коротко то проблемы с передачей формы на сервер из клиентского контекста).

    (14)

    да тоже думал об этом , первоначально было сделано для тз шаблонов просто как элемент справочника , нужно будет добавить

    Да это было бы полезно странно как вы без этого живете, вероятно у вас одна база? Но даже просто из тестовой базы в продакшен перенести уже проблема.

    Мне в общем то все равно пришлось писать отдельную выгрузку т.к. алгоритмы используюся совместно с другими сущностями и выгружать их нужно вместе.

    Reply
  17. VVi3ard

    (15) Ну разные люди бывают с разным мнением. Я рад за (7) и что ему не приходится с этим связываться.

    В моем случае алгоритмы это часть другой подсистемы которая используется в большом количестве ИБ по РБД при этом обновить их достаточно тяжело и только в определенные моменты времени. А вот спустить несколько элементов справочника через встроенный НСИ сервер можно в любой момент. Так же есть теоретическая необходимость дать возможность определенным пользователям править алгоритмы не давая доступа к толстому клиенту и конфигуратору. Не всегда есть необходимость и время рисовать интерфейсы.

    Reply
  18. pm74

    (16)

    А шаблон это получается обычный алгоритм

    .. не понял именно прикладной смысл использования, зачем это нужно?

    т.е. это типа черновика?

    ну да

    (16)

    странно как вы без этого живете, вероятно у вас одна база

    не понял именно прикладной смысл использования

    баз несколько ,

    я же говорил , что это не цельная подсистема написанная за один вечер , она развивается и в разное время были разные задачи , в разных базах существуют разные версии

    в то же время она достаточно универсальная и как говорится «вещь сама в себе»

    ту же самую выгрузку , можно написать прямо внутри алгоритмов

    по поводу интерфейсов , тут разные варианты

    например написать небольшие алгоритмы- адаптеры

    Запрос = Новый Запрос;
    Запрос.Текст = @ТекстЗапроса;
    Для Каждого Параметр Из Параметры Цикл
    Если Не Параметр.Ключ = «ТекстЗапроса» Тогда
    Запрос.УстановитьПараметр(Параметр.Ключ,Параметр.Значение);
    КонецЕсли;
    КонецЦикла;
    тз = Запрос.Выполнить().Выгрузить();
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Защита = Истина;
    Для i = 0 По тз.Количество()-1 Цикл
    Для j = 0 По тз.Колонки.Количество()-1 Цикл
    Область = ТабДок.Область(«R»+(i+1)+»C»+(j+1));
    Область.Текст = Формат(тз[i][j], «ЧЦ=10; ДФ=dd.MM.yyyy; БЛ=Ложь; БИ=Истина»);
    Область.Расшифровка = тз[i][j];
    КонецЦикла;
    КонецЦикла;
    возврат ТабДок;;
    
    //—————-
    или  например  обработка  ДЗ  на форме  с рекурсией
    
    
    Если @дз.Строки.Количество() > 0  Тогда
    Для Каждого Строка Из @дз.Строки Цикл
    @Процедура(@алгоритм,Новый Структура(«дз»,Строка));
    КонецЦикла;
    Иначе
    @дз.Пометка = Не @дз.Пометка;
    КонецЕсли;
    
    или просто взять любой   понравившийся код  на   ИС
    

    Показать

    или просто взять любой понравившийся код на ИС

    и вывести в любое месте , в любом порядке и количестве , т.е в течение 15 мин. настраивать всякие рабочие места , рабочие столы и т.п . это минимум

    задача на ближайшую перспективу , сделать универсальный механизм для декларативного (почти) описания систем со сложным поведением

    Reply
  19. leosoft

    1. Попробовал подключить Ваше расширение к Бухгалтерии 30. Однако

    подсистема не появилась. Подскажите, пожалуйста, надо как-то

    настраивать роли?

    2. В обсуждении упоминается какое-то видео? Где его можно скачать?

    Может есть какая-то инструкция по заложенным возможностям?

    Reply
  20. pm74

    (19) У вас должен быть пользователь с правами Администрирование

    Reply
  21. pm74

    (19)

    В обсуждении упоминается какое-то видео? Где его можно скачать?

    Может есть какая-то инструкция по заложенным возможностям?

    инструкций особо нет т.к делал для себя , там есть какие то готовые алгоритмы которые

    можно загрузить через обработку импорт / экспорт

    вкратце работает через

    _37583_АлгоритмыСервер.ВыполнитьПроцедуру(ПредставлениеАлгоритма,ДополнительныеПараметры)

    _37583_АлгоритмыСервер.ВыполнитьФункцию(ПредставлениеАлгоритма,ДополнительныеПараметры

    _37583_АлгоритмыКэш.ВыполнитьФункцию(Алгоритм,ДополнительныеПараметры

    _37583_АлгоритмыКлиент.ВыполнитьПроцедуру(ПредставлениеАлгоритма,ВходящиеПараметры

    _37583_АлгоритмыКлиент..ВыполнитьФункцию

    Reply
  22. pm74

    (19) здесь есть ссылки на видео , правда старые

    Reply
  23. leosoft

    (22) В смысле где здесь?

    Reply
  24. pm74

    (23) исправил ссылку

    Reply
  25. leosoft

    (20) Я запускаю под типовым пользователем «Администратор» и тишина…

    В ЗУП тоже не запускается. Само расширение «зеленое». Может что-то еще надо

    подстроить?

    Reply
  26. pm74

    (25) из типовых там заимствована роль Администрирование с правами просмотра подсистемы

    и 2 доп роли на редактирование и выполнение

    Reply
  27. pm74

    (25) м.б типовая роль Администрирование не определилась в расширении , т.к сохранял его из унф

    Reply
  28. leosoft

    (27) Я с расширениями не работал. Поставил последнюю демку УНФ 1.6, запустил от Администратора, подключил расширение.

    перезагрузил, но раздел с алгоритмами не появился.

    Reply
  29. pm74

    (28) Сейчас проверю как все работает на пустой БП

    Reply
  30. pm74

    (28) сделал пустую базу, добавил пользователя , назначил роль Администратор системы, Администрирование, Полные права , запустил в режиме предприятие и добавил расширение , после перезапуска система почему то сбросила роль Администрирование ( кторая нужна для просмотра подсистемы), поставил у пользователя нужную галку в КФ , перезапустился , все заработало

    Reply
  31. leosoft

    (30) Большое спасибо! Заработало после установки галочки в КФ.

    Reply
  32. pm74

    (31) роль Администрирование ещё не даёт прав на редактирование.дальше нужно настроить доступ на редактирование и выполнение, во втором случае сама подсистема не доступна

    Reply
  33. leosoft

    (32) Спасибо, буду пробовать.

    Reply
  34. pm74

    (33) для примера на гитхабе что то есть в папке xml , можно загрузить обрботкой импорт /экспорт

    Reply
  35. leosoft

    (34) Там по одному отчетику грузим или все сразу можно

    Reply
  36. pm74

    (35) можно кучей , файлики папок тоже желательно

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *