Имя: Пароль:
1C
1С v8
Можно ли в Процедуры ОбработкаПроведения() сделать изменение документа?
0 DES
 
15.07.19
19:55
В Модуле объекта В Процедуре ОбработкаПроведения() нужно сделать формирование XML в файл.
Но нужно делать только после Проведения (как узнать что текущий документ Проведен) и только один раз.
Есть в Документе реквизит XMLсформирован.
Корректно ли записывать в него признак того что XML был сформирован. ?
1 SleepyHead
 
гуру
15.07.19
19:55
Можно, но изменения сохранены не будут ))
2 DES
 
15.07.19
20:14
Модуле есть такие предопределнные
ОбработкаПроведения()
ОбработкаУдаленияПроведения()
АрхивироватьДокумент()

Последний не могу найти в хелпе.
3 RomanYS
 
15.07.19
20:43
(1) +1
(0) пиши признак в регистр. Или передЗаписью
(2) он не предопределнный
4 Провинциальный 1сник
 
15.07.19
20:56
В конце проводения создавай фоновое задание, передавай в него ссылку документа и в нём уже делай своё грязное дело с объектом)
5 pavig
 
16.07.19
00:42
(4)
Слишком жестоко.
6 pavig
 
16.07.19
00:50
(0)

Платформа для механизма "История данных" использует следующее:
При записи регистрирует документ на создание версии.
Регламентное задание в определенное время (раз в минуту или другое расписание) собирает зарегистрированные документы и начинает создавать для них версии и записывает их.

По-хорошему, тебе надо сделать так же:
1. При записи добавляешь ссылку на свой документ (только если его там еще нет) в РС
2. Регламентным заданием собираешь ссылки ил п.1 и формируешь для каждого документа XML. Записываешь в ресурс флаг о том что XML сформирован. Документ для этого перезаписывать некорректно.
Минус решения только в том, что XML будут созданы не сразу, а по расписанию.

Но ни в коем случае не создавай XML в обработке проведения.

В (4) посыл правильный: делать надо асинхронно, но есть конкретная опасность положить сервер при массовом проведении таких документов.
7 Консультант Баранов
 
16.07.19
01:25
(0) Создать подписку. В подписке записывать в регистр сведений.
8 FIXXXL
 
16.07.19
09:21
(7) подписка работает в той же транзакции
блокировки, ожидания и вот это вот всё...
9 novichok79
 
16.07.19
10:14
можно регл. задание формирования XML запускать каждые n минут, данные о выгруженных XML хранить в отдельном регистре.
на форме подтягивать значение оттуда.
10 Trier
 
16.07.19
10:15
(0)
В Модуле объекта В Процедуре ОбработкаПроведения() нужно сделать формирование XML в файл.

Вот тут у тебя ошибка - на самом деле в ОбработкеПроведения тебе делать это не нужно.
Я у себя сделал примерно как в 6
11 Консультант Баранов
 
16.07.19
10:35
(8) > подписка работает в той же транзакции

И? В какой момент будет отмена транзакции если в самой подписке такого не будет?
12 Конструктор1С
 
16.07.19
10:59
(0) ты пытаешься в проведение запихнуть логику, которая не относится к проведению. Это как-минимум не есть гуд. Может быть потенциальным источником лишних проблем и тормозов
13 FIXXXL
 
16.07.19
11:04
(11) тут дело не в Отказе, а в увеличении времени транзакции
не надо в проведение совать не относящееся к проведению непосредственно
Независимо от того, куда вы едете — это в гору и против ветра!