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

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

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

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

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

почему не изменить режим совместимости?
Это вообще для отважных и любителей сюрпризов.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс