Имя: Пароль:
1C
1С v8
ЗаписатьJSON в фоновом задании
,
0 ДенисЧ
 
06.10.21
17:42
Коллеги, хелп.
То ли лыжи, то ли я...

БП2 Корп
Есть примитивный код

// Новая запись - строка в ТЧ, выгруженная из РС КонтактнаяИнформация

// копируем строку в структуру
копияЗаписи = Новый Структура;
Для Каждого кол из новаяЗапись.Владелец().Колонки Цикл
    копияЗаписи.Вставить(кол.Имя, новаяЗапись[кол.Имя]);
КонецЦикла;

стАдрес = РаботаСАдресами.БГУ_СтруктураАдресаВСтруктуруJSON(копияЗаписи); // Типовая функция, модуль на поддержке и замке

Тут стАдрес - структура, частично заполненная.

Потом

зап = Новый ЗаписьJSON;
зап.УстановитьСтроку();
ЗаписатьJSON(зап, стАдрес);

И вот тут начинается.
В клиентском режиме (запускаем руками, уходим на сервер, там этот код выполняется) всё хорошо, всё красиво.

Потом этот код начинает вызываться из фонового задания и вылетает ошибка
Ошибка при вызове метода контекста (ЗаписатьJSON): Передано значение недопустимого типа

Непечатных символов в структуре нет, проверили. Беда в том, что не можем этот вызов фонового поймать отладчиком, приходится печатью...

Что это может быть такое?
1 pechkin
 
06.10.21
17:44
сделай в попытке + в исключении логгируй полный состав стАдрес
2 pechkin
 
06.10.21
17:44
а может там вообще неопределено?
3 Topol-M
 
06.10.21
17:49
Может эту структуру временно в xml запихать для наглядности и посмотреть что в ней.
4 PLUT
 
06.10.21
17:50
(0) вот тут про NULL и Неопределено что-то

ЗаписатьJSON. Передано значение недопустимого типа
5 PLUT
 
06.10.21
17:51
6 ДенисЧ
 
06.10.21
17:51
(1) "Непечатных символов в структуре нет, проверили" Уже сделано.
(2) А что, неопределено не jsonится? Так в клиентском же работает.
7 Kassern
 
06.10.21
17:52
(0) а в чем проблема отладкой поймать фоновое задание?
8 ДенисЧ
 
06.10.21
17:53
(5) Не, там про NULL. А тут его тупо е может быть.
(7) Там через shop'у оно вызывается, не ловится пока.

Если только принудительно пробежать и проверить на неопределено... Но почему тогда на тех же данных в ручном режиме работает?
9 pechkin
 
06.10.21
17:57
(6)а как ты определил по какому объекту идет ошибка?
10 ДенисЧ
 
06.10.21
17:58
(9) А в системе, которая валит данные, можно отослать один объект. И да, получить пакет, который валится в обмен, тоже можно получить и даже (!!) сохранить в файл в том же формате, что и прилетает к записи.
11 pechkin
 
06.10.21
17:59
в ручном режиме вызов на сервере?
12 Kassern
 
06.10.21
17:59
вот вам в помощь) https://its.1c.ru/db/edtdoc/content/10410/hdoc
13 Ёпрст
 
06.10.21
17:59
(0) а там точно структура то возвращается с аботаСАдресами.БГУ_СтруктураАдресаВСтруктуруJSON(копияЗаписи) ?
14 pechkin
 
06.10.21
18:01
да не нужно фоновое отлаживать, достаточно на сервере запустить
15 Ёпрст
 
06.10.21
18:01
ну и воткни в код запись структуры в файл какой нить рекурсивной выборкой. если там вложенные структуры есть
16 ДенисЧ
 
06.10.21
18:03
(11) Ммм... А в чём проблема?
(13) да
(!5) Там два массива есть со структурами. Но это опять же в ручном режиме проходит.
17 Garykom
 
гуру
06.10.21
18:05
(0) уже проверил на другой базе и на другом сервере да?
18 pechkin
 
06.10.21
18:05
(16) так с сервера или нет?
19 Ёпрст
 
06.10.21
18:06
(16) ну значит в структуре есть значение недопустимого типа )))
выведи в файлик значение и тип :)
20 pechkin
 
06.10.21
18:06
(17) чем другая база поможет?
21 Garykom
 
гуру
06.10.21
18:06
(20) баг это или фича понять
22 ДенисЧ
 
06.10.21
18:06
(17) А для этого нужно найти свободный другой сервер и развернуть на нём три системы )))
Кто ж мне это даст?
(18) с клиента вызывается чисто серверный модуль и да, выполняется на сервере.
23 Garykom
 
гуру
06.10.21
18:07
(22) эээ какие три системы?
24 ДенисЧ
 
06.10.21
18:08
(23) Обмена, разумеется. Одна источник, вторая среда-передатчик, третья - получатель. Это чтобы чистый эксперимент был.
25 Garykom
 
гуру
06.10.21
18:09
Все же фоновые в отладчик и остановку по ошибке этой
26 pechkin
 
06.10.21
18:11
А с клиента запускаешь процедуру фонового?
27 ДенисЧ
 
06.10.21
18:12
И тут мне внезапно пришла в голову мысль, что отладчик не поможет )))
Код загрузки лежит в РС и выполняется через Выполнить(). Так что отладчик не поможет...
28 ДенисЧ
 
06.10.21
18:12
(26) Нет. Серверную процедуру.
29 pechkin
 
06.10.21
18:13
(28) я имел ввиду туже процедуру что и фоновое.
если ничто не помогает, то (1)
30 ДенисЧ
 
06.10.21
18:14
(29) ту же, пятый (? лень считать) повторяю.
31 Garykom
 
гуру
06.10.21
18:17
(27) а ты уверен что нужный код выполняется?
32 Ёпрст
 
06.10.21
18:19
давно бы уже закодил получение лога, делов то..демоническое обновление рулит жешь.
33 Ёпрст
 
06.10.21
18:20
можно и в ЖР нафлудить..
34 pechkin
 
06.10.21
18:20
(32) там код вообще в регистре лежит
35 pechkin
 
06.10.21
18:22
Что-то сегодня у всех помощники нашептывают: полтергейстов нет, а просто "косяк платформы 100%"
36 Ёпрст
 
06.10.21
18:26
(34) тем более, проверить ышо быстрее
37 pechkin
 
06.10.21
18:27
(36) сначала надо на мисте потрещать
38 pechkin
 
06.10.21
18:27
потом статью запилить
39 Garykom
 
гуру
06.10.21
18:29
(32) там код в РС лежит и через Выполнить()
хотя бы сам код в файл писать при запуске
ну и туда же лог
40 pechkin
 
06.10.21
18:30
в жр можно записать ЗначениеВСтрокуВнутр(стАдрес )
на клиенте достать и расшифровать
41 ДенисЧ
 
06.10.21
18:52
(31) Да.
42 ДенисЧ
 
06.10.21
18:53
(36) Ага, быстрей ))) вызвонить человека, который в первой изменение внесёт, потом второго, чтобы тот проследил ход выполениия и вытащил обишки...
А у них ещё куча своих дел есть...
43 polosov
 
06.10.21
18:56
Не понимаю, что мешает сделать как (1)
44 ДенисЧ
 
06.10.21
19:01
(43) Читай (42) ))))

В общем, нашёл вызов УправлениеКонтактнойИнформациейСлужебный.СтруктураВСтрокуJSON(), завтра попробуем.
Там как раз чистка идёт специально для адресов.
45 Ёпрст
 
06.10.21
19:03
(42) вот-вот.. не гонялся бы ты поп за дешевизной..т.е халтурой.
Нефик другим помогать :)
46 ДенисЧ
 
06.10.21
19:05
(45) Что значит "другим помогать"? Мы работаем в одной конторе, у них одна зона ответственности, у меня другая.
И я вообще-то так просто в базы, за которые отвечаю, других не пускаю...
47 Ёпрст
 
06.10.21
19:08
(46) Странно, что у тебя нет доступа к этим базам, чтоб покодить, думал, ты халтуришь на стороне ...
48 ДенисЧ
 
06.10.21
20:01
(47) Если у меня будет доступ ко всем базам в холдинце - я повешусь.
49 pechkin
 
06.10.21
20:17
С какого х... ты занимаешься этим вопросом?
50 ДенисЧ
 
06.10.21
20:19
(49) Забавный вопрос.... Наверное, потому что это моя работа?
51 pechkin
 
06.10.21
20:37
(50) чинить базы к которым нет доступа?
52 ДенисЧ
 
06.10.21
20:38
(51) Чинить загрузчик, который работает в моих базах.
Чуйствуешь разницу?
53 pechkin
 
06.10.21
20:50
Базы мои, но доступа у меня к ним нет
54 Garykom
 
гуру
07.10.21
12:02
Как там лыжи? Мазь помогла?
55 ДенисЧ
 
07.10.21
12:03
(53) Ты не вкурил.
(54) да, та функция сработала как надо.
56 Kassern
 
07.10.21
12:05
а в чем проблема то была в итоге?
57 Почему 1С
 
07.10.21
12:14
ЗаписатьJSON(зап, стАдрес); обернуть функцией общего модуля, заменить функцию на обертку, в обертке поставить точку останова и все равно что код выполняется через выполнить поймаем
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс