Виртуальный склад
  • База знаний
  • История изменений
  • Установка
    • Начальные настройки
    • Подключение к основной базе 1С
    • Настройки WSG
    • Публикация сервисов
    • Настройка регламентных заданий
    • Внешний архиватор 7 zip
    • Чтение файлов через ADO и COM
  • Настройка прайс-листа
    • Основные параметры загрузки
    • Параметры получения файлов
    • Общие настройки обработки файлов
    • Настройка загрузки колонок
    • Результаты загрузки
    • Сопоставление обозначений наличия
    • Настройка актуальности прайс-листов
    • Пропуск и исключение данных
    • Подозрительные загрузки
  • Работа с остатками
    • Использование MS SQL или SQL Express
    • Перекроссировки брендов
    • Получение информации об актуальности
  • FAQ
    • Почему письма удаляются из электронного ящика после получения почты?
    • Почему не происходит загрузка полученного прайса?
    • Как правильно поменять контрагента, если изменился поставщик по настройке?
    • Ограничение по размеру файлов
    • Создание загрузок по ранее загруженным письмам
    • Настройка учетной записи Gmail в 1С
    • Зависает ВС при получении почты
Powered by GitBook
On this page
  1. Установка

Внешний архиватор 7 zip

PreviousНастройка регламентных заданийNextЧтение файлов через ADO и COM

Last updated 2 years ago

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

Если в результате по настройке загрузки все настроено корректно, но не создается загрузка по письму, в котором файл прайс-листа приходит в архиве - это значит либо архив, либо сам файл не может прочитаться тем способом, который настроен

Для работы с теми архивами, которые не читаются средствами платформы 1С:Предприятие предусмотрена работа с внешним архиватором 7-zip. Для работы с ним необходимо:

  • установить внешний архиватор () на сервере, где запущена служба сервера 1С:Предприятие

  • добавить путь к папке, где находится архиватор, в переменную среды PATH

  • предоставить права для пользователя, под которым работает служба сервера 1С:Предприятие

  • выбрать соответствующий вариант разархивирования файла в настройке загрузки

Проверить доступность можно с помощью обработки в 1С (ссылка на обработку ниже), которая выполняет следующий код

Процедура Проверить(Команда)
	ПроверитьАрхиватор();
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПроверитьАрхиватор()
	
	Попытка
		ЗапуститьПриложение("7z.exe");
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Архиватор доступен");
	Исключение
		ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки);
	КонецПопытки;
	
КонецПроцедуры

Виртуальный склад при работе с внешним архиватором выполняет следующий код

Функция РаспаковатьФайлВнешнимАрхиватором(Знач Файл, Знач ИмяКаталога) Экспорт
	
	ИмяКаталогаАрхива = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ИмяКаталога + "zip");
	
	СтруктураВозврата = ВиртуальныйСкладОбщий.ИнициализироватьСтруктуруВозвратаФункции(ИмяКаталогаАрхива);
	
	Попытка
		
		// арихватор должен быть установлен и прописан в path
		// https://www.7-zip.org/
		ИмяИсполняемогоФайла = "7z.exe";
		//сформируем команду
		ПараметрыЗапуска = " e"; //e - extract (Распаковка)
		//путь к архиву
		ПараметрыЗапуска = ПараметрыЗапуска + " """ + Файл.ПолноеИмя + """";
		//путь к папке распаковки
		ПараметрыЗапуска = ПараметрыЗапуска + " -o""" + ИмяКаталогаАрхива + """";
		//рекурсивный обход архива
		ПараметрыЗапуска = ПараметрыЗапуска + " -r";
		//отвечать на все вопросы yes
		ПараметрыЗапуска = ПараметрыЗапуска + " -y";
		
		// ждем завершения, иначе файлы потом не удалятся
		Ошибки = 0;
		ЗапуститьПриложение(ИмяИсполняемогоФайла + ПараметрыЗапуска, , Истина, Ошибки);
		
		Если Ошибки <> 0 Тогда
			ОписаниеОшибки = "Не удалось распаковать файл: " + Файл.ПолноеИмя;
			СтруктураВозврата.ЕстьОшибка = Истина;
			СтруктураВозврата.ОписаниеОшибки = ОписаниеОшибки;
		КонецЕсли;
		
	Исключение
		
		ОписаниеОшибки = "Не удалось распаковать файл: " + Файл.ПолноеИмя + " по причине: " + Символы.ПС + ОписаниеОшибки();
		
		СтруктураВозврата.ЕстьОшибка = Истина;
		СтруктураВозврата.ОписаниеОшибки = ОписаниеОшибки;
		
		ВиртуальныйСкладОбщий.ЗаписатьДанныеВЛог(ОписаниеОшибки, , , Истина);
		
	КонецПопытки;
	
	Возврат СтруктураВозврата;
	
КонецФункции

https://www.7-zip.org/
6KB
ПроверкаДоступностиАрхиватора.epf