Доброго вечера. Подскажите, как подписать документ на сервере?

Ранее был такой способ:

```1c
    ПараметрыВыполненияДействийПоЭДО = ЭлектронныеДокументыЭДОКлиентСервер.НовыеПараметрыВыполненияДействийПоЭДО();
    ПараметрыВыполненияДействийПоЭДО.НаборДействий = НаборДействий;
    ПараметрыВыполненияДействийПоЭДО.ОбъектыДействий.ОбъектыУчета = ОбъектыУчета;

    Результат = ЭлектронныеДокументыЭДО.ВыполнитьДействияПоЭДО(ПараметрыВыполненияДействийПоЭДО);
```

- где НаборДействий, собственно, действия, а ОбъектыУчета - документы для обработки.

На сегодня в УТ 11.5.17.198 функции ВыполнитьДействияПоЭДО в модуле ЭлектронныеДокументыЭДО больше нет :(

Поделитесь опытом, пожалуйста...
---
Оказалось, что у сертификатов в Предприятии не были записаны пароли. Поэтому не производились подписание и отправка на стороне сервера :)

Спасибо за помощь.
---
Просто убрали "По" из названия функции, нет?

```1c
    Результат
    = ЭлектронныеДокументыЭДО.ВыполнитьДействияЭДО(ПараметрыВыполненияДействийПоЭДО);
```
---
Эта функция обрабатывает не все состояния, либо я делаю что-то не так. Она может сформировать или подготовить к отправке, но подписать и отправить не может. При этом ошибок нет. Думаю, что нужные какие-то действия с сертификатами, но не могу понять какие.
---
Если посмотрите в ЭлектронныеДокументыЭДО.ПродолжитьВыполнениеДействийПоЭДО(), там есть в т.ч. действие подписания. Кажется, нужно просто туда встать отладкой и посмотреть что отрабатывает не так.
---
```1c
    Процедура ВыполнитьДействиеПодписать(ПараметрыВыполнения, РезультатДействий)

    РезультатДействий.Итог.ОбработаноПоДействиям.Вставить(Перечисления.ДействияПоЭДО.Подписать, 0);

    ДанныеДляПодписания = ДанныеДокументовДляПодписания(ПараметрыВыполнения, РезультатДействий.КонтекстДиагностики);

    ОбработатьОшибкиДанныхДляПодписания(ДанныеДляПодписания.Ошибки, РезультатДействий.КонтекстДиагностики,
    ПараметрыВыполнения);

    Если ЗначениеЗаполнено(ДанныеДляПодписания.ДанныеДляПростойПодписи) Тогда
    ПодписатьПростойПодписью(ДанныеДляПодписания.ДанныеДляПростойПодписи, РезультатДействий);
    КонецЕсли;

    Если ЗначениеЗаполнено(ДанныеДляПодписания.ДанныеДляПодписанияНаСервере) Тогда
    ПодписатьНаСервере(ДанныеДляПодписания.ДанныеДляПодписанияНаСервере, РезультатДействий);
    КонецЕсли;

    Если ЗначениеЗаполнено(ДанныеДляПодписания.ДанныеДляИнтерактивногоПодписания) Тогда
    РезультатДействий.ПараметрыПодписания = ПараметрыИнтерактивногоПодписания(
    ДанныеДляПодписания.ДанныеДляИнтерактивногоПодписания, ПараметрыВыполнения, РезультатДействий.Итог);
    КонецЕсли;

    ОбщегоНазначенияКлиентСервер.ДополнитьСоответствие(РезультатДействий.ДокументыДляОбработкиДополнительныхСведений,
    ДанныеДляПодписания.ДокументыДляОбработкиДополнительныхСведений, Истина);

    КонецПроцедуры
```

Падает вот сюда: Если ЗначениеЗаполнено(ДанныеДляПодписания.ДанныеДляИнтерактивногоПодписания) Тогда

Если вручную перенаправить в Если ЗначениеЗаполнено(ДанныеДляПодписания.ДанныеДляПодписанияНаСервере) Тогда, то подписывает. Но мне не нравится. Ломать код - не решение.
---
Если покопаться поглубже, это определяется в функции ОбработатьРезультатыЗапросаДанныхСообщенийДляПодписания() тут:

```1c
    Если НаборСертификатов.ИспользоватьНаСервере Тогда

    ОписаниеНабораДанных = ОписаниеНабораДанныхДляПодписанияНаСервере(
    ПараметрыСообщенийПоСертификатам, ДвоичныеДанныеФайлов, Ошибки);
    Результат.ДанныеДляПодписанияНаСервере.Добавить(ОписаниеНабораДанных);

    Иначе

    ОписаниеНабораДанных = ОписаниеНабораДанныхДляИнтерактивногоПодписания(
    ПараметрыСообщенийПоСертификатам, ДвоичныеДанныеФайлов);
    Результат.ДанныеДляИнтерактивногоПодписания.Добавить(ОписаниеНабораДанных);

    КонецЕсли;
```

Т.е. нужно, чтобы у сертификата было свойство "ИспользоватьНаСервере".

Это свойство определяется в функции ИспользоватьНаборСертификатовНаСервере().
В описании этой функции указано какие условия должны выполняться, чтобы свойство стало Истиной.
Проверяйте там почему возвращает Ложь.

Обратите внимание также на КриптографияБЭДСлужебный.ПолучитьОтпечаткиСертификатовНаСервере, где получаются отпечатки установленных на сервере сертификатов. Там, в частности, нужна установленная в Истина константа СоздаватьЭлектронныеПодписиНаСервере.
---
Принял, сегодня проверю. Спасибо.
---
Оказалось, что у сертификатов в Предприятии не были записаны пароли. Поэтому не производились подписание и отправка на стороне сервера :)

Спасибо за помощь.
---
Сообщение было скрыто модератором.