Имя: Пароль:
1C
1С v8
Падает 1С при попытке создания объекта методом ПрочитатьXML
,
0 Соратник
 
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
Толстый клиент, файловая версия. Файл маленький.
3 rozer76
 
05.04.21
09:45
4 Мимохожий Однако
 
05.04.21
09:47
Сделай Попытку и посмотри ОписаниеОшибки()
5 Kassern
 
05.04.21
09:48
(0) попробуй построчно прочитать, сразу будет ясно в каком месте крашется, скорее всего из-за недопустимых символов
6 Соратник
 
05.04.21
09:49
Спасибо, попробую проверить на недопустимые символы, отпишусь
7 Соратник
 
05.04.21
10:03
И в попытку/исключение взял - не выдает ошибку, крашится раньше.
И на недопустимые символы проверил - нет их. Крашится 1С.
8 Kassern
 
05.04.21
10:08
(7) Пробовал построчно читать, типо:

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

КонецЦикла;
9 Kassern
 
05.04.21
10:09
(8) это вопрос)
10 Salimbek
 
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.Закрыть();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
14 arsik
 
гуру
05.04.21
10:51
(13) У тебя в источнике и в приемнике поля не совпадают. Посмотри внимательно.
15 Соратник
 
05.04.21
10:53
(14) Приемник - это образ выгруженный из источника и отвязанный от РБД, абсолютно идентичная конфигурация.
16 Соратник
 
05.04.21
10:55
Перепроверю конечно и это. Все равно пока тупик, ну или делать через обычное создание объекта и заполнение реквизитов считывая их их XMl поочередно
17 acht
 
05.04.21
11:11
У тебя в функции "О"б это и параметр, и внутренняя переменная и результат. Уверен, что так и надо?
18 Соратник
 
05.04.21
11:14
(17) Исходный код не мой и он работал, как говорят. Но попробую переименовать.
19 Соратник
 
05.04.21
11:17
Не помогло
20 arsik
 
гуру
05.04.21
11:19
(15) Сравни конфиги. У меня такое было.
21 Соратник
 
05.04.21
11:28
(20) Выгрузил cf источника, сравнил с конфигурацией приемника - нет различий
22 arsik
 
гуру
05.04.21
11:33
(21) Только по этому объекту или полностью конфигурация идентична? Могут быть еще и общие реквизиты.
Может еще и платформы с разной совместимостью.
Для более точного определения нужно из источника и приемника по объекту выгрузить и сравнить их поля.
23 Соратник
 
05.04.21
11:37
полностью конфигурация
24 Галахад
 
гуру
05.04.21
11:38
А ЖР смотрел?
25 Salimbek
 
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 - загрузилось, никаких крашей. Но это пробная база. С реальной базой такой трюк не пройдет :(

Есть еще идеи? Гадать с новыми платформами?
28 arsik
 
гуру
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>
29 arsik
 
гуру
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 - Краш :)
32 arsik
 
гуру
05.04.21
15:49
(31) Выгрузи один объект из старой платформы и один из новой. И сравни тексты.
33 Соратник
 
05.04.21
16:23
(32) Так я один и тот же файл грузил в новой платформе (краш), в старой 8.2 - загружается.
34 arsik
 
гуру
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 гигабайт
2 + 2 = 3.9999999999999999999999999999999...