Проект Утопия

16.04.20

Разработка - Инструментарий разработчика

В настоящей публикации представлен авторский проект универсальных подсистем для платформы 1С. Основная концепция проекта заключается в создании универсального программного комплекса, который легко встраивается в любую конфигурацию. Легкость встраивания достигается минимальностью добавляемых объектов конфигурации. Компактный набор добавляемых объектов позволяет получить расширенные возможности для использования программы пользователями, а также получить удобные инструменты для программирования. Есть определенный опыт доработок большого числа конфигураций, а также есть опыт работы в командных проектах с разными философиями/подходами к внесению изменений. Поэтому настоящий проект – это конгломерат идей за 14 лет самостоятельной работы. Попытка сохранить прошлые и текущие программные конструкции (Эрмитаж идей). Возможно, кому-то покажется неоптимальным по некоторым параметрам, но упор здесь именно на универсальность, может быть, немного в ущерб быстродействию. Проект нестандартный, постоянно развивающийся. Рассмотрим только идею и основные принципы.

 

Создание проекта

Начнем с доработок типовых конфигураций 1C. Очень часто программисты пишут одни и те же функции при доработке разных конфигураций. Универсальные функции можно выделить почти из любой разработки. И чем больше доработка, тем больше таких общих функций. Универсальные функции можно объединить в универсальный модуль, который будет дополняться новыми функциями в дальнейшем, а старые функции при необходимости будут дорабатываться с сохранением изначального функционала (например, расширение функций путем добавления необязательных параметров). Этот модуль удобно копировать в новые конфигурации или обновлять в старых. Это позволяет за минимальное время получить набор проверенных (выстраданных/отлаженных) функций, с которыми разработчик знает, как работать. Так начался данный проект.

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

При доработках конфигураций 1С часто возникает необходимость сохранить разные параметры/настройки в базе, чтобы использовать их в дальнейшем. Например, ссылки на справочники/документы, логины, пароли, текущие состояния счетчиков. Часто программисты привязываются к кодам или наименованиям справочников, что не является надежным способом, т.к. эти данные могут меняться. К сожалению, в 1С нет универсального хранилища данных. Поэтому приходится обращаться к метаданным, если требуется сохранение данных для последующей работы. Справочники, документы, регистры и другие объекты метаданных жестко определены конфигурацией. Есть, конечно, хранилище настроек, но по нему нельзя осуществлять поиск, и его нельзя экспортировать в другую конфигурацию. Поэтому добавление метаданных – это суровая необходимость, но можно минимизировать эти «вливания».

Набор добавляемых объектов

Мы берем произвольную конфигурацию 1С на обычных формах и добавляем наши объекты. Будем считать, что конфигурация типовая, постоянно обновляемая. Для визуального определения и группировки в названия объектов добавлен префикс «_», чтобы при лексико-графическом упорядочивании наши объекты стали первыми в списке. Также имена универсальных модулей сокращены, чтобы не перегружать выражения, в которых они используются.

Далее будет перечислен минимальный набор добавляемых объектов. Минимальность понимается в том смысле, что без этих объектов не обойтись, не теряя функциональность/производительность.

  1.  Виртуальный справочник _Элементы
  2.  Регистр сведений _Параметры
  3.  Общие модули (_ГМ, _ГМС, _ДМ, _ДМС, _ДМПП, _ДМПИ, _ЛМ).
  4.  Подписки

Добавление изменений в произвольную конфигурацию разбито по уровням абстракции. Чем больше уровень абстракции, тем больше мы знаем о конфигурации. Каждый следующий уровень включает в себя все предыдущие.

 

1 уро1 уровень абстракции – добавляем модуль _ГМ, можно использовать динамическое обновление.

2 уровень абстракции – добавляем 1 объект метаданных: регистр _Параметры, когда появляется необходимость хранить данные.

3 уровень абстракции – определен виртуальный справочник, есть модули повторного использования.

4 уровень абстракции – связующее звено и индивидуальные доработки текущей конфигурации. Модуль _ЛМ содержит заранее определенные функции, которые описывают особенности текущей конфигурации.

Расширения проекта Утопия – дополнительные специфические проекты, для которых нужны добавочные метаданные.

Интеграция в разные конфигурации

Рассмотрим интеграцию проекта в разные конфигурации. Добавляются объекты 1-3 уровня абстракции. Индивидуальные особенности и доработки (локальные изменения) конфигурации записываются отдельно, в модуль _ЛМ.

Модуль _ЛМ выполняет роль драйвера, который предоставляет функционалу проекта Утопия работать с текущей конфигурацией. Сам проект Утопия общий для всех конфигураций, будет дорабатываться. Для обновления проекта Утопия достаточно полностью заменить объекты 1-3 уровня абстракции (перепрошить). Замена небольшого количества объектов занимает намного меньше времени, чем анализ вставок в код программы. Обновить проект Утопия может даже администратор (по инструкции), не владеющий программированием 1С.

 

А теперь о каждом пункте поподробнее.

Виртуальный справочник _Элементы

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

Для работы со справочником «_Элементы» реквизит Тип задает набор свойств виртуального справочника по описанию виртуальных элементов (ОВЭ).

Для добавления нового справочника достаточно добавить новую строку в описание ОВЭ. При этом не нужно детально все расписывать, так как часть настроек задана по умолчанию. Обязательными для заполнения являются только название справочника в единственном и множественном числах.

Данное описание напоминает код ДНК при создании белка. Последовательность нуклеотидов – это цифры поля Тип, а белок – это виртуальный справочник, молекула ДНК – описание виртуальных элементов.

Описание ОВЭ определено в одной из функций модуля _ДМПИ (для ускорения работы, т.к. часто используется).

Элементы виртуального справочника заданы длинной строкой из тэгов. В ней содержится название виртуального справочника в единственном числе, название во множественном числе, общие реквизиты, набор дополнительных реквизитов, права на использование справочника. Общие реквизиты – это Наименование, Инфо (строка 70 символов), Ссылка1, Ссылка2, Цвет. Эти реквизиты часто используются, поэтому они есть у всех виртуальных элементов, но не у всех они обрабатываются (соответственно, не у всех видны).

В виртуальном справочнике есть стандартная форма списка, но для некоторых виртуальных справочников есть индивидуальные формы списка. Они отличаются тем, что для них в форме списка существует добавленный функционал.

Механизм управления цветами уже вшит в стандартные форму списка и форму элемента любого виртуального справочника.

Виртуальные справочники с типом меньшим 1000 являются предопределенными (описаны в _ДМПИ). Остальные виртуальные справочники зависят от текущей конфигурации, в которую добавляется проект Утопия.

При необходимости можно дополнить виртуальные справочники новыми элементами и новыми свойствами (для предопределенных), используя модуль _ЛМ.

В данном примере справочники 8, 9, 13, 22 дополняются новыми свойствами (для свойства указывается тип), а справочник 1007 добавляется (он не универсальный и используется только в текущей конфигурации).

Регистр сведений _Параметры

Регистр состоит из одного измерения «Ключ» и одного ресурса «Значение». Тип Ключа – строка, а Значение – сложный тип (любая ссылка и базовые – число, строка, дата, булево). При использовании сложных типов есть ограничение по использованию бесконечных строк. Удалось обойти это ограничение, используя разбиение строк на тома, по аналогии с архиваторами файлов. Разработана функция для работы с такими томами строк. Благодаря ей, при считывании строки конкатенируются с помощью ключей, у которых есть признак длинных строк.

Назначение регистра – хранение произвольных параметров и оперативный доступ к ним. Не смотря на примитивность, регистр оказался очень эффективен для решения различного рода задач.

В регистре можно хранить соответствие объектов. Реализована универсальная функция «Параметр()», возвращающая ссылку по строковому представлению. Параметром функции является строковое представление, в котором через разделитель указан тип ссылки (Например, «Склады.ОсновнойСклад»). Если по данному ключу есть сопоставление (запись) в регистре, то функция возвращает ссылку. Если записи нет, то функция предлагает интерактивно сопоставить ссылку со строковым представлением. Если пользователь сопоставил ссылку, то соответствие записывается в регистр, чтобы в следующий раз функция «Параметр()» сразу вернула ссылку.

Другие варианты использования регистра: хранение произвольных настроек пользователей, журнала событий, текущих показаний счетчиков (например, счетчика для генерирования новых числовых идентификаторов). Все вышеназванные варианты использования регистра Параметры реализованы в проекте Утопия.

Набор модулей

Набор модулей проекта Утопия состоит из:

_ГМ (глобальный модуль) – все универсальные функции, которые не привязаны к конкретным метаданным и функционал работы с регистром _Параметры (функция «Параметр()»). Набор универсальных функций.

_ГМС (глобальный модуль серверный) – часть функций _ГМ, которые работают на сервере, либо для передачи управления на сервер.

_ДМ (дополнительный модуль) – процедуры, которые нужны для работы с добавленными объектами. Привязан к виртуальным элементам. Ядро проекта Утопия.

_ДМС (дополнительный модуль серверный) – часть функций _ДМ, которые работают на сервере, либо для передачи управления на сервер.

_ДМПП (дополнительный модуль с полными правами) – набор функций, которые выполняются без контроля прав.

_ДМПИ (дополнительный модуль повторного использования) – функции _ДМ, которые надо кэшировать.

_ЛМ (локальный модуль) – точка входа для текущей конфигурации. Там же хранятся все добавленные функции, индивидуальные для текущей конфигурации.

Применение проекта Утопия

За много лет появилось огромное количество доработок (функций), которые хотелось использовать в любой конфигурации. Частично эти доработки прикладные, частично для программирования. Вот некоторые примеры функций.

Функции основного проекта Утопия

1. Основная панель – интерфейсная часть проекта. С помощью основной панели можно запустить остальные функции для обычного пользователя и для администратора. Состав закладок зависит от прав текущего пользователя. Основная панель реализована как произвольная форма в справочнике _Элементы, чтобы не добавлять дополнительный объект в проект. На первой закладке отображается Журнал объектов.

 

2. Журнал объектов – последние 20 открытых пользователем объектов (справочников или документов) в хронологическом порядке. Данная функция реализована на подписках и регистре _Параметры. Для каждого пользователя в регистре заводится хранилище с 20 объектами и указатель на текущий объект. В момент открытия ссылочного объекта система записывает в регистр всего 2 записи: новый указатель и объект по этому указателю. Если указатель доходит до 20, то сбрасывается до 1. Процесс записи цикличен (соответственно, ограничен по ресурсам) и оптимизирован по времени исполнения. При просмотре журнала хронология открытых объектов формируется из циклических записей регистра в обратном порядке, начиная с текущего указателя.

 

3. Список сотрудников реализован в виде справочника. Нажатием одной кнопки на основной панели инструментов можно открыть список. В списке можно указать номера телефонов, адреса электронной почты, должности сотрудников, файлы (в том числе оцифрованные сканы документов кадрового учета и просто произвольные файлы). Сотрудников можно классифицировать по группам, по филиалам. Для сотрудника можно задать цвет. Практика показала, что цвета быстро ассоциируются с сотрудниками и почти сразу помогают визуально разделять сообщения, справочники и документы по сотрудникам.

4. Дополнительные отборы в формах списков – расширенные отборы по табличным частям документов и справочников. Функция также реализована как дополнительная форма в справочнике _Элементы. При открытии формы списка добавляется кнопка для открытия данной функции. Отборы можно сохранить (используется регистр _Параметры). Реализованы дополнительные отборы по любым полям табличных частей документов и справочников. Система считывает структуру полей табличных частей и предоставляет отбор по присутствию выбранных в отборе значений. Также в системе можно выбрать часто используемые поля, т.к. бывают объекты, сильно перегруженные реквизитами табличных частей, которые редко используются.В данном примере отбираются все реализации, в табличной части которых присутствует хотя бы 1 строка с ценой 150.

5. Напоминания – набор сообщений, которые отображаются при возникновении определенных событий. Система напоминаний помогает предостеречь пользователей при выполнении определенных действий. В конфигурации вставляется запуск формы напоминания по произвольным параметрам.

6. Нормализация наименований справочников – часто используемая функция в любой конфигурации. Для многих справочников (и других ссылочных типов) требуется в наименовании убрать лишние пробелы: в начале, в конце и дубли в середине. Данная функция реализована с помощью подписок на запись ссылочных объектов конфигурации. Для конкретных объектов метаданных можно выставить нормализацию наименования. Настройки хранятся в виртуальном справочнике «Метаданные» на базе _Элементов. Также там можно запретить дублирование по наименованию. Данные настройки не требуют внесения изменений в конфигурацию, их можно сделать «на лету», в пользовательском режиме.

7. Цветовые профили и палитры – незаменимый функционал для оформления форм. В проекте реализованы виртуальные справочники для работы с цветами: палитры и цветовые профили. Палитра содержит произвольный набор цветов с описанием каждой позиции. Система палитр и настроек записывается в цветовой профиль. С помощью цветового профиля можно раскрасить объекты конфигурации для наглядности.

       

8. Заметки – система сохранения печатных форм и таблиц с дополнительными функциями. Добавлено сравнение макетов/текстов (используется функция платформы «Диалог сравнения» для табличных документов и текстов).

9. Обработка ошибок – ведение таблицы ошибок и работа с ней (добавление, проверка актуальности, исправление, подсвечивание).

10. Восстановление последовательностей документов – умное перепроведение документов по измененным измерениям регистра накопления для восстановления последовательности.

11. Автоматически запускаемые процессы – имитация регламентных заданий в файловом варианте и контроль их выполнения. Реализована гибернация процессов по превышении количества неудачных попыток выполнения процесса.

12. Отчет по произвольным печатным формам документов. Позволяет печатать любые печатные формы ссылочных объектов в несколько столбцов.

Дополнительные функции проекта Утопия

В этот раздел попали функции, которые не получилось сделать на базе справочника _Элементы и регистра _Параметры. Для перечисленных ниже функций необходимо добавлять метаданные помимо проекта Утопия, но количество добавляемых объектов также сведено к минимуму.

1. Внутренний чат (пейджер) – функция, которая с успехом используется многими клиентами, значительно облегчая коммуникации. В чате можно сделать рассылку сообщений всем участникам чата, а также прикрепить к письму нужный документ. Для сообщений добавлены отдельные справочники Сообщений и Сообщений пользователя.

2. История изменения объектов (Черный ящик). Для реализации этой функции создан отдельный регистр _История объектов. При изменении справочников и документов сохраняется информация об измененных полях (включая табличные части).

3. Хранилище файлов. Для формы объектов создается отдельная страница с хранилищем файлов. При активизации данной страницы открывается список загруженных файлов. Данные файлы можно просмотреть сразу в 1С (если это картинки), сохранить на компьютере либо загрузить с компьютера в хранилище. Есть возможность загружать в хранилище несколько файлов в одном диалоге с помощью множественного выбора. Также в нем можно хранить дополнительные обработки и печатные формы (аналог функции типовой конфигурации «Внешние обработки»).

4. Корреспонденция – функция является расширением проекта Утопия. В системе встроена работа с корреспонденцией, входящей и исходящей. Автоматически присваивается регистрационный номер с префиксом организации (если база ведется по нескольким организациям, то префиксы помогут сделать сквозную нумерацию по каждой организации).

5. Универсальная обработка – самостоятельная обработка для применения функций _ГМ. Обработка интегрирована в проект для расширения функционала. Из журнала объектов можно перенести выбранные ссылки в обработку для дальней работы. Модулем обработки является модуль _ГМ.

Функций много: работа со списком объектов (выбор по отбору, выбор из журнала объектов, запись, проведение, отмена проведения, полное удаление, регистрация на обмен, снятие с обмена, изменение любого реквизита, выполнение произвольного кода над объектами); команды системы (запуск приложения из 1С, распознание документов из списка текстовых представлений документов); работа с N-ричными числами (бинарными, Hex и произвольными), форматом BASE64; работа со структурой метаданных (поиск имен таблиц БД по имени объекта метаданных) и др. Более подробно //infostart.ru/public/682078/.

6. Распознание текста – работа с текстовыми предложениями. Опознаваемые конструкции хранятся в дополнительных регистрах-словарях. Применяется для обработки назначений платежа. Более подробно //infostart.ru/public/547393/.

 

Заключение

Конечно, этот проект – утопия. Невозможно все свои разработки и доработки включить в одну конфигурацию, тем более на базе 1 справочника и 1 регистра. Важен баланс. Кое-что можно сделать, и потом эффективно этим пользоваться.

Следующим этапом будет объединение обычных и управляемых форм в один проект, новый этап универсализации.

Данный проект объединил большую часть разработок автора в единую систему, в одну большую библиотеку функций и прикладных объектов. Разработана методика добавления новых и дополнения существующих функций, не теряя старый функционал. На данном этапе автору не так интересны новые проекты, если они не позволяют совершенствовать, дорабатывать данный проект. Это тот момент, когда работа перевоплощается в увлечение, хобби. Удачи всем разработчикам!

модуль универсальные доработки конфигурации дополнительные возможности

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159652    875    399    

862

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7858    58    23    

69

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23490    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10460    36    25    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15426    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    188042    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17317    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7716    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Cерый 26 17.04.20 09:52 Сейчас в теме
В типовой регламентированной отчетности сборка напоминает Вашу. В до1С-ную эпоху в моем проекте была таблица, в которой требовалось указать dll, объект и событие, которое dll обрабатывает - так осуществлялось разделение на платформу и конфигурации, в 1С вижу аналоги с подписками. В другом проекте (1С) в текстовое поле справочника добавляли код и использовали как в первом случае, там мной была добавлена константа с типом ХранилищеЗначений. Удачи!
2. rozer 311 18.04.20 16:01 Сейчас в теме
Лет 15 назад один "халтурный" клиент просил доработать его нетленку как раз по этому принципу реализованную. Оч удивлен увидев публикацию ))
Как помню клиент из Бизнес-центра на улице Фрезер в Москве...
3. lastcontra 116 19.04.20 07:19 Сейчас в теме
(2) 15 лет назад я еще на 7.7 писал...
4. МимохожийОднако 142 19.04.20 07:55 Сейчас в теме
Идеи рождаются, бродят, умирают, потом снова возрождаются в других умах и разработках...Это ОФФ )
5. TerveRus 22.04.20 15:39 Сейчас в теме
Невозможно все свои разработки и доработки включить в одну конфигурацию

Конечно возможно, надо использовать расширение)
6. lastcontra 116 22.04.20 17:58 Сейчас в теме
(5) Большая часть доработок привязывается к конкретной конфигурации, т.к. они используют конкретные объекты конфигураций. Идея этого проекта - выделить часто используемые функции в в одну подсистему, чтобы оптимизировать временные затраты на новые проекты.
Механизм расширений только оптимизирует внесение изменений и последующее обновление (но это безусловно очень полезный инструмент), что немаловажно!
Оставьте свое сообщение