Имя: Пароль:
1C
1С v8
При записи или обработка проведения?
0 andryscha1c
 
31.03.21
10:31
Есть потребность отправлять данные документов одного вида из одной базы в другую. Логично это делать тогда когда ссылка в базе данных сформируется, это значит в событии при записи и обработка проведения. Где правильней разместить HHTP запрос на отправку данных проводимого документа? Замечу что параметр режим записи есть только у события перед записью. Склоняюсь к обработке проведения, что бы гарантированно отправить только данные проводимого документа.
1 Волшебник
 
31.03.21
10:32
Надо регистрировать в плане обмена, потом регламентным заданием отправлять изменения.
2 andryscha1c
 
31.03.21
10:35
(1) плана обмена нет, просто произвольная отправка данных документов одного вида посредством hhtp запроса. ЕСть вариант разместить это в регламентные задания и там каждую минуту делать отправку.
3 Волшебник
 
31.03.21
10:39
(2) создайте план обмена
4 andryscha1c
 
31.03.21
10:42
(3) и обмениваться через xml файл?)
5 Волшебник
 
31.03.21
10:43
(4) Обмениваться точно так же через HTTP-запрос.
План обмена нужен для регистрации изменений и быстрого выполнения рег.задания каждые N минут.
6 acht
 
31.03.21
10:43
(0) > Склоняюсь к обработке проведения
Что ты будешь делать, если последующая подписка на событие отменит транзакцию, а ты уже радостно запихал данные в другую систему?
7 acht
 
31.03.21
10:44
Или транзакция просто поломается сразу после отправки...
8 fisher
 
31.03.21
10:50
(4) Планы обмена не имеют отношения к транспорту обмена. Это просто механизм регистрации изменений. А отправлять уже будешь в своем регламентном задании по http. В транзакции записи это делать плохо по двум основным причинам:
- сбои связи приведут к невозможности проводить документы
- возникает гемор с корректной фиксацией распределенной транзакции (ведь она может откатиться на любой стороне).
9 DGorgoN
 
31.03.21
10:52
Да и вопрос тормоза при проведении тоже есть.
10 andryscha1c
 
31.03.21
10:53
(8) документ создается программно и запись происходит через "попытку", что если после записи программной в удачной попытке отправить его?
11 andryscha1c
 
31.03.21
10:54
попытка        
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
//тут отправитьего
исключение
конецпопытки
12 fisher
 
31.03.21
10:56
(11) Это упрощает. Только не попытка нужна а транзакция. Чтобы при неудачной отправке можно было ее откатить. Но я бы все равно делал через план обмена и регламент. Это более гибкое и надежное решение.
13 andryscha1c
 
31.03.21
10:59
(12) (3) да но с планом обмена придется скорее повозиться дольше =)
14 fisher
 
31.03.21
10:59
Хотя, если это чисто утилитарная фигня, которая не помешает оперативной работе если станет колом, то можно и так.
15 Волшебник
 
31.03.21
11:01
(13) Оно окупится.
16 fisher
 
31.03.21
11:01
(13) Не. Там очень просто. Грубо говоря активированный план обмена просто пишет табличку изменений, а ты в регламенте ее обходишь, отправляешь и чистишь.
17 fisher
 
31.03.21
11:04
Точнее не табличку изменений, а табличку измененных с прошлого сеанса обмена документов (ведь ты ее будешь зачищать при отправке изменений).
18 andryscha1c
 
31.03.21
11:08
(15) (17) спасибо коллеги =)