|
баг в работе 1С с ОбъектXML | ☑ | ||
---|---|---|---|---|
0
ugroblin
04.05.12
✎
17:08
|
Обмен с веб-сайтом на основе битрикса. Формируется XML, в коде такие строчки
ОбъектXML.ЗаписатьНачалоЭлемента(Имя); ОбъектXML.ЗаписатьТекст(СтрокаЗаписи); ОбъектXML.ЗаписатьКонецЭлемента(); Результат: файл обрывается на строчке <СопутствующийТовар>2ead9036-8817-11e0-a09e-940c6d895f0b</Сопутств и все! т.е. даже элемент "СопутствующийТовар" до конца не записывается. Включил отладку, ставлю точку останова с условием, дохожу до нужного товара, прохожу пошагово и... - все ОК! ошибок не выдает. Зажимаю shift+F11, опять зависает. Смотрю в ХМЛ - файл так же обрывается строчкой <СопутствующийТовар>2ead9036-8817-11e0-a09e-940c6d895f0b</Сопутств... Я так понимаю, что метод ЗаписатьКонецЭлемента дает сбой, после чего в файл физически уже ничего не пишется, однако ошибки 1С не выдает. |
|||
1
andrewks
04.05.12
✎
17:09
|
потрясающе
|
|||
2
Vladuha
04.05.12
✎
17:21
|
(0) на радостях забыл даже версию платформы написать )
|
|||
3
ugroblin
04.05.12
✎
17:27
|
(1) Вам то потрясающе, а мне надо выяснить причину и устранить. Раньше то все работало, да и товар этот в выгрузке не первый.
(2) 8.2.15.294, конфа Управление торговым предприятием для Казахстана(1.0.17.12) с доработками. Если кто сталкивался с подобной проблемой, помогите найти из-за чего так происходит. Может не там ищу? ЗаписьXML.ЗаписатьКонецЭлемента() пишет в файл сразу же или через какой-то буфер? |
|||
4
Kreont
04.05.12
✎
17:30
|
(0) Куда пишешь файл? Локально или напрямую через фтп/...?
|
|||
5
Лоботряс
04.05.12
✎
17:31
|
Может место кончилось? Так, внезапно:)
|
|||
6
КМ155
04.05.12
✎
17:35
|
(3)[СопутствующийТовар]
и ведь сидит в название не читаемый символ и гадит |
|||
7
andrewks
04.05.12
✎
17:36
|
(4) "или напрямую через фтп" а это как?
|
|||
8
andrewks
04.05.12
✎
17:36
|
(3) 1. ну це ж очевидно, что у тебя где-то ошибка в алгоритме, или в данных
|
|||
9
Лоботряс
04.05.12
✎
17:36
|
(6)А почему тогда Начало элемента записалось?
|
|||
10
Kreont
04.05.12
✎
17:38
|
(7) указав фтп-адрес/папку/логин/пароль )
+(4) Просто если через фтп/ и т.п., а "раньше работало", возможно провайдер менял MTU, и могут быть глюки с передачей/обрывы. Попробуй файл создать локально и проверить его. |
|||
11
ugroblin
04.05.12
✎
17:40
|
(4) Локально.
(5) Места валом. Разрешения есть, файл создается. Посмотрел, потестил. ЗаписьХМЛ пишет блоками. Фактически записывается на диск либо методом Закрыть(), либо по достижении какого-то объема. Видимо где-то в новом формируемом блоке оказываются неверные данные, и при попытке записать их платформа тихо умирает. (8) В алгоритме вряд ли. там мало вносилось изменений. Видимо дело в данных. |
|||
12
andrewks
04.05.12
✎
17:41
|
(10) чё ты мне втираешь? ну-ка покажи пример, может, я чё не знаю
|
|||
13
andrewks
04.05.12
✎
17:42
|
сделай трассировку, чтобы видеть, какой последний элемент записался
|
|||
14
andrewks
04.05.12
✎
17:45
|
(11) 3. да запросто. просто некоторые участки алгоритма могли не отрабатывать на одних данных, но оказались задействованы при другом наборе данных. или, наоборот, оказался не выполненным некоторый код
|
|||
15
Kreont
04.05.12
✎
17:56
|
(12) ну не знаю у меня есть такое:
Конф.Бух.: Обмен по организации: настройки обмена: Обмен через FTP ресурс. и там поля: путь,порт, пасс режим и т.п. и как ни странно работало. |
|||
16
andrewks
04.05.12
✎
17:58
|
(15) и что? и где ты там запись файла на фтп кусками нашёл?
|
|||
17
Kreont
04.05.12
✎
18:04
|
(16) На ФТП кусками не пробовал (хотя вот вижу еще есть поле макс.размер, надо будет посмотреть что там:), о таком и не вспоминал, я вот о чем
при изменение MTU провайдером -> очень часто следуют глюки при передаче записи файла через фтп. Но у ТС локально, тогда или (6) или вирус. (0) еще для теста выгрузку сделай без указанного товара. |
|||
18
andrewks
04.05.12
✎
18:11
|
а я, всё-таки, поставлю на прерывание выполнения алгоритма записи хмл из-за ошибки. ибо (6) слишком узко, и не уверен, что из-за этого будет вылетать. хотя, конечно, смотря какой символ попадётся
|
|||
19
Kreont
04.05.12
✎
18:24
|
я поставлю на символ "&" в наименовании :)
|
|||
20
ugroblin
04.05.12
✎
18:24
|
Теперь я просто в шоке.
Ставлю точку останова, начиная с нее через f10 пробегаю до самого конца - все ОК. Запускаю заново, после попадания на точку останова жму shift F11 - зависает. Явно где-то не успевает очиститься стек. |
|||
21
ugroblin
04.05.12
✎
18:27
|
(20) ждал 15 минут для обработки. При том, что через Ф10 минут за 7 пробежал.
|
|||
22
andrewks
04.05.12
✎
18:36
|
(19) ты проиграл заранее
|
|||
23
ugroblin
04.05.12
✎
18:39
|
Надо же, такая засада в вечер пятницы. Ушел домой думать о тех кто писал платформу.
|
|||
24
andrewks
04.05.12
✎
18:41
|
(23) у них и так много грехов. не надо им приписывать ещё и несуществующие
|
|||
25
etc
04.05.12
✎
21:25
|
(0)
пиши в строку и потом отладчиком посмотришь че там получилось: ОбъектXML.УстановитьСтроку(); ОбъектXML.ЗаписатьНачалоЭлемента(Имя); ОбъектXML.ЗаписатьТекст(СтрокаЗаписи); ОбъектXML.ЗаписатьКонецЭлемента(); ТекстXML = ОбъектXML.Закрыть(); Файл = Новый ЗаписьXML; Файл.ОткрытьФайл("someshit.xml", "windows-1251"); Файл.ЗаписатьОбъявлениеXML(); Файл.ЗаписатьБезОбработки(ТекстXML); |
|||
26
ugroblin
07.05.12
✎
15:24
|
Причина была в данных. ХТМЛ вставки (некорректные) в описании товара, причем не того на котором обрывалась запись, а через десяток товаров. Если бы методы у ЗаписьXML реально записывали бы данные в файл в момент совершения, то отыскать было бы намного легче.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |