Добрый день Всем! Прошу помощи.
Внешняя обработка создает dbf файл . Запускается .bat файлом
"C:\Program Files (x86)\1cv8\common\1cestart.exe" /S "localhost\salon" /N "Admin" /P "Master" /Execute "C:\Obrabotki\GetAnalysis.epf".
 При запуске на Windows Server 2019 вместо русских символов пишет в файл dbf знак "?".
В региональных настройках выставил "Язык для программ, не поддерживающих Unicode" (Language for non-Unicode programs) - русский. Проблема решилась, но только если запускать bat файл вручную,
Если запускать его планировщиком Windows по прежнему пишет "?" .
Не пойму где копать дальше ?
---
Может беда в пользователе от которого запускается задача в планировщике? Попробуйте запустить от того же имени, которым запускаете bat
---
Пробуйте задавать кодировку OEM до создания файла.
Каталог = ЭлементыФормы.Каталог.Значение;
Файл = Новый XBase;
Файл.Кодировка = КодировкаXBase.OEM;
....
Файл.СоздатьФайл(Каталог);
Файл.Записать();
---
Может беда в пользователе от которого запускается задача в планировщике? Попробуйте запустить от того же имени, которым запускаете bat
---
bat запускаю как администратор. Задание в планировщик тоже записал как администратор.
(
---
Нашел причину.
В планировщике есть опции "Run only user is logged on" и "Run whether user is logged on or not"
Была выставлена вторая. Выставил первую и все стало Ок.
На server 2012 все работало с обеими опциями нормально. Я выставлял вторую, потому что на первой задание иногда не запускалось по расписанию, на второй работало стабильно. Посмотрим насчет стабильности на новой платформе.
Благодарю Всех за участие. Удачи.
---
а может bat-ник начать словами
chcp 1251 >nul

это устанавливает кодировку русского языка в явном виде.
---
Проверил. Не помогло.
Думал может быть планировщик хранит старые настройки, удалил и создал вновь задание-результат тот же.
---
Проверил. Не помогло.
Думал может быть планировщик хранит старые настройки, удалил и создал вновь задание-результат тот же.
(4) Именно так все и сделано в обработке. До выставления "Язык для программ, не поддерживающих Unicode" = русский, указание любой кодировки или вообще не указание давало один результат - "?".
---
Обрати внимание на то: ЧТО ты пишешь в dbf. Текст который ты пишешь в dbf может быть уже в unicode (это нужно проверить)
---
Файл = Новый XBase;
Файл.Кодировка = КодировкаXBase.OEM; или какую там надо, это точно надо установить

затем

я бы к обработке добавил формирование лога в текстовом виде о том какие данные пишем в какие поля
потом посмотрел бы этот лог
если в логе тоже ???????? - беда, надо думать дальше
если в логе как надо, то можно изменить обработку так чтобы она не сразу в ДБФ писала, а сначала в текст (нужная кодировка) потом взять оттуда и в ДБФ
ну и в итоге временный файл удалить
машинка железная , ей все-равно сколько раз переписать
---
Экспериментировал с текстовыми файлами. Писал в них, перекодировал, файл получался читабельный, но при записи из него в dbf упорно писался "?".
Здесь дело в системе. До этого все работало на Windows Server 2012. Через планировщик запускалась эта обработка и все было Ок.
---
прикольно, конечно.
Значит пора перейти к XML.
Если разобраться с XDTO , здесь же на инфостарте есть статьи, потом тысячу раз пригодится.

а еще, если лень с xml, козырный вариант в базу SQL писать, и несложно и можно параллельно читать, оно же не просто так вы файл пишите.
---
а еще, вспомнил, bat ники не почете у современных ОС
но можно же заменить на vbs
и не сложнее
что то типа

my.vbs

Dim hz
hz = "C:\Program Files (x86)\1cv8\common\1cestart.exe" /S "localhost\salon" /N "Admin" /P "Master" /Execute "C:\Obrabotki\GetAnalysis.epf"
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run hz, 1, True

в планировщике кажется надо только vbs и указать
ну или cscript.exe my.vbs