Имя: Пароль:
1C
1С v8
Ввод на основании программно...
🠗 (Волшебник 29.03.2023 09:09)
0 VP6608
 
28.03.23
17:19
Добрый день. Заблудился в трёх соснах.

Есть некий документ (приобретение товаров и услуг). Хочу, чтобы при его проведении создавался другой документ (другого вида, допустим, заявка на расходование ДС) и проводился.
Вроде понятно: в обработку проведения вставляю это

                НовДокумент = Документы.ЗаявкаНаРасходованиеДенежныхСредств.СоздатьДокумент();
        НовДокумент.Заполнить(ЭтотОбъект.Ссылка);
        НовДокумент.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);

Документ проводится, всё хорошо, цель достигнута. Ок.

Теперь нюанс: заявка не проводится по своей логике, например, по причине превышения лимита.
Считаем это штатной ситуацией, не хотим его проводить, но хотим, чтобы основной документ, из которого это запущено - провёлся.
По факту я сейчас вылетает сообщение об ошибке (той самой - "штатной"). Сообщение касается второго документа. Процедура прервана, первый документ остался непроведённым.

Если весь этот код засунуть в "попытку - исключение" - то имею ошибку "в данной транзакции происходили ошибки" - и именно так, потому что в проведении второго документа налетаю на свои попытки-исключения... в общем, это не работает.
1 Garykom
 
гуру
28.03.23
17:22
>Хочу, чтобы при его проведении создавался другой документ (другого вида, допустим, заявка на расходование ДС) и проводился

Советую перехотеть
И сделать правильно, через запись в РС и регламентное-фоновое задание
2 lodger
 
28.03.23
17:25
(0) то что ты сделал сейчас - это запись вложенной транзакции проведения ЗНРДС внутри транзакции проведения ПТиУ.
это считается г..кодом
разведи их по времени друг за другом.
методы разные.
можно как (1). но это лишние сущности в метаданных.
можно просто запустить фоновое задание после записи с передачей ссылки ПТиУ.
3 Garykom
 
гуру
28.03.23
17:27
(2) в случае массового перепроведения доков ЗаявкаНаРасходованиеДенежныхСредств сколько фоновых у тебя породится?
4 VP6608
 
28.03.23
17:29
(1), (2) - спасибо, но стартовать фоновое задание как - опять же из этой транзакции проведения?
5 Garykom
 
гуру
28.03.23
17:29
(3) тьфу *доков ПТиУ
6 shuhard
 
28.03.23
17:30
(4) сделай РГ сведений, задания на создание Заявок на расход ДС, пиши в него чем хочешь, читай и очищай регламентным заданием
7 Garykom
 
гуру
28.03.23
17:32
(4) правильно это ссылки на первичный документ складывать в свой РС "ДокументыКОбработке"
причем не только при проведении но и при отмене тоже
затем регламентное (и порожденное им одно фоновое) по этому РС идет и "необработанные" записи обрабатывает - создает Заявки, проводит, пишет в РС статус или удаляет запись уже ненужную
8 VP6608
 
28.03.23
17:32
(6, 7) ах вот как. Подумаю, спасибо. Идею понял.
9 Garykom
 
гуру
28.03.23
17:33
(7) *проводит или отменяет проведение или даже удаляет в случае удаления первичного дока
10 lodger
 
28.03.23
17:43
(3) перед созданием ФЗ надо оценить наличие ЗНРДС по основанию ПТиУ. 1 чтение СУБД и 0 ФЗ для ложной сработки.
11 lexushka
 
28.03.23
21:55
Сейчас побьют меня, но замечу
Что мешает при проведении второго документа самостоятельно проверять проведется он или нет?
12 АгентБезопасной Нацио
 
29.03.23
10:36
(11) соотношение радиусов мешает..
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.