Напоминаю для тех, кто не знает. PAPI - подсистема с открытым кодом, которая делает попытку сделать мир лучше. Подсистема лежит на GitHub и на Infostart -> [Open source] Подсистема PAPI, там же есть ссылки на статьи с примерами.
На GitHub ссылку не выкладываю, но найти ее труда не составит.
На самом деле 06.10.2024 выходил промежуточный релиз 0.9.2.7, 0.9.3 вышел 20.10.2024, а текущий релиз 0.9.3.1 от 27.10.2024, но я решил расписать все изменения разом.
При создании версии 0.9.3 мне была предложена помощь, и я не отказался. Огромное спасибо коллегам.
1 Александр Анисков [vandalsvq]. За то, что разрешил воспользоваться его разработкой Консоль кода для подсистемы БСПГрупповое изменение реквизитов сделанной на базе разработки Консоль кода для управляемых форм
2 Евгений Мартыненков [JohnyDeath]. За то, что прикрутил консоль кода и оптимизировал подписки на события.
1 Все подсистемы были переработаны и теперь больше похожи на модульность.
2 Создана единая форма для настроек подсистем.
3 Создан регламент по очистке устаревших данных.
4 К алгоритмам, методам, подпискам прикручена консоль кода.
5 Подписки теперь создают исполнители подписок.
6 В 0.9.3 модуль PAPI_ПодпискиНаСобытияКлиентСервер переименован в PAPI_ПодпискиНаСобытияКлиентСерверУдалить и удален в 0.9.3.1
7 Добавлено обновление с предыдущих версий на версию 0.9.3.1
8 Исправлены ошибки и внесены изменения.
9 В демо базу добавлены новые примеры с подписками на события
Давайте рассмотрим изменения подробнее:
Все подсистемы были переработаны и теперь больше похожи на модульность.
Когда я делал подсистему PAPI, я не сильно думал о модульности и не думал о том, что мне вдруг понадобится выдрать только определенную ее часть, в итоге у меня подсистема напоминала клубок ниток и трудно было его распутать.
Я провел работу по распутыванию «ниток» и распределению всего по структурированным подсистемам.
Все было банально, я выписал все метаданные и создал колонки с подсистемами в ексель и все разложил как надо, если же я понимал, что есть упоминания модулей, которые не должны быть в данной подсистеме, то такие места переписывал.
По составу подсистем выложен временный файл в формате ексель, в будущем он будет переработан и информация из него будет добавлена в документацию.
Единая форма для настроек подсистем.
Ранее уже была форма, в которую было добавлено несколько настроек, но выглядело это неподобающим образом, опять все было в куче.
Новая форма так же, как и ранее, открывается через настройки.
Теперь форма выглядит вот так:
На данный момент вынесены основные настройки, но будут добавляться новые. План по добавлению настроек есть.
Регламент по очистке устаревших данных.
Ранее у меня чистка устаревших данных происходила через обработку, которая добавлялась в БСП дополнительные обработки и отчеты. Сделано это было давно из-за того, что расширение тогда не давало возможность создавать регламентные задания. Во всех типовых конфигурациях на текущий момент режим совместимости позволяет добавлять регламенты в расширение, да и не только под типовые конфигурации хочется прикручивать PAPI…
Добавлена константа «PAPI_НастройкаХраненияДанных», которая хранит настройки по времени хранения данных.
На форму «Настройки» выведены настройки из константы и настройки регламента:
И очередь документов
Данные для очистки:
• «Входящие сообщения» -> Регистры сведений.PAPI_ВходящиеСообщенияСервисаИнтеграции
• «Запросы данных» -> Регистры сведений.PAPI_ЗапросНедостающихДанных
• «Логи алгоритмов» -> Регистры сведений.PAPI_ЛогАлгоритмов
• «Логи методов» -> Регистры сведений.PAPI_ЛогМетодов
• «Очередь алгоритмов» -> Регистры сведений.PAPI_ОчередьАлгоритмовДляФоновогоВыполнения
• «Очередь документов» -> Регистры сведений.PAPI_ОчередьДействийСДокументами
• «Хранилище результатов» -> Регистры сведений.PAPI_ХранилищеРезультатов
• «Входящие запросы» -> Документы.PAPI_ВходящийЗапрос
На все объекты, где предполагается написание кода, прикручена консоль кода Monaco, она же Консоль кода для управляемых форм.
Сделано это так, чтобы не менять основные формы. Консоль кода открывается через кнопку Открыть. Такой подход позволяет развивать подсистему более гибко. Подсистема не зависит от консоли, и консоль не зависит от подсистемы. Теперь можно без труда прикручивать другие варианты для редактирования кода, останется только сделать настройку с переключением на тот или иной вариант.
Параметры алгоритма:
Вычисления алгоритма:
Параметры методов:
Вычисления методов:
Тело методов:
Подписки:
Чтение сообщений:
У подписок были проблемы, поэтому я про данную подсистему не спешил рассказывать. В версии 0.9.3 основные проблемы устранены.
Теперь перед записью формируется список всех доступных подписок по объекту, да и сами подписки теперь выполняются с помощью регистра «Исполнители подписок».
Важно! Введено ограничение. Теперь в подписках нельзя использовать алгоритм с параметрами. В будущих релизах планируется конвертация алгоритмов с параметрами в алгоритм без параметров.
Добавлено обновление с предыдущих версий на версию 0.9.3.1
Первоначально в версии 0.9.3 было сделано обновление при запуске клиента, но в связи с ограничением по использованию алгоритмов с параметрами, такое обновление могло быть не завершённым и при следующем старте запускалось вновь.
В связи с чем было решено перевести обновление на ручной режим.
В 0.9.3.1 подсистема обновляется разово. Далее необходимо проверить в форме настроек, обновилась ли подсистема на версию 0.9.3.1.
Информация по обновлениям:
- 0.9.2.7 Присваивается при первом запуске после перехода на 0.9.3 и 0.9.3.1
- 0.9.2.8 В справочнике PAPI_ВнешняяОбработка заполняется новый реквизит «Событие» табличной части «Команды». В дальнейшем логика будет перестроена на данный реквизит.
- 0.9.2.9 В справочнике PAPI_ПодпискиНаСобытия заполняется новый реквизит «РодительИсточника» в табличной части «Источники». Данный реквизит служит для создания универсальных обработчиков, например на все документы и/или все справочники.
- 0.9.3.1 Создание или перезапись исполнителей подписки.
Вот тут может случиться ошибка и не все исполнители подписок обновятся:
В данном случае нужно поправить алгоритмы, используемые в подписках.
Пример исправления ошибки.
У меня есть подписка «Подписка с алгоритмом», в которой есть алгоритм «Регистрация на узле»:
В алгоритме есть параметр:
В вычислениях мы видим использование параметра "УзелОбмена":
Код:
Если ПараметрыАлгоритма.Свойство("Источник") Тогда
ПараметрыАлгоритма.Источник.ОбменДанными.ПолучателиДобавить(ПараметрыАлгоритма.УзелОбмена);
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
Самый простой способ - получить навигационную ссылку у параметра и код переписать на использование данной ссылки. А сам параметр удалить.
Получаем навигационную ссылку:
Удаляем параметр:
Переписываем код на навигационную ссылку:
Код после изменений:
НавигационнаяСсылкаУзла = "e1cib/data/ПланОбмена.ПолныйОбмен?ref=afab645d86d74ccd11ef75f8b4198d41";
УзелОбмена = PAPI_ОбщегоНазначенияВызовСервера.ПолучитьСсылкуИзНавигационной(НавигационнаяСсылкаУзла);
Если ПараметрыАлгоритма.Свойство("Источник") Тогда
ПараметрыАлгоритма.Источник.ОбменДанными.ПолучателиДобавить(УзелОбмена);
Результат = Истина;
Иначе
Результат = Ложь;
КонецЕсли;
После чего необходимо зайти в настройки и нажать кнопку «Обновить» и если обновление пройдет успешно, мы увидим вот такие данные:
Итоги:
Подсистема лежит на GitHub, найти ее там труда не составит. Если вы не используете GitHub, я создал отдельную статью на Infostart и выложил все исходники в нее.
Следить за обновлениями можно в моем телеграмм канале, найти который труда не составит.
На этом статью завершаю, спасибо за терпение.
Всем удачи и интересных проектов.
1 Информация по HTTP сервисам:
HTTP Сервисы: Путь к своему сервису. Часть 1
HTTP Сервисы: Путь к своему сервису. Часть 2
HTTP Сервисы: Путь к своему сервису. Часть 3
HTTP Сервисы: Путь к своему сервису. Часть 4
Проект, который прошел путь от провала до web-клиента. От web-клиента до мобильного приложения
2 Информация по Истории данных:
Настройка состава "Истории данных"
Версионирование объектов VS История данных
История данных. Изменения в платформе 8.3.24
История данных. Изменения в платформе 8.3.26
Неочевидный баг Истории данных, убивающий rphost
Планы обмена VS История данных
3 Информация по Сервисам интеграции
Три инструмента для сервисов интеграции
Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?
Сервисы интеграции без Шины и интеграции
[Замер] Кто самый быстрый в конфигураторе?
4 Примеры PAPI