Отказ в аннулировании
В подключаемом модуле используются методы генерации, подписания и отправки файлов отказа в аннулировании:
Пример кода
Процедура ОтказатьВАннулировании(ОтпечатокСертификата)
ТекстПричиныОтказаВАннулировании = "В аннулировании отказано";
ВариантыОтветаПоДокументу = ОсновнойМодуль.ЭДО_Перечисление_ВариантыОтветаПоДокументу();
Документы_ОтказатьВАннулировании = ДокументыДД_ОтказатьВАннулировании();
МассивДокументовДляАннулирования = Новый Массив;
Пока Документы_ОтказатьВАннулировании.Следующий() Цикл
МассивДокументовДляАннулирования.Добавить(Документы_ОтказатьВАннулировании.ДокументДД);
КонецЦикла;
Если МассивДокументовДляАннулирования.Количество() > 0 Тогда
МассивИдентификаторов = ОсновнойМодуль.ПолучитьМассивИдентификаторовПоМассивуДокументов(МассивДокументовДляАннулирования);
ОсновнойМодуль.ДобавитьДвоичныйКонтентАннулированияОтказаВАннулировании(МассивИдентификаторов, ТекстПричиныОтказаВАннулировании, ВариантыОтветаПоДокументу.ОтказатьВАннулировании);
Для Каждого СтруктураИдентификаторов Из МассивИдентификаторов Цикл
Для Каждого СтруктураДокумента Из СтруктураИдентификаторов.Documents Цикл
Если ЗначениеЗаполнено(СтруктураДокумента.ТекстОшибки) Тогда
Продолжить;
КонецЕсли;
ДвоичныеДанные = Base64Значение(СтруктураДокумента.Content);
РезультатПодписания = ОсновнойМодуль.ПодписатьДанныеНаСервере(ДвоичныеДанные, ОтпечатокСертификата);
Если Не РезультатПодписания.Успешно Тогда
СтруктураДокумента.Вставить("ОписаниеОшибки", РезультатПодписания.ОписаниеОшибки);
Продолжить;
КонецЕсли;
СтруктураДокумента.Вставить("Signature", Base64Строка(РезультатПодписания.ДвоичныеДанныеПодписи));
КонецЦикла;
КонецЦикла;
ОсновнойМодуль.ЭДО_АннулироватьОтказатьВАннулировании(МассивИдентификаторов, ВариантыОтветаПоДокументу.ОтказатьВАннулировании);
КонецЕсли;
КонецПроцедуры
Для перевнедрения данного сценария можно воспользоваться следующими вариантами:
Продолжайте использовать текущие методы, доработав алгоритм в подключаемом модуле:
Что делать при перевнедрении
Во время переходного периода
Требуемые действия:
Обновите модуль до версии не ниже 4.53.
По окончании переходного периода
Требуемые действия:
Обновите модуль до версии 4.5X*.
Примечание
* Точная версия релиза будет определена ближе к окончанию переходного периода.
После обновления публичный метод ДобавитьДвоичныйКонтентАннулированияОтказаВАннулировании вместо служебного сообщения «Отказ в аннулировании» будет возвращать УС.
Удалите код, связанный с подписанием файла УС.
Пример кода
Процедура ОтказатьВАннулировании(ОтпечатокСертификата)
ТекстПричиныОтказаВАннулировании = "В аннулировании отказано";
ВариантыОтветаПоДокументу = ОсновнойМодуль.ЭДО_Перечисление_ВариантыОтветаПоДокументу();
Документы_ОтказатьВАннулировании = ДокументыДД_ОтказатьВАннулировании();
МассивДокументовДляАннулирования = Новый Массив;
Пока Документы_ОтказатьВАннулировании.Следующий() Цикл
МассивДокументовДляАннулирования.Добавить(Документы_ОтказатьВАннулировании.ДокументДД);
КонецЦикла;
Если МассивДокументовДляАннулирования.Количество() > 0 Тогда
МассивИдентификаторов = ОсновнойМодуль.ПолучитьМассивИдентификаторовПоМассивуДокументов(МассивДокументовДляАннулирования);
ОсновнойМодуль.ДобавитьДвоичныйКонтентАннулированияОтказаВАннулировании(МассивИдентификаторов, ТекстПричиныОтказаВАннулировании, ВариантыОтветаПоДокументу.ОтказатьВАннулировании);
ОсновнойМодуль.ЭДО_АннулироватьОтказатьВАннулировании(МассивИдентификаторов, ВариантыОтветаПоДокументу.ОтказатьВАннулировании);
КонецЕсли;
КонецПроцедуры
Как альтернативу можете использовать публичный метод ЭДО_ПодготовитьИОтправитьОтветНаДокумент.
Предупреждение
Установите на сервер сертификат для подписания документов. Затем заполните соответствующую настройку организации в модуле. См. раздел «Системные настройки».
Что делать при перевнедрении
Во время переходного периода
Требуемые действия:
Обновите модуль до версии не ниже 4.53.
Установите сертификат на сервер и заполните соответствующую настройку модуля.
Переведите алгоритм генерации и отправки отказа в аннулировании на метод ЭДО_ПодготовитьИОтправитьОтветНаДокумент:
Для документов, по которым требуется сформировать и отправить отказ в аннулировании, заполните реквизит «ТребуемоеДействиеВДД» в соответствующем элементе справочника Диадок_Документы. Передаваемое значение: «ОтказатьВАнулировании».
Вызовите метод и передайте в него ссылку на электронный документ из подсистемы хранения Диадок.
Пример кода
Процедура ОтказатьВАннулировании()
ВариантыОтветаПоДокументу = ОсновнойМодуль.ЭДО_Перечисление_ВариантыОтветаПоДокументу();
Документы_ОтказатьВАннулировании = ДокументыДД_ОтказатьВАннулировании();
УстанавливаемыеРеквизиты = Новый Структура("ТребуемоеДействиеВДД", ВариантыОтветаПоДокументу.ОтказатьВАннулировании);
Пока Документы_ОтказатьВАннулировании.Следующий() Цикл
ОсновнойМодуль.ЭДО_ЗаписатьРеквизитыДокумента(Документы_ОтказатьВАннулировании.ДокументДД, УстанавливаемыеРеквизиты);
ОсновнойМодуль.ЭДО_ПодготовитьИОтправитьОтветНаДокумент(Документы_ОтказатьВАннулировании.ДокументДД);
КонецЦикла;
КонецПроцедуры
По окончании переходного периода
Требуемые действия:
Обновите модуль до версии 4.5X*.
Примечание
* Точная версия релиза будет определена ближе к окончанию переходного периода.