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

Обсуждение проектов => FormEx => Тема начата: Злоп от 10 марта 2024, 02:51

Название: Глюки видимости колонок, продолжение
Отправлено: Злоп от 10 марта 2024, 02:51
Как определили ранее - можно сделать колонку ТЗ "НомерСтроки" видимой. И исходим из того, что ее положение =1 (ибо если ТЗ.УстановитьПараметрыКолонки() переставить ее куда-то правее - трудно всякие расчеты делать). ОК.

Но тут вот вылезли глюки видимости обычных колонок ТЗ если делать НомерСтроки видимость(1) - в зависимости как они определены относительно других обычных колонок ТЗ и какую видимость имеют эти обычные колонки ТЗ.

Выкладываю тест - варианты 3-4-5-6 обратить внимание, по коду место отбито маркером //АЛЬФ

Пока похоже на то, чтобы избежать глюков надо видимость колонки =0 (или 1 для служебной НомерСтроки) - задавать сразу после определения колонки. Но это неточно... мысли девелопера...
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 10 марта 2024, 08:58
Тестовый пример не смотрел ещё, но знаю, что там вообще при включении видимости номера строки всякие разнообразные глюки лезут. Не хотелось бы в эту тему глубоко погружаться пока. Обход глюков простейший - сделать свою колонку, куда дублировать номер строки.
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Злоп от 10 марта 2024, 13:00
Цитата: АЛьФ от 10 марта 2024, 08:58сделать свою колонку, куда дублировать номер строки.
ну, это ж несрочно...
ага.. и каждый раз перезаполнять при сортировке/удалении/итд..?
Как обойтись без глюков в большинстве вариантов вроде понятно как
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 11 марта 2024, 21:02
Посмотрел тестовый пример, но так и не понял куда смотреть. У меня вроде все варианты нормально отрисовываются. Единственное я переделал на план раскраски - переименовал колонку "Курсор" в "FormEx_ПланРаскраски".
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Злоп от 12 марта 2024, 00:15
Открыть обработку. Поставить любой вариант. Сохранить настройку (Основная, использовать при открытии=ДА, сохранять автоматически=ДА). Выбирать вариант, жмакать Переоткрыть - смотреть на ТЗ - д.б. колонка "Код". Работает на всех вариантах кроме вар4 - почему? По коду вариант 4 интересно смотреть с вариантами 3,5,6, особенно с вариантом 3...
.
варианты порядка колонок/видимостей в процедуре ПриОткрытии
.
формекс - последний тестовый на момент сообщений
видео https://wdfiles.ru/28u5B
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Злоп от 12 марта 2024, 00:36
формекс - последний тестовый на момент этого сообщения
тестовая обработка (переделано на ПланРаскраски): https://wdho.ru/jO7X
видео https://wdfiles.ru/28u5B
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 13 марта 2024, 08:57
Боюсь мне это не подправить все же. Тут требуются фундаментальные переделки таблицы значений, насколько я понимаю.
Возникла в связи с этим мысль - сделать возможным задавать в колонке ТЗ формулу. Типа как формула в многострочной части. Опять же, не знаю получится ли такое сделать. Но должен быть интересным этот функционал. И задачу вывода номера строки, как частный случай, решало бы.
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Злоп от 13 марта 2024, 09:39
Будем ждать...
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 13 марта 2024, 10:45
Цитата: Злоп от 13 марта 2024, 09:39Будем ждать...

Не все так просто. Надо обсудить некоторые моменты.
Т.к. ТЗ не предназначена для такого функционала и никаких внутренних флагов для расчетных колонок я не нашел, придется как-то обозначать, что в данной колонке хранится именно формула. Пока мысль использовать некие макросы, как макрос раскраски. Должно выглядеть как-то так:

тз.НоваяСтрока();
тз.Товар = ВыбТовар;
тз.фНомерСтроки = "{формула}НомерСтроки";
тз.FormEx_ПланРаскраски = "{формула}ПолучитьРаскраску(Товар, МестоХранения)";
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Злоп от 13 марта 2024, 12:28
только букав поменьше..
{ф} типа... или {ф:}
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 14 марта 2024, 11:11
При начальных набросках тут же натолкнулся, что нет смысла прописывать формулу в каждой строке. В много строчной части она же задается одна на всю колонку. Буду двигаться в этой парадигме.
Код установки формулы в колонку меняется. Решил, что для формулы можно использовать поле формата колонки:
тз.НоваяКолонка("Товар");
тз.НоваяКолонка("фНомерСтроки",,,,,,"#НомерСтроки");
тз.НоваяКолонка("фПредставление",,,,,,"#глПредставлениеСправочника(Товар)");
тз.НоваяКолонка("фЦена",,,,,,"#Товар.Цена#Ч10.2"); // для сохранения возможности форматирования
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 15 марта 2024, 12:52
Продолжаю работу по формулам в ТЗ и вскрылся интересный эффект. Получилось, что формулы работают не только в визуальном представлении ТЗ на форме, но и в программной ТЗ. В том числе и в отображении методом ВыбратьСтроку(), и при любом чтении из таблицы.

Для примера:
тз = СоздатьОбъект("ТаблицаЗначений");
тз.НоваяКолонка("Товар");
тз.НоваяКолонка("фНомерСтроки",,,,,,"#НомерСтроки");
тз.НоваяКолонка("фПредставление",,,,,,"#глПредставлениеСправочника(Товар)");

спр = СоздатьОбъект("Справочник.Товары");
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент() = 1 Цикл
тз.НоваяСтрока();
тз.Товар = спр.ТекущийЭлемент();
Сообщить("Представление в строке " + тз.НомерСтроки + " = " + тз.фПредставление); // сообщит результат формулы
КонецЦикла;


Однако, есть и ограничения и неоднозначности, которые относятся к контексту окружения. Таблица может передаваться между контекстами, например, в открываемую форму отчета, и вычисление формулы, если разрешить использовать переменные контекста в ней, будет непредсказуемым.
Выход вижу только один - ограничить вычисление глобальным контекстом. Максимум - можно добавить служебную переменную для передачи в формулу текущего контекста.
Как-то так:

тз.НоваяКолонка("фПредставление",,,,,,"#глПредставлениеСправочника(@Контекст, Товар)");

Но тут все на совести программиста будет тогда. И не факт, что контекст будет всегда верным определяться.

Есть какие-нибудь мысли по этому поводу?
Название: Re: Глюки видимости колонок, продолжение
Отправлено: alyuev от 15 марта 2024, 13:26
А как парсишь саму формулу - от первой до последней кавычки? Там же еще всякие кавычки надо обрабатывать внутри, в параметрах самой формулы. Стрёмное это дело....
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 15 марта 2024, 13:59
Цитата: alyuev от 15 марта 2024, 13:26А как парсишь саму формулу - от первой до последней кавычки? Там же еще всякие кавычки надо обрабатывать внутри, в параметрах самой формулы. Стрёмное это дело....
Я тупо вырезаю все, что заключено между #. И далее эту строку передаю в 1С для расчета формулы. Что вне этих символов - считается форматирующей строкой.

Формула вида С#"#" + Товар.Наименование#20 даст не ожидаемые формулу "#" + Товар.Наименование и формат С20, а формулу " и формат С" + Товар.Наименование#20.

Не вижу смысла тут особо заморачиваться и брать на себя работу программиста.
Как и любой функционал FormEx, этот требует вдумчивого и осторожного использования.
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Djelf от 15 марта 2024, 16:44
Согласен. Задокументированный баг это не глюк,а фича. Но это обязательно должно быть указано в als.
P.S. Раз появился собственный форум, то в als иногда можно вставлять ссылки на конкретные темы.
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Злоп от 15 марта 2024, 20:25
"не только в визуальном представлении ТЗ на форме, но и в программной ТЗ. В том числе и в отображении методом ВыбратьСтроку(), и при любом чтении из таблицы."

...хм... с одной стороны как бы прикольно/полезно(?)
а сзаду - может и не всегда, т.к. это приведет к постоянным вычислениям при манипулировании с ТЗ, а это не всегда надо...
.
ВПДБ (в порядке дежурного бреда):
если формула типа
#глПредставлениеСправочника(Товар) - то всегда идет вот такое "динамическое" вычисление
а если типа
!#глПредставлениеСправочника(Товар)- то вычисление производится один раз и результат вычисления пихается в ячейку ТЗ и дальше это уже не пересчитывается при манипуляциях с ТЗ (может для этого надо "занулить" строку формата с формулой или вместо формулы оставить только подстроку формата?
Название: Re: Глюки видимости колонок, продолжение
Отправлено: АЛьФ от 15 марта 2024, 22:22
Цитата: Злоп от 15 марта 2024, 20:25...хм... с одной стороны как бы прикольно/полезно(?)
а сзаду - может и не всегда, т.к. это приведет к постоянным вычислениям при манипулировании с ТЗ, а это не всегда надо...
Если формула в формате не задана, то и никаких лишних вычислений не будет. Если задана, то вычисления будут только при обращении к значению этой колонки. Так что в данном плане тормозов не добавит.

Цитата: Злоп от 15 марта 2024, 20:25если формула типа
#глПредставлениеСправочника(Товар) - то всегда идет вот такое "динамическое" вычисление
а если типа
!#глПредставлениеСправочника(Товар)- то вычисление производится один раз и результат вычисления пихается в ячейку ТЗ и дальше это уже не пересчитывается при манипуляциях с ТЗ (может для этого надо "занулить" строку формата с формулой или вместо формулы оставить только подстроку формата?
Теоретически можно, но смысла особого не вижу. Тогда уже проще заполнить значение без всякой формулы.
Название: Re: Глюки видимости колонок, продолжение
Отправлено: Злоп от 15 марта 2024, 22:36
Согласен.