Имя: Пароль:
1C
 
Контур.Диадок Регламентные задания ч. 2
0 anikev
 
26.02.25
04:52
Всем привет!
Это вторая часть погружения в регламентные задания Контур.Диадока.
Первая часть: Контур.Диадок Регламентные задания
Я думал, что победил контур, установив расширение через обработку. Но нет. Я так же получаю ошибку
{КонтурДиадок Обработка.КонтурДиадокВызовыПМ.МодульОбъекта(4973)}: Метод работает только на объектах подсистемы Диадок (ЭДО_Модуль_ОбработатьНовыеСобытияДокументов)
Я смирился с этой ошибкой, признал что УПП 1.3 - это старье, на котором даже контур нормально работать не может и решил попробовать Контур в ERP (1С:ERP Управление предприятием 2.5.17.95)
Но я был удивлен, что там при запуске регламентного задания выскакивает такая же ошибка.
{КонтурДиадок Обработка.КонтурДиадокВызовыПМ.МодульОбъекта(4973)}: Метод работает только на объектах подсистемы Диадок (ЭДО_Модуль_ОбработатьНовыеСобытияДокументов)

Получается я имею:
- Конфигурация: 1С:ERP Управление предприятием 2 (2.5.17.95)
- КонтурДиадок 4.49.1 (расширение)
- Подключаемый модуль (далее ПМ) с обработкой события "ВыполнитьРегламентныеДействия".

Мне кажется, я нашел в чем причина... Я использовал Генератор ПМ версии 1.3.1 от 21.04.2022 .Неужели Контур не обновляют этот генератор, чтобы можно было внедрить ПМ без оплаты услуг их программистов...
1 anikev
 
26.02.25
06:47
Может у кого-нибудь есть реализация Диадока 1С с регламентными заданиями и возможность скинуть код ПМ?
2 Bigbro
 
26.02.25
07:37
попробуй без расширений
метаданные зашей в конфигурацию
у меня все вхлам переписано, не смогу поделиться.
3 anikev
 
26.02.25
08:01
(2) Я разберусь, если что
4 Bigbro
 
26.02.25
08:55
не думаю что это возможно с учетом требований безопасников и всяческих НДА, извините.
у меня метаданные в конфигурации, в таком режиме работает, предлагаю начать с этого попробовать.
5 anikev
 
26.02.25
10:29
Я сдался, будем оплачивать услуги Контура
6 rozer76
 
26.02.25
10:31
(0)
так в ПМ у меня

// Выполняет регламентные действия, требующие инициализацию основного модуля
Функция ВыполнитьРегламентныеДействия(Параметры) Экспорт //+++//roz//2024-05-08 [170912,161300,170752,159492]
    
    ////http://1c-pro-docs.diadoc.ru/ru/latest/func/pm/Vypolnit'_Reglamentnyye_Deystviya.html
    
    Если ТипЗнч(Параметры) <> Тип("Строка") Тогда
        ЗаписатьВЖурналРегистрацииИнформацию("Диадок.РегламентныеДействия.Запуск",УровеньЖурналаРегистрации.Ошибка,,
        "Не указан параметр запуска задания");
        Возврат Истина;    
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(УчетнаяЗапись().Логин) Тогда
        ОсновнойМодуль.ЭДО_АвторизоватьсяПодСертификатомНаСервере1С();
            ЗаписатьВЖурналРегистрацииИнформацию("Диадок.РегламентныеДействия.Запуск",УровеньЖурналаРегистрации.Информация,
            , "Авторизация по сертификату");    
    Иначе
        Результат = ОсновнойМодуль.ЭДО_ЗаполнитьКонтекстСеансаДляСлужебнойУчетнойЗаписи();
        Если Результат <> Неопределено Тогда
            ЗаписатьВЖурналРегистрацииИнформацию("Диадок.РегламентныеДействия.Запуск",УровеньЖурналаРегистрации.Информация,
            УчетнаяЗапись().Логин, "Авторизация по логину выполнена");
        Иначе  
            ЗаписатьВЖурналРегистрацииИнформацию("Диадок.РегламентныеДействия.Запуск",УровеньЖурналаРегистрации.Ошибка,
            УчетнаяЗапись().Логин, "Авторизация по логину не выполнена");
            Возврат Истина;
        КонецЕсли;    
    КонецЕсли;
    
    Если Параметры = "Лента" Тогда
        вртПрочитатьЛентуСобытий();
    ИначеЕсли Параметры = "Сопоставление" Тогда
        вртВыполнитьСопоставлениеВходящихДокументов();
    ИначеЕсли Параметры = "Подписание" Тогда
        вртОтправитьИсходящиеДокументыИнтеркампани();
        ПодписатьВходящиеДокументы();
    ИначеЕсли Параметры = "Маршруты" Тогда    
        вртВыполнитьМаршрутизациюДокументов();
    ИначеЕсли Параметры = "ПодписаниеРТУ" Тогда
        Если Константы.вртДиадокАвтоподписьСертификатомОтвественногоЗаДокумент.Получить() Тогда
            вртОтправитьИсходящиеДокументыПоКлиентамОтпечатокПользователя();    
        Иначе
            вртОтправитьИсходящиеДокументыПоКлиентамОтпечатокОрганизации();        
        КонецЕсли;
        
    КонецЕсли;
    
    Возврат Истина;
    
КонецФункции
7 rozer76
 
26.02.25
10:32
8 rozer76
 
26.02.25
10:34
я сам потратил немало времени чтобы запустить сбор ленты, подписание, сопоставление на 1ссервере при учете что рег.задание это должно выполняться только на 1срабочем сервере и только там стоит криптопро...тот еще квест )
9 anikev
 
26.02.25
10:36
(7) Проблема в том, что у меня не запускается процедура
ПрочитатьЛентуСобытий()
В этом модуле ОсновнойМодуль.ЭДО_Модуль_ОбработатьНовыеСобытияДокументов(ОписаниеОрганизации, КоличествоПорцийСобытий);

Возвращает Исключение:
{ВнешняяОбработка.КонтурДиадокВызовыПМ.МодульОбъекта(4973)}: Метод работает только на объектах подсистемы Диадок (ЭДО_Модуль_ОбработатьНовыеСобытияДокументов)

Я уже пробовал и в конфигурации запускать, и в расширени, и как внешнюю
10 rozer76
 
26.02.25
10:37
(9) да, конечно надо внедрить cf ник  - он лежит в основной обработке диадока в макете
11 rozer76
 
26.02.25
10:38
пользуем версию 4.47 в КА 2.5
12 Bigbro
 
26.02.25
10:50
да не обработку надо в конфигурацию
а вот эти все объекты типа Диадок_Документы и прочая.
13 anikev
 
26.02.25
11:11
(12) У меня сейчас в конфигурации все:
Таблицы Диадока
Обработка Диадока
Подключаемый модуль Диадока
14 Bigbro
 
26.02.25
11:18
ну так в отладке то посмотрите
что конкретно не так
включите в настройках отладку и  логирование
чтобы точки останова расставить в обработках ВызовыПМ, Ядро и так далее.
в ПМ тоже точку останова воткните прямо в обработатьсобытие в самом начале.
15 Kolls
 
26.02.25
11:23
(0) может имеет смысл просто заюзать их API через их SDK? Сама обработка внутри себя вроде его же использует, на сайте контура достаточно толковое описание.
16 anikev
 
26.02.25
11:32
Я уже нашел, где ошибка

Функция ЭДО_Модуль_ОбработатьНовыеСобытияДокументов()
  Результат = Неопределено;
  Если НЕ ИспользоватьПодсистемуДиадока() Тогда
    Вызвать Исключение " Метод работает только на объектах подсистемы Диадок (ЭДО_Модуль_ОбработатьНовыеСобытияДокументов"
   КонецЕсли
    ......
КонецФункции
........
Функция ИспользоватьПодсистемуДиадока() Экспорт
    Результат = Истина;
    ИспользоватьТиповуюПодсистему1С = ИспользоватьТиповуюПодсистему1С();
    Если ИспользоватьТиповуюПодсистему1С = Истина Тогда
        Результат = Ложь;
    КонецЕсли;
    Возврат Результат;
        
КонецФункции
Вот тут она нам возвращает ложь, поэтому возвращается исключение

Осталось только разобрать ИспользоватьТиповуюПодсистему1С(). Получается, она нам должна вернуть ложь, чтобы прошло дальше
17 anikev
 
26.02.25
11:51
Нашел, что у меня в Регистре сведений "Значения свойств объектов" свойство "DDPro_ИспользоватьТиповуюПодсистему1С" стоит в значении "Да", только я не знаю, можно ли его менять непосредственно здесь
18 anikev
 
26.02.25
11:52
(15) Этот вариант не подходит, лучше уже механизмами Обработки
19 anikev
 
26.02.25
12:24
Успех!
Поменял в Регистре сведений "Значения свойств объектов" свойство "DDPro_ИспользоватьТиповуюПодсистему1С" на "Ложь"
Перезапустил обработку КонтурДиадок и запустил регламентное задание. Выполнилось без ошибок
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.