Имя: Пароль:
1C
 
Документооборот 3.0. Согласование программно (для синхронизации).
0 Morroc
 
28.11.24
10:23
Привет. Ни у кого нет готового куска серверного кода, аналогичного нажатию "Согласовано"/"Не согласовано" в форме Документ.ДействиеЗадачи ? Или пните в правильном направлении, плз. Попробовал заполнить бизнеспроцесс/задачу исполнителя/документ.задача/действие задачи, вызывал выполнитьзадачу, закрытьзадачи, приизменениибп и прочее - полностью бп и задача не закрываются и на следующий этап согласование не уходит. Пройтись в отладчике от нажатия кнопки до конца... навскидку довольно тоскливо (
1 Волшебник
 
28.11.24
10:25
А разве можно программно согласовывать задачи за людей? Это ж нарушение нулевого закона робототехники
2 Morroc
 
28.11.24
10:30
У нас кругом ИИ же ) Это нужно для синхронизации с другой системой, где согласовывают этот конкретный этап.
3 Волшебник
 
28.11.24
10:42
(2) Ну так пусть из той системы придут все объекты данных, которые были изменены и созданы.
4 Morroc
 
28.11.24
10:52
Они не имеют прямого отношения к объектам 1С Документооборот.  В документообороте запускается большой процесс согласования оплаты и договора, по нему на одном из этапов согласования в ERP формируется полузаполненная заявка на расход денежных средств в которой можно нажать ok или не ok, по завершению процесса прилетит уже полностью заполненная заявка и договор, но интересует именно промежуточный этап и получение этого ok.
5 denk32
 
28.11.24
12:47
ВыполнениеЗадачСервер.ВыполнитьЗадачу(Задача, ПараметрыВыполнения)
Первый параметр сама задача.
Второй структура.
ПараметрыВыполнения = Новый Структура;
ПараметрыВыполнения.Вставить("РезультатВыполнения", ок или не ок);
6 Morroc
 
28.11.24
16:55
Чего-то не хватает. В общем процессе стрелка перепрыгнула на следующее "Действие Задачи" - "Обработка ...", которого раньше и не видно было и там оно подвисло, возможно его точно так же надо закрыть, но я пока попробую дойти до конца по штатному пути.
7 Homer
 
28.11.24
16:54
В настройках обработки есть "правила эскалации". Найди код, который его выполняет.
8 Morroc
 
28.11.24
17:54
Спасибо, гляну.


Пока вот так нормально завершилась задача, этап (БП обработки) и вся обработка (это было последнее согласование) с минимумом кода:

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

Документ.ДействиеЗадачи - тот документ из которого обычно открывается штатная форма согласования. В коде есть анализатор требования "интерактивности" обработки согласования и если возвращается ДанныеВыполнения.ТребуетсяИнтерактивноеДействие = Истина надо смотреть массив предупреждений, в этом случае согласование не прошло (у меня было обязательным к заполнению поле Комментарий - Документ.ДействиеЗадачи.РезультатДействияТекстом).