Работа с содержимым XML большого объёма

21.11.25

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Приходится обрабатывать содержимое XML большого объёма? Как не перенапрячь компьютеры при этом. Изложена методика загрузки (чтения) содержимого вида XML, в режиме экономии аппаратного ресурса

Интеграции между базами данных с помощью формата XML явление постоянное, хорошо знакомое и часто описанное. Тем не менее однажды получил опыт, связанный с большими объёмами получаемых данных, при не самом мощном серверном техническом ресурсе. При всём знакомстве с методикой обмена через XML, пришлось отдельно подумать над тем, как не переживать за объёмы получаемых сведений и уровень технических средств. Как-то стало привычкой и описываемую методику применяю практически всегда, на всякий случай, чтобы не сильно "удивлять" сервер и не раздражать "подвисающих" пользователей.

Итак, классическая схема, классическая на уровне курсовой работы студента, конечно. Есть содержимое XML определенной структуры, нам эта структура известна, понятна и под неё мы создаём пакет XDTO. Получаем содержимое XML, загоняем его в объёкт чтения, этот объект чтения читаем Фабрикой и вот он, желаемый объект XDTO, который можно превращать в таблицу значений, например. Всё понятно, всё работает - проверено многократно. До тех пор, пока не прилетит содержимое размером в десятки или сотни мегабайт (почему бы нет?) Или, ещё проще, файл огромный, но в нём нужен всего-лишь небольшой фрагмент. И получится следующее. Мы создадим неподъёмный по объёму объектXDTO, который должен порождать не менее объёмную таблицу значений, причём, оба этих "пухлых" объекта будут существовать одновременно. На каждом сервере можно повесить табличку "Памяти много не бывает!") Вот такой ситуации всегда хочется, нужно и можно избежать! Поделюсь опытом, вдруг кому-то пригодится.

Живой пример (реальная задача). Сразу оговорюсь, совсем гигантских объёмов здесь не проявилось, но речь поёдёт о типовых конфигурациях, участвующих в обмене, и хорошо знакомых объектах конфигурации, будет вполне наглядно. Итак, задача звучит так "в ЕРП справочник номенклатуры содержит сведения о весовых характеристиках номенклатуры. Надо эти значения перенести в базу БП, в аналогичный справочник". Несложная, но вполне жизненная задачка. С выгрузкой из ЕРП проблем не возникает. Только оговорюсь по процедуре создания Фабрики. Во внешних обработках, где необходимо создавать Фабрику по своей схеме, я предпочитаю использовать макет вида "двоичные данные". Макет содержит загруженный файл XSD. Из этого макета я создаю необходимую мне Фабрику (подробности - ниже). Файл выгрузки получился чуть меньше 10 мБайт. Забыл уточнить, я использую содержимое XML в формате FastInfoSet, т.к. в строковом представлении содержимое оказывается раз в пять объёмнее.

И теперь подробно, приступаем к чтению файла на стороне получения. Файл выбран и помещён на сервер. У нас есть двоичные данные файла, приступаем.

На стороне получения тоже внешняя обработка. В ней так же есть макет с двоичными данными схемы XSD. 

 

 

Вот так я привык получать нужную мне фабрику из макета двоичных данных:
 

Функция СоздатьФабрикуПоСхемеИзМакета()

	МакетСхемы = ЭтотОбъект.ПолучитьМакет("СхемаПриИмпорте");
	ПотокЧтенияДД = МакетСхемы.ОткрытьПотокДляЧтения();
	
	ОбъектЧтения = Новый ЧтениеXML;
	ОбъектЧтения.ОткрытьПоток(ПотокЧтенияДД);
	
	Построитель = Новый ПостроительDOM;
	СхемаЧтения = Построитель.Прочитать(ОбъектЧтения);
	
	Построитель = Новый ПостроительСхемXML;
	СхемаЧтения = Построитель.СоздатьСхемуXML(СхемаЧтения.ЭлементДокумента);
	
	НаборСхем = Новый НаборСхемXML;
	НаборСхем.Добавить(СхемаЧтения);
	
	МояФабрика = Новый ФабрикаXDTO(НаборСхем);
	
	Возврат МояФабрика 
	
КонецФункции

Следует описать - а что содержит схема, которой я читаю содержимое XML. Для наглядности переведу (импортирую) схему в конфигуратор, в пакет XDTO.

 

 

По привычной логике выгрузок-загрузок "Номенклатура" должна, вроде бы, быть элементом с минимальным количеством элементов "0" и максимальным "-1" (СписокXDTO). Но именно такой список и сделает содержимое при чтении слишком большим, мы же будем вынуждены прочесть весь список - сразу. В моём случае "Номенклатура" сделана типом. Это описание повторяющегося фрагмента содержимого XML. Теперь несложная задача - прочитать содержимое XML фрагментами (кусочками), точно попадая в начало и конец описанного в нашем типе XDTO элемента ("Номенклатура").
Пример в процедуре ниже:
 

Процедура ЗавершитьИмпортФайлаНаСервере(АдресХранения) Экспорт

	СодержимоеДД = ПолучитьИзВременногоХранилища(АдресХранения);
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("fis");
	СодержимоеДД.Записать(ИмяВременногоФайла);
	СодержимоеДД = Неопределено;

	ПотокЧтения = ФайловыеПотоки.ОткрытьДляЧтения(ИмяВременногоФайла, 65356);
	
	ОбъектЧтения = Новый ЧтениеFastInfoset;
	ОбъектЧтения.ОткрытьПоток(ПотокЧтения); 

	ЗаписьФрагмента = Новый ЗаписьFastInfoset;
	ВестиЗапись = Ложь;
	СтруктураИсполнения = СтруктураИсполненияПриИмпортеФайла();
	
	Пока ОбъектЧтения.Прочитать() Цикл
		
		Если ОбъектЧтения.ИмеетИмя И ОбъектЧтения.ЛокальноеИмя = "Номенклатура" Тогда
			
			Если ОбъектЧтения.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

				ВестиЗапись = Истина;
				ПотокФрагмента = Новый ПотокВПамяти(1024);
				ЗаписьФрагмента.ОткрытьПоток(ПотокФрагмента);
				
			ИначеЕсли ОбъектЧтения.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
		
				ЗаписьФрагмента.ЗаписатьТекущий(ОбъектЧтения);
				ВестиЗапись = Ложь;
				ЗаписьФрагмента.Закрыть();
				ПотокФрагмента.Перейти(0, ПозицияВПотоке.Начало);
				ПотокФрагмента = ПотокФрагмента.ПолучитьПотокТолькоДляЧтения();
				ВнестиСтрокуВТаблицуПереноса(СтруктураИсполнения, ПотокФрагмента);
			КонецЕсли;
		КонецЕсли;
		
		Если ВестиЗапись Тогда
			
			ЗаписьФрагмента.ЗаписатьТекущий(ОбъектЧтения);
		КонецЕсли;	
	КонецЦикла;
	
	ОбъектЧтения.Закрыть();
	ПотокЧтения.Закрыть();
	
	Если СтруктураИсполнения.ТаблицаПереноса.Количество() > 0 Тогда
		
		ТаблицаПереносаВоВременнуюТаблицуЗапроса(СтруктураИсполнения);
	КонецЕсли;	
	
	ФайловаяСистема.УдалитьВременныйФайл(ИмяВременногоФайла);
	Запрос = СтруктураИсполнения.Запрос;
	СтруктураИсполнения = Неопределено;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НоменклатураСпр.Ссылка КАК Ссылка,
	|	ТаблицаПереноса.Вес КАК Вес
	|ИЗ
	|	Справочник.Номенклатура КАК НоменклатураСпр
	|		ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПереносаВТ КАК ТаблицаПереноса
	|		ПО НоменклатураСпр.Код = ТаблицаПереноса.Код
	|			И (СОКРЛП(НоменклатураСпр.Артикул) <> """"
	|					И СОКРЛП(ТаблицаПереноса.Артикул) <> """"
	|					И СОКРЛП(НоменклатураСпр.Артикул) = СОКРЛП(ТаблицаПереноса.Артикул)
	|				ИЛИ ИСТИНА)
	|ГДЕ
	|	НЕ ТаблицаПереноса.Вес ЕСТЬ NULL
	|	И НЕ НоменклатураСпр.ПометкаУдаления
	|	И НЕ НоменклатураСпр.ЭтоГруппа";
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		Попытка
			
			ОбъектНоменклатуры = Выборка.Ссылка.ПолучитьОбъект();
			ОбъектНоменклатуры.Вес = Выборка.Вес;
			ОбъектНоменклатуры.Записать();
		Исключение
		КонецПопытки;	
	КонецЦикла;	
	
КонецПроцедуры

Кратко прокомментирую прилагаемый код, он совсем несложен. Двоичные данные сохраняются во временный файл, из которого в  свою очередь создаётся файловый поток чтения. Небольшая оговорка, переменную, содержащую двоичные данные, я "обнуляю". Эта привычка возникла ещё в 90-е, но я считаю её полезной. Нет необходимости занимать память уже ненужными данными, особенно - объёмными.

Перед чтением создаю набор необходимых объектов и переменных, помещая их в одну структуру "СтруктураИсполнения":
 

Функция СоздатьПустуюТаблицуПереноса() 
	
	ТаблицаПереноса = Новый ТаблицаЗначений;
	КоллекцияКолонок = ТаблицаПереноса.Колонки;
	КоллекцияКолонок.Добавить("Код", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(11, ДопустимаяДлина.Переменная)));
	КоллекцияКолонок.Добавить("Артикул", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50, ДопустимаяДлина.Переменная)));
	КоллекцияКолонок.Добавить("Вес", Новый ОписаниеТипов("Число" , Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Неотрицательный)));

	Возврат ТаблицаПереноса; 

КонецФункции

Функция СтруктураИсполненияПриИмпортеФайла()
	
	СтруктураИсполнения = Новый Структура;
	СтруктураИсполнения.Вставить("МояФабрика", СоздатьФабрикуПоСхемеИзМакета());
	СтруктураИсполнения.Вставить("СоздаваемыйТип", СтруктураИсполнения.МояФабрика.Тип("http://www.ToolsWorld/Export/ERPtoAccaunting", "Номенклатура"));
	СтруктураИсполнения.Вставить("ТаблицаПереноса", СоздатьПустуюТаблицуПереноса());
	СтруктураИсполнения.Вставить("ЧтениеФрагмента", Новый ЧтениеFastInfoset);
	СтруктураИсполнения.Вставить("ДобавлятьВТ", Ложь);

	Запрос = Новый Запрос(
	"ВЫБРАТЬ
	|ТаблицаПереноса.Код КАК Код,
	|ТаблицаПереноса.Артикул КАК Артикул,
	|ТаблицаПереноса.Вес КАК Вес
	|ПОМЕСТИТЬ ТаблицаПереносаВТ
	|ИЗ
	|	&ТаблицаПереноса КАК ТаблицаПереноса");
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	СтруктураИсполнения.Вставить("Запрос", Запрос);
	
	Возврат СтруктураИсполнения;
	
КонецФункции

Опишу значения структуры:

"МояФабрика" и так понятно - почему и зачем.

"СоздаваемыйТип" - это типXDTO, позволяющий создавать соответствующий объект, а в структуре он, чтобы не создавать его при вводе каждой строки.

"ТаблицаПереноса" - это таблица значений, служащая для промежуточного накопления определённого набора строк. Эта таблица никогда не будет большой!

"ЧтениеФрагмента" - понятно для чего, в этом объекте будет читаться "кусочек", полученный из основного потока чтения.

"ДобавлятьВТ". Здесь подробнее. Цель применяемого решения - избежать создания громоздких объектов в памяти. Для этого создается таблица переноса (таблица значений) и запрос с задействованным менеджером временных таблиц. По мере заполнения таблицы переноса заданным количеством строк производится выполнение запроса и перемещение накопленных данных чтения во временную таблицу. При этом в первой итерации чтения запрос использует директиву "ПОМЕСТИТЬ", а в последующих итерациях установится директива "ДОБАВИТЬ".

"Запрос" - выше уже описал назначение этого объекта. Далее - читаем основное содержимое.
Файл читается в потоке построчно, отнимая при таком чтении минимум технического ресурса. 

При нахождении нужного элемента, это определяется по его локальному имени, начинается либо запись фрагмента, либо окончание записи фрагмента. Фрагментом служит отдельный объект записи вида "ЗаписьFastInfoSet". Запись ведется в "ПотокВПамяти". Размер буфера потока несложно прикинуть, понимая примерный объём потенциального фрагмента. 

В момент прохождения (чтения) узла с требуемым именем ("Номенклатура") и типом узла "КонецЭлемента" этот узел записывается во "фрагмент". После чего поток записи преобразуется в поток чтения. Обязательно не забыть - переместить позицию в потоке на начало, т.к. после записи мы находимся в конечной точке потока. Сформированный поток чтения фрагмента передаётся в обработку Фабрикой. 
 

Процедура ТаблицаПереносаВоВременнуюТаблицуЗапроса(СтруктураИсполнения)
	
	Если СтруктураИсполнения.ДобавлятьВТ Тогда
	
		СхемаSQL = Новый СхемаЗапроса;
		СхемаSQL.УстановитьТекстЗапроса(СтруктураИсполнения.Запрос.Текст);
		ПакетСхемы = СхемаSQL.ПакетЗапросов.Получить(0);
		ПакетСхемы.ТаблицаДляПомещения = "";
		ПакетСхемы.ТаблицаДляДобавления = "ТаблицаПереносаВТ";
		СтруктураИсполнения.Запрос.Текст = СхемаSQL.ПолучитьТекстЗапроса();
	КонецЕсли;	
	
	СтруктураИсполнения.Запрос.УстановитьПараметр("ТаблицаПереноса", СтруктураИсполнения.ТаблицаПереноса);
	СтруктураИсполнения.Запрос.Выполнить();
	СтруктураИсполнения.ТаблицаПереноса.Очистить();
	СтруктураИсполнения.Вставить("ДобавлятьВТ", Истина);
	
КонецПроцедуры

Процедура ВнестиСтрокуВТаблицуПереноса(СтруктураИсполнения, ПотокФрагмента)
	
	СтруктураИсполнения.ЧтениеФрагмента.ОткрытьПоток(ПотокФрагмента);
	ОбъектСтроки = СтруктураИсполнения.МояФабрика.ПрочитатьXML(СтруктураИсполнения.ЧтениеФрагмента, СтруктураИсполнения.СоздаваемыйТип);
	СтруктураИсполнения.ЧтениеФрагмента.Закрыть();
	ПотокФрагмента.Закрыть();
	НоваяСтрока = СтруктураИсполнения.ТаблицаПереноса.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтрока, ОбъектСтроки);
	
	Если СтруктураИсполнения.ТаблицаПереноса.Количество() >= 500 Тогда
		
		ТаблицаПереносаВоВременнуюТаблицуЗапроса(СтруктураИсполнения);
	КонецЕсли;	
	
КонецПроцедуры

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

Собственно, на этом заканчивается то, что позволяет избежать создания избыточно громоздких объектов. По итогу в нижних строках кода оказывается запрос, содержащий временную таблицу. Можно задавать новый текст запроса и уже распоряжаться данными из временной таблицы, что у меня и происходит.

В таком режиме работы я уже не переживаю за потенциальный размер читаемого содержимого XML. Единственное место, где на короткое время может возникнуть избыточно большое значение, это получение двоичных данных из хранилища. Если кто-то придумает - как этого избежать - поделитесь идеями!

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

См. также

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27180 руб.

12.06.2017    154490    915    304    

470

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

52967 47670 руб.

25.02.2015    178812    333    279    

399

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

58422 52580 руб.

03.12.2020    42687    123    76    

116

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

61356 55220 руб.

15.04.2019    79781    214    165    

153

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.255.x) и БП 3.0 (3.0.183.x). Правила подходят для версии ПРОФ и КОРП.

38000 34200 руб.

15.12.2021    30440    219    58    

163

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

61356 55220 руб.

29.10.2018    59789    69    122    

68

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 17.11.2025, версия 9.13 - 10.5)

19200 руб.

20.11.2015    168965    420    389    

539

Операции по ВЭД Файловый обмен (TXT, XML, DBF), FTP Программист Бухгалтер 1С v8.3 Бухгалтерский учет 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Платные (руб)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:". Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные) Обработка актуализирована на начало 2025 года

4800 руб.

09.08.2016    89845    338    378    

94
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 993 21.11.25 15:54 Сейчас в теме
Смотря что подразумевать под большим объемом. Эска НЕ поддерживает структуры данных > 4 Гб в памяти.
2. DmitryKlimushkin 50 21.11.25 16:15 Сейчас в теме
(1) Так далеко я даже не замахивался) Мне однажды пришлось в регламентном задании "разбирать" XML файлы по 50 - 70 мБайт. Эти файлы валились с серверов технологического оборудования (маркируемая продукция). Даже такие файлы вполне подтормаживали остальную работу сервера с 1С. Вот в тот момент и пришлось придумывать методику, при которой весь балласт лежит на дисках, а не в памяти. Тут уж как получилось. Но в моих задачах регулярно помогает, когда содержимое XML переваливает за десятки мБайт.
Для отправки сообщения требуется регистрация/авторизация