Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Падает 1С при попытке создания объекта методом ПрочитатьXML

Падает 1С при попытке создания объекта методом ПрочитатьXML
Я
   Соратник
 
05.04.21 - 09:40
Выгружаю элементы плана обмена из одной базы в другую. Конфигурации идентичны (1С-Рарус:ТКПТ). Падает 1С на строке Об=ПрочитатьXML(ЧтениеXML);
Пробовал на платформе 8.3.15.2107 и 8.3.16.1876, одинаково - вылет 1С.
По отладчику вижу, что из файла данные получены, вижу значения реквизитов, но, видимо, в сам момент инициализации объекта происходит какой-то глюк.
Подскажите, может кто-то сталкивался? В чем может быть проблема или как можно обойти?


Функция ПолучитьОбъектИзXML(Об)
    Текст = Новый ТекстовыйДокумент;
    Текст.УстановитьТекст(Об);
    ИмяВФ = ПолучитьИмяВременногоФайла();
    Текст.Записать(ИмяВФ);
    
    ЧтениеXML=Новый ЧтениеXML;
    ЧтениеXML.ОткрытьФайл(ИмяВФ);
    Об=ПрочитатьXML(ЧтениеXML);
    ЧтениеXML.Закрыть();
    
    Возврат Об;
КонецФункции
   МимохожийОднако
 
1 - 05.04.21 - 09:43
на сервере или на клиенте читаешь? Файл какой величины?
   Соратник
 
2 - 05.04.21 - 09:44
Толстый клиент, файловая версия. Файл маленький.
   rozer76
 
3 - 05.04.21 - 09:45
   МимохожийОднако
 
4 - 05.04.21 - 09:47
Сделай Попытку и посмотри ОписаниеОшибки()
   Kassern
 
5 - 05.04.21 - 09:48
(0) попробуй построчно прочитать, сразу будет ясно в каком месте крашется, скорее всего из-за недопустимых символов
   Соратник
 
6 - 05.04.21 - 09:49
Спасибо, попробую проверить на недопустимые символы, отпишусь
   Соратник
 
7 - 05.04.21 - 10:03
И в попытку/исключение взял - не выдает ошибку, крашится раньше.
И на недопустимые символы проверил - нет их. Крашится 1С.
   Kassern
 
8 - 05.04.21 - 10:08
(7) Пробовал построчно читать, типо:

Чтение.ОткрытьФайл("c:/docs/data.xml");
Пока Чтение.Прочитать() Цикл
    // Обработка узла XML


КонецЦикла;
   Kassern
 
9 - 05.04.21 - 10:09
(8) это вопрос)
   Salimbek
 
10 - 05.04.21 - 10:11
(0) Сделай не временный файл, а конкретное имя, например c:\papka\file.xml
и пиши данные туда.
Соответственно, в момент крашинга у тебя в этом файле и будут данные, приводящие к падению 1С-ки.
   Галахад
 
11 - 05.04.21 - 10:21
(0) А откуда этот "Об" прилетает?
   Соратник
 
12 - 05.04.21 - 10:31
(11) Об - это строка вида:

<ExchangePlanObject.УдаленныеПодразделения>
    <Ref>53785123-4372-11de-881c-00226442fa37</Ref>
    <DeletionMark>false</DeletionMark>
    <Code>ОБ   </Code>
    <Description>Облпо Кооператор</Description>
    <SentNo>28</SentNo>
    <ReceivedNo>20</ReceivedNo>
    <ПодразделениеКомпании>2179abb9-0d37-11de-b0b5-001a4d59032f</ПодразделениеКомпании>
    <СпособОбмена>0</СпособОбмена>
    <КаталогОбмена/>
    <АдресЭлектроннойПочты/>
    <СерверSMTP/>
    <ПортSMTP>0</ПортSMTP>
    <ПользовательSMTP/>
    <ПарольSMTP/>
    <СерверPOP3/>
    <ПортPOP3>0</ПортPOP3>
    <ПользовательPOP3/>
    <ПарольPOP3/>
    <ПрофильMAPI/>
    <ПарольMAPI/>
    <СерверFTP>192.168.0.51</СерверFTP>
    <ПортFTP>21</ПортFTP>
    <ПользовательFTP>RarusRBD_CB</ПользовательFTP>  ...... и так далее
   Соратник
 
13 - 05.04.21 - 10:35
Вот так не крашится, падает если раскоментировать строку создания объекта.

    Текст = Новый ТекстовыйДокумент;
    Текст.УстановитьТекст(Об);
    ИмяВФ = ПолучитьИмяВременногоФайла();
    ИмяВФ = "E:\DataExchange\123.xml";
    Текст.Записать(ИмяВФ);
    
    Попытка
        ЧтениеXML=Новый ЧтениеXML;
        ЧтениеXML.ОткрытьФайл(ИмяВФ);
        Пока ЧтениеXML.Прочитать() Цикл
            // Обработка узла XML

            Сообщить(ЧтениеXML.Имя);
        КонецЦикла;        
        //Об=ПрочитатьXML(ЧтениеXML);

        ЧтениеXML.Закрыть();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
   arsik
 
14 - 05.04.21 - 10:51
(13) У тебя в источнике и в приемнике поля не совпадают. Посмотри внимательно.
   Соратник
 
15 - 05.04.21 - 10:53
(14) Приемник - это образ выгруженный из источника и отвязанный от РБД, абсолютно идентичная конфигурация.
   Соратник
 
16 - 05.04.21 - 10:55
Перепроверю конечно и это. Все равно пока тупик, ну или делать через обычное создание объекта и заполнение реквизитов считывая их их XMl поочередно
   acht
 
17 - 05.04.21 - 11:11
У тебя в функции "О"б это и параметр, и внутренняя переменная и результат. Уверен, что так и надо?
   Соратник
 
18 - 05.04.21 - 11:14
(17) Исходный код не мой и он работал, как говорят. Но попробую переименовать.
   Соратник
 
19 - 05.04.21 - 11:17
Не помогло
   arsik
 
20 - 05.04.21 - 11:19
(15) Сравни конфиги. У меня такое было.
   Соратник
 
21 - 05.04.21 - 11:28
(20) Выгрузил cf источника, сравнил с конфигурацией приемника - нет различий
   arsik
 
22 - 05.04.21 - 11:33
(21) Только по этому объекту или полностью конфигурация идентична? Могут быть еще и общие реквизиты.
Может еще и платформы с разной совместимостью.
Для более точного определения нужно из источника и приемника по объекту выгрузить и сравнить их поля.
   Соратник
 
23 - 05.04.21 - 11:37
полностью конфигурация
   Галахад
 
24 - 05.04.21 - 11:38
А ЖР смотрел?
   Salimbek
 
25 - 05.04.21 - 11:44
(13) И что у тебя в файле: E:\DataExchange\123.xml после краха?
Вот то, что в (12) ?
   Соратник
 
26 - 05.04.21 - 11:48
(25) Да, то что в (12)
   Соратник
 
27 - 05.04.21 - 13:10
Переконвертировал базу приёмник под платформу 8.2.19.130 - загрузилось, никаких крашей. Но это пробная база. С реальной базой такой трюк не пройдет :(

Есть еще идеи? Гадать с новыми платформами?
   arsik
 
28 - 05.04.21 - 13:41
Вот пример из 8.3.18

<?xml version="1.0" encoding="UTF-8"?>
<IRData xmlns:core="http://v8.1c.ru/data" xmlns:v8="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <v8:ExchangePlanObject.ахОбменПоWebСервису>
        <v8:Ref>582a1289-7db7-11eb-902e-8c4325c90a8e</v8:Ref>
        <v8:DeletionMark>false</v8:DeletionMark>
        <v8:Code>123</v8:Code>
        <v8:Description>123 Обмен</v8:Description>
        <v8:SentNo>0</v8:SentNo>
        <v8:ReceivedNo>0</v8:ReceivedNo>
        <v8:Идентификатор>0e0ca921-ce68-4ada-aba5-6aede4fcc8af</v8:Идентификатор>
        <v8:НастройкаПодключения xsi:type="v8:CatalogRef.НастройкиПодключенияКБазамДанных">582a1288-7db7-11eb-902e-8c4325c90a8e</v8:НастройкаПодключения>
        <v8:ДатаНачалаУчета>2021-01-01T00:00:00</v8:ДатаНачалаУчета>
        <v8:ФильтрПоСкладам>
            <v8:СкладКомпании xsi:type="v8:CatalogRef.СкладыКомпании">47b97432-4867-11e4-ad27-e41f13fe4242</v8:СкладКомпании>
            <v8:Организация xsi:type="v8:CatalogRef.Организации">ab7a803e-8323-11eb-a215-e41f13fe3f98</v8:Организация>
        </v8:ФильтрПоСкладам>
        <v8:ФильтрПоСкладам>
            <v8:СкладКомпании xsi:type="v8:CatalogRef.СкладыКомпании">28cde8ad-7169-11e9-a249-40f2e911b515</v8:СкладКомпании>
            <v8:Организация xsi:type="v8:CatalogRef.Организации">119bc5bd-8324-11eb-a215-e41f13fe3f98</v8:Организация>
        </v8:ФильтрПоСкладам>
        <v8:ФильтрПоСкладам>
            <v8:СкладКомпании xsi:type="v8:CatalogRef.СкладыКомпании">c8be551f-6b22-11e4-943a-e41f13fe4242</v8:СкладКомпании>
            <v8:Организация xsi:type="v8:CatalogRef.Организации">f557b12d-8323-11eb-a215-e41f13fe3f98</v8:Организация>
        </v8:ФильтрПоСкладам>
        <v8:ФильтрПоСкладам>
            <v8:СкладКомпании xsi:type="v8:CatalogRef.СкладыКомпании">ecb454f5-64f7-11e4-a172-e41f13fe4242</v8:СкладКомпании>
            <v8:Организация xsi:type="v8:CatalogRef.Организации">e0d80a41-8323-11eb-a215-e41f13fe3f98</v8:Организация>
        </v8:ФильтрПоСкладам>
        <v8:ФильтрПоСкладам>
            <v8:СкладКомпании xsi:type="v8:CatalogRef.СкладыКомпании">3404ac15-65e9-11e5-95fc-e41f13fe4242</v8:СкладКомпании>
            <v8:Организация xsi:type="v8:CatalogRef.Организации">ab7a803e-8323-11eb-a215-e41f13fe3f98</v8:Организация>
        </v8:ФильтрПоСкладам>
    </v8:ExchangePlanObject.ахОбменПоWebСервису>
</IRData>

   arsik
 
29 - 05.04.21 - 13:46
+(28) Хотя другой обработкой примерно как у тебя
        <ExchangePlanObject.ахОбменПоWebСервису>
            <Ref>9b0fdfcb-775a-11eb-a3dd-04d9f5ad1847</Ref>
            <DeletionMark>false</DeletionMark>
            <Code>123</Code>
            <Description>123 Обмен</Description>
            <SentNo>0</SentNo>
            <ReceivedNo>0</ReceivedNo>
            <Идентификатор>259ecc78-9315-4f24-ba85-5f2b2a4ed4fc</Идентификатор>
            <НастройкаПодключения>7c28c813-7a95-11eb-a3e1-04d9f5ad1847</НастройкаПодключения>
            <ДатаНачалаУчета>0001-01-01T00:00:00</ДатаНачалаУчета>
            <ФильтрПоСкладам>
                <Row>
                    <СкладКомпании>47b97432-4867-11e4-ad27-e41f13fe4242</СкладКомпании>
                    <Организация>19a4b7b7-29ba-11da-b88b-505054503030</Организация>
                </Row>
                <Row>
                    <СкладКомпании>65831242-f65d-11e0-8032-e61f13fe4247</СкладКомпании>
                    <Организация>19a4b7b7-29ba-11da-b88b-505054503030</Организация>
                </Row>
                <Row>
                    <СкладКомпании>b59d76e3-9a1f-11e4-80bc-e41f13fe4242</СкладКомпании>
                    <Организация>b8c098b8-0384-11e9-8293-e41f13798384</Организация>
                </Row>
            </ФильтрПоСкладам>
            <ФильтрПоНоменклатуре/>
            <КонтрагентыПланПриемки/>
        </ExchangePlanObject.ахОбменПоWebСервису>

   Соратник
 
30 - 05.04.21 - 13:51
8.3.18.1363 скачал, устанавливаю, попробую на нём
 
 Рекламное место пустует
   Соратник
 
31 - 05.04.21 - 13:53
8.3.18.1363 - Краш :)
   arsik
 
32 - 05.04.21 - 15:49
(31) Выгрузи один объект из старой платформы и один из новой. И сравни тексты.
   Соратник
 
33 - 05.04.21 - 16:23
(32) Так я один и тот же файл грузил в новой платформе (краш), в старой 8.2 - загружается.
   arsik
 
34 - 05.04.21 - 16:31
(32) А я тебе говорю, выгрузи и сравни.
   Масянька
 
35 - 05.04.21 - 17:27
(33) В журнале винды есть что?
   Масянька
 
36 - 05.04.21 - 17:29
+ (35) Хотя, если это Рарус... Им писал? Рарусу.
   Соратник
 
37 - 05.04.21 - 17:40
(35) ничего интересного... (36) там с поддержкой сейчас швах какой-то, посоветовали перейти на 8.2 - загрузить, а потом обратно :) База под 70 гигов, только выгрузка в DT идет часов 10 :) - совсем не вариант.

Сейчас пошел "по тупому", парсение XML и создание объекта обычным способом, почти доделал... Время просто уходит, а работы много нужно успеть.
   Соратник
 
38 - 06.04.21 - 10:50
В размерах базы ввел в заблуждение :) почти 700 гигабайт


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.