Имя: Пароль:
1C
 
БП 3.0. Ошибка при загрузке правил обмена из файла
0 es3000
 
16.01.15
09:50
В связке работают БП 3.0 + УТ 11.
Вчера поставил последние обновления и теперь надо обновить правила обмена.
Самая последняя версия правил - в поставке УТ.

Поэтому я попытался загрузить эти правила в план обмена в БП.
Делаю все как обычно: выбираю вариант "из файла", указываю файл "Правила обмена.zip", нажимаю "Загрузить". Но 1С-ка почему-то не грузит и выдает ошибку:
"При распаковке архива найдено несколько файлов. Должен быть только один файл с правилами."

Что это значит?
Может быть 1С как-то переделала загрузку правил?
1 es3000
 
16.01.15
09:56
Забыл сказать...
Я также пробовал распаковать из архива с правилами и загрузить отдельно файл ExchangeRules.xml - тоже выдается ошибка.
Но уже другая:
"{РегистрСведений.ПравилаДляОбменаДанными.МодульМенеджера(162)}: Значение не является значением объектного типа (Записать)
        ДвоичныеДанныеКорреспондента.Записать(ИмяВременногоФайлаКорреспондента);"
2 Поpyчик-4
 
16.01.15
10:11
(0) Вертайте конфы взад. Работало ведь, на зачем было трогать.
3 es3000
 
16.01.15
10:17
(2) ну обновления ставить надо
4 varyag
 
16.01.15
10:23
(0) а правила обмена не в xml ли должны быть?
5 varyag
 
16.01.15
10:24
+ (4) Не увидел (1)
6 varyag
 
16.01.15
10:27
Смотри какой тип у ДвоичныеДанныеКорреспондента в отладчике?
7 es3000
 
16.01.15
10:48
(4),(5) да сами правила в формате xml, но они в поставке обновления запакованы в файл "Правила обмена.zip" и раньше именно zip указывали при загрузке правил в план обмена
8 es3000
 
16.01.15
11:05
Посмотрел код.
В коде проверяется чтобы в zip-архиве был либо один либо два файла.
Это странно, ведь раньше в zip-файле всегда было три файла:
-правила обмена
-правила обмена корреспондента
-правила регистрации

Там такой код:


            Если ЭтоПравилаКонвертации Тогда
                
СписокРаспакованныхФайлов.Количество() = 2 Тогда
                    
                    Если СписокРаспакованныхФайлов[0].Имя = "ExchangeRules.xml"
                        И СписокРаспакованныхФайлов[1].Имя ="CorrespondentExchangeRules.xml" Тогда
                        
                        ДвоичныеДанные = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[0].ПолноеИмя);
                        ДвоичныеДанныеКорреспондента = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[1].ПолноеИмя);
                        
                    ИначеЕсли СписокРаспакованныхФайлов[1].Имя = "ExchangeRules.xml"
                        И СписокРаспакованныхФайлов[0].Имя ="CorrespondentExchangeRules.xml" Тогда
                        
                        ДвоичныеДанные = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[1].ПолноеИмя);
                        ДвоичныеДанныеКорреспондента = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[0].ПолноеИмя);
                        
                    Иначе
                        
                        НСтрока = НСтр("ru = 'Имена файлов в архиве не соответствуют ожидаемым. Ожидаются файлы:
                            |ExchangeRules.xml - правила конвертации для текущей программы;
                            |CorrespondentExchangeRules.xml - правила конвертации для программы-корреспондента.'");
                        ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
                        
                    КонецЕсли;
                    
                // Старый формат
                ИначеЕсли СписокРаспакованныхФайлов.Количество() = 1 Тогда
                    НСтрока = НСтр("ru = 'В архиве найден один файл правил конвертации. Ожидаемое количество файлов в архиве - два. Ожидаются файлы:
                        |ExchangeRules.xml - правила конвертации для текущей программы;
                        |CorrespondentExchangeRules.xml - правила конвертации для программы-корреспондента.'");
                    ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
                // В архиве оказалось несколько файлов, хотя должен быть один - отказываемся от загрузки.
                ИначеЕсли СписокРаспакованныхФайлов.Количество() > 1 Тогда
                    НСтрока = НСтр("ru = 'При распаковке архива найдено несколько файлов. Должен быть только один файл с правилами.'");
                    ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
                КонецЕсли;
                
            Иначе
                
                // Закладываем полученный файл правил обратно в двоичные данные.
                Если СписокРаспакованныхФайлов.Количество() = 1 Тогда
                    ДвоичныеДанные = Новый ДвоичныеДанные(СписокРаспакованныхФайлов[0].ПолноеИмя);
                    
                // В архиве оказалось несколько файлов, хотя должен быть один - отказываемся от загрузки.
                ИначеЕсли СписокРаспакованныхФайлов.Количество() > 1 Тогда
                    НСтрока = НСтр("ru = 'При распаковке архива найдено несколько файлов. Должен быть только один файл с правилами.'");
                    ОбменДаннымиСервер.СообщитьОбОшибке(НСтрока, Отказ);
                КонецЕсли;
                
            КонецЕсли;
9 es3000
 
19.01.15
10:30
Разобрался с этой проблемой.
Чтобы загрузить правила из поставки необходимо использовать команду "Загрузить правила", находящуюся на форме списка синхронизаций.