Документооборот 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;","Ё");
об.Записать();
КонецЦикла;
Может, кому-то пригодится.