Последние сообщения

#41
7.7 / Re: КОПИЛКА: здесь всякие редк...
Последний ответ от Злоп - 04 ноября 2024, 17:01
ПЕРЕКОДИРОВКА С ИСПОЛЬЗОВАНИЕМ BinaryData
Написал <Ветер в поле>
...Я всегда использовал BinaryData из 1cpp для перекодировки. А для перекодировки единичных строк просто написал функцию для перекодировки из любой систем в любую с использованием того же BinaryData

// Кодировки: 0 - windows-1251, 1 - OEM, 2 - UTF-16, 3 - UTF-8
Функция ИзменитьКодировку(Стр, ИсхКодировка, КонКодировка) Экспорт
    Перем ТекСтр;
    
    оБуфер = СоздатьОбъект("BinaryData");
    оБуфер.Кодировка = КонКодировка;
    
    Если ИсхКодировка = 0 Тогда
        оБуфер.ЗаписатьСтроку(Стр, 1);
        
    Иначе
        оБуферИсх = СоздатьОбъект("BinaryData");
        оБуферИсх.ЗаписатьСтроку(Стр, 1);
        оБуферИсх.Перейти(0, 0);
        оБуферИсх.Кодировка = ИсхКодировка;
        
        Если ИсхКодировка >= 2 Тогда //UTF-16 или 8
            Пока оБуферИсх.ПрочитатьСтроку(ТекСтр, 0) = 1 Цикл
                оБуфер.ЗаписатьСтроку(ТекСтр, 0);
            КонецЦикла;
            
        Иначе
            оБуферИсх.ПрочитатьСтроку(ТекСтр, оБуферИсх.Размер());
            оБуфер.ЗаписатьСтроку(ТекСтр, 1);
        КонецЕсли;
        
        оБуферИсх = "";
    КонецЕсли;
    
    оБуфер.Перейти(0, 0);
    оБуфер.Кодировка = 0; //прочитаем без перекодировки
    оБуфер.ПрочитатьСтроку(ТекСтр, оБуфер.Размер());
    
    оБуфер = "";
    
    Возврат ТекСтр;
    
КонецФункции //ИзменитьКодировку
#42
FormEx / Хотелка: надпись (синяя Т) на ...
Последний ответ от Злоп - 04 ноября 2024, 16:57
Можно ли как-то выровнять содержимое надписи по нижнему краю границы надписи?
Условно: некий заголовок/текст на форме. Может в надпись пометиться без переносов, а может и разделители строк быть и прост переносы (например текст определяется динамически кодом). И было бы просто КРАСИВЕЕ если текст надписи если он влазит "в одну строку" был бы выровнен по нижнему краю... Может как-то расширенным стилем можно так указать? или как-то иначе?
#43
FormEx / Хотелка: ОткрытьДвиженияОбъект...
Последний ответ от Злоп - 04 ноября 2024, 14:59
Вот есть же в Сервис такой метод

ОткрытьДвиженияОбъекта(<?>)
Синтаксис:
ОткрытьДвиженияОбъекта(<Объект>)
Назначение:
Открывает штатную форму отображения движений документа.
Параметры:
<Объект> - документ, движения которого надо показать.

Хотелось бы иметь возможность доступа к таблице на форме (это же похоже на ТЗ или ТЧ дока или МНЧ списка), чтобы хотя бы манипулировать шириной колонок, или там, например, переопределить шрифт для отображения...

Сервис.АктивныйКонтекст() это окно не ловит
Сервис.СписокВсехОткрытыхОкон() - также не видит это окно
#44
FormEx / Re: Делёжка опытом
Последний ответ от Злоп - 04 ноября 2024, 14:55
@АЛьФ, предлагаю ветку еще раз закрепить вверху форума.
А то не  видно, и "дубли" рождаются...
#45
FormEx / Re: Перекодировка из UTF8 в 12...
Последний ответ от Ветер в поле - 04 ноября 2024, 11:33
Я всегда использовал BinaryData из 1cpp для перекодировки. А для перекодировки единичных строк просто написал функцию для перекодировки из любой систем в любую с использованием того же BinaryData

// Кодировки: 0 - windows-1251, 1 - OEM, 2 - UTF-16, 3 - UTF-8
Функция ИзменитьКодировку(Стр, ИсхКодировка, КонКодировка) Экспорт
    Перем ТекСтр;
    
    оБуфер = СоздатьОбъект("BinaryData");
    оБуфер.Кодировка = КонКодировка;
    
    Если ИсхКодировка = 0 Тогда
        оБуфер.ЗаписатьСтроку(Стр, 1);
        
    Иначе
        оБуферИсх = СоздатьОбъект("BinaryData");
        оБуферИсх.ЗаписатьСтроку(Стр, 1);
        оБуферИсх.Перейти(0, 0);
        оБуферИсх.Кодировка = ИсхКодировка;
        
        Если ИсхКодировка >= 2 Тогда //UTF-16 или 8
            Пока оБуферИсх.ПрочитатьСтроку(ТекСтр, 0) = 1 Цикл
                оБуфер.ЗаписатьСтроку(ТекСтр, 0);
            КонецЦикла;
            
        Иначе
            оБуферИсх.ПрочитатьСтроку(ТекСтр, оБуферИсх.Размер());
            оБуфер.ЗаписатьСтроку(ТекСтр, 1);
        КонецЕсли;
        
        оБуферИсх = "";
    КонецЕсли;
    
    оБуфер.Перейти(0, 0);
    оБуфер.Кодировка = 0; //прочитаем без перекодировки
    оБуфер.ПрочитатьСтроку(ТекСтр, оБуфер.Размер());
    
    оБуфер = "";
    
    Возврат ТекСтр;
    
КонецФункции //ИзменитьКодировку
#46
FormEx / Re: Перекодировка из UTF8 в 12...
Последний ответ от Злоп - 03 ноября 2024, 19:19
Например, с помощью Formex если надо сформировать UTF8 файл - создаешь обычный объект "Текст" (по умолчанию он с кодировкой Win1251), берешь нужные строки, конвертишь их через СтрокаКодировкаУТФ8 = глСервис.DecodeToUTF8(СтрокаКодировка1251); И ПИХАЕШЬ В Тескст. Потом Текст.Записать() - получается файл в кодировке UTF8? проги его нормально понимают что это кодировка УТФ8 (на просмотр нормально показывают), хотя наверное при этом никакого BOM в файле нет...
#47
FormEx / Re: Перекодировка из UTF8 в 12...
Последний ответ от Злоп - 03 ноября 2024, 19:15
ну так это ж кодировать/раскодировать с учетом добавлять/вырезать BOM - если это файло, а если просто строку кодировать/раскодировать - никакой бом добавлять/убирать же не надо...
?
#48
FormEx / Re: Перекодировка из UTF8 в 12...
Последний ответ от Djelf - 03 ноября 2024, 15:08
У меня в Карлике код перекодироки ANSI<>UTF8 абсолютно аналогичен коду АЛьФ`а (это обычный шаблон, он везде используется).
Анализа на BOM и вырезания тоже нет, что-то я недодумал, что в принципе это ничему не повредит...
Видимо BOM на низком уровне надо вырезать на автомате, при раскодировании (ну можно 2й параметр сделать - пожалуйста не убивайте BOM  :) ).
А в кодировании наоборотный, 2й параметр (0/1) - добавлят BOM.
Сделаю, когда руки дойдут...
#49
FormEx / Re: Перекодировка из UTF8 в 12...
Последний ответ от Злоп - 03 ноября 2024, 12:06
Про бом я и сам сообразил. Правда непонятно, почему получается один ненужный символ...
#50
FormEx / Re: Перекодировка из UTF8 в 12...
Последний ответ от АЛьФ - 03 ноября 2024, 10:56
Цитата: Злоп от 03 ноября 2024, 00:58Если взять файл в кодировке UTF8, прочитать первую строку штатным методом объекта "Текст" и сделать
Стр = глСервис.EncodeFromUTF8(ТутПерваяСтрока);
то на выходе в Стр в первом символе получим мусор какой-то и этот первый символ лишний, его надо отрезать. По крайне мере это так если файл начинается с кода: EF BB BF

Просто заметки на полях.


Это BOM - https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2