Имя: Пароль:
1C
 
Проблема с кодировкой при пакетной выгрузке внешних обработок в 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) Стоит галочка
Программист всегда исправляет последнюю ошибку.