Имя: Пароль:
1C
1С v8
Отправка данных на сайт и запись справочника
0 1snik_d
 
18.11.20
01:14
Всем привет. Посоветуйте, как можно такое реализовать. Обработка должна один раз отправить данные, получить ответ, что отправка успешна или нет и записать эту информацию в справочник. База высоконагруженная, и иногда получается так, что данные отправились, а в справочник из-за блокировок информация не попала. Идёт повторная отправка, чего не должно быть.
1 ДенисЧ
 
18.11.20
04:43
Проверяй блокировку и пиши, пока не запишешь. Зачем второй раз слать?
2 Simod
 
18.11.20
06:44
(0) Отправка только после записи. А не наоборот.
Проблема старая. Посмотри - http://catalog.mista.ru/1c/articles/1243723/
3 1snik_d
 
18.11.20
13:53
(2) Так не получается. Мне надо во вновь создаваемый элемент справочника писать некий идентификатор, который присваивается после получения данных сайтом. А блокировка возникает в момент создания нового элемента справочника.
4 1snik_d
 
18.11.20
13:53
(1) Как-то можно проверить блокировку всей таблицы справочника?
5 ДенисЧ
 
18.11.20
13:54
(4) За попытку-исключение пока, вроде, не расстреливают...
6 Kigo_Kigo
 
18.11.20
13:54
А в чем проблема записать ответные данные в уже записанный элемент?
7 Малыш Джон
 
18.11.20
13:57
Хммм... а почему лог отправки пишется в справочник? Будет миллион отправок - будет миллион элементов в справочнике?
8 1snik_d
 
18.11.20
13:58
(7) Ну пусть это будет РС, какая сильно разница.
9 1snik_d
 
18.11.20
13:59
(5) В цикле это гонять?
10 1snik_d
 
18.11.20
13:59
(6) Потому что возникнет такая же блокировка
11 Малыш Джон
 
18.11.20
14:01
(8) ну так-то разница есть... но ладно

штош, значит писать туда, где не будет блокировок, а потом переносить данные в основное место хранения
12 Kigo_Kigo
 
18.11.20
14:03
тогда пищи в регистр сведений, там такой проблемы нет
13 1snik_d
 
18.11.20
14:06
(12) Блокировки есть везде
14 Kigo_Kigo
 
18.11.20
14:10
(13) Надо понимать, Это другое(с) :)))
15 Малыш Джон
 
18.11.20
14:12
(13) девиз настоящего одинесника?
16 Малыш Джон
 
18.11.20
14:13
(13) если блокировки есть везде, значит база в таком состоянии, что повторная отправка сообщений из-за незаписанного элемента справочника - это не самая первоочередная проблема. Мягко говоря.
17 1snik_d
 
18.11.20
14:38
(15) Написал же, что высоконагруженная БД. 100 пользователей работают, обмены постоянно.
18 1snik_d
 
18.11.20
14:39
Блокировки нечасто возникают, но приводят к проблемам дальнейшим, которые руками разгребать приходится
19 Малыш Джон
 
18.11.20
14:45
(17) ну тогда смотри (11)

заведи оперативный регистр для фиксации ответов, выдели временное окно с наименьшей загрузкой для формирования элементов справочника на основании этого регистра; то что записалось -  из регистра удаляй, то что не записалось - оставляй; регистр будет небольшой и никем, кроме этого процесса, затрагиваться не будет, блокировок по нему не будет.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший