Имя: Пароль:
1C
1С v8
Есть какой-то аналог глобальной переменной в 1С 8?
,
0 DrWeb
 
28.05.20
18:29
Как я уже писал в Как в фоновом задании узнать завершено ли проведение документа остатки при перепроведении документа изменяются 4 раза. Автоудаление движений по двум регистрам (которые меня интересуют) и затем запись новых движений в эти же регистры.

Сделал подписку на события ПередЗаписью (чтобы отследить удаляемые из документа товары) и ПриЗаписи для наборов записей по этим регистрам. Соответственно имею 8 вызовов, в которых собираю массив товаров, требующих обновления остатков во внешней системе.

Теперь вопрос: Где хранить этот массив, чтобы он был доступен во всех восьми вызовах обработчиков событий (разных объектов иначе бы заюзал ДополнительныеСвойства) и затем в фоновом задании, обновляющем остатки во внешней системе?

Напрашивается вроде ВременноеХранилище, но тогда нужно сгенерить какой-то адрес и дальше сделать его доступным во всех этих вызовах. Как? Или может быть как-то еще?
1 MyNick
 
28.05.20
18:31
Ну у тебя же полосочка длинная, должен же понимать, что этот твой огромный колосс не устоит на ногах. Меняй его на что-то более устойчивое.
2 Вафель
 
28.05.20
18:32
параметр сеанса
3 Chameleon1980
 
28.05.20
18:33
хз в константу
4 Chameleon1980
 
28.05.20
18:33
будет видно во всех сеаесах даже. для сеанса хз в (2)
5 MyNick
 
28.05.20
18:36
(4) сеанс ликвидируется в самый неудачный момент (а это точно произойдет), и все тру ляля по одному месту.
Не надо городить колхоз.
6 Волшебник
 
модератор
28.05.20
18:36
(0) Заведи план обмена
7 DrWeb
 
28.05.20
18:37
(6) К этому и склоняюсь, но думал обойтись без лишних обращений к БД
8 Волшебник
 
модератор
28.05.20
18:40
(7) Не надо городить колхоз.
9 H A D G E H O G s
 
28.05.20
18:41
Параметр сеанса для этого и создан
10 DrWeb
 
28.05.20
18:42
(8) Ок. Спасибо. Убедил )
11 DrWeb
 
28.05.20
18:45
(10) Если что-то пойдет не так и транзакция в документе завершится, а онлайн обновление упадет, то ждать когда по этим же товарам будут следующие движения можно долго, а так при следующем обмене из плана все изменения накатятся. Наверное да, так правильно.

Я правда планы обмена никогда не юзал. Пойду курить доки
12 Волшебник
 
модератор
28.05.20
18:46
(11) Ой, там легко. Создай предопределённый узел, настрой состав.
Записал регистрацию изменений, выгрузил, удалил регистрацию изменений.
13 DrWeb
 
28.05.20
18:55
(12) Со слова "Предопределенный" становится не понятно. Ну я подозреваю, что это похоже на предопределенные элементы справочников например, но я сильно от этого далёк. Что-то слышал краем уха, что они бывают ))
14 MyNick
 
28.05.20
19:20
(11) не очищай данные узла, если "обновление упадет". Прогрузишь следующим регламентом.
15 vde69
 
28.05.20
19:26
(0) однозначно ПОСЛЕДОВАТЕЛЬНОСТЬ
16 vde69
 
28.05.20
19:28
(15) +
1. в случае сбоя сразу видно и номенклатуру и регистратор
2. сразу можно включать в последовательнось документы имеющие взаимное влияние
3. удобный механизм востановления, в том числе при штатном перепроведении
17 Cyberhawk
 
28.05.20
19:43
(16) Как ты в последовательности собираешься хранить только измененную номенклатуру?
18 vde69
 
28.05.20
19:46
(17) последовательность с 1 измерением "номенклатура", ему надо контролировать удаление номенклатуры из документа, и когда удалили он хочет ее удалять в других документах. Это 100% задача для последовательности
19 Маленький Вопросик
 
28.05.20
19:48
почему константа не подойдет?
20 Cyberhawk
 
28.05.20
19:48
(18) А какие в этом случае преимущества у последовательности перед регистром сведений? Гранулярность до момента времени наверное только, по сравнению с измерением РС, где максимум только миллисекунды хранить можно. Но ведь можно в РС и сам документ точно так же схоронить.
21 Маленький Вопросик
 
28.05.20
19:49
а вообще похоже не правильно задача поставлена... городьбы много
22 vde69
 
28.05.20
19:50
хотя конечно если он делает интерфейс к внешней базе, то может логичнее будет план обменов...

на самом деле все завит от того надо где-то в других документах что-то делать или нет (например пересчитать партии во фифо)
23 vde69
 
28.05.20
19:51
(20) последовательность работает с регистратором, а РС тебе придется делать независимый. Это я к вопросу блокировок и скорости работы индексов
24 Маленький Вопросик
 
28.05.20
19:56
(23) тут вопрос еще не ясно каким рабочим способом решать, а ты уже про скорости работы индексов....
25 Маленький Вопросик
 
28.05.20
20:01
даже не через константу, наверное так можно что-то подобное... http://catalog.mista.ru/public/1142470/ (Обмен через регистр сведений)
26 DrWeb
 
28.05.20
20:56
Да не. Решил через регистр сведений. Кстати это решает проблему и с завершением транзакции.

1. Запускаю фоновое, которое раз в секунду опрашивает регистр сведений.
2. Пишу в регистр сведений с одним измерением "Номенклатура".
3. Когда фоновое что-то получило из регистра - значит и транзакция завершена и она обновляет остатки во внешней системе. Вуаля.

Осталось придумать как не запускать 8 фоновых заданий по 8 событиям. Ну положим 4 можно сразу отфильтровать это ПередЗаписью.
Остается 4 вызова ПриЗаписи. Понять сколько их будет реально 4, 2 или одно (если движения только по одному регистру и это отмена проведения) не возможно. Поэтому фоновое запускается в первом же вызове ПриЗаписи.

Но пока не понятно как не запускать новые фоновые в оставшихся вызовах ПриЗаписи если таковые будут.
27 DrWeb
 
28.05.20
21:14
А, понятно. Просто фоновое запускается событием ПередЗаписью самого документа. Оно срабатывает и при перепроведении или отмене проведения из формы списка
28 vde69
 
28.05.20
21:47
(27) не правильно, изменение регистра может быть без записи документа. Вариантов масса...

самое правильно подписка на событие ПриЗаписи у регистра, там в собитии можно отследить это удаление или запись
29 DrWeb
 
28.05.20
22:25
(28) Приведите пример изменения регистра ТоварыНаСкладах (УТ 10.3) без записи документа. Точнее без генерации события ПередЗаписью
30 DrWeb
 
28.05.20
22:26
(28) "ПриЗаписи у регистра" там идет сбор данных, проблема в том, что эти события вызываются слишком много раз для одного проведения, а мне нужно одно фоновое задание, которое подождет пока документ проведется. см. ссылку в (0) если интересно
31 vde69
 
28.05.20
22:59
(29) например типовой обмен данными с режимом загрузки движений