Имя: Пароль:
1C
1C 7.7
v7: Помогите с русификацией
0 Max_Prog
 
23.03.13
15:25
Проблема в следующем: пишу выгрузку из ТиС в ТиС справочники и документы выгружаются в текстовые сообщения и отправляю по почте через CDO , получаю почту через ROM-Mail. Приходит кракозябра. Почта на mail.ru, причем на самой почте отображается все нормально. ОС Windows 7 64bit. Может кто сталкивался, помогите. Заранее благодарен.
1 Mikeware
 
23.03.13
15:33
Документация:

Кодировка
Charset
Синтаксис:
Кодировка
Назначение:
Кодировка сообщения при отправке/получении. По умолчанию "windows-1251"
Замечание:
Атрибут может принимать любое значение, однако автоматическое кодирование/декодирование средствами внешней компоненты доступно только для следующих кодировок: "windows-1251", "koi8-r", "koi8-u", "ibm866", "x-mac-cyrillic", "iso-8859-1"..."iso-8859-9".
Пример:
Почта.Кодировка="windows-1251"
2 Max_Prog
 
23.03.13
16:36
Не пашет
Процедура глПолучитьПочту(Логин,Пароль)  Экспорт                                  

   Если ЗагрузитьВнешнююКомпоненту("ROM-Mail.dll")=0 Тогда
       Предупреждение("ROM-Mail.dll не загружена!");
         Возврат;
     КонецЕсли;    
   Попытка    
       Почта = СоздатьОбъект("AddIn.AddInMail");
   Исключение        
       Сообщить("Ошибка инициализации E-Mail");
         Возврат;
   КонецПопытки;
   Почта.СерверПриема = "pop.mail.ru";                                              
   Почта.ПортПриема = "110";
   Почта.Логин = Логин;
   Почта.Пароль = Пароль;
   Почта.ОставлятьНаСервере = 1;
   Почта.ПоказыватьПредупреждения = 0;
   Почта.Кодировка="windows-1251";    ///////// Не пашет

   
   Если Почта.Подключиться("Прием") = 0 Тогда
//        Сообщить("Не удалось подключиться к серверу!");
         Возврат;
   КонецЕсли;    
     
   Для Индекс=1 По Почта.КоличествоСообщений() Цикл
       Почта.ПолучитьСообщение(индекс);
       Адрес = Почта.АдресОтправителя;
       Тема = СокрЛП(Почта.Тема);
       Тело = СокрЛП(Почта.Тело);
       ДатаП = Почта.ДатаОтправки;
       Инд = Прав(Тема,2);
       Если Найти(Тема,"~~~OBMEN___DANNAMI~~~") > 0 Тогда
           Если Найти(Константа.ПрефиксИБ,"Ц") = 0 Тогда
               Если Найти(Тема,Константа.ПрефиксИБ) = 0 Тогда
                   Продолжить;
               КонецЕсли;    
           КонецЕсли;    
           ТекстТ = СоздатьОбъект("Текст");
           ТекстТ.ДобавитьСтроку(Тело);
           Если глСоздатьДок(ТекстТ) = 1 Тогда
               Почта.ОставлятьНаСервере = 0;                    
           КонецЕсли;
       Иначе
           Почта.ОставлятьНаСервере = 0;
       КонецЕсли;        
   КонецЦикла;            
   Почта.Отключиться();            
   
КонецПроцедуры
Не пашет
3 Max_Prog
 
23.03.13
16:38
Может при отправке надо? Но как поменять кодировку через CDO?
4 G-Re
 
24.03.13
11:05
Может, поиграться с объектом Текст, задав явно кодировку?
ТекстТ.КодоваяСтраница(<Режим>);
5 Злой Бобр
 
24.03.13
15:52
(0) В ОС поставь правильную кодировку.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage. Исправить кодировки с 1250 по 1255 на 1251.
6 BalBess
 
25.03.13
08:06
objEmail = Createobject("CDO.Message");
objEmail.BodyPart.CharSet = "windows-1251";
7 ЧеловекДуши
 
25.03.13
08:15
(3) Думается, мысли у тебя верная :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший