diadoc / diadoc1cpro-docs

7 stars 8 forks source link

КонтурЭДО: Получение списка документов по нескольким организациям в подключаемом модуле Диадок #158

Closed GulshatF closed 8 months ago

GulshatF commented 1 year ago

Здравствуйте, мы используем УМ Контур.Диадок 4.26.1.2158 на компьютере установлены сертификаты двух организаций. в подключаемом модуле в процедуре ВыполнитьРегламентныеДействия() такой код:

//подключаемся к Диадоку
//// АВТОРИЗАЦИЯ ПО ЛОГИНУ И ПАРОЛЮ
////ОсновнойМодуль.ЭДО_АвторизоватьсяПодЛогином(УчетнаяЗапись().Логин, УчетнаяЗапись().Пароль); 

// или авторизация по сертификату на сервере
ОсновнойМодуль.ЭДО_АвторизоватьсяПодСертификатомНаСервере1С();
КонтекстСеанса = ОсновнойМодуль.ЭДО_КонтекстСеансаКлиентСервер();
ОсновнойМодуль.ЭДО_ЗаполнитьКонтекстСеансаДляСлужебнойУчетнойЗаписи();    

ПараметрыОбновленияСписка = Новый Структура;
ПараметрыОбновленияСписка.Вставить("НачалоПериода", ДатаНачалаКонтроля);   
ПараметрыОбновленияСписка.Вставить("КонецПериода", КонецДня(ДатаНачалаКонтроля));
ПараметрыОбновленияСписка.Вставить("ВключитьОтборПоОрганизации", Ложь);
ПараметрыОбновленияСписка.Вставить("Режим", "ОтправленныеДокументы");
ПараметрыОбновленияСписка.Вставить("РежимОтбораПоПериоду", "ПоДатеДокумента"); 
ПараметрыОбновленияСписка.Вставить("ВключитьОтборПоСтатусу", Истина);
ПараметрыОбновленияСписка.Вставить("ОтборПоСтатусу", "Подписан контрагентом");
ПараметрыОбновленияСписка.Вставить("МассивВыбранныхВидов", Новый Массив);
ПараметрыОбновленияСписка.Вставить("ПоказыватьЗавершенные",ложь);

ОсновнойМодуль.ЭДО_Модуль_ОбновитьСписокДокументов(ПараметрыОбновленияСписка);

Пробовали авторизацию по сертификату на сервере, по логину/паролю сотрудников разных организаций - всегда список документов получается только по одной организации, хотя даже функция ОсновнойМодуль.ЭДО_Модуль_ТаблицаОрганизацийПользователя() возвращает таблицу с двумя организациями.

Что надо сделать, чтобы получить документы и по другой организации?

GulshatF commented 1 year ago

Техническая информация:

Версия модуля: 4.26.1.2158 Версия плагина: 1.5.0.308 Модуль типовой: Не удалось получить контрольную сумму файла Система хранения: Типовые объекты 1С Расположение модуля: ОбработкаКонфигурации Имя модуля: Конфигурация: Управление торговлей, редакция 11 (11.5.10.46) Модуль интеграции: ПМ_УТ_11

Подключаемый модуль в конфигурации: ДД_подключаемыйМодуль Тип платформы: Windows x86-64 Версия платформы: 8.3.21.1624 Версия ОС: Microsoft Windows 10 version 10.0 (Build 19042) Вид клиента: Сервер

Настройки модуля: Режим прокси: без прокси Загружать исходящие документы: Да Загружать входящие документы: Да Загружать документы только по сопоставленным контрагентам: Нет Использовать сопоставление подразделений в документах на отправку: Нет Разрешить фоновые операции: Нет Сценарий сохранения документов: весь документооборот Хранить документы на диске: Нет Загружать документооборот целиком: Нет Режим логирования: Нет Режим отладки: Нет Автообновление модуля: Нет Отключить контроль дублирования: Нет Показать количество документов в пакете в разделе "Для отправки": Да Удалять при переотправке предыдущий документ: Нет Создавать счета-фактуры: Да Создавать передаточные документы: Нет Отключить анализ для входящих документов: Нет Указывать отсутствие основания УПД: Нет Отправлять непроведенные документы: Нет Записывать комментарий при отправке: Нет Записывать комментарий при создании/сопоставлении: Нет Использовать сервис "Контур.Маркировка": Нет

Настройки Стандарта: Подключаемый модуль : отсутствует Режим совместимости форматов 155 и 820: Нет

BoxId: 65...85@diadoc.ru Отпечаток сертификата: e5..b Сертификат: КЭП Login для обмена: m..u UserId: d...e

Подключенные библиотеки:

KrutoyarovAV commented 1 year ago

Я решил эту проблему так;

ОрганизацииЭДО = ДД_УправлениеОбменом.ПолучитьОрганизацииЭДО(); 
    Для Каждого СтрОрганизацииЭДО Из ОрганизацииЭДО Цикл

        // 1. Авторизация под сертификатами сервера 1С
        ОсновнойМодуль.ЭДО_АвторизоватьсяПодСертификатомНаСервере1С(СтрОрганизацииЭДО.Организация);  
        КонтекстСеанса = ОсновнойМодуль.ЭДО_КонтекстСеансаКлиентСервер();

        Если КонтекстСеанса.Количество() > 0 Тогда
            Для Каждого Элемент Из КонтекстСеанса Цикл
                СтрокаКонтекста  = Элемент.Значение;
                Если ЗначениеЗаполнено(СтрокаКонтекста.ОрганизацияДиадок) Тогда
                    Организация = СтрокаКонтекста.ОрганизацияДиадок.СвязанныйСправочник1;
                Иначе
                    Организация = ДД_УправлениеОбменом.ПолучитьЗначениеОбъектаПоСвойству("DDPro_ОтпечатокСертификатаНаСервере", СтрокаКонтекста.ОтпечатокСертификата);
                КонецЕсли;  
                Если Не ЗначениеЗаполнено(Организация) Тогда
                    ПроинформироватьОбОшибке(Параметры.ИдентификаторКоманды, "Не определена Организация!", УровеньЖурналаРегистрации.Ошибка);
                    Возврат Ложь;
                КонецЕсли;              

                Если Параметры.ИдентификаторКоманды = "ОбменДД_ОбновитьСтатусы" Тогда