|
Проблема с кодировкой при пакетной выгрузке внешних обработок в XML | ☑ | ||
---|---|---|---|---|
0
obliteratorsss
naïve
22.07.24
✎
14:04
|
Необходимо реализовать через внешнюю обработку выгрузку необходимой внешней обработки в XML через пакетный режим. Реализация работает, но есть один неприятный момент, который я так и не смог решить это создание файлов XML и соответствующих файлов в непонятной кодировке типа: ⒈幐Ȁ или ⒈旷Ȥ. Причем такая проблема возникает при использовании bat файла и при использовании просто команды в командной строке (При обычной выгрузке обработки все работает нормально). Пробовал явно указывать различные кодировки, все равно создаются файлы с такими названиями.В чем может быть проблема?
|
|||
1
steep1
22.07.24
✎
14:08
|
(0) проблема в кодировке
|
|||
2
Волшебник
22.07.24
✎
14:09
|
幐 - чёрно-белый
|
|||
3
obliteratorsss
naïve
22.07.24
✎
14:15
|
Вот пример одного из сформированных bat файлов:
@echo off chcp 65001 SET PATH1C="C:\Program Files\1cv8\8.3.25.1286\bin\1cv8.exe" SET EXT="C:\1С\Тест\000000720\ВыгрузкаДанных.epf" SET SRC="C:\ProverkaVg" SET OUT="C:\1С\Тест\out.txt" %PATH1C% DESIGNER /IBName "УПП_КОПИЯ"/DumpExternalDataProcessorOrReportToFiles %EXT% %SRC% /Out %OUT% Пробовал также использовать такие кодировки: 866,1251 |
|||
4
Garykom
гуру
22.07.24
✎
14:21
|
https://xn----1-bedvffifm4g.xn--p1ai/news/2018-11-30-extreps-and-git/
Из-за особенностей работы командного процессора в названии обработки желательно не использовать пробелы. Также может оказаться, что при запуске bat-файла неверно распознается кодировка. В этом случае нужно пересохранить файл в OEM-866. |
|||
5
obliteratorsss
naïve
22.07.24
✎
14:22
|
(4) Я данной статьей и руководствовался
|
|||
6
Garykom
гуру
22.07.24
✎
14:39
|
(5) ну так убери chcp и сам bat файл сохрани в кодировке 866
проверь что текст на кириллице внутри не испортился все пути возьми в "" |
|||
7
Garykom
гуру
22.07.24
✎
14:40
|
кстати все файлы xml выгруженные портятся или только некоторые?
может проблема в битой базе? |
|||
8
obliteratorsss
naïve
22.07.24
✎
14:44
|
Я так тоже делал, таким способом он даже информационную базу не находит. (7) Все файлы
|
|||
9
Мультук
гуру
22.07.24
✎
14:58
|
(8)
Что мешает давать нормальные алиасы базам ? УПП_КОПИЯ --> UPP_COPY P.S. Про имена файлов на русском.... Тут не так давно, человек полдня изучал разницу между 1.csv и 1.CSV Нашёл. :-) |
|||
10
obliteratorsss
naïve
22.07.24
✎
15:16
|
Я разобрался, почему не видел информационную базу. Теперь проблема в том, что портится текст при изменении кодировки. Пример: C:\ProverkaVg\Анализ_распределения>SET SRC="C:\ProverkaVg\╨Р╨╜╨░╨╗╨╕╨╖_╤А╨░╤Б╨┐╤А╨╡╨┤╨╡╨╗╨╡╨╜╨╕╤П". А также интересно как менять кодировку программно (я программно создаю bat файл и запускаю его), потому что постоянно руками менять кодировку, мне не подходит
|
|||
11
Garykom
гуру
22.07.24
✎
15:17
|
(8) Есть подозрение что проблемы в региональных настройках Windows
|
|||
12
Garykom
гуру
22.07.24
✎
15:20
|
(10)
как менять кодировку программно
это в СП или ЖКК/Хрусталеву читать ПодробностиЗаписьТекста (TextWriter) По имени файла Синтаксис: Новый ЗаписьТекста(<ИмяФайла>, <Кодировка>, <РазделительСтрок>, <Дописывать>, <КонвертируемыйРазделительСтрок>) Параметры: <ИмяФайла> (обязательный) Тип: Строка. Имя текстового файла для записи. <Кодировка> (необязательный) Тип: КодировкаТекста, Строка. Кодировка записываемого текста (согласована с текстовым документом). Кодировка может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки. Поддерживаемые кодировки: UTF-8 UTF-16 UTF-16BE UTF-16LE ISO-8859-1 US-ASCII gb18030 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6 iso-8859-7 iso-8859-8 iso-8859-9 iso-8859-13 iso-8859-15 Shift_JIS EUC-JP Big5 Big5-HKSCS GBK GB2312 GB_2312-80 EUC-KR KSC_5601 windows-949 windows-874 cp866 KOI8-R KOI8-U windows-1250 windows-1251 windows-1252 windows-1253 windows-1254 windows-1255 windows-1256 windows-1257 windows-1258 macintosh x-mac-cyrillic ISO-2022-JP ISO-2022-KR ISO-2022-CN ISO-2022-CN-EXT HZ-GB-2312 Значение по умолчанию: UTF8. <РазделительСтрок> (необязательный) Тип: Строка. Символ разделителя строк в записываемом файле. Значение по умолчанию: ПС. <Дописывать> (необязательный) Тип: Булево. Если параметр принимает значение Истина, то содержимое файла сохраняется, если файл уже существует. Если файла не существует, создается новый с именем, указанным в первом параметре конструктора. Значение по умолчанию: Ложь. <КонвертируемыйРазделительСтрок> (необязательный) Тип: Строка. Определяет разделение строк в файле для конвертации в стандартный перевод строк ПС. Значение по умолчанию: ВК + ПС. Описание: Открывает текстовый файл для записи. Аналогичен методу Открыть. Пример: ДлинныйТекст = Новый ЗаписьТекста("c:\temp\file.txt", КодировкаТекста.UTF16); См. также: ЗаписьТекста, метод Открыть Использование в версии: Доступен, начиная с версии 8.0. |
|||
13
obliteratorsss
naïve
22.07.24
✎
15:57
|
(12) Получилось поменять кодировку программно, но проблема с текстом так и не ушла. (11) Можете подсказать какие именно настройки? Я вроде посмотрел, стоят стандартные настройки
|
|||
14
obliteratorsss
naïve
22.07.24
✎
16:07
|
Еще проблема при формировании и запуске bat файла, выдает ошибку: ошибка доступа к файлу "кразябры.xml" 5(0х0000005). Отказано в доступе. Вот процедура формирования и запуска файла:
Процедура ГенерацияКомандногоФайла(Путь, Имя) ИмяКомандногоФайла = (Путь + "\" + ПолеВводаВнешняяОбработка.Наименование + ".bat"); ТекстДляЗаписи = "@echo off" + Символы.ПС + "SET PATH1C=""C:\Program Files\1cv8\8.3.25.1286\bin\1cv8.exe""" + Символы.ПС + "SET EXT=""" + Имя + """" + Символы.ПС + "SET SRC=""" + Путь + """" + Символы.ПС + "SET OUT=""" + (Путь + "\out.txt") + """" + Символы.ПС + "%PATH1C% DESIGNER /IBName""УПП_КОПИЯ""/DumpExternalDataProcessorOrReportToFiles %EXT% %SRC% /Out %OUT%"; Попытка ЗаписьФайла = Новый ТекстовыйДокумент; //ЗаписьФайла.УстановитьТекст(ТекстДляЗаписи); ЗаписьФайла.Записать(ИмяКомандногоФайла); //ЗаписьФайла = Неопределено; Исключение Сообщить("Ошибка при создании BAT файла: " + ОписаниеОшибки()); Возврат; КонецПопытки; Попытка ЗаписьФайла = Новый ЗаписьТекста(ИмяКомандногоФайла, "cp866"); ЗаписьФайла.ЗаписатьСтроку(ТекстДляЗаписи); ЗаписьФайла.Закрыть(); Исключение Сообщить("Ошибка при записи текста в файл: " + ОписаниеОшибки()); Возврат; КонецПопытки; Попытка ЗапуститьПриложение(ИмяКомандногоФайла,,Истина); Исключение Сообщить("Ошибка при запуске BAT файла: " + ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
15
Garykom
гуру
22.07.24
✎
16:22
|
(14) говнокод, однако
1. СтрШаблон юзай вместо + 2. Дважды один файл писать? 3. Зачем ЗаписатьСтроку() когда надо сразу Записать() тут? 4. https://forum.infostart.ru/forum9/topic124387/ "кодировкой управляет сама 1с", вероятно зависит от ОС и региональных настроек выясни какая кодовая страница в xml файлах у тебя получается хз может ты из китая или японии |
|||
16
Garykom
гуру
22.07.24
✎
16:21
|
Проверь что там
|
|||
17
obliteratorsss
naïve
22.07.24
✎
16:32
|
(15) в xml utf-8. (16) Стоит галочка
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |