Имя: Пароль:
1C
 
Учусь делать частичную загрузку конфигурации из файлов
0 TormozIT
 
гуру
08.07.17
14:50
Задача - выгрузить один объект метаданных (обработку) конфигурации в файлы и загрузить его обратно на платформе 8.3.10.

Как пробовал (варианты)
1. Выгрузил конфигурацию в файлы с отбором по полному имен объекта метаданных. При загрузке, используя ключ listFile или Files и указанием единственного файла XML, получаю ошибку "Ошибка добавления объекта DataProcessor uuid="f92e2207-3be1-4bc8-ad45-59c16eba1c63" : нельзя добавлять объекты метаданных без загрузки родительского объекта."
2. Выгрузил конфигурацию в файлы с отбором по полному имен объекта метаданных и имени корня конфигурации. При загрузке, используя ключ listFile или Files и указание всех файлов xml в папке выгрузки, получаю ошибку "Файл - Configuration.xml: ошибка частичной загрузки - идентификатор ada14b12-452d-4f85-9d71-99554e8fc6c0 загружаемой конфигурации отличается от идентификатора 51b18189-52ce-47d5-aa86-44d00c7a17c8 сохраненной конфигурации"

Вот код для обоих вариантов (отличие в закомментированной строке)

ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстСпискаОбъектовКонфигурации = "";
//ТекстСпискаОбъектовКонфигурации = ТекстСпискаОбъектовКонфигурации + Метаданные.ПолноеИмя() + Символы.ПС; // Тут добавляется корень конфигурации
ТекстСпискаОбъектовКонфигурации = ТекстСпискаОбъектовКонфигурации + Метаданные.Обработки.ирПлатформа.ПолноеИмя();
ИмяФайлаСпискаВыгрузки = ПолучитьИмяВременногоФайла("txt");
ТекстовыйДокумент.УстановитьТекст(ТекстСпискаОбъектовКонфигурации);
ТекстовыйДокумент.Записать(ИмяФайлаСпискаВыгрузки);
КаталогВыгрузкиКонфигурации = ПолучитьИмяВременногоФайла();
СоздатьКаталог(КаталогВыгрузкиКонфигурации);
ТекстЛога = "";
Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/DumpConfigToFiles """ + КаталогВыгрузкиКонфигурации + """ -listFile """ + ИмяФайлаСпискаВыгрузки + """ -Format Plain",
    СтрокаСоединенияИнформационнойБазы(), ТекстЛога, , "Выгрузка конфигурации в файлы");
УдалитьФайлы(ИмяФайлаСпискаВыгрузки);
Если Не Успех Тогда
    УдалитьФайлы(КаталогВыгрузкиКонфигурации);
    Сообщить(ТекстЛога);
    Перейти ~Конец;
КонецЕсли;
ФайлыДляЗагрузки = НайтиФайлы(КаталогВыгрузкиКонфигурации, "*.xml");

ИменаФайлов = Новый Массив;
Для Каждого Файл Из ФайлыДляЗагрузки Цикл
    ИменаФайлов.Добавить(Файл.ПолноеИмя);
КонецЦикла;
СтрокаИменФайловЗагрузки = ирОбщий.ПолучитьСтрокуСРазделителемИзМассиваЛкс(ИменаФайлов, ",");
Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/LoadConfigFromFiles """ + КаталогВыгрузкиКонфигурации + """ -Files """ + СтрокаИменФайловЗагрузки + """ -Format Plain", , ТекстЛога,
    , "Загрузка конфигурации из файлов");
    
УдалитьФайлы(КаталогВыгрузкиКонфигурации);
Если Не Успех Тогда
    Сообщить(ТекстЛога);
КонецЕсли;

Как правильно использовать частичную загрузку конфигурации из файлов?
1 Cyberhawk
 
08.07.17
15:33
Имя какого-нибудь объекта МД (в файле) может превышает 80 символов?
2 TormozIT
 
гуру
08.07.17
16:12
(1) Видимо речь про имя объект в имени файла. Полная загрузка проходит без проблем. Поэтому думаю проблема не в этом.
3 Cyberhawk
 
08.07.17
16:17
(2) Загружать пробовал и через указание строки (Files), и через файлик (listFile)?
В коде у тебя загрузка по первому варианту реализована, во второс варианте поведение такое же?
4 TormozIT
 
гуру
08.07.17
16:20
(3) Да
5 TormozIT
 
гуру
08.07.17
16:25
От выбора объекта метаданных проблема не зависит. Пробовал на разных.
6 TormozIT
 
гуру
08.07.17
16:27
Правильным кажется только 2-й вариант, т.к. у первого варианта достаточно логичное сообщение об ошибке.
7 TormozIT
 
гуру
08.07.17
16:29
А вот сообщение об ошибке во втором варианте кажется очень странным и там каждый раз меняется второй GUID

Файл - Configuration.xml: ошибка частичной загрузки - идентификатор ada14b12-452d-4f85-9d71-99554e8fc6c0 загружаемой конфигурации отличается от идентификатора <Тут GUID каждый раз новый> сохраненной конфигурации
8 Cyberhawk
 
08.07.17
16:30
Разные релизы платформы попробовал уже?
9 TormozIT
 
гуру
08.07.17
16:32
(8) Нет. Нужно чтобы работало на 8.3.10 =)
10 TormozIT
 
гуру
08.07.17
16:34
Пробовал на чистой конфигурации с одним минимальным объектом "Справочник.Справочник1"
11 Cyberhawk
 
08.07.17
16:36
(9) Я имел в виду на разных версиях 8.3.10 (ну там 2375, 2466 всякие)
12 TormozIT
 
гуру
08.07.17
16:41
(11) Смысла не вижу, т.к. знаю какие там (в 2466) ошибки исправлялись.
13 Klesk666
 
08.07.17
17:18
а ctrl+c ctrl+v не вставляет? )
14 TormozIT
 
гуру
08.07.17
17:35
Если объект метаданных без макетов, то загрузка выполняется без ошибок.
15 TormozIT
 
гуру
08.07.17
17:57
Причину проблемы нашел. Платформа логичную ошибку писала. У меня при не передаче строки соединения в функцию выполнения команды конфигуратора использовалась пустая динамическая база.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший