Имя: Пароль:
1C
 
NetObjectToIDispatch45 и язык для неюникод приложений
, ,
0 Shamandafil
 
27.10.21
22:48
Здравствуйте. При использовании .Net компоненты NetObjectToIDispatch45 если в качестве системного языка установлен нерусский, то русскоязычные свойства компоненты (например, Объект) превращаются в крякозябры. Может ли кто подсказать как в net принудительно использовать русские региональные настройки или избежать перекодирования через ansi. Serginio1 подскажете?
1 vde69
 
27.10.21
22:54
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"

и перезагрузка

зы
кодовая левый параметр должен соответствовать системной странице
2 Shamandafil
 
27.10.21
23:11
Разве это изменение будет локальным для 1С и её компонент или изменит все настройки системы? Простой, официальный путь изменить язык для неюникод программ на Россия, потребует перезагрузки и региональные настройки обычно меняю. Вы предлагаете неполную версию такого же изменения? Хотелось бы чтобы нет-объект сам знал на каком он языке написан, не сбивая общесистемные настройки.
3 Shamandafil
 
28.10.21
07:33
Нет ведь по задумке весь юникодный на него не должна влиять эта настройка.
4 Shamandafil
 
29.10.21
08:43
Ну как же традиции мисты, закидать гуаном написавшего, а потом подсказать ответ.
5 Garykom
 
гуру
29.10.21
09:06
(4) Понимаешь все офигели что кто то юзает это
6 Shamandafil
 
03.11.21
12:31
Я понимаю микросервисы и тд., но иногда нужно слать события в клиентский процесс 1С и всё это локально на рабочем месте.
7 Кирпич
 
03.11.21
13:49
(6) А чо стандартными методами нельзя слать чтоли? Надо обязательно через Ъ и linq?
8 Shamandafil
 
04.11.21
09:06
Компонента классическая без Ъ, а LINQ в 1С не используешь. Ну расскажите как стандартными средствами сделать http-сервер внутри клиентского процесса, чтобы без ВК.
9 Serginio1
 
04.11.21
10:36
10 acht
 
04.11.21
10:38
Вот она, вся мощь поддержки решения NetObjectToIDispatch45
11 Garykom
 
гуру
04.11.21
11:07
(8) без ВК только через обработку ожидания постоянно нечто внешнее изображающее http-сервер дергать
ну или с ПолеHTML извращаться на JS
это если для клиента 1С
для сервера там проще ибо опубликовал и все
12 Serginio1
 
04.11.21
12:08
(11) Угу и кучу соединений из разных потоках обслуживать!
Суть то NetObjectToIDispatch45, что не надо заморачиваться с COM бери готовый компонент или создаешь свой на .Net
Но используешь в 1С как обычный COM объект. Это удобно.
Кроме того есть подписка на события https://infostart.ru/1c/articles/417830/
13 Garykom
 
гуру
04.11.21
12:18
(12) Твоя NetObjectToIDispatch45 это ВК по сути а просили без ВК
14 Serginio1
 
04.11.21
12:23
(13) Нееее. Она может быть и ВК, но на самом то деле это Com объект. ВК это набор интерфейсов. Так, что по сути это не ВК
15 acht
 
04.11.21
13:20
(14) > Она может быть и ВК, но на самом то деле это
Дядь Сереж, тебя в (0) о чем спрашивали?
16 Garykom
 
гуру
04.11.21
13:56
(14) Если умеет внешнее событие 1С значит ВК ))
17 Serginio1
 
04.11.21
15:17
(16)  Моя компонента ничего не знает о вызывающем компоненте. Внешнее событие это для 7 ки. А так это обычное Com подписка на событие.
Еще смысл моей компоненты в подключении .Net библиотек.
(15) Я уже дал ответ в (9)
18 Shamandafil
 
12.11.21
10:31
Переключение CurrentCulture и CurrentUICulture на локаль ru-RU не помогло. CurrentInputLanguage не стал проверять, так как выглядит из другой области.
19 Serginio1
 
12.11.21
10:57
Надо для текущего потока установить
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
https://stackoverflow.com/questions/19378345/net-cultureinfo-difference-between-ru-and-ru-ru
20 Serginio1
 
12.11.21
11:00
А вообще культура нужна для каких то не юникодных компонентов.
Нужно смотреть где это происходит.
21 Shamandafil
 
12.11.21
11:04
В (18) так и написал, что сделал не только (19) но и для CurrentUICulture. Полностью:

Культура = СоздатьОбъект("System.Globalization.CultureInfo", "ru-RU");
    ОсновнойПоток = ПолучитьТип("System.Threading.Thread");
    ОсновнойПоток.CurrentThread.CurrentCulture = Культура;
    
    //ТипВВода = ПолучитьТип("System.Windows.Forms.InputLanguage");
    //ТипВВода.CurrentInputLanguage = ТипВВода.FromCulture(Культура);
22 Serginio1
 
12.11.21
12:16
Я про то, где ты смотришь? Куда выводишь
23 Shamandafil
 
12.11.21
12:19
В частности в отладчике 1С, но и вызов из кода 1С не латинских свойств/функций выдаёт ошибку, нет такого реквизита/метода. Способ исправить изменить язык для неюникод программ на русский, но это как минимум перезагрузка ОС.
24 Serginio1
 
12.11.21
12:24
То есть 1С не понимает юникода? Не 7.7  случайно?
25 Shamandafil
 
12.11.21
12:27
Проверялось на 8.3.10. Вот самого удивляет и 1С, и .NET юникодные, но закорючки как во времена 7.7. Сборка dll ваша. А вы проверяли на чисто американских ОС NetObjectToIDispatch45?
26 Serginio1
 
12.11.21
18:02
(25) Нет. Попробуй https://infostart.ru/1c/articles/779726/#Part3