Обработка проведения документа

1. fugu 23 04.12.20 11:23 Сейчас в теме
Добрый день.

Создаю внешнюю обработку, которая автоматически создает документы.
Но мне нужно, чтобы Обработка проведения отработала иначе, чем указано в модуле объекта - обработка проведения.
Как это сделать?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
9. ab_initio 95 04.12.20 12:03 Сейчас в теме +1 $m
Возможно, такой ход поможет:

Нужно создавать и записывать документы в режиме
ДокОбъект.ОбменДанными.Загрузка=Истина;
...
ДокОбъект.Проведен=Истина;
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);

В этом случае обработчики из конфигурации не запустятся.

Написать свою процедуру формирования нужных движений регистров в этой же обработке.
К наборам записей можно обращаться так:
НужныйРег=ДокОбъект.Движения.НужныйРегистр;

или так:
НужныйРег=РегистрыНакопления.НужныйРегистр.СоздатьНаборЗаписей();
НужныйРег.Отбор.Регистратор.Значение=ДокСсылка;
НужныйРег.Отбор.Регистратор.Использование=Истина;
НужныйРег.Отбор.Регистратор.ВидСравнения=ВидСравнения.Равно;
...
НоваяЗапись=НужныйРег.Добавить();
НоваяЗапись.Активность=Истина;
НоваяЗапись.Период=ДокСсылка.Дата;
....
......
НужныйРег.Записать();
Показать
alex-l19041; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
19. alex-l19041 8 04.12.20 18:33 Сейчас в теме
(1) а что будет когда потом перепроведут созданные таким образом документы ?
2. Andrekaa 04.12.20 11:26 Сейчас в теме
Расширение вам поможет "&Вместо"
Или своя подписка на проведение документа
3. fugu 23 04.12.20 11:28 Сейчас в теме
(2) Можете более подробно пояснить?

Поясню, это внешняя обработку и не хотелось бы лезть в конфигурацию.
Обработка по сути разовая.
4. oleg-x 26 04.12.20 11:47 Сейчас в теме
(1) А что значит иначе?
Вам в любом случае надо менять проведение. Так как через обработку можно изменить проведение, например после проведения поправить регистры программно. Но после стандартного перепроведения, все ваши изменения будут затерты.
11. FatPanzer 04.12.20 12:25 Сейчас в теме
(4) Ну например для переноса документов закрытых периодов, в которых реальное проведение актуализирует какие-то регистры сведений со статусами текущей датой (а надо например не текущей, а какой-то другой). Или если при проведении осуществляется контроль остатков, а надо его обойти...
Да, перепроведение потом все перепишет - но это уже регулируется правами доступа и закрытыми периодами...

Случай частный, но тем не менее. Сам несколько раз так делал.
5. fugu 23 04.12.20 11:49 Сейчас в теме
(4) т.е. нельзя перехватить документ и сделать по другому перепроведение?
6. oleg-x 26 04.12.20 11:54 Сейчас в теме
(5) Нет, через расширение можно изменить процедуру проведения. Но в обработке нельзя.
7. oleg-x 26 04.12.20 11:55 Сейчас в теме
(5) Вы можете очистить результат проведения, и прописать свои, но как и писал выше, после перепроведения все встанет на места.
8. SlavaKron 04.12.20 11:59 Сейчас в теме
Созданный документ записываете в режиме ОбменДанными.Загрузка = Истина. Движения документа создаете отдельно и записываете отдельно.
alex-l19041; karamazoff; +2 Ответить
14. Altez 256 04.12.20 13:44 Сейчас в теме
(8) Без ОбменДанными.Загрузка = Истина смысл не теряется. Проверил на УТ10 и 11.

Ссылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("0в00-000022",ТекущаяДата());
Реализация = Ссылка.ПолучитьОбъект();
//Реализация.ОбменДанными.Загрузка=Истина;
Реализация.Проведен=Истина;
Реализация.Записать(РежимЗаписиДокумента.Запись);


Движения так же добавляются вручную, вопрос, попадает ли новый документ в "изменения" для обмена на логике обработчиков и подписок, срабатывающих ПриЗаписи.
15. ab_initio 95 04.12.20 14:09 Сейчас в теме
(14) Так-то оно так. Но обработчики "Перед записью" модуля документа начнут выполняться. Время увеличится. Отказ может где-то выстрелить, если что-то не заполнено.
16. FatPanzer 04.12.20 14:22 Сейчас в теме
(15) Они в любом случае начнут выполняться... Просто грамотный разработчик в начале обработчика всегда Возврат прописывает для Загрузки. Но не все грамотные, ой не все...
17. ab_initio 95 04.12.20 14:35 Сейчас в теме
(16) В заголовке написано, что это УТ-10 и/или УТ-11. В модулях типовых документов обеих этих конфигураций есть конструкция
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
18. FatPanzer 04.12.20 15:38 Сейчас в теме
(17) А кто сказал, что речь про типовые? Могут быть и нетиповые. А могут быть про наколбашенные рядом самописные подписки.
9. ab_initio 95 04.12.20 12:03 Сейчас в теме +1 $m
Возможно, такой ход поможет:

Нужно создавать и записывать документы в режиме
ДокОбъект.ОбменДанными.Загрузка=Истина;
...
ДокОбъект.Проведен=Истина;
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);

В этом случае обработчики из конфигурации не запустятся.

Написать свою процедуру формирования нужных движений регистров в этой же обработке.
К наборам записей можно обращаться так:
НужныйРег=ДокОбъект.Движения.НужныйРегистр;

или так:
НужныйРег=РегистрыНакопления.НужныйРегистр.СоздатьНаборЗаписей();
НужныйРег.Отбор.Регистратор.Значение=ДокСсылка;
НужныйРег.Отбор.Регистратор.Использование=Истина;
НужныйРег.Отбор.Регистратор.ВидСравнения=ВидСравнения.Равно;
...
НоваяЗапись=НужныйРег.Добавить();
НоваяЗапись.Активность=Истина;
НоваяЗапись.Период=ДокСсылка.Дата;
....
......
НужныйРег.Записать();
Показать
alex-l19041; +1 Ответить
10. fugu 23 04.12.20 12:12 Сейчас в теме
Спасибо за информацию.
12. oleg-x 26 04.12.20 12:34 Сейчас в теме
(11) Смотря что менять в проведение, если вспомогательную информацию, то не страшно, просто надо иметь ввиду, что она может изменится. Но опять же, если документ двигает остатки, то уже требуется перепроведение данного периода (если это расход), иначе партионный учет поедет.
13. FatPanzer 04.12.20 13:07 Сейчас в теме
(12) Это уже логика. Думаю, автор с ней сам разберется. При этом про остатки я говорил чисто теоретически, не цепляйтесь к словам. мой посыл только в том, что такие ситуации, когда нельзя использовать типовое проведение, - имеют место быть. И на самом деле, одна из них - жопорукость кода в самой обработке проведения.

Автора интересовала техническая сторона, ему подсказали. Вопрос закрыт.
Оставьте свое сообщение

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