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

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

<Первый скриншот.>

Контрол шаблон это кнопка с привязанной к ней комбинацией клавиш для запуска. В Action шаблона задается список контролов, которые можем скрывать через настройку в программе.
Три варианта скрытия Окно, Меню, Запрос. Вариант Окно просто приводит к скрытию указанного контрола. Есть некоторые нюансы. В частности, если хотим скрывать entry поле, то достаточно указать только его, промпт программа сможет определить и скрыть автоматически. Вариант Меню позволяет скрывать пункты в popup меню, которые могут быть привязаны к кнопке типа Печать, Обработка или к контекстному меню списка. У меня обычно пункты меню ссылаются на захайденные кнопки, чтобы отключить, используется соглашение о переименовании кнопок в "...". Такое переименование и будет происходить, если указать вариант Меню. Вариант Запрос напрямую ничего не делает с контролами, но позволяет вызывать метод проверки установки в разных местах кода и скрывать сразу блоки контролов. Например, для ввода ссылки на какой-то элемент справочника у меня обычно используется специальный контрол шаблон, состоящий из 5 обычных контролов. В Action у него есть строка с условием скрытия, сразу позволяющая скрыть все входящие в его состав обычные контролы. Правило такое, что скрывать можно такие контролы только тогда, когда не выбрана ссылка. Таким образом, мы можем вывести в настройку основной его контрол и вариант Запрос, а в Action контрол шаблона выбора ссылки прописать проверки наличия ссылки и включения настройки.
В строке Обработка можно прописать какой-то код, который выполнится сразу после того, как скроем нужные контролы. Например, применяем настройку для параметров отчета и хотим скрыть какие-то из них. Чтобы они не влияли на построение отчетов, очищаем их значения, устраняя потенциальные вопросы по итогам отчета.

<Второй скриншот>

Академический пример скрытия реквизита "Формат обмена", который является entry полем. Отмечаем его в настройке и жмем Записать, сохраняя настройку в базе данных. Настройка сохраняется отдельно для каждой роли. Результат на скриншоте ниже. Контрол не будет показываться до тех пор, пока не изменится настройка.

<Третий скриншот>

В качестве дополнительного сервиса в окне настройки кнопка временного отключения применения настройки, по типу, как в дизайнере окон в среде с11 можно включать и отключать показ захайденных контролов. Отметить и снять отметку со всех, выгрузить настройку в файл и загрузить настройку из файла. В списке ролей пользователей можно выгрузить и загрузить настройки всех окон для роли.
При подобном подходе образуются пустые места в окне. Я думаю, это разумный компромисс. Окна одинаковые, пустое место обозначает наличие дополнительного функционала, настраивается быстро. Если подвешивать оконный дизайнер с возможностью изменения позиции контролов, то это может привести к конфликту с параметрическими настройками, сложнее настраивать и поддерживать. То есть уже несколько другая архитектура.
Миниатюры
Нажмите на изображение для увеличения
Название: windhide1.jpg
Просмотров: 34
Размер:	369.3 Кб
ID:	11838   Нажмите на изображение для увеличения
Название: windhide2.jpg
Просмотров: 38
Размер:	395.3 Кб
ID:	11839   Нажмите на изображение для увеличения
Название: windhide3.jpg
Просмотров: 31
Размер:	401.9 Кб
ID:	11840  
28.07.2022 07:05
По мотивам недавнего обсуждения решил подключить режим black mode, позволяющий работать с окнами в затененном режиме. При этом хотелось обойтись штатными средствами системы разработки. К сожалению, ее рантайм не позволяет добраться до некоторых установок. Например, хотелось бы немного затенить заголовки списков, check и option контролы. Ползунки у списков пришлось отключить, так как слишком контрастировали с затененным фоном в окнах. Не очень выразительно, на мои ощущения, выглядят задизейбленные (недоступные) контролы. Если используется цветовое выделение колонок в списках, то на темном фоне иногда эти цвета не сочетаются, их приходится динамически корректировать. Black mode реализуется подбором цветов, обои на окна не применяются (раньше я пробовал варианты обоев). Цвета заложены жестко в функции стилизации, которая вызывается автоматически после открытия каждого окна, внешнюю настройку пока не вижу смысла вводить. Несмотря на некоторые нюансы, режим black mode выглядит интересным. На скриншоте показан пример окон.
Миниатюры
Нажмите на изображение для увеличения
Название: blackmode.jpg
Просмотров: 42
Размер:	251.3 Кб
ID:	11844  
08.08.2022 13:06
Провел опрос некоторых пользователей, которые полный день сидят в программе, на предмет использования "Темной темы". Все сказали, что привыкли к классике, не видят смысла переключать. У себя во всех подключениях я перешел на темную тему. Мне лично нравится.
13.08.2022 20:29
Вышел релиз настройки программы ФинСофт:КупецЪ для розничного магазина.

1. Основное в этом релизе - применение недавно разработанного механизма скрытия лишней информации в окнах. Во всех задействованных диалоговых окнах осталось только то, что может применяться в рознице. Убрана избыточная информация, которая, в основном, используется в оптовой торговле или производстве. В результате все существенно упростилось и стало по делу. На скриншотах, для примера, вид окна в оптовке и в рознице (после применения скрытия контролов).

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

2. Был полностью кастомизирован список печатных форм. Теперь в дистрибутив подкладываются только используемые печатные формы, а не вся большая библиотека.

3. Изменен подход к определению типа встроенного окна кассира. Теперь он выбирается в параметрах программы из 2 значений - "Стандартное (штрих-коды)" и "Стандартное (список товаров)", в зависимости от того, какой приоритет в работе кассира. Если потребуется какое-то более специализированное решение, не покрываемое настройкой стандартных экранных форм, легко добавить дополнительное.
Миниатюры
Нажмите на изображение для увеличения
Название: kliopt.jpg
Просмотров: 39
Размер:	75.0 Кб
ID:	11858   Нажмите на изображение для увеличения
Название: klirozn.jpg
Просмотров: 32
Размер:	47.9 Кб
ID:	11859  
20.08.2022 19:41
Недавно разговор зашел про загрузку приходных накладных из экселевских файлов, который принес ряд удачных идей. В Купце эта загрузка работает очень давно и особых вопросов не вызывала. Используется справочник "Планы обмена", в котором можно зарегистрировать план, указав в нем номера колонок xls файла и некоторую другую информацию. Затем к поставщику прикрепляется план обмена и накладные загружаются. Если товары не найдены, то формируется экселевский отчет, откуда копипастом добавляют новые товары в справочник товаров, или к существующим товарам добавляют новые штрих-коды или артикулы.

Этот механизм можно заметно улучшить. Вот какие изменения были сделаны.
1. Раньше загружать приходные накладные можно было только имея на компьютере Ms Excel. Теперь добавился и OpenOffice Calc.
2. Визуальная настройка плана обмена. Она на 1 скриншоте. Выбираем эталонный xls (xlsx) файл, указываем первую строку начала следования товаров, диапазон колонок для анализа (по умолчанию 20). Получаем значения из ячеек файла. Выделяем строку в списке колонок плана обмена, щелкаем по соответствующей колонке в списке значений из файла, происходит привязка номера колонки. Это заметно облегчает создание нового плана обмена, так как бывают замороченные формы накладных от поставщиков с объединенными и скрытыми колонками.
3. Добавилась возможность добавления новых товаров непосредственно при загрузке накладной. Соответствующий признак включается в плане обмена. Показано на 2 скриншоте. В диалоговом окне программы появляется список не найденных товаров. Если товар есть в справочнике товаров, то щелкаем в колонке существующего товара и выбираем. В этом случае новый штрих-код или артикул будут автоматически привязаны к этому товару. Если товар новый, то выбираем товарную группу, куда поместить. Можно выбрать эталонный товар. В последнем случае для создаваемого нового товара будут присвоены некоторые аналитические признаки эталонного. Можно также перед созданием изменить название товара.
4. В диалоге загрузки добавлена кнопка проверки загружаемого файла. Программа читает колонки из первой строки списка товаров файла и выводит эту информацию для контроля. Показано на 3 скриншоте.
5. Совсем мелочь. Сделать привязку поставщика к плану обмена предлагается непосредственно при загрузке накладной, если ранее привязка не была сделана или ее значение отличается.
Миниатюры
Нажмите на изображение для увеличения
Название: imp_xls1.jpg
Просмотров: 39
Размер:	117.6 Кб
ID:	11868   Нажмите на изображение для увеличения
Название: imp_xls2.jpg
Просмотров: 42
Размер:	149.4 Кб
ID:	11869   Нажмите на изображение для увеличения
Название: imp_xls3.jpg
Просмотров: 45
Размер:	205.0 Кб
ID:	11870  
23.08.2022 22:46
Интересная программа Магазка. Это конфигурация под 1С для небольших непродовольственных магазинов. Кстати, довольно неплохо сделана для 1С, есть на что посмотреть. Мне понравился механизм копирования списков товаров между excel и программой через виндовый буфер обмена. Давно знал про этот механизм, но как-то не думал в эту сторону. Увидел ролик на ютубе. Несколько заморочено в сторону универсальности, вставляют прямо в документы. В таком я особого смысла не вижу (или пока не увидел), все же концепции отличаются. А вот применить для списковых параметров отчетов действительно удобно. Сегодня приделал себе. Чтобы активировать функцию в оконном диалоге, достаточно включить флажок у контрол-шаблона спискового параметра.

Для наглядности. Имеем где-то в excele наш список товаров. Товары те, которые есть в программе. Выделяем строки в столбце с названиями товаров, жмем Ctrl+C. Показано на 1 скриншоте.
У себя в программе делаем фокус на списке товаров в параметре отчета и жмем Ctrl+V. Откроется окно, в котором автоматически происходит поиск товаров из буфера обмена по полному совпадению наименований. Если что-то не найдется, то оно метится красным цветом и вставляться не будет. Это показано на 2 скриншоте.
Жмем Сохранить и получаем товары в списке для отбора в отчете. Это на 3 скриншоте.

Аналогично можно сделать фокус на списковом параметре, нажать Ctrl+C, перейти в другой отчет, где тоже есть отбор по списку товаров, нажать Ctrl+V.
Могут быть различные вариации на эту тему. В определенных ситуациях так удобнее, чем делать импорт из экселевского файла.
Миниатюры
Нажмите на изображение для увеличения
Название: copypast1.jpg
Просмотров: 30
Размер:	136.6 Кб
ID:	11872   Нажмите на изображение для увеличения
Название: copypast2.jpg
Просмотров: 35
Размер:	139.7 Кб
ID:	11873   Нажмите на изображение для увеличения
Название: copypast3.jpg
Просмотров: 32
Размер:	137.3 Кб
ID:	11874  
03.09.2022 09:42
В линейке типовых настроек Купца ("Оптово-розничная торговля", "Магазин", "Магазин продуктовый") добавилась настройка "Бухгалтерия". Когда-то давно была разработана конфигурация 1с77 "ФинСофт:Бухгалтерия", которая до сих пор используется на нескольких предприятиях. Она официально много лет не поддерживается, за прошедшее время только обращались за разовыми доработками при изменениях в налоговом учете НДС. Всегда хотелось иметь подобный инструмент, не привязанный к 1С. Сейчас, благодаря технологии кастомизации, такая возможность появилась в Купце. В настройку включены основные складские и финансовые документы. Расчет складской себестоимости по скользящей средней. Кроме модуля "Бухгалтерия", в котором генерация бухгалтерских проводок и стандартный набор отчетов по ним, включены модули "Зарплата" и "Амортизация" (учет основных фондов, нематериальных активов, МБП, рабочей одежды). Пока не вошел налоговый учет НДС, так как нет уверенности, какую схему лучше в данном случае использовать. В Купце налоговый учет НДС реализован через основной набор документов. Документы "Счета-фактуры", "Записи книги покупок", "Записи книги продаж" используются как дополнительные для ситуаций, связанных с возвратами, отложенным НДС и подобными операциями, которые отражаются в налоговом учете с некоторыми особенностями. В конфигурации 1с77 "ФинСофт:Бухгалтерия" весь учет НДС строится на этих документах. Они создаются автоматически обработками. С определенной точки зрения второй вариант более бухгалтерский, хотя и создает некоторую вероятность ошибок (забыли переформировать налоговые документы после изменений в обычных). На скриншоте меню бухгалтерского модуля в типовой настройке Купца "Бухгалтерия".
Миниатюры
Нажмите на изображение для увеличения
Название: buh_std.jpg
Просмотров: 33
Размер:	103.4 Кб
ID:	11875  
03.11.2022 20:31
По мере наличия времени движется разработка дизайнера окон. Вначале было любопытно, потом бросить жалко. Изначально идея была в организации возможности взять описание окна из штатного дизайнера среды разработки, поработать с ним у себя в программе, затем вернуть в среду со сделанными изменениями. Штатный дизайнер среды разработки имеет ряд проблем, и, если довести альтернативный дизайнер до нужного уровня, это могло бы в определенных ситуациях заметно ускорить и упростить разработку. Обычно дизайнеры окон делают в различных скриптовых системах. Библиотеку можно было бы использовать таким же образом, но я тяготею к компилированным системам, поэтому не рассматриваю подобное у себя.
В целом, дизайнер поддерживает основные функции для библиотек подобного рода. Создание экранных контролов различных типов, установка их свойств, изменение размера, перемещение выделенных контролов с помощью мыши или клавиатуры, выравнивание контролов между собой. Поддерживаются вложенные структуры (закладки, группы, опции). Имеется функция undo/redo, изменения порядка обхода контролов, выравнивание по сетке, режим предварительного предпросмотра.
Пока еще все постепенно будет шлифоваться, если не надоест раньше.
Прикреплю несколько скриншотов. На первом дизайнер и сформированный на основании работы в нем текст структуры окна в буфере обмена. На втором окно предпросмотра. На третьем работа в форматере табличных контролов.
Миниатюры
Нажмите на изображение для увеличения
Название: windes1.jpg
Просмотров: 41
Размер:	186.9 Кб
ID:	11913   Нажмите на изображение для увеличения
Название: windes2.jpg
Просмотров: 25
Размер:	160.2 Кб
ID:	11914   Нажмите на изображение для увеличения
Название: windes3.jpg
Просмотров: 36
Размер:	203.1 Кб
ID:	11915  
24.11.2022 21:28
Вышла бета версия библиотеки FinSoft Window formatter, про которую я упоминал в предыдущем сообщении блога. Эта библиотека позволяет создавать и редактировать диалоговые окна. Результат сохраняется в стандартной текстовой структуре окна, используемой в системе разработки Clarion. Прежде всего библиотеку планируется использовать для внутренних нужд разработки, поскольку ввиду сохранения совместимости описания окон можно "таскать" из среды Clarion в дизайнер и обратно. Библиотека также потенциально может быть встроена и в учетную систему, хотя пока целесообразности такой не проглядывается. Библиотека написана на чистом clarion. Интерфейс сделан в своей основе по мотивам дизайнера окон в старой версии clarion6. Для удобства я пока сделал надписи на английском, чтобы сохранилось привычное восприятие. Наиболее сложным оказалась организация работы с многоуровневыми структурами (закладками, группами) экранных контролов.
Интуитивно показалось, что иметь такой инструмент в арсенале очень неплохо. Хотя это ранняя бета, принципиальные моменты решены, дальше будет шлифоваться на внутренних задачах. Поскольку все свое, то можно легко адаптировать под какие-то специфичные нужды.
При записи ролика некоторые проблемы со стороны писалки. Например, она не дает работать с заголовками окон, когда активна. Но смысл, я думаю, будет понятен.

13.12.2022 16:44
Завершается предновогодний технологический марафон. Из интересного две вещи.
1. Зафиксирован полнофункциональный релиз встраиваемого дизайнера окон, про который я писал в предыдущих сообщениях. Подключены все 20+ стандартных контролов со всеми свойствами, добавлены все необходимые для комфортной работы функции. Релиз не баг фри, фиксация функционала. Окошко дизайнера на первом прикрепленном скриншоте.
2. Исследовалась возможность встраивания в приложения полнофункционального текстового редактора. Это открытая библиотека scintilla, написанная на с++, которую используют многие приложения, особенно ide для разработки. Имеются порты библиотеки в c# и pyton, работает в виндоуз и линукс. У меня практически нет сомнений, что наша среда clarion11 использует порт scintilla на c#. В ходе исследования были опробованы основные возможности на примере кларионовского враппера, кем-то опубликованном на github. В примере подключены подсветка синтаксиса, подключение своего popup меню, привычных клавиш, подсветка парных скобок, автоматическое закрытии скобок, поиск и замена, включение аннотаций, свертывание блоков строк, автоматическое завершение (auto completed). На втором скриншоте фрагмент окна редактора.
Миниатюры
Нажмите на изображение для увеличения
Название: fswindes_5.jpg
Просмотров: 31
Размер:	261.0 Кб
ID:	11942   Нажмите на изображение для увеличения
Название: scintilla6.jpg
Просмотров: 40
Размер:	74.8 Кб
ID:	11943  
Часовой пояс GMT +3, время: 12:28.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.