Суббота, 05.10.2024, 01:08
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Кодировка ОЕМ в методе "Записать" при формировании bat-файла
MaxДата: Понедельник, 24.09.2018, 13:14 | Сообщение # 1
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
Винда Сервер 2016.
Инструмент "Регистрация COM компонент".
Нажимаю кнопку "Запустить от администратора" и вижу, что в сформированном самоудалящемся бат-файле вместо кириллицы (имя пользователя и путь к обработке ИР) знаки вопроса. Из-за этого сеанс не запускается.
Исправил в методе "СоздатьСамоудаляющийсяКомандныйФайлЛкс" (ирОбщий) одну строку и все заработало.
Было:
Код
ТекстовыйДокумент.Записать(ПолноеИмяФайла, КодировкаТекста.OEM);
Стало:
Код
ТекстовыйДокумент.Записать(ПолноеИмяФайла); // по умолчанию кодировка УТФ-8
В настройках ОС язык локали для неюникодовских программ установлен в значение "Русский". Патч реестра, подменяющий какие-то там странички cp1251.nls, который иногда помогает избавиться от знаков вопросов вместо кириллицы, в ОС не делал.


Сообщение отредактировал Max - Понедельник, 24.09.2018, 13:14
 
tormozitДата: Понедельник, 24.09.2018, 23:33 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
А если так?
ТекстовыйДокумент.Записать(ПолноеИмяФайла, КодировкаТекста.ANSI);
 
MaxДата: Вторник, 25.09.2018, 07:58 | Сообщение # 3
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
Записанный с кодировкой АНСИ и открытый после этого в "Блокноте" бат-файл корректен (кириллица отображается как ожидается), но 1С видит вместо этого "крякозябры": http://pics.rsh.ru/img/Untitled_magpmima.png



И это не первый случай, когда 1С в Винде не понимает кодировку, отличную от УТФ-8: был еще один похожий с обработкой универсального обмена ХМЛ (которая использует запись файлов обмена в кодировке АНСИ).
Прикрепления: 2903850.png (28.7 Kb)
 
tormozitДата: Воскресенье, 30.09.2018, 22:37 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
Исправлено в 4.67
 
MaxДата: Понедельник, 01.10.2018, 10:04 | Сообщение # 5
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
Исправлено, да не совсем, как оказалось.
Выдернул созданный бат-файлик, запускаю его отдельно в командной строке и вот что получается: http://pics.rsh.ru/img/Untitled_usarzto5.png


Команда "cmd" даже не начинает выполняться.
Подчеркнутое красным "я╗┐" - это BOM (byte order mark) и, судя по всему, текстовый UTF8-файл надо сохранять без него.
Проблема в том, что объектами "ТекстовыйДокумент" или "ЗаписьТекста" этого добиться, похоже, можно только в паре с объектом "Поток" (8.3.9.1818+).
Но ведь у тебя используется метод "Run" внешней компоненты - может, в ней этот BOM удалять?
Прикрепления: 5440781.png (12.8 Kb)


Сообщение отредактировал Max - Понедельник, 01.10.2018, 10:06
 
gdaДата: Среда, 03.10.2018, 15:43 | Сообщение # 6
Лейтенант
Группа: Проверенные
Сообщений: 60
Репутация: 66
Статус: Оффлайн
В комментарии к статье https://infostart.ru/public/137454/ предлагается использовать кодировку CESU-8 вместо UTF-8.
 
smerchДата: Понедельник, 08.10.2018, 15:34 | Сообщение # 7
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 14
Статус: Оффлайн
Подтверждаю, кодировка CESU-8 работает.

Есть только один нюанс: для того, чтобы параметры передавались верно необходимо установить кодировку 65001 перед запуском команды.

Т.е. в обработке ирПлатформа.epf в процедуре ЗапуститьСкрытоеПриложениеИДождатьсяЗавершения добавить вначале строки запуска
   
Код
СтрокаЗапуска = "chcp 65001" + Символы.ПС + "cmd.exe /c """ + СтрокаЗапуска + """";


Сообщение отредактировал smerch - Понедельник, 08.10.2018, 17:11
 
  • Страница 1 из 1
  • 1
Поиск: