Зарегистрировать документ к обмену программно

1. Vida 15 26.12.24 17:46 Сейчас в теме
Здравствуйте
Документ приходит, при загрузке заполняется в процедуре ОбработкаПроверкиЗаполнения
и хочу его отправить обратно без участия человека.
Узел = ПланыОбмена.ОбменУправлениеНебольшойФирмойБухгалтерия30.НайтиПоКоду("80");
ПланыОбмена.ЗарегистрироватьИзменения(Узел, ЭтотОбъект.Ссылка);

Узел находит, но в зарегистрированных к отправке документа нет.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
22. victorree 25 11.02.25 17:01 Сейчас в теме
(1) Подскажите зачем Вы его обратно хотите отправить? 1С делает все чтобы такого не происходило - подобное поведение нарушает логику обмена данными.
2. user2107191 26.12.24 17:48 Сейчас в теме
А записать? (грустный смайлик)
3. Vida 15 26.12.24 17:51 Сейчас в теме
(2) Записать документ до попытки регистрации? В какой процедуре?
Подойдет ОбработкаПроверкиЗаполнения?
4. user2107191 26.12.24 18:07 Сейчас в теме
(3) А откуда возьмется ссылка у незаписанного документа?

Записывать надо в том месте, в котором и создаётся.
5. user2107191 26.12.24 18:33 Сейчас в теме
(4) А если у объекта снять ОбменДанными.Загрузка - то он автоматом зарегается. Правда, и контроли все с проведением сработают.
6. polax 26.12.24 22:48 Сейчас в теме
(1) Открывай Общий модуль ОбменДаннымиСобытия. Там есть процедуры в которых определяются массивы узлов в которых регистрируются измененные объекты: имена процедур начинаются с "ОпределитьМассивУзлов.... " (их там то ли 4 то ли 5)
Ставь там точку останова (в каждой процедуре, в какой-то обязательно будет определяться массив узлов для нужного дока), смотри КАК регистрируется нужный док, справочник, любой объект и регистрируется ли (если в массиве узлов нет нужного узла - нет регистрации) Ну и решай как зарегистрировать.
7. o.kovalev 117 27.12.24 08:24 Сейчас в теме
Записывать ничего не надо !

Вот мой рабочий код: ПланыОбмена.ЗарегистрироватьИзменения(Объект.УзелОбмена.Ссылка,ОбрабатываемыйОбъект);

Обрабатываемый объект должен быть типом Объект

Узел обмена - узел другой базы

В план обмена объект такого типа должен быть включен, авторегистрация не обязательна


Но вполне возможно у вас есть где то где то отмена регистрации:

ОбрабатываемыйОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов",Истина);
VyacheslavShilov; Vida; +2 Ответить
8. user2107191 27.12.24 08:43 Сейчас в теме
(7) Зарегистрировать ссылку нового незаписанного объекта? Ну-ну...
9. o.kovalev 117 27.12.24 09:17 Сейчас в теме
(8) Обьект у него записан, пришел в базу, читайте внимательно.
10. user2107191 27.12.24 09:24 Сейчас в теме
(9) Где??? Где тут про "записан в базу"?
Документ приходит, при загрузке заполняется в процедуре ОбработкаПроверкиЗаполнения

А если еще и учесть, что имеются попытки регистрировать документ в обработке заполнения (которая используется только для создания новых документов), то как бы другая картина вырисовывается...
Ах, да! И вот это еще...
Записать документ до попытки регистрации?


Всё говорит о том, что "объект записан в базу". Прям даже кричит, я бы сказал!
11. o.kovalev 117 27.12.24 09:27 Сейчас в теме
(10) Если не записан то говорить о том что пришел преждевременно, (0) Автор так пришел документ или не пришел ?
12. Vida 15 27.12.24 11:05 Сейчас в теме
(10)
(11)
Охх...
Документ при загрузке в базу проводится
Перед проведением запускается процедура ОбработкаПроверкиЗаполнения (она не для новых, а запускается при каждом проведении)
В ней дозаполняются данные.
Я так понимаю что к этому моменту док не записан или как минимум не записаны новые данные
Посмотрю в отладчике

В обычном варианте, если пользователь заходит и проводит то док регистрируется без проблем. Задача освободить пользователя
13. user2107191 27.12.24 11:08 Сейчас в теме
(12)
она не для новых, а запускается при каждом проведении
Сорян, визуально спутал с ОбработкаЗаполнения
14. o.kovalev 117 27.12.24 11:09 Сейчас в теме
(12) Если еще не записан то и нечему регистрироваться. Поставьте регистрацию после записи.
15. Vida 15 27.12.24 11:09 Сейчас в теме
(7)
А этот ваш рабочий код в какой процедуре?
16. o.kovalev 117 27.12.24 11:10 Сейчас в теме
(15) Если запускать регистрацию обработкой (просто в обработке)
VyacheslavShilov; Vida; +2 Ответить
17. o.kovalev 117 27.12.24 11:11 Сейчас в теме
(15) А можно вообще это все это реализовать в подписке на событие.
VyacheslavShilov; Vida; +2 Ответить
18. Vida 15 27.12.24 12:09 Сейчас в теме
Попробовала в разных комбинациях, не поддается:
ЭтотОбъект.Записать(,);
ЭтотОбъект.ОбменДанными.Загрузка = Ложь;
Узел = ПланыОбмена.ОбменУправлениеНебольшойФирмойБухгалтерия30.НайтиПоКоду("80");
ПланыОбмена.ЗарегистрироватьИзменения(Узел, ЭтотОбъект.Ссылка);	

Еще и точки останова не срабатывают при загрузке.
19. user2107191 27.12.24 12:12 Сейчас в теме
(18) А этот документ вообще подлежит регистрации?
Если подлежит - то достаточно просто поменять первые две строчки местами.
ЭтотОбъект.ОбменДанными.Загрузка = Ложь;
Этот параметр интересен системе только в момент записи объекта.
На ручную регистрацию ссылки он никак не влияет.
20. Vida 15 27.12.24 12:21 Сейчас в теме
(19) попробовала, успеха нет

В обычном варианте, если пользователь заходит и проводит то док регистрируется без проблем. Задача освободить пользователя

может нельзя зарегистрировать при получении...

буду копать тему подписок на событие
21. Vida 15 10.02.25 09:54 Сейчас в теме
Актуально, прошу подсказок.
23. M_Salakh 11.02.25 17:13 Сейчас в теме
(21) Попробуйте перенести вашу регистрацию из процедуры "ОбработкаПроверкиЗаполнения" в процедуру "ПриЗаписи". Должно все получиться.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот