Ошибка в типовой обработке "Универсальный обмен данными в формате XML"

29.08.23

База данных - Обновление 1С

Исправление ошибки в типовой обработке "Универсальный обмен данными в формате XML".

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Бесплатно
Ошибка в типовой обработке "Универсальный обмен данными в формате XML":
.cfe 26,33Kb
36 Скачать бесплатно

При обновлении на актуальный релиз типовой конфигурации "Зарплата и управление персоналом (3.1.27.51)" от 16.08.2023 была обнаружена ошибка в обработке  "Универсальный обмен данными в формате XML"

"errors": 
["{Обработка.УниверсальныйОбменДаннымиXML.Форма.УправляемаяФорма.Форма(1539)}: Ошибка при вызове конструктора (ДвоичныеДанные)",

"Файл не обнаружен 'C:\Users\USR1CV8\AppData\Local\Temp\v8_3F23_19e.xml'"]

Ошибка возникала при попытке загрузить данные через прямое подключение к базе. В саму новую обработку внесено много изменений, в частности переделана логика функции ВыполнитьВыгрузкуНаСервере(). Рассмотрим подробнее конструкцию, которая вызывает ошибку. Это код из обновленной обработки:

АдресФайлаДанных = "";
АдресФайлаДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ОбъектДляСервера.ИмяФайлаОбмена), УникальныйИдентификатор);
УдалитьФайлы(ОбъектДляСервера.ИмяФайлаОбмена);
УдалитьФайлы(ОбъектДляСервера.ИмяФайлаПравилОбмена);
			
ОбъектДляСервера.Параметры.Очистить();
ЗначениеВРеквизитФормы(ОбъектДляСервера, "Объект");

А таким он был до изменений:

Если ЭтоКлиент И Не ПрямаяВыгрузка Тогда		
    АдресФайлаДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Объект.ИмяФайлаОбмена), УникальныйИдентификатор);
    УдалитьФайлы(Объект.ИмяФайлаОбмена);		
Иначе		
    АдресФайлаДанных = "";		
КонецЕсли;
	
Если ЭтоКлиент Тогда		
    УдалитьФайлы(ОбъектДляСервера.ИмяФайлаПравилОбмена);		
КонецЕсли;

Как видно в старой обработке установлены проверки по двум реквизитам:

1) ЭтоКлиент - Реквизит формы, Булевое значение, определяется дерективой компилятора веб-клиент это или нет. В обновленной форме этот реквизит вообще убрали.

2) ПрямаяВыгрузка - Так же реквизит формы. Показывает какой тип выгрузки мы используем, через файл обмена (Значение - "0") или через прямое подключение (Значение - "1").

Т.к. убрали данные проверки то любая выгрузка, обрабатывается как через файл обмена, со всеми вытекающими ошибками.

Мой пример кода с исправлениями:

Если ПрямаяВыгрузка Тогда
    АдресФайлаДанных = "";
Иначе  
    АдресФайлаДанных = "";
    АдресФайлаДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ОбъектДляСервера.ИмяФайлаОбмена), УникальныйИдентификатор);
    УдалитьФайлы(ОбъектДляСервера.ИмяФайлаОбмена);
    УдалитьФайлы(ОбъектДляСервера.ИмяФайлаПравилОбмена);
			
    ОбъектДляСервера.Параметры.Очистить();
    ЗначениеВРеквизитФормы(ОбъектДляСервера, "Объект");
КонецЕсли;

Надеюсь, кому-то поможет.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Обновление 1С Программист 1С v8.3 Бесплатно (free)

При обновлении конфигураций ЕРП/КА/УТ типовыми обновлениями можно получить ошибку  Превышен максимальный расход памяти сервера за один вызов". С чем это связано? Рассмотрим исправление этой ошибки.

18.08.2025    2729    iolko    10    

18

Обновление 1С Системный администратор Программист 1С v8.3 Россия Абонемент ($m)

Внешняя обработка "Запуск процедур обновления" предназначена для запуска процедур обновления в типовых конфигурациях, а также в конфигурациях, где поддерживается типовой механизм обновления по подсистемам. Это может быть полезно тем, кто разрабатывает и поддерживает свои подсистемы на базе типового механизма. Тестировщики, разработчики.

1 стартмани

16.07.2025    719    4    lastpioneer    0    

9

Рефакторинг и качество кода Обновление 1С Программист 1С v8.3 Бесплатно (free)

Проблемы и их решение из реальных проектов сложного обновления 1С, когда нужно было сохранить целостность данных, ускориться и уложиться в оцененные и утвержденные сроки.

02.07.2025    3599    1c-izh    9    

13

DevOps и автоматизация разработки Обновление 1С Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

Продолжаем делиться опытом ICL SOFT – в этой статье рассказываем о сложном обновлении сильно доработанной конфигурации "1С:ERP Управление холдингом с версии 3.1.8.15" до актуальной версии редакции 3.2. Публикации о сложных обновлениях, которые можно найти в открытых источниках, содержат мало подробной информации об использованных инструментах и решениях. Часто в них отсутствует информация о том, что находится под капотом этих решений. Будем рады, если наша статья окажется полезной

1 стартмани

01.07.2025    2176    vladimir_iclsoft    1    

20

Рефакторинг и качество кода Обновление 1С Программист 1С v8.3 Бесплатно (free)

Тестовая база обновлена через все ключевые релизы, всё протестировано, остатки сведены, вы готовы обновить «боевую» базу, но…по замерам для этого потребуется целая неделя, а у вас есть всего пара выходных. Знакомая ситуация? Расскажем, как увеличить скорость отработки промежуточных конфигураций!

18.06.2025    3913    1c-izh    14    

11

Обновление 1С Программист Стажер 1С v8.3 Бесплатно (free)

Наша компания перманентно занимаемся обновлением «старых» и, к тому же, сильно нетиповых конфигураций. Хочется поделиться опытом по работе с важным этапом подобных проектов — поиску и оптимизации промежуточных конфигураций 1С. Первый материал будет полезен начинающим специалистам 1С, а в последующих, надеемся, найдется интересная информация и для матерых разработчиков.

04.06.2025    3934    1c-izh    13    

17

Обновление 1С 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Добавление в Справочник "Статьи затрат" отсутствующих предопределённых элементов.

1 стартмани

23.05.2025    671    0    qrw    0    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SergDobrodelov 719 05.02.25 12:17 Сейчас в теме
Нужно еще добавить проверку на существование файла, иначе при ошибке выгрузки выдаст сообщение, что файл не найден

Если ПрямаяВыгрузка Тогда
		АдресФайлаДанных = "";
	Иначе  
		АдресФайлаДанных = "";
		Файл = Новый Файл(ОбъектДляСервера.ИмяФайлаОбмена);  // проверка
		Если Файл.Существует() Тогда                           // проверка 
			АдресФайлаДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ОбъектДляСервера.ИмяФайлаОбмена), УникальныйИдентификатор);
		КонецЕсли;
		
		УдалитьФайлы(ОбъектДляСервера.ИмяФайлаОбмена);
		УдалитьФайлы(ОбъектДляСервера.ИмяФайлаПравилОбмена);
			
		ОбъектДляСервера.Параметры.Очистить();
		ЗначениеВРеквизитФормы(ОбъектДляСервера, "Объект");
	КонецЕсли;
Показать
2. SergDobrodelov 719 06.02.25 06:49 Сейчас в теме
УдалитьФайлы(ОбъектДляСервера.ИмяФайлаОбмена); - если установлен Режим работы (на сервере), и клиент и сервер на одно компьютере, то это приведет к удалению только что выгруженного файла обмена

Правильно так:
	Если ПрямаяВыгрузка Тогда
		АдресФайлаДанных = "";
	Иначе  
		АдресФайлаДанных = "";
		Файл = Новый Файл(ОбъектДляСервера.ИмяФайлаОбмена);
		Если Файл.Существует() Тогда
			АдресФайлаДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ОбъектДляСервера.ИмяФайлаОбмена), УникальныйИдентификатор);
		КонецЕсли;
		
		Если ЭтоКлиент Тогда // проверка
			УдалитьФайлы(ОбъектДляСервера.ИмяФайлаОбмена);
			УдалитьФайлы(ОбъектДляСервера.ИмяФайлаПравилОбмена);
		КонецЕсли;
			
		ОбъектДляСервера.Параметры.Очистить();
		ЗначениеВРеквизитФормы(ОбъектДляСервера, "Объект");
	КонецЕсли;
Показать
KOTzilla; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация