Имя: Пароль:
1C
1С v8
Получить значение "Разделитель элементов списка" профиля пользователя Windows
0 xavchik
 
09.08.15
12:32
Всем привет.

Есть обработка, которая читает данные из Excel, предварительно сохраняя таблицу в формате CSV для скорости при помощи SaveAs(). При сохранении объект Excel автоматически использует в качестве разделителя символ, установленный в профиле пользователя Windows (Панель управления - Язык и региональные стандарты - Дополнительные параметры - Разделитель элементов списка). Потом обработка уже анализирует файл, разделяя строки по разделителю.

Проблема в том, что в профиле Windows в качестве разделителя может стоять, потенциально, любой символ. Так что надо получить тот, который задан в профиле пользователя и использовать для разбора именно его. Как это сделать? (";" по умолчанию не подходит, так как может содержать в ячейке таблицы)
1 Zhuravlik
 
09.08.15
12:45
читайте с помощью ADO
2 xavchik
 
09.08.15
12:47
(1) А можно поподробнее - раньше никогда не использовал ADO. Пару примеров или ссылок...
3 b_ru
 
09.08.15
13:24
HKCU\Control Panel\International
параметр sList
4 xavchik
 
09.08.15
13:52
(3) Ок. Я так понимаю, что это параметр реестра. А с помощью какого объекта с ним можно работать из 1С?
5 mehfk
 
09.08.15
14:15
КомандаСистемы + REG EXPORT
6 xavchik
 
09.08.15
19:34
(3) Всем спасибо.
Получил через реестр Windows

Функция ПолучитьРазделительЭлементовСпискаПолзователяWindows()
    
    //Зададим разделитель по умолчанию
    Разделитель    = "~";
    
    Попытка
        
        //HKEY_CURRENT_USER\Control Panel\International\sList
        ПутьПараметраРеестра    = "Control Panel\International";
        ИмяПараметраРеестра        = "sList";
        
        Объект_РеестрWindows    = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv");
        Объект_РеестрWindows.GetStringValue("2147483649", ПутьПараметраРеестра, ИмяПараметраРеестра, Разделитель);
    
    Исключение
        Сообщить("Ошибка получения разделителя списка пользователя", СтатусСообщения.Важное);
    
    КонецПопытки;
    
    Возврат Разделитель;
    
КонецФункции
7 b_ru
 
10.08.15
00:58
(6) Не ну можно и так конечно, но есть варианты попроще. Хотя бы тут смотри: Книга знаний: Работа с реестром
Основная теорема систематики: Новые системы плодят новые проблемы.