Программное деление файла на части и обратное соединение

06.09.22

Разработка - Инструментарий разработчика

Программное деление файла на части и обратное соединение без стандартных функций РазделитьФайл() и ОбъединитьФайл().

Файлы

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

Наименование Скачано Купить файл
Программное деление файла на части и обратное соединение:
.epf 9,38Kb
12 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Обработка тестировалась на платформе 8.3.18.1289.

Иногда требуется код, который работает без стандартных функций РазделитьФайл() и ОбъединитьФайл().
Данный код работает с различными типами файлов, в данном случае "Размер части" указывается в байтах.

На вкладке "Разделить файл" заполняем поля:

  • Имя файла - выбираем файл для деления;
  • Путь - место для сохранения частей файла;
  • Размер части - указывается в байтах.
&НаКлиенте
Асинх Процедура РазделитьФайлы(Команда)
	
	Если Не ЗначениеЗаполнено(Объект.Путь) Или Не ЗначениеЗаполнено(Объект.РазмерЧасти) Тогда
		Сообщить("Не заполнены обязательные поля");
		Отказ = Истина;	
	Иначе
		ОписаниеФайла = Новый Файл(Объект.ИмяФайла);
		
		ОсталосьПрочитать = Ждать ОписаниеФайла.РазмерАсинх(); 
		
		ПотокИсходный = Новый ФайловыйПоток(ОписаниеФайла.ПолноеИмя, РежимОткрытияФайла.Открыть, ДоступКФайлу.Чтение);
		
		Если Объект.РазмерЧасти > ОсталосьПрочитать Тогда  			
			Сообщить("Указанный размер деления больше объема файла. Файл не будет разделен");
		Иначе 
			Счетчик = 1;
			Пока ОсталосьПрочитать > 0 Цикл
				
				ПотокКонечный = Новый ФайловыйПоток(Объект.Путь+"\Часть_"+Счетчик, РежимОткрытияФайла.Создать, ДоступКФайлу.Запись); 
				
				Если Объект.РазмерЧасти < ОсталосьПрочитать Тогда 
					ПотокИсходный.КопироватьВАсинх(ПотокКонечный,Объект.РазмерЧасти);
				Иначе
					ПотокИсходный.КопироватьВАсинх(ПотокКонечный,ОсталосьПрочитать);
				КонецЕсли;
				ПотокКонечный.ЗакрытьАсинх();
				
				ОсталосьПрочитать = ОсталосьПрочитать - Объект.РазмерЧасти;
				Счетчик = Счетчик + 1;
				
			КонецЦикла;  
			
			ПотокИсходный.ЗакрытьАсинх();   		     

		КонецЕсли;  
	КонецЕсли;
	
КонецПроцедуры

На вкладке "Объединить файлы" в табличную часть добавляем разделенные части файла и указываем "Результат" - путь сохранения для склеенного файла.

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

 

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

обработка деление файла склейка РазделитьФайл() ОбъединитьФайл().

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    213396    1167    413    

1050

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    40721    222    115    

212

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    18847    76    39    

92

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    26676    67    30    

96

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

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

9500 руб.

17.05.2024    37730    134    55    

176

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше.<br/> Далее в публикации:<br/> MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    4227    8    10    

15

Инструментарий разработчика 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    3705    7    0    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vld1973 97 06.09.22 11:34 Сейчас в теме
Спасибо, я обычно функции архиватора использую для разделения, но есть случаи, когда надо отправить большой файл, а у клиента на компе нет архиватора
2. SerVer1C 987 06.09.22 15:59 Сейчас в теме
Можно юзать в никсах split , а под окна скачать пакет Coreutils и тоже заюзать тамошний split . Да, придется доставить ПО, но обработку то тоже (возможно) придется передавать принимающей стороне.
Для отправки сообщения требуется регистрация/авторизация