ЧтениеZIP не любит кавычки
Столкнулся с проблемой — код по обработке выписок у клиента перестал работать, спотыкался на одном файле.
Разбирательства показали, что метод Распаковать у ЧтениеZIP формирует файлы, где кавычки заменены символом подчеркивания:
Выписка_ООО "ВИВА"_40------------93_27.04.2025-27.04.2025.pdf
Выписка_ООО _ВИВА__40------------93_27.04.2025-27.04.2025.pdf
Эта особенность не документирована. К тому же ЧтениеZIP не позволяет получать конечные имена распакованных файлов. Возможно и другие символы заменяются-экранируются! Кто так пишет!?
Вот функция распаковки на текущий момент:
Процедура РаспаковатьZIPФайлы(Каталог) Файлы = НайтиФайлы(Каталог, "*.zip"); Для Каждого Файл ИЗ Файлы Цикл Попытка ЧтениеZIP = Новый ЧтениеZipФайла(Файл.ПолноеИмя); Исключение Сообщить("Не удалось распаковать файлы архива: """ + Файл["ИмяФайла"] + """", СтатусСообщения.Важное); Продолжить; КонецПопытки; Для Каждого Элемент Из ЧтениеZIP.Элементы Цикл ЧтениеZIP.Извлечь(Элемент, Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать); //Даем уникальное имя ИсхИмя = Каталог + "\" + УбратьНедопустимыеСимволыРаспаковки(Элемент.ИсходноеИмя); РезИмя = Каталог + "\" + УбратьНедопустимыеСимволыРаспаковки(Элемент.ИсходноеИмяБезРасширения) + "_" + Строка(Новый УникальныйИдентификатор()) + "." + Элемент.Расширение; РаспакованныйФайл = Новый Файл(ИсхИмя); РаспакованныйФайл.УстановитьТолькоЧтение(Ложь); //Сбрасываем атрибут только чтение ПереместитьФайл(ИсхИмя, РезИмя); Сообщить("Перемещение распакованного: " + ИсхИмя + " -> " + РезИмя); КонецЦикла; ЧтениеZIP.Закрыть(); УдалитьФайлы(Файл.ПолноеИмя); //Удаляем сам скачанный файл архива КонецЦикла; КонецПроцедуры Функция УбратьНедопустимыеСимволыРаспаковки(Знач С) С = СтрЗаменить(С, """", "_"); Возврат С; КонецФункции
Объем: 0.5 час

Кто так читает документацию?
В именах файлов и папок в архиве запрещено использование символов: > < | ? * / \ : ". Такие символы будут заменены на символ подчеркивания "_".
При этом свойства ИсходноеИмя, ИсходноеПолноеИмя, ИсходноеИмяБезРасширения, ИсходноеРасширение, ИсходныйПуть будут содержать немодифицированные значения.
Если в архиве имена файлов дублируются, платформа устранит дублирование при работе с файлами, обеспечив уникальность имен файлов в архиве.
это в синтакс-помощнике или где? и как получить финальное имя файла с помощью функции 1С, не вычисляя самому?