Ошибка с буквой "Й" и "Ё". Исправление пути файла в 1С: Документообороте 2.1
Задачи пользователя - Корректировка данных
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Документооборот 2.1.27.1. Платформа 8.3.17.1851.
Нужно было перенести файлы из тома c windows server 2008 на windows server 2019. Объем Архива 40Гб
Чтобы не нагружать сеть, решил через zip архив перекинуть файлы. После переноса некоторые файлы не открывались.
Запустил проверку целостности файлов в томе. Вывалился список из 300 файлов.
Проверил путь и название файлов, все визуально сходится.
Написал простой код, который сравнивает каждый символ, и выяснил, что проблема в русских буквах Й и Ё. Эти буквы содержат два символа, при попытке удаления это можно обнаружить.
стр1= "Приложение № 1– СМЕТНЫИM4 РАСЧЕТ (КАЛЬКУЛЯЦИЯ).pdf";
стр2= "Приложение № 1– СМЕТНЫЙ РАСЧЕТ (КАЛЬКУЛЯЦИЯ).pdf";
ДлСтроки1 = СтрДлина(стр1);
ДлСтроки2 = СтрДлина(стр2);
Если ДлСтроки1 <> ДлСтроки2 Тогда
Сообщить("Строки различаются:"+ДлСтроки1+ " и "+ДлСтроки2);
КонецЕсли;
МинКолСимволов = 0;
Если ДлСтроки1 > ДлСтроки2 Тогда
МинКолСимволов = ДлСтроки2;
ИначеЕсли ДлСтроки1 < ДлСтроки2 Тогда
МинКолСимволов = ДлСтроки1;
КонецЕсли;
Если МинКолСимволов>0 Тогда
Для сч=0 По МинКолСимволов-1 Цикл
сим1 = Сред(стр1,сч,1);
сим2 = Сред(стр2,сч,1);
Если сим1<> сим2 Тогда
Сообщить("Символы отличаются: "+ Сим1 +" и "+ Сим2);
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
//для проверки "иM4;", состоит из двух символов
Сообщить(НАйти(стр1,"иM4;"));
Написал простую обработку, которая исправила все версии файлов.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВерсииФайлов.Ссылка КАК Ссылка,
| ВерсииФайлов.Владелец КАК Владелец
|ИЗ
| Справочник.ВерсииФайлов КАК ВерсииФайлов
|ГДЕ
| ВерсииФайлов.ПутьКФайлу ПОДОБНО ""%иM4;%""
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВерсииФайлов.Ссылка,
| ВерсииФайлов.Владелец
|ИЗ
| Справочник.ВерсииФайлов КАК ВерсииФайлов
|ГДЕ
| ВерсииФайлов.ПутьКФайлу ПОДОБНО ""%еM6;%""";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
об=ВыборкаДетальныеЗаписи.ссылка.получитьобъект();
об.ПутьКФайлу=СтрЗаменить(об.ПутьКФайлу,"иM4;","й");
об.ПутьКФайлу=СтрЗаменить(об.ПутьКФайлу,"ИM4;","й");
об.ПутьКФайлу=СтрЗаменить(об.ПутьКФайлу,"еM6;","ё");
об.ПутьКФайлу=СтрЗаменить(об.ПутьКФайлу,"ЕM6;","Ё");
об.Записать();
КонецЦикла;
Может, кому-то пригодится.
Вступайте в нашу телеграмм-группу Инфостарт