Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: АЛьФ от 16 февраля 2024, 10:21

Название: Тестовая сборка FormEx
Отправлено: АЛьФ от 16 февраля 2024, 10:21
Тестовая сборка выложена на Яндекс.Диске (https://disk.yandex.ru/d/SaGiKhu0fjokHw).
Информация об обновлении тестовой сборки выкладывается в этой ветке.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 17 февраля 2024, 16:37
Обновлена тестовая сборка.
Поправлены глюки, связанные с глобализацией предопределенных процедур.

Первые наброски трассировки выполнения кода.
Добавлен метод Сервис::УровеньТрассировки(НовыйУровень, ИмяФайлаЛога, СписокПеременных)
Возвращает уровень лога до вызова метода.
Все аргументы не обязательные.
НовыйУровень - устанавливаемый уровень лога трассировки: 0 - отключена трассировка; 1 - в лог пишется момент времени, ид модуля, имя модуля, номер строки; 2 - добавляется имя процедуры, текста строки исходного кода; 3 - добавляются аргументы процедуры, отслеживаемые переменные; 1000 - лог не пишется, вызывается предопределенная процедура (см. ниже). По умолчанию уровень не меняется.
ИмяФайлаЛога - полное имя файла, в который пишется лог. По умолчанию: КаталогИБ() + "SYSLOG\Трассировка.txt".
СписокПеременных - строка с именами отслеживаемых переменных, разделенных запятой.

Предопределенная процедура:
ПриЛогеТрассировки(Конт, ИмяПроцедуры, НомерСтроки, ТексСтроки, идМодуля, имяМодуля)

Документацию пока не дополнял.
Известная проблема:
При заходе в функцию/процедуру не удается получить номер строки и все, что на него завязано.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 19 февраля 2024, 22:15
Обновлена тестовая сборка.

В объект Сервис добавлен метод:
EncodeFromUTF8(<?>)
Синтаксис:
EncodeFromUTF8(<Строка>)
Назначение:
Преобразует переданную строку из кодировки UTF-8.
Параметры:
<Строка> - начальная строка с текстом в кодировке UTF-8;
Возвращает:
Строку, преобразованную в системную кодировку.

Добавлена предопределенная процедура:
Процедура ПриПолученииПредставленияПеременнойТрассировки(<?>,,,)
КонецПроцедуры
Синтаксис:
Процедура ПриПолученииПредставленияПеременнойТрассировки(<Контекст>, <ИмяПеременной>, <ЗначениеПеременной>, <ПредставлениеПеременной>)
КонецПроцедуры
Назначение:
Вызывается для получения строкового представления отслеживаемой переменной (см. метоэ Сервис.УровеньТрассировки()) для записи в лог. Процедура вызывается только если переменная доступна в текущем контесте.
Параметры:
<Контекст> - контекст, в котором идет исполнение
<ИмяПеременной> - имя отслеживаемой переменной
<ЗначениеПеременной> - текущее значение отслеживаемой переменной
<ПредставлениеПеременной> - текущее строкове представление отслеживаемой переменной.
Чтобы изменить записываемое представление, надо присвоить нужную строку параметру ПредставлениеПеременной.
Пример:
Процедура ПриПолученииПредставленияПеременнойТрассировки(Конт, ИмяПеременной, ЗначениеПеременной, ПредставлениеПеременной)
    Если ИмяПеременной = ''ТекстЗапроса'' Тогда
        ПредставлениеПеременной = ''Тут длинный текст запроса'';
    ИначеЕсли ТипЗначенияСтр(ЗначениеПеременной) = ''ТаблицаЗначений'' Тогда
        ПредставлениеПеременной = ''Текущая строка: '' + ЗначениеПеременной.НомерСтроки;
    КонецЕсли;
КонецПроцедуры // ПриПолученииПредставленияПеременнойТрассировки
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 23 февраля 2024, 20:02
Обновлена текстовая сборка.

Добавлена предопределенная процедура:

Процедура ПриЗагрузкеФормыВнешнегоОтчета(<?>)
КонецПроцедуры
Синтаксис:
Процедура ПриЗагрузкеФормыВнешнегоОтчета(<ИмяФайлаОтчета>)
КонецПроцедуры
Назначение:
Предопределенная процедура вызывается при загрузке формы внешнего отчета.
Параметры:
<ИмяФайлаОтчета> - (Строка) Полный путь к файлу отчета (вместе с собственно именем файла).
ЗАМЕЧАНИЕ:
Если в процедуре изменить переменную ИмяФайлаОтчета, то будет загружена форма указанного внешнего отчета.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 24 февраля 2024, 21:07
Тестовая сборка обновлена.

Допилил трассировку. Пока на этом с трассировкой закончил, перехожу к следующим хотелкам.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 25 февраля 2024, 12:18
Тестовая сборка обновлена.

В объект РасширениеФормы добавлен атрибут (только для чтения):
ИмяФайлаНастроек
Синтаксис:
ИмяФайлаНастроек
Назначение:
Доступ к значению имени файла настроект отчета. Имеет смысл только для форм отчетов и обработок, внешних и встроенных. Атрибут для чтения.

Добавлены методы:
ЗагрузитьНастройки(<?>)
Синтаксис:
ЗагрузитьНастройки(<ИмяНастройки>)
Назначение:
Загружает сохраненные настройки отчета.
Параметры:
<ИмяНастройки> - имя загружаемой настройки.
СохранитьНастройки(<?>)
Синтаксис:
СохранитьНастройки(<ИмяНастройки>)
Назначение:
Сохраняет текущие настройки отчета.
Параметры:
<ИмяНастройки> - имя сохраняемой настройки.

В объект Сервис добавлен метод:
ПланРаскраскиПоУмолчанию(<?>)
Синтаксис:
ПланРаскраскиПоУмолчанию(<СтрокаМакросаРаскраски>)
Назначение:
Если включено использование плана раскраски, то с помощью этого метода можно задать макрос раскраски по умолчанию для тез таблиц, в которых нет колонки FormEx_ПланРаскраски.
Параметры:
<СтрокаМакросаРаскраски> - необязательная строка, содержащая макрос раскраски (см. раздел "Раскраска таблиц"). Если не указан, то просто возвращает текущее значение.
Возвращаемое значение:
Значение плана раскраски по умолчанию до вызова метода.
ПРИМЕР:
Сервис = СоздатьОбъект("Сервис");
Сервис.ИспользоватьПланРаскраски(1);
Сервис.ПланРаскраскиПоУмолчанию("(BRUSH_S[255])");
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 25 февраля 2024, 16:54
Тестовая сборка выложена в качестве релиза.
2.0.5.196
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 02 марта 2024, 12:37
Тестовая сборка обновлена.

Доработаны методы РасширениеФормы::ПолучитьАтрибут() и АтрибутФормы::УстановитьАтрибут()

Добавлена предопределенная процедура:
Процедура ПриЗаписиТаблицы(<?>,,,)
КонецПроцедуры
Синтаксис:
Процедура ПриЗаписиТаблицы(<Контекст>, <ИмяФайла>, <ФорматФайла>, <СтандартнаяОбработка>)
КонецПроцедуры
Назначение:
Вызывается при программном или интерактивном сохранении табличного документа в формат, отличный от MXL.
Параметры:
<Контекст> - контекст табличного документа
<ИмяФайла> - имя файла, в который сохраняется таблица, можно изменить в процедуре
<ФорматФайла> - формат сохраняемого файла: 1 - xls; 2 - htm; 3 - txt, можно изменить в процедуре
<СтандартнаяОбработка> - флаг стандартной обработки; если в процедуре установить в 0, штатное сохранение не будет вызвано.
Замечание:
Не вызывается при сохранении в формате MXL!
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 03 марта 2024, 11:02
Обновлена тестовая сборка.

Выполнена хотелка: https://forum.dorex.pro/index.php?msg=279
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 03 марта 2024, 12:51
Обновлена тестовая сборка.

В объект Сервис добавлен метод:
ПолучитьСписокШрифтов(<?>,)
Синтаксис:
ПолучитьСписокШрифтов(<ИмяШрифта>, <НаборСимволов>)
Назначение:
Метод возвращает таблицу значений с параметрами установленных в системе шрифтов. Подробней см. функцию WinAPI EnumFontFamiliesEx.
Параметры:
<ИмяШрифта> - (необязательный) строка с именем шрифта, по умолчанию возвращаются все доступные шрифты
<НаборСимволов> - (необязательный) числовое значение набора символов, по умолчанию все доступные наборы символов
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 08 марта 2024, 20:40
Тестовая сборка обновлена.

Исправлена ошибка: 380 (https://forum.dorex.pro/index.php?msg=380)

В объект Сервис добавлен метод:
ЗагрузитьВнешнююОбработку(<?>,,)
Синтаксис:
ЗагрузитьВнешнююОбработку(<ИмяФайла>, <ИмяОбъекта>, <ХэшПроверки>)
Назначение:
Метод предназначен для загрузки внешнего отчета, в качестве внутреннего. После после выполнения метода
к загруженному отчету можно обращаться, как к любому встроенному отчету.
Параметры:
<ИмяФайла> - (необязательный) имя файла загружаемого внешнего отчета. По умолчанию - пустая строка, т.е. подразумевается, что задан
параметр <ИмяОбъекта> и требуется вернуть хэш ранее загруженного отчета.
<ИмяОбъекта> - (необязательный) имя встроенного объекта. Может быть как существующий отчет или обработка, так и новый, которого
нет в конфигурации. По умолчанию - пустая строка, т.е. подразумевается, что задан параметр <ИмяФайла> и требуется вернуть
хэш внешнего файла.
<ХэшПроверки> - (необязательный) строка с хешем для проверки. Если переданный хэш равен хэшу загружаемого файла, то отчет
не будет загружен.
Возвращает:
В случае успеха возвращает хэш файла или ранее загруженного объекта (в зависимости от переданных параметров).
В случае ошибки возвращается - 0.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 10 марта 2024, 16:40
Тестовая сборка обновлена.

Добавлены макросы раскраски PADDINGLEFT[000] и PADDINGRIGHT[000], с помощью которых можно задать, соответственно, левый и правый отступ (в пикселях) текста от края ячейки. Работает только в плане раскраске.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 11 марта 2024, 20:41
Обновлена тестовая сборка.

Убрано обязательное использование скобок в плане раскраски.

В объект Сервис добавлен метод:
СтатусРаскраски()
Синтаксис:
СтатусРаскраски()
Назначение:
Возвращает текущий статус раскраски, как сумму значений:
1 - раскраска включена;
2 - частичная раскраска;
4 - используется план раскраски.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 12 марта 2024, 21:18
Тестовая сборка обновлена.

В метод Сервис::ВыбратьЗначение() добавлен еще один параметр, в который после выбора возвращается полный путь выбранного значения.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 16 марта 2024, 11:33
Тестовая сбора обновлена.

Выполнены хотелки:
https://forum.dorex.pro/index.php?msg=515
https://forum.dorex.pro/index.php?msg=508
https://forum.dorex.pro/index.php?msg=502

Добавлен функционал формул в таблице значений.
Начиная с релиза 2.0.5.197, в компоненте реализована возможность добавления формул в штатный объект
"ТаблицаЗначений" по аналогии с формулами в многострочных частях. Формулы работают как в визуальном
представлении таблицы, так и в программно созданных объектах.
Для добавления формулы необходимо при создании колонки указать в параметре "Формат" формулу,
выделив ее знаками #. Примеры указания формулы:
#НомерСтроки
Ч4.2#ПолучитьЦену(Товар) - обращение к локальной функции
#глПолучитьОписание(Контекст, ВидЦен, Товар)#С50 - обращение к глобальной функции с передачей контекста
При вычислении формулы из строки формата вырезается строка, обрамленная символами #. Следует помнить, что
сложного анализа строки не происходит. Формула вида <С#"#" + Товар.Наименование#20> даст не ожидаемые формулу
<"#" + Товар.Наименование> и формат <С20>, а формулу <"> и формат <С" + Товар.Наименование#20>.
Формулы можно прописывать только при добавлении колонки методом НоваяКолонка() и вставке колонки методом
ВставитьКолонку(). Изменение строки формата методом УстановитьПараметрыКолонки() либо загрузка таблицы из
строки функцией ЗначениеИзСтроки() не приведет к корректной подготовке формулы для вычисления и может привести
к ошибочной ситуации вплоть до падения 1С:Предприятия.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 16 марта 2024, 11:35
Прошу заинтересованных протестировать новый функционал. Эта сборка в ближайшие дни будет выложена в качестве релиза.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 16 марта 2024, 19:09
Тестовая сборка обновлена.
Доработки получения стека вызовов методом Сервис::ПолучитьСтекВызова().
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 17 марта 2024, 14:49
Обновлена тестовая сборка.

Добавлен объект УправлениеСобытиями. Предназначен для включения/отключения предопределенных процедур. Состояние обработки событий не привязано к объекту. Т.е. после уничтожения объекта состояние разрешения не меняется.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 22 марта 2024, 22:49
Тестовая сборка обновлена.

Исправлены права на объекты, загружаемые методом Сервис::ЗагрузитьВнешнююОбработку(). Для нового объекта устанавливается разрешение на использование. Для существующего объекта права не изменяются.

Добавлена возможность передавать расшифровку при выводе сообщения методом ОкноСообщений::Сообщить(). Для этого в метод добавлен третий параметр (необязательный) и добавлена предопределенная процедура:

Процедура ПриДвойномКликеВОкнеСообщений(<?>)
КонецПроцедуры
Синтаксис:
Процедура ПриДвойномКликеВОкнеСообщений(<ИдентификаторОкнаСообщений>, <ТекстСообщения>, <МаркерСообщения>, <НомерСтроки>, <Расшифровка>, <СтандартнаяОбработка>)
КонецПроцедуры
Назначение:
Вызывается при двойном клике левой кнопкой мыши в окне сообщений на строке с текстом.
Параметры:
<ИдентификаторОкнаСообщений> - идентификатор окна сообщений см. объект ОкноСообщений, для системного окна - 0;
<ТекстСообщения> - текст выводимого сообщения;
<МаркерСообщения> - маркер выводимого сообщения;
<НомерСтроки> - номер строки в окне сообщений (нумерация с 0);
<Расшифровка> - строка с дополнительной информацией, переданной при выводе сообщения методом Сообщить() объекта ОкноСообщений;
<СтандартнаяОбработка> - флаг стандартной обработки; если в процедуре установить в 0, штатня обработка двойного клика не будет вызвана.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 23 марта 2024, 16:00
Тестовая сборка обновлена.

Сообщения от тулбаров теперь транслируются в ПриПолученииКомандыГлавнымОкном().
Исправлена ошибка приводившая к вылету при наличии Глобальная_ОбработкаВыбораЗначения() и локальной ОбработкаВыбораЗначения(). От этого исправления может что-то поломаться. Прошу обратить внимание на работу предопределенных процедур.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 24 марта 2024, 15:38
Обновлена тестовая сборка.

Теперь свойство Значение объекта АтрибутФормы для дерева папок возвращает текущее значение.

Пример:
Процедура ПоКнопке()
ФормаРасш = СоздатьОбъект("РасширениеФормы");
Для инд = 0 По ФормаРасш.КоличествоАтрибутов()-1 Цикл
атр = ФормаРасш.ПолучитьАтрибут(инд);
Если атр.Тип = 8 Тогда // дерево групп
Сообщить("Значение: " + атр.Значение);
Сообщить("Тип значения: " + ТипЗначенияСтр(атр.Значение));
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ПоКнопке
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 25 марта 2024, 20:26
Тестовая сборка обновлена.

Исправлена ошибка: https://forum.dorex.pro/index.php?topic=64.0
Добавлена возможность игнорировать команды в процедуре ПриПолученииКомандыГлавнымОкном для снижения нагрузки на систему.

Синтаксис:
Процедура ПриПолученииКомандыГлавнымОкном(<?>,,)
КонецПроцедуры
Назначение:
Предназначена для обработки сообщения WM_COMMAND, посылаемого главному окну приложения.
Параметры:
<Команда> - идентификатор команды;
<НулевойПараметр> - всегда 0, оставлен для совместимости;
<СтандартнаяОбработка> - флаг стандартной обработки, при установке в ноль, системная обработка сообщения не будет вызвана, если установлен в -1 (минус один), то команда заносится в список игнорируемых и процедура для нее больше не вызывается. Рекомендуется всегда устанавливать переменную СтандартнаяОбработка в -1 для не обрабатываемых команд, это сильно разгрузит систему.
Пример:
Процедура ПриПолученииКомандыГлавнымОкном(идКоманды, Ноль, СтандартнаяОбработка)
Если идКоманды = 32890 Тогда
Сообщить("Перенос в другую группу");
Иначе
СтандартнаяОбработка = -1;
КонецЕсли;
КонецПроцедуры
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 27 марта 2024, 21:45
Тестовая сборка обновлена.

Переработка перехвата команд (ПриПолученииКомандыГлавнымОкном).
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 28 марта 2024, 21:11
Тестовая сборка обновлена.

Метод Сервис::АктивныйКонтекст() теперь распознает объект "Текст".
В метод добавлен второй параметр, в который возвращается заголовок активного окна, даже если оно не содержит контекста.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 02 апреля 2024, 22:45
Тестовая сборка обновлена.

В объект Сервис добавлен метод:
УстановитьФункциюПредставления(<?>)
Синтаксис:
УстановитьФункциюПредставления(<ИмяОбъекта>, <ИмяФункции>)
Назначение:
Метод предназначен для установки собственной функции генерирования представления указанного объекта.
Параметры:
<ИмяОбъекта> - имя объекта, для которого необходимо назначить либо очистить собственную функцию получения представления, в формате Справочник.Имя или Документ.Имя
<ИмяФункции> - имя глобальной функции, которая вызывается для получения представления объекта. В функцию в качестве параметра передается объект. Функция должна вернуть строку с представлением переданного объекта.
Для отключения собственной функции необходимо вызвать метод, передав пустую строку в качестве параметра <ИмяФункции>.
Возвращает:
Номер установленной глобальной функции. В случае отсутствия в глобальном модуле функции с указанным именем или в случае передачи в качестве имени функции пустой строки возвращает -1 (минус один).
Пример:
Сервис.УстановитьФункциюПредставления("Справочник.Товары", "глПредставлениеТовара");
Сервис.УстановитьФункциюПредставления("Документ.Приход", "глПредставлениеПрихода");
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 03 апреля 2024, 20:57
Тестовая сборка обновлена.

В объект Сервис добавлен метод:
ПолучитьМодульОбъекта(<?>)
Синтаксис:
ПолучитьМодульОбъекта(<ИмяОбъекта>)
Назначение:
Метод предназначен для получения модуля объекта конфигурации в виде строки.
Параметры:
<ИмяОбъекта> - имя встроенного объекта, как оно возвращается в методе СписокВсехФорм().
Возвращает:
Строку с текстом модуля указанного объекта.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 04 апреля 2024, 21:17
Тестовая сборка обновлена.

Исправлен вылет в исключение в методе Сервис:ОткрытьДвиженияОбъекта().
Исправлен вызов деструктора в объекте ПанельСтрокиСостояния.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 06 апреля 2024, 10:28
Тестовая сборка обновлена.

Изменена работа с родителем объекта Прогресс. Прошу обратить внимание на этот момент.

В объект Сервис добавлен метод:
ПолучитьФормуОбъекта(<?>)
Синтаксис:
ПолучитьФормуОбъекта(<ИмяОбъекта>)
Назначение:
Метод предназначен для получения внутреннее представление диалога формы объекта конфигурации в виде строки.
Параметры:
<ИмяОбъекта> - имя встроенного объекта, как оно возвращается в методе СписокВсехФорм().
Возвращает:
Строку с внутренним представлением диалога формы указанного объекта.

В объект РасширениеФормы добавлен атрибут:
ВнутреннееПредставление
Синтаксис:
ВнутреннееПредставление
Назначение:
Позволяет получить внутреннее представление диалога текущей формы. Атрибут для чтения.
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 06 апреля 2024, 10:46
(https://i.ytimg.com/vi/NA4csTwMaSo/sddefault.jpg)

В объект АтрибутФормы добавлено свойство:
ПропускатьПриВводе
Синтаксис:
ПропускатьПриВводе
Назначение:
Чтение/установка флага "Пропускать при вводе".
Название: Re: Тестовая сборка FormEx
Отправлено: АЛьФ от 07 апреля 2024, 10:15
Тестовая сборка обновлена.

В объект Сервис добавлен метод:
ПолучитьОписаниеОбъекта(<?>)
Синтаксис:
ПолучитьОписаниеОбъекта(<ИмяОбъекта>)
Назначение:
Метод предназначен для получения описания объекта конфигурации в виде строки.
Параметры:
<ИмяОбъекта> - имя встроенного объекта, как оно возвращается в методе СписокВсехФорм().
Возвращает:
Строку с описанием указанного объекта.