Интерфейсы в кларионовских приложениях

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Профили пользователей это то, что у нас называется Роли. Только у нас для ролей кастомизация меню (скрытие не используемых пунктов), а у Вас, наоборот, установка разрешений и риббон вместо обычного меню. Если я правильно понял. Мою сильную нелюбовь к риббону оставляем за скобками, это личное. :-) Стратегию же настройки можно проговорить.
Я использую стратегию "изначально разрешено все, неиспользуемое отключаем" для ядра системы. Всякие дополнительные отчеты и обработки, подгружаемые call из dll модулей расширения по мере надобности, это отдельная тема. У Вас, как я понял, "изначально ничего не разрешено, добавляем то, что хотим разрешить".
В меню, кстати, можно скрывать сразу целые подгруппы. И, наверно, надо еще отметить, что кастомизация меню является отдельным инструментом. С системой распределения прав доступа у нас не связано.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Для полноты картины расскажу тезисно о правах доступа, как это используется у меня.

Права задаются для ролей пользователей. В процессе сборки проекта шаблоны генерят список оконных процедур, сгруппированных по категориям (значения из category в ide). Эти списки выдаются в приложении для настройки. Для диалогового окна стандартно можно выставить запрет на просмотр (при попытке открытия будет выдаваться сообщение о недостаточных правах доступа) и запрет на изменение (действует для форм, которые будут открываться в режиме только просмотр).
rol1.jpg
rol1.jpg (212.08 КБ) 4219 просмотров
Дополнительно для отдельных диалогов можно в специальном шаблоне можно определить набор локальных правил. Эти правила либо скрывают/дизайблят заданные контролы в окне, либо вызывается системная функция проверки состояния правила и обрабатывается внутри кода без ограничений.
rol2.jpg
rol2.jpg (172.59 КБ) 4219 просмотров
rol3.jpg
rol3.jpg (144.93 КБ) 4219 просмотров
Для определения правил, которые не привязаны к конкретным диалоговым окнам используется dummy оконная процедура со списком локальных правил. Она имеет зарезервированное название и открывается кнопкой "Системные" на первом скриншоте.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Очень важный лайфхак как для системы настройки прав доступа, так и для разработки в целом. Чтобы быстро найти процедуру, имеется комбинация клавиш Ctrl+Alt+S. Эту комбинацию можно нажать в любом диалоговом окне. Будет сделан снимок окна и выведено, как называется процедура и в каком app она находится. Одновременно в clipboard кладется название процедуры. Изначально это предназначалось для упрощения суппорта пользователей, но активно используется для поиска процедур. Далее мы в окне настройки прав доступа нажимаем кнопку "Поиск", Ctrl+V и программа находит нужную процедуру. Аналогично в IDE клариона.
rol4.jpg
rol4.jpg (171.16 КБ) 4216 просмотров
rol5.jpg
rol5.jpg (191.92 КБ) 4216 просмотров
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Полистал доку по monitor crm. Системы у нас, конечно, совсем разного назначения. Это однозначно и на подходы к проектированию интерфейса влияет. У меня учетная система, которую можно поставить на предприятие, и, в целом, ничего больше не нужно для ведения учета. Специализация по определенным видам бизнеса, иначе перегруз будет. Monitor crm позиционируется как дополнение к уже имеющимся учетным системам на предприятии для решения определенного круга задач. Очевидно, покрывая недостаточную функциональность этих учетных систем. Специализация по выполняемым функциям.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Теория отчетов.
Я принципиально не использую для этих целей кларионовский report. Причина понятная, с отчетами пользователям надо работать, а кларионовский report предназначен для печати и плохо подходит для работы. Отчеты формируются либо в виде экранного диалога, либо сразу в виде xls файлов.

Отчеты разделяются на основные (входящие в ядро системы), модульные и дополнительные. Основные отчеты определяют функциональную законченность ядра системы и могут вызываться не только из меню, но и из других отчетов, справочников, журналов и форм документов.
Модульные отчеты действуют в составе дополнительных модулей, которые параметрически включаются для отдельных клиентов. Например, отчеты модуля Производства доступны только в меню Производство. Они не вызываются из других диалоговых окон, кроме диалоговых окон модуля и меню модуля.
Так выглядит меню основных отчетов.
rep1.jpg
rep1.jpg (103.8 КБ) 4172 просмотра
Дополнительные отчеты у каждого клиента свои. Они добавляются в индивидуальном порядке по мере востребованности. Технически дополнительные отчеты это call вызовы из динамически подгружаемых dll. С помощью системы управления доступом список дополнительных отчетов можно ограничить для определенных ролей пользователей. Я не буду сейчас заострять внимания на этом. Так выглядит список дополнительных отчетов.
rep2.jpg
rep2.jpg (160.7 КБ) 4172 просмотра
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Экранные отчеты обычно состоят из двух закладок "Параметры" и "Отчет". Иногда закладок может быть больше. Мы заполняем параметры, нажимаем кнопку сформировать, отчет формируется и делается переключение на закладку "Отчет". Отчеты в xls, соответственно, имеют только окно "Параметры", результат выводится в Excel или Calc. Так выглядит закладка "Параметры".
rep3.jpg
rep3.jpg (137.61 КБ) 4168 просмотров
На скриншоте видны различные виды параметров. Обычно это специализированные контрол шаблоны, состоящие из одного или нескольких стандартных кларионовских контролов. Сейчас не буду про них писать, чтобы не отвлекаться от основной темы. Программа всегда запоминает параметры последнего формирования отчета. Они автоматически подставляются при следующем открытии окна отчета. Кроме этого можно сохранять параметры в именованном списке, используя кнопку "Параметры". А затем выбирать из этого списка по мере надобности. Наконец, параметры могут передаваться из контекста того диалога, откуда отчет вызывается или клонируется. При вызове отчета из других диалоговых окон также передается параметр автозапуска. То есть переданные параметры подставляются и программно нажимается кнопка формирования отчета. Мы сразу попадаем на результат. При клонировании отчета (немного напишу об этом позже) параметр автозапуска не передается, надо изменить какие-то из параметров и сформировать отчет.
rep4.jpg
rep4.jpg (197.09 КБ) 4168 просмотров
Так выглядит экранный отчет после формирования. Чаще всего это один list, но иногда может быть и больше. Технически отчет это локальная или глобальная очередь. Я уже не раз писал про эту технологию. В словаре объявлена системная таблица с одним полем ID. Мы делаем range limit по этому полю с 1 до количества записей в очереди, а в точке вставки "контроль фильта" get на эту очередь по значению ID и подтягивание связанных записей из базы данных. Все очень просто. Дальше уже навешиваем стандартный функционал для броузов (скрытие колонок, поиск, фильтрация и т.п.).
Несколько слов по оформлению результата. Сверху над list выводится одна или две строки заголовка, которые отражают основные режимы формирования. С тем расчетом, чтобы пользователь мог быстро понять, что это за отчет, если, например, переключился в другой поток, а потом вернулся. В верхнем правом углу всегда выводится время формирования отчета и кнопки "Обновить" (работает аналогично кнопке сформировать отчет на закладке "Параметры", чтобы не переключать закладки) и "Открыть в отдельном окне" (клонировать отчет). Время выводится для того, чтобы пользователь мог ориентироваться по актуальности данных в отчете. Клонирование отчетов бывает нужно, когда хотят сопоставить какие-то данные между данным отчетом и какой-то модификацией (другой период, другие критерии отбора).
В нижнем правом углу всегда выводятся кнопки экспорта в xls в том виде, как на экране, и печати в том виде, как на экране. Это контрол шаблоны, которые цепляются к броузу и делают все автоматически. В случае печати происходит автоматическое формирование report стркутуры с автопереносами длинных строк, разворотом листа в ланшафт, если не помещается в портрете, разбиение на листы продолжения, если таблица не помещается на один лист по горизонтали.
Если в данном примере щелкнуть по какой-то строке list, то в отдельном потоке откроется отчет "Карточка товара" со всему операциями по товару из строки за заданный в параметрах отчета период времени. Это пример вызова отчета из отчета.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Теперь два слова про отчеты трансформеры. Это отчеты, выводимые в xls файл, которые строятся на основании информации, посчитанной в основном отчете. Стандартно они подвешиваются в виде меню на кнопке "Формы".
rep5.jpg
rep5.jpg (193.74 КБ) 4168 просмотров
rep6.jpg
rep6.jpg (186.21 КБ) 4168 просмотров
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Вот так в движении.

http://finsoftrz.ru/mp4/fs_demo0002.htm
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Теория документов.
Это, наверно, самый сложный раздел. Попробую остановиться на основных моментах.
docs1.jpg
docs1.jpg (247.33 КБ) 4126 просмотров
Так выглядит журнал документов. Интерфейс всех журналов стандартизирован.
В первой колонке всегда отражается статус документа. Всего есть 3 статуса. Выписан (нейтральный), Утвержден (можно использовать в итоговых отчетах), Выключен (документ не используется, может быть удален). Программа позволяет удалять только выключенные документы. Не у всех пользователей на это есть права. В состоянии Выписан в отгрузочных накладных работает автоматическое резервирование товаров, в остальных документах это просто нейтральное состояние, когда документ вводится, но еще не виден в отчетной системе.
В последней колонке всегда отражается автор, кто создал документ. Если документ позже менялся другим пользователем, то спереди ставится звездочка.
Сверху в журналах всегда выводится период просмотра, который можно изменить. При открытии период устанавливается в соответствии с настройками пользователя. Обычно при открытии журнала действует правило позиционирования на последнюю запись. Это тоже задается в настройках пользователя.
Набор закладок над списком документов предназначен для установки отборов. Первая закладка всегда определяет просто следование документов в очередности дат.
docs2.jpg
docs2.jpg (204.31 КБ) 4126 просмотров
Если выбрать другую закладку, то обычно активируется ассоциированный отбор. В примере это по покупателю. Начальное значение берется из текущей записи, а справа от закладок появляется контрол для изменения условия. Отборы используют ключи и работают быстро. Если нужны какие-то дополнительные условия, то можно включить фильтрацию. Фильтрация это стандартный функционал броузов, поэтому я останавливаться на ней сейчас не буду.
По контролам, размещенным в нижней части окна журнала. Контролы "Утвердить" и "Выключить" изменяют статус документа. Контролы "Excel" и "Реестр" экспортируют и выводят на печать содержимое журнала в том виде, как отображено на экране. Про аналогично работающие контролы в интерфейсе отчетов я уже писал.
Кнопка "Неутвержденные" также является стандартной для журналов и запускает отчет по документам в состоянии Выписан с отбором по конкретному типу документов.
docs3.jpg
docs3.jpg (181.27 КБ) 4126 просмотров
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Печатные формы для документов обычно формируют в диалоге формы редактирования. Но иногда они выводятся в журнал для удобства работы. Имеется набор стандартных форм, которые показываются в виде меню, и набор дополнительных форм, который настраивается для конкретных клиентов. В данном примере используется только индивидуальный набор печатных форм, стандартные отключены настройкой. Подключать новые формы очень просто. В системе используются мастер-процедуры. Например, "Формы отгрузочной накладной". А самих форм можно создать сколько угодно с помощью дизайнеров (ФинСофт, FRB, ExcelReport) и прицепить к документу.
docs4.jpg
docs4.jpg (211.76 КБ) 4125 просмотров
Имеется стандартная функция объединения печатных форм в наборы. Набор запускается на печать, последовательно печатаются все входящие в него формы.
docs5.jpg
docs5.jpg (207.46 КБ) 4125 просмотров
Часто в журналах присутствуют кнопки "Обработка" и "Печать", каждая со своим всплывающим меню. С помощью этих кнопок выполняются действия над документами из журнала, отобранными по каким-то критериям.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Теперь про стандартные кнопки на тулбаре. Ввод документов на основании предназначен для создания документов другого вида с заполнением реквизитов значениями, взятыми из текущего документа. В каждом журнале, разумеется, список доступных документов свой.
docs6.jpg
docs6.jpg (250.81 КБ) 4125 просмотров
Кнопка перехода позволяет открыть связанный диалог, используя реквизиты текущего документа. Диалог может открываться в отдельном потоке или в том же, в зависимости от функционального назначения. В каждом журнале список переходов свой.
docs7.jpg
docs7.jpg (258.57 КБ) 4125 просмотров
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Отдельно надо сказать про кнопку "Подпись" на тулбаре, имеющую пиктограмму "рыжий знак вопроса". Она выводит системную информацию о документе.
docs8.jpg
docs8.jpg (189.72 КБ) 4121 просмотр
Кнопка "Лог" открывает диалог просмотра истории изменений заглавной записи документа. Кнопка "Лог (строки)" показывает историю изменения по всем строкам документа. Эта кнопка доступна, если документ имеет строчную часть.
Кнопка "Ретроанализ" (первая слева) воспроизводит содержимое документа на какой-то прошлый момент времени и сравнивает версии документа между двумя точками сохранения документа. Функция ретроанализа доступна только для складских документов.
Важная кнопка "Информация" выводит содержимое полей заглавной записи документа. Это бывает нужно для контроля информации, так как значения некоторых полей могут не отражаться в интерфейсе. Если аналогичную информацию надо посмотреть по строке документа, то надо открыть этот документ, подсветить нужную строку и нажать ту же самую кнопку на тулбаре. Информация о содержимом полей записей подтягивается автоматически специальными шаблонами.
docs9.jpg
docs9.jpg (183.91 КБ) 4121 просмотр
В заключении по интерфейсу журнала документов скриншот контекстного меню, в которое обычно включаются редкие в использовании функции.
docs10.jpg
docs10.jpg (229.91 КБ) 4121 просмотр
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5082
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 23 раза

Интерфейсы в кларионовских приложениях

Сообщение kreator »

finsoftrz писал(а): 22 Июнь 2020, 9:22 Сверху в журналах всегда выводится период просмотра, который можно изменить. При открытии период устанавливается в соответствии с настройками пользователя. Обычно при открытии журнала действует правило позиционирования на последнюю запись. Это тоже задается в настройках пользователя.
Набор закладок над списком документов предназначен для установки отборов. Первая закладка всегда определяет просто следование документов в очередности дат.
Непосвящённому крайне трудно разобраться что к чему на экране. Согласен с предыдущим оратором. Я так понял - системы вообще никакой, где кнопка помещается, туда её и бросаю. Вот что заметил. У Вас стоит период дат "22/06/2020-22/06/2020" (опять же, вот это "американское" представление дат давно кануло в лету), а документы на Дудукина за 18 год. И зачем Дудукина обрезали? Разместить контролы на месте Tab'ов тоже надо решиться. Честно говоря, ещё интересно посмотреть как период дат выбрать одной кнопкой. Похоже это ноу-хау.
Закладки "По получателю", "По складу" есть, в таблице этих столбцов нет. Горячие кнопки закладок работают? "Alt-ф", например? Откуда это? Даже в шаблонах-визардах SV цифры используются. День у Вас всё время "пт". Есть какая связь с датой документа? Нет? Тогда что это?
Это я ещё три минуты только посмотрел.
А фильтр какой-нибудь есть? Как вообще найти документ?
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4899
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 44 раза

Интерфейсы в кларионовских приложениях

Сообщение finsoftrz »

Теперь про формы редактирования документов на примере расходной накладной.
В теории существует два подхода. При первом вначале вносятся все необходимые изменения в документ, затем все сохраняется в рамках транзакции. При втором сохранение фрагментов документа происходит по мере его заполнения или изменения, а при отмене происходит откат сделанных изменений. Преимущество первого способа в простоте реализации. Недостаток его в том, что другие пользователи ничего не знают о вводимой информации, пока документ не будет полностью сохранен. Другой недостаток заключается в возможной потере информации при каких-то системных сбоях в работе. В общем, это вопрос предпочтений. Я использую второй подход.
docs11.jpg
docs11.jpg (213.35 КБ) 4119 просмотров
Вначале попытаюсь описать самый сложный в реализации момент теории документов - "Критические реквизиты". Если кратко, то это сохранение определенных реквизитов заглавной записи документа сразу после их изменений. При этом могут также сохраняться и некоторые связанные реквизиты в строчной части. Изменения критических реквизитов не откатываются автоматически при закрытии документа без сохранения изменений.
Чтобы было понятнее, приведу примеры критических реквизитов. У нас система не проводная, то есть при сохранении документов не делаются записи в другие служебные таблицы (регистры, проводки и т.п.). Поэтому, чтобы быстро получать отчеты, нужно правильно индексировать базу данных и использовать в некоторых случаях денормализацию. Например, чтобы быстро получить все операции по товару за заданный период времени, нужен индекс по значениям товар+дата+время. Но товары у нас фигурируют в строках накладных, а дата и время в заголовке. Делается денормализация, значения даты и времени документа дублируются в строках. Когда мы создали документ и добавляем туда строки, то все просто, надо присвоить значения соответствующих полей. Но теперь предположим, что у нас уже есть строки в документе и мы меняем его дату. Дата, время документа будут критическими реквизитами. Как только пользователь их изменил, их значения и измененные значения в строках сохраняются в базе данных. Для пользователя это происходит незаметно.
Другой пример критических реквизитов. При выписке накладных изменяется так называемый свободный остаток на складе. Он контролируется, не все пользователи имеют права выписки в минус. Когда пользователь наполняет документ строками, то все просто. Но он может захотеть изменить склад в заголовке накладной. Нам, соответственно, надо сразу сохранить новое значение склада в базе данных, и в той же транзакции пересчитать свободный остаток по старому и новому значению склада. Склад является критичным реквизитом документа.
Или еще пример. Нумерация документов у каждой фирмы своя. Если мы меняем фирму в заголовке документа, то автоматически изменяется номер. Мы сразу сохраняем новые значения фирмы и номера в базе данных, чтобы другие пользователи работали с учетом измененных значений. Фирма является критическим реквизитом документа.

Интерфейс форм документов стандартизирован. Кратко пробегусь.
В верхнем левом углу всегда выводится номер документа, дата и время. В верхнем правом углу статус документа и кнопки для его переключения. Идентификатор (Ид) документа также всегда присутствует в верхнем правом углу окна, по нему можно однозначно идентифицировать запись в базе данных. В форме редактирования строки документа всегда выводятся 2 идентификатора, заглавной записи и самой строки.
Табличная часть всегда на основной закладке. На дополнительных закладках могут располагаться какие-то дополнительные реквизиты заголовка документа.
В нижнем левом углу кнопки переоткрытия документа в отдельном потоке и поиска документа в журнале. Я про них писал ранее. Стандартно во всех документах кнопка Печати с меню, часто кнопка Обработка с меню, кнопка Подбор в товарных документах. На тулбаре кнопки копирования, ввода на основании, перехода на связанные диалоги.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5082
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 23 раза

Интерфейсы в кларионовских приложениях

Сообщение kreator »

Про денормализацию понятно с трудом. Вы только дату и время дополнительно пишите? Склад, фирму, получателя и т.д. не пишите?
We are hard at work… for you. :)
Ответить