Как определить делается ли отмена проведения документа через кнопку или програмно
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
есть документ. у него существует несколько связанных документов
при отмене проведения одного из связанных документов, остальные также должны распровестись
но возникает цикличность:
у док1 есть ссылки на док2 и док3, соответственно у док 2 есть ссылки на док1 и док3 и т.д.
при отмене проведения док1 запускается событие по отмене проведения остальных документов
и начинается цикл: док2 пытаеся распровести док1 и док3
док1 пытается распровести док2 и док3
док2 пытаеся распровести док1 и док3
док1 пытается распровести док2 и док3
док2 пытаеся распровести док1 и док3
док1 пытается распровести док2 и док3
док2 пытаеся распровести док1 и док3
при отмене проведения одного из связанных документов, остальные также должны распровестись
но возникает цикличность:
у док1 есть ссылки на док2 и док3, соответственно у док 2 есть ссылки на док1 и док3 и т.д.
при отмене проведения док1 запускается событие по отмене проведения остальных документов
и начинается цикл: док2 пытаеся распровести док1 и док3
док1 пытается распровести док2 и док3
док2 пытаеся распровести док1 и док3
док1 пытается распровести док2 и док3
док2 пытаеся распровести док1 и док3
док1 пытается распровести док2 и док3
док2 пытаеся распровести док1 и док3
(4) E_Johnny,
Хотя, странно, что событие не видит, что эти документы уже не проведены.
Плюс, имхо, нужно наоборот, из программного кода - передавать признак (в те же дополнительныеСвойства) - что документ распроводится программно.
запускается событие по отмене проведения остальных документов
Можно массив уже распроведенных документов - передавать через ДополнительныеСвойства. Т.е. док при распроведении добавляет свою ссылку в массив, массив передает в доп. свойства следующего документа.
Хотя, странно, что событие не видит, что эти документы уже не проведены.
Плюс, имхо, нужно наоборот, из программного кода - передавать признак (в те же дополнительныеСвойства) - что документ распроводится программно.
(12) E_Johnny, обычные формы?
Модуль формы:
Модуль объекта:
В подписку передается объект вместе с ДополнительныеСвойства. Можете там анализировать.
Модуль формы:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ДополнительныеСвойства.Вставить("РучноеПроведение");
КонецПроцедуры
Модуль объекта:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если ДополнительныеСвойства.Свойство("РучноеПроведение") Тогда
// Пользователь нажал провести.
КонецЕсли;
КонецПроцедуры
В подписку передается объект вместе с ДополнительныеСвойства. Можете там анализировать.
я бы добавил в модуль объекта экспортную переменную,
А в модуле формы, при открытии
Соответсвенно, если объект открыт пользователем, то логично что и кнопки из формы нажимаются. Переменная переназначается в истину
А программно, объект создается, переменная всегда инициализируется в Ложь
Перем ИнтерактивнаяРабота Экспорт;
//....
// код модуля
//и гдето в конце
ИнтерактивнаяРабота = Ложь;
А в модуле формы, при открытии
ЭтотОбъект.ИнтерактивнаяРабота = Истина;
Соответсвенно, если объект открыт пользователем, то логично что и кнопки из формы нажимаются. Переменная переназначается в истину
А программно, объект создается, переменная всегда инициализируется в Ложь
(16) Более менее универсально выглядит такая конструкция, при условии, что в коде программного изменения объекта не вызывается метод ПроверитьЗаполнение:
Пардон, это актуально только для проведения.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ДополнительныеСвойства.Вставить("ЭтоИнтерактивноеИзменение", Истина);
КонецПроцедуры
Пардон, это актуально только для проведения.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот