Фоновое проведение документа

1. Ligret 26.08.21 11:19 Сейчас в теме
Доброго времени суток,

Имеется тяжелый производственный документ с движением по куче регистров, и необходимостью многократного добавления/проведения данного документа в течении дня. Для целей оптимизации и ускорения работы, рассматриваю вариант переноса движений в модуль менеджера и вызов их через длительные операции. Проблема в том, что параметры фонового задания не поддерживают стерилизацию, но как в таком случае передать объект. Может проще использовать регламентное задание?

Буду благодарен за советы по реализации фонового проведения документов.
По теме из базы знаний
Найденные решения
6. nomad_irk 76 26.08.21 12:22 Сейчас в теме
(5)Забыли сделать

либо

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


либо

Объект.Движения.х.Записать();
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. retr0 26.08.21 11:32 Сейчас в теме
(1) Можно же ссылку отдать или параметры заполнения самого документа и все операции в фоновой процедуре с объектом проводить.
3. soft_wind 26.08.21 11:43 Сейчас в теме
а что за фигня, какие сериализуемые параметры вам нужны?
для проведения документа достаточно его Ссылки
4. retr0 26.08.21 11:56 Сейчас в теме
(3) Видимо ДокументОбъект пытался передать в фоновое, но, так нельзя.
7. ixijixi 1833 26.08.21 12:33 Сейчас в теме
(4) А почему? Есть какие-то ограничения?
8. retr0 26.08.21 12:49 Сейчас в теме
(7) Потому что нельзя передавать мутабельные объекты, это тоже самое если 2 пользователя будут редактировать 1 и тот же документ. Основной поток - пользователь1, Фоновый - пользователь2 такая примерно аналогия.
9. ixijixi 1833 27.08.21 09:06 Сейчас в теме
(8) Я имею в виду технологические ограничения. То, что вдвоем будут редактировать - это организационный момент скорее.
Мутабельный объект никуда не передается, он живет на сервере. Так что вопрос не снят)
10. retr0 27.08.21 09:09 Сейчас в теме
(9) Я тебе аналогию привел про 2 потока и 2-ух пользователей ты мне про организационные моменты начинаешь втирать.
11. ixijixi 1833 27.08.21 09:39 Сейчас в теме
(10) Извини, что побеспокоил столь уважаемого эксперта
12. FatPanzer 27.08.21 09:48 Сейчас в теме
(9) Он живет на сервере, да. Но только в пределах своего сеанса.
13. ixijixi 1833 27.08.21 10:11 Сейчас в теме
(12) Ну, в ЗУПе вполне себе передают ДокументОбъект для фонового проведения, я потому и интересуюсь.

В форме &НаСервере
ДанныеДокумента = ЗарплатаКадры.СериализоватьОбъектВДвоичныеДанные(ДокументОбъект);
В фоновом задании
ДокументОбъект = ЗарплатаКадры.ДесериализоватьОбъектИзДвоичныхДанных(ДанныеДокумента);
...
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
14. FatPanzer 27.08.21 10:14 Сейчас в теме
(13) Ну так это разные экземпляры объекта. А сериализовать-то конечно можно, но только в фоновом создании создастся новый экземпляр объекта. Ровно так же как и при обмене данных через XML.
15. ixijixi 1833 27.08.21 10:58 Сейчас в теме
(14) Спасибо. Просто в (4) безапеляционно заявляется, что ДокументОбъект нельзя передать в ФЗ. Оказывается можно, хоть и не без костылей.
16. пользователь 27.08.21 11:20
Сообщение было скрыто модератором.
...
17. пользователь 27.08.21 11:26
Сообщение было скрыто модератором.
...
18. пользователь 27.08.21 11:29
Сообщение было скрыто модератором.
...
19. spacecraft 27.08.21 11:55 Сейчас в теме
(15) нет, передать нельзя. Можно создать новый, в котором аналогичные данные.
Пример:
//ДокументОбъект1 это объект документа Документ1.
ДокументОбъект2 = ДокументОбъект.Ссылка.ПолучитьОбъект();
//Далее идет заполнение данных объекта по данным ДокументОбъект1

Так вот, ДокументОбъект2 получился не передачей ДокументОбъект1, а созданием нового объекта и заполнением данных.
Так что передачи объекта не происходит.

PS. Самое главное тут в том, что изменение Одного объекта никак не отобразится на другом. Только при записи будет вызвано исключение, если один из объектов ранее записал изменение в базу.
20. ixijixi 1833 27.08.21 12:19 Сейчас в теме
(19) Спасибо, теперь увидел разницу!
5. Ligret 26.08.21 12:19 Сейчас в теме
Передал ссылку, получил объект в модуле указано, Объект.Движения.х.Записывать = Истина;, Движение = Объект.Движения.х.Добавить(), и дальше по тексу, но движений по документу отсутствуют, что я делаю не так?
6. nomad_irk 76 26.08.21 12:22 Сейчас в теме
(5)Забыли сделать

либо

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


либо

Объект.Движения.х.Записать();
Оставьте свое сообщение

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