|
Программное создание связанных документов (на основании) |
☑ |
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) Цитата:
"Задача следующая: Есть НЕтиповой документ. Необходимо, чтобы при его проведении создавать движения ТИПОВОГО документа (он на замке)"
почему не изменить режим совместимости?
Это вообще для отважных и любителей сюрпризов.
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший