Как из модуля объекта вызвать внешнюю обработку

1. user1800939 23.09.22 11:02 Сейчас в теме
Добрый день. Подскажите пожалуйста, только учусь. Как из модуля объекта вызвать внешнюю обработку? Есть внешняя обработка которая перезаписывает документ в запрещенном периоде. Но если есть связанные документы, то программа не дает перезаписать документ основание. Я зашла в модуль объекта и в этом связанном документе ПропустилаПроверкуЗапретаИзменения. Всё работает. Но мне нужно, что бы эта проверкаЗапрета срабатывала только при условии, если документ перезаписывается именно из внешней обработки. Как получить эту внешнюю обработку?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. RustamZz 23.09.22 11:19 Сейчас в теме
(1) Надо наоборот передать из внешней обработки в модуль информацию. Для этого используют ДополнительныеСвойства объекта:
ДокОбъект.ДополнительныеСвойства.Вставить("ЗаполнитьСчетаУчетаПередЗаписью", Истина);
5. user1800939 23.09.22 11:34 Сейчас в теме
(3) Я написала в Модуле объекта документа
ДокументОбъект. ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
ОбъектДокумент.Записать()
Но мне нужно, что бы это работало не для всех документов, а только при условии, когда запускается внешняя обработка.
6. user1831019 23.09.22 11:37 Сейчас в теме
(5) А надо писать в модуле обработки. А в модуле документа проверять наличие и значение этого свойства.
RustamZz; +1 Ответить
7. user1800939 23.09.22 12:00 Сейчас в теме
(6) Я во внешней обработке выбираю документы которые мне нужно перезаписать, там же его перезаписываю.

ДокументОбъект. ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
ОбъектДокумент.Записать(),
Но если есть связанные документы (сч.фактуры), то их тоже нужно перезаписать. Для этого через отладчик, я нашла модуль в котором проходит запись документа и в нем прописала:
ДокуменСФ .ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
ОбъектСФ.Записать(). У меня как бы всё работает.
Но я хочу написать условие, что
ВОТ ЭТО работает,
ДокуменСФ .ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);

только если через внешнюю обработку делают вот ЭТО

ДокументОбъект. ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
ОбъектДокумент.Записать(),
8. user1831019 23.09.22 12:22 Сейчас в теме
(7) Ну так и напиши во внешней обработке
ДокументСФ .ДополнительныеСвойства.Вставить("ЭтоВнешняяОбработка", Истина);

и проверяй в модуле документа.
9. RustamZz 23.09.22 12:24 Сейчас в теме
(7) Все уже поняли что вы хотите.
ДокуменСФ .ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", ИстинаДокОснование.ДополнительныеСвойства.Свойство("ПропуститьПроверкуЗапретаИзменения));
10. user1831019 23.09.22 12:28 Сейчас в теме
11. RustamZz 23.09.22 13:19 Сейчас в теме
(10) Не ругайся в приличном обществе. А то опять забанят на 1000 лет.
12. user1800939 23.09.22 15:03 Сейчас в теме
(9) Простите пожалуйста, но я не поняла.:(
Мой код во внешней обработке:
Для каждого СтрокаТЧ Из Объект.СписокЗначенийТЧ Цикл
Если СтрокаТЧ.Выбран Тогда
ОбъектДокумент = СтрокаТЧ.ВыбранныеДокументы.ПолучитьОбъект();
ОбъектДокумент.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения",Истина);
ОбъектДокумент.Записать();
КонецЕсли;
КонецЦикла


Т.е. я дополняю свой код и пишу во внешней обработке.

ОбъектДокумент.ДополнительныеСвойства.Вставить("ЭтоВнешняяОбработка", Истина)

Затем иду в модуль объекта и пишу,
Если ЭтоВнешняяОбработка = Истина Тогда
ДокуменСФ .ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина)
КонецЕсли;

Так не получается, потому что ЭтоВнешняяОбработка переменная не определена.
13. RustamZz 23.09.22 15:08 Сейчас в теме
(12) Если ЭтоВнешняяОбработка ОбъектДокумент.ДополнительныеСвойства.Свойство("ЭтоВнешняяОбработка") = Истина Тогда
15. user1800939 26.09.22 08:27 Сейчас в теме
(13) как мне получить эту внешнюю обработку в модуле объекта?
17. nomad_irk 76 26.09.22 08:43 Сейчас в теме
(15)Зачем вам именно обработка в модуле документа?
18. user1800939 26.09.22 08:46 Сейчас в теме
(17) а как еще я могу перезаписать связанные документы из внешней обработки в запрещенном периоде?
19. nomad_irk 76 26.09.22 09:08 Сейчас в теме
(18)может быть я чего-то не понимаю, но:
Вы создали свою/воспользовались чьей-то обработкой, которая сформировала список нужных документов и их перепроводит.
Ваша задача сделать так, чтобы дата запрета изменения отключалась для документов, обрабатываемых(перепроводимых) данной обработкой, так?

Если все так, то в коде обработки вы добавляете нужное свойство, а в модуле объекта вы должны получить это свойство.
Сама обработка вам не нужна абсолютно.

В коде обработки вы делаете:

......
ОбъектДокумент = СтрокаТЧ.ВыбранныеДокументы.ПолучитьОбъект();
ОбъектДокумент.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения",Истина);
ОбъектДокумент.Записать();


В модуле документа вы делаете:

....
ПропуститьПроверкуЗапретаИзменения = Неопределено;
ДополнительныеСвойства.Свойство("ПропуститьПроверкуЗапретаИзменения",ПропуститьПроверкуЗапретаИзменения);
Если ПропуститьПроверкуЗапретаИзменения = Истина Тогда
     ДокуменСФ .ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", ПропуститьПроверкуЗапретаИзменения)
КонецЕсли;
20. user1800939 26.09.22 10:46 Сейчас в теме
(19) В коде внешней обработки у меня именно это и есть
......
ОбъектДокумент = СтрокаТЧ.ВыбранныеДокументы.ПолучитьОбъект();
ОбъектДокумент.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения",Истина);
ОбъектДокумент.Записать();


И мне нужно было, что бы только, при использовании внешней обработки срабатывал код в модуле объекта

ДокуменСФ .ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина)

ни в каких других случаях этот код на снятие запрета работать не должен.
21. nomad_irk 76 26.09.22 11:27 Сейчас в теме
(20)мое сообщение (19) - полностью решает вашу задачу
что не так?
2. TokarevV 30 23.09.22 11:05 Сейчас в теме
Обычные формы или управляемые?
Внешняя обработка лежит на диске в виде файла или подключена в справочнике внешние обработки?
4. user1800939 23.09.22 11:30 Сейчас в теме
Управляемая, Внешняя лежит на диске.
14. user1800939 26.09.22 07:59 Сейчас в теме
(13) И так не будет работать, потому что в модуле объекта нет переменной ОбъектДокумент.
16. RustamZz 26.09.22 08:42 Сейчас в теме
(15) Зачем?
(14) Замените на ЭтотОбъект
Оставьте свое сообщение

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