Вход | Регистрация
 

Программное создание связанных документов (на основании)

Программное создание связанных документов (на основании)
Я
   Deeslav
 
09.02.20 - 20:40
Друзья, всем привет! Сразу оговорюсь, я начинающий разработчик, и до того, как обратиться за помощью сюда, полтора дня безвылазно пытался наGooglлить информацию - к сожалению безрезультатно.

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

Вопрос: Возможно ли это сделать, не залезая в процедуру Типового документа ОбработкаЗаполнения (а соответственно, не снимая его с замка)? Возможно у кого-то был опыт реализации подобного, ткните что можно почитать на эту тему. Спасибо!
   AlvlSpb
 
1 - 09.02.20 - 20:54
(0) Расширения в помощь
   Deeslav
 
2 - 09.02.20 - 21:08
(1) Процедуры в расширении, насколько я знаю, вызываются после, либо вместо основого метода. Тут они разве подойдут?
Если вызывать после, то программа попадет в исключение, т.к. в процедур "ОбработкаЗаполнения" есть вот такой кусок кода, который проверяет на тип документа:
Если ТипЗнч(ОбъектОснование) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
    ЗаполнитьВыпускПродукцииНаОснованииЗаказаКлиента(ОбъектОснование);
ИначеЕсли ТипЗнч(ОбъектОснование) = Тип("ДокументСсылка.ЗаказДавальца") Тогда
 [тут много кода]
Иначе
    ВызватьИсключение СтрШаблон(НСтр("ru = 'Заполнение на основании документа %1 не предусмотрено. Обратитесь к администратору.';|en = 'Population on the %1 document basis is not provided. Contact administrator.'"), ОбъектОснование);
КонецЕсли;

Если вызывать вместо, то это придется весь код процедуры переносить в расширение и там дописывать свой блок ИначеЕсли. Это рациональное решение? (Я просто пока что не могу дать оценку, т.к. нет опыта)
   AlvlSpb
 
3 - 09.02.20 - 21:17
(2) Есть еще и Перед (это так, к слову) Во-первых, с 8.3.15 теперь в процедурах можно вставлять код в действующую процедуру (аннотация  &ИзменениеИКонтроль) и во-вторых, как правило кроме функций (где только ВМЕСТО) всегда удается найти КАК сделать Перед или После
   Deeslav
 
4 - 09.02.20 - 21:35
(3) А вот на счет &ИзменениеИКонтроль - что-то интересное, уже ушел изучать. Спасибо за ответ)
   RomanYS
 
5 - 09.02.20 - 21:46
(4) В типовых пока режим совместимости ниже.

ОбработкаЗаполнения вполне перехватывается подписками, можно обойтись без расширений
   AlvlSpb
 
6 - 09.02.20 - 21:54
(5) Эмм. А как добавить подписку не разрешив редактирование не снимая с поддержки? А если разрешить, то почему не изменить режим совместимости?
   RomanYS
 
7 - 09.02.20 - 22:02
(6) Цитата:
"Задача следующая: Есть НЕтиповой документ. Необходимо, чтобы при его проведении создавать движения ТИПОВОГО документа (он на замке)"

почему не изменить режим совместимости? 
Это вообще для отважных и любителей сюрпризов.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.