Размышления.
.
Если уже в ОС напихали всяких расшифровок, то так и просится что-то типа:
- запрет закрытия ОС (иначе закрыл юзер ОС и всё насчитанное потеряли) или управление наличием кнопки "крестика"
на тулбаре ОС для закрытия или предопределенная ПриЗакрытииОС (при этом закрытие должно нормально пройти если закрывается главное окно/сессия;
- запрет по методу ОС.Очистить(), типа ОС.ЗапретОчистки(1) (1/0, возможность получения текущего флага очистки), если флажок установлен в 0, то ОС.Очистить() - отрабатывает без ошибок, но фактически очистку не производит (выдает код возврата = -1?) или выдает исключение и стоп работа...
.
???
И запрет кнопки reset тоже ;D
Полагаю, что достаточно будет в ПриВыводеСообщения добавить передачу расшифровки. Об этом я забыл.
Тогда можно будет вести свой полный лог. И можно не бояться закрытия и очистки ОС.
ну или типа так
Добавил расшифровку в ПриВыводеСообщения. В тестовой сборке.
Похоже с этими хотелками связано.
FormEx 2.0.5.198 забирал сегодня.
Процедуру ниже, повесил на кнопку. Нажал кнопку. В окно сообщений, естественно, вывалилась ошибка. Закрыл окно сообщений, нажал на кнопку повторно, получил вылет из 1С.
Обнаружено было в другом случае, тут упращенный вариант.
Кстати Сообщить(1/0); тоже приводит к вылету.
Процедура Вылет()
Сообщить("Вылет");
Сервис=СоздатьОбъект("Сервис");
Сервис.Ошибка();
КонецПроцедуры
Хм... Вроде правил этот момент. Посмотрю вечером.
А у меня, к сожалению, перестало всегда переходить по клику на ошибку в модуле конфигуратора,
в сам конфигуратор переходит, а в модуль не всегда.
Гляньте тестовую сейчас.
Цитата: АЛьФ от 03 апреля 2024, 20:16Гляньте тестовую сейчас.
При Сообщить(1/0) у меня не падает.
Цитата: item от 03 апреля 2024, 20:43Цитата: АЛьФ от 03 апреля 2024, 20:16Гляньте тестовую сейчас.
При Сообщить(1/0) у меня не падает.
В конфигуратор теперь переходит нормально?
Цитата: АЛьФ от 03 апреля 2024, 20:55В конфигуратор теперь переходит нормально?
Так сразу не скажу, днём активно писал и заметил такое.
Завтра, на тестовой постоянно, вечером отпишусь.
За ПолучитьМодульОбъекта мой поклон, так даже интереснее, особенно в части модулей документов.
Цитата: АЛьФ от 03 апреля 2024, 20:16Гляньте тестовую сейчас.
Падать перестало.
Цитата: item от 03 апреля 2024, 21:44За ПолучитьМодульОбъекта мой поклон, так даже интереснее, особенно в части модулей документов.
А для чего это вообще?
Цитата: trdm от 04 апреля 2024, 10:52А для чего это вообще?
Для чего "ПолучитьМодульОбъекта" или для чего "в части модулей документов" ?
Цитата: 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Для чего и то, и другое?
Что касается модуля документа, это один из немногих, а точнее всего двух, модулей конфигурации, который "не знает" про реквизиты формы, и поэтому в принципе может быть всегда откомпилирован в контексте документа без ошибок.
Применение на практике сходу не придумаю, но уверен, что кому-нибудь и пригодится.
Цитата: АЛьФ от 03 апреля 2024, 20:55В конфигуратор теперь переходит нормально?
Вроде всё в порядке.
1) Можно ли реализовать получение Расшифровки методом ОкноСообщений.ПолучитьСтроку()?
2) Когда окно сообщений парковано и размер уменьшен до предела (грубо, до одной строки), то оно находится в каком-то особом состоянии (без полосы прокрутки, без возможности выделения). Можно ли как-то ловить события клик или двойной клик на нём? ПриДвойномКликеВОкнеСообщений() не срабатывает когда оно в таком состоянии.
Цитата: Arbuz от 24 апреля 2024, 15:381) Можно ли реализовать получение Расшифровки методом ОкноСообщений.ПолучитьСтроку()?
2) Когда окно сообщений парковано и размер уменьшен до предела (грубо, до одной строки), то оно находится в каком-то особом состоянии (без полосы прокрутки, без возможности выделения). Можно ли как-то ловить события клик или двойной клик на нём? ПриДвойномКликеВОкнеСообщений() не срабатывает когда оно в таком состоянии.
1. Можно.
2. Нельзя.
1)
ОкноСообщений.ПолучитьСтроку()
возвращает всегда 1, не зависимо от количества строк и значения первого параметра.
2)
При пустом окне сообщений, т.е. без строк
Процедура ПриНачалеРаботыСистемы()
...
глОкноСообщений = СоздатьОбъект("ОкноСообщений");
глОкноСообщений.ПодключитьСистемноеОкноСообщений();
глОкноСообщений.Парковать(1);
глОкноСообщений.УстановитьКоординаты(,,МинРазмерОкнаСообщений);
...
КонецПроцедуры //ПриНачалеРаботыСистемы()
Процедура ПриДвойномНажатииЛевойКнопки(...)
...
глОкноСообщений.УстановитьКоординаты(,,МинРазмерОкнаСообщений);
//возвращает 1 на пустом окне
_КоличествоСтрок = глОкноСообщений.КоличествоСтрок();
Если _КоличествоСтрок > 0 Тогда
_ТекстСообщения = "";
//крашит 1С при любом значении первого параметра (0, -1 и т.д.)
Если глОкноСообщений.ПолучитьСтроку(_КоличествоСтрок - 1, _ТекстСообщения) = 1 Тогда
...
КонецПроцедуры //ПриДвойномНажатииЛевойКнопки()
Если вывести хотя бы одну строку, 1С не падает
@Djelf пишет что
"в 198й версии и 199й (06/10/24) в ПриДвойномКликеВОкнеСообщений Расшифровка не передается." - то есть не работает, это так? кто-то еще проверял?