ХОТЕЛКА: ОкноСообщений, расширение методов в связи с расшифровками

Автор Злоп, 24 марта 2024, 14:12

« назад - далее »

Arbuz

Цитата: item от 04 апреля 2024, 11:05
Цитата: trdm от 04 апреля 2024, 10:52А для чего это вообще?
Для чего "ПолучитьМодульОбъекта"  или   для чего "в части модулей документов" ?


Для чего и то, и другое?

Пиит

Цитата: Arbuz от 04 апреля 2024, 14:46Для чего и то, и другое?

Вы сговорились?

1. Есть метод ПолучитьМодульВнешнейОбработки(<ПолныйПутьОбработки>). Я же не спрашиваю, зачем он, для кого, но он есть. Тогда, исходя из вселенского принципа суперсимметрии, должен быть и метод ПолучитьМодульВстроеннойОбработки(<ИмяОбработки>). Или не так?
2. По существу. У меня есть глобальные модули до 30000 строк. Письками меряться не нужно, уверен, у многих и по-больше. Задался целью разнести их по закоулочкам, внутри конфигурации. Кроме того, мне изрядно надоели инфинитивы глСправочник_Получить, глПропись_Установить, глВебСервер_Запустить и т.д. Для решения этой задачи использовал в/к V7Crypt Щербакова Анатолия Викторовича, которая декларирует необходимые возможности "из коробки", но впоследствии обнаружил ряд багов, с которыми устал бороться, и начал рассматривать для замены ВыполняемыйМодуль.
Я лично не знаю, как ВыполняемыйМодуль тактично запустить на модуле Обработки без подключения третьих компонент типа АктивМД. А Вы знаете?
3. Мне не нужны для этих целей классы. Класс имеет смысл, когда предполагается создание множества объектов, а в данном случае каждый модуль существует в единственном и неповторимом виде. Может, я что-то упустил на школьной скамейке?

АЛьФ

Цитата: item от 04 апреля 2024, 15:431. Есть метод ПолучитьМодульВнешнейОбработки(<ПолныйПутьОбработки>). Я же не спрашиваю, зачем он, для кого, но он есть.

А я все равно расскажу. Этот метод появился как раз из-за необходимости загружать текст модуля внешней обработки в объект ВыполняемыйМодуль. У нас написан класс работы с регламентными заданиями. Изначально текст хранился в текстовый файлах, но постоянно натыкались на проблемы с проверкой синтаксиса. Поэтому было решено перенести модули во внешние обработки. Для этого был реализован этот метод.
Вот...

Пиит

Цитата: АЛьФ от 04 апреля 2024, 16:09А я все равно расскажу. Этот метод появился как раз из-за необходимости загружать текст модуля внешней обработки в объект ВыполняемыйМодуль. У нас написан класс работы с регламентными заданиями. Изначально текст хранился в текстовый файлах, но постоянно натыкались на проблемы с проверкой синтаксиса. Поэтому было решено перенести модули во внешние обработки. Для этого был реализован этот метод. Вот...

Спасибо, Алексей Леонидович.
Компонента, как живой организм, как осьминог, под воздействием разных природных сил развивается и растёт во все стороны, и конечно имеет свою интересную биографию. Не зная этой истории, может крепко облажаться любой критик.
Понимаю, что каждому новичку рассказывать о каждом щупальце затруднительно, но, если позволите, иногда будут спрашивать, откуда ноги растут.



Пиит

Цитата: Arbuz от 04 апреля 2024, 14:46Для чего и то, и другое?

Что касается модуля документа, это один из немногих, а точнее всего двух, модулей конфигурации, который "не знает" про реквизиты формы, и поэтому в принципе может быть всегда откомпилирован в контексте документа без ошибок.
Применение на практике сходу не придумаю, но уверен, что кому-нибудь и пригодится.

Пиит


Arbuz

1) Можно ли реализовать получение Расшифровки методом ОкноСообщений.ПолучитьСтроку()?

2) Когда окно сообщений парковано и размер уменьшен до предела (грубо, до одной строки), то оно находится в каком-то особом состоянии (без полосы прокрутки, без возможности выделения). Можно ли как-то ловить события клик или двойной клик на нём? ПриДвойномКликеВОкнеСообщений() не срабатывает когда оно в таком состоянии.

АЛьФ

Цитата: Arbuz от 24 апреля 2024, 15:381) Можно ли реализовать получение Расшифровки методом ОкноСообщений.ПолучитьСтроку()?

2) Когда окно сообщений парковано и размер уменьшен до предела (грубо, до одной строки), то оно находится в каком-то особом состоянии (без полосы прокрутки, без возможности выделения). Можно ли как-то ловить события клик или двойной клик на нём? ПриДвойномКликеВОкнеСообщений() не срабатывает когда оно в таком состоянии.

1. Можно.
2. Нельзя.

Arbuz

1)
ОкноСообщений.ПолучитьСтроку()
возвращает всегда 1, не зависимо от количества строк и значения первого параметра.

2)
При пустом окне сообщений, т.е. без строк
Процедура ПриНачалеРаботыСистемы() 
...
    глОкноСообщений = СоздатьОбъект("ОкноСообщений");
    глОкноСообщений.ПодключитьСистемноеОкноСообщений();
    глОкноСообщений.Парковать(1);
    глОкноСообщений.УстановитьКоординаты(,,МинРазмерОкнаСообщений);
...
КонецПроцедуры  //ПриНачалеРаботыСистемы() 

Процедура ПриДвойномНажатииЛевойКнопки(...)
...
    глОкноСообщений.УстановитьКоординаты(,,МинРазмерОкнаСообщений);

//возвращает 1 на пустом окне
    _КоличествоСтрок = глОкноСообщений.КоличествоСтрок();

    Если _КоличествоСтрок > 0 Тогда
        _ТекстСообщения = "";

//крашит 1С при любом значении первого параметра (0, -1 и т.д.)
        Если глОкноСообщений.ПолучитьСтроку(_КоличествоСтрок - 1, _ТекстСообщения) = 1 Тогда

...
КонецПроцедуры //ПриДвойномНажатииЛевойКнопки()
Если вывести хотя бы одну строку, 1С не падает