Найти тему
Вокруг 1С

Идея №4 улучшения для платформы 1С

Продолжаю подкидывать идеи фирме "1С" по улучшению платформы 1С:Предприятие. Сегодня пройдусь по "Подсистемам". Задумка хорошая, но реализация, как обычно, подкачала. Очень сильно подкачала. На мой взгляд, в том виде, как есть сейчас "Подсистемы" в 1С - пустое место. Пользоваться неудобно и бессмысленно (только ради отображения в интерфейсе).

Для начала надо... создать (вернуть, т.к. это было в ранних версиях 1С8.0 и 1С8.1) отдельный раздел "Интерфейс", который и будет, собственно, основой меню, интерфейса пользователя. Здесь у нас остается такая функция как "Командный интерфейс", в которой можно задать последовательность, видимость, доступность и т.д. тех или иных команд пользователю. По сути, мы возвращаемся к тому, что было в 7.7 и 8.0 (8.1) - был отдельный раздел "Интерфейсы", в котором описывались доступные пользователю пункты меню. Эти интерфейсы можно было включить в ту или иную подсистему. И это верный, логичный подход. Я до сих пор не понимаю, почему отказались от этого раздела. Ведь сейчас получается полная ерунда - в подсистему включается куча справочников, документов, но они не отображаются в интерфейсе. Зачем это надо?

А теперь описание того, чего не хватает в реализации подсистем. Здесь у меня "хотелок" гораздо больше.

  1. Убрать из подсистем "Командный интерфейс" - т.к. интерфейс должен описываться отдельно (смотри выше).
  2. Добавить в подсистему свойство "Номер версии". Необходимо как воздух.
  3. Добавить для подсистем свойство с возможностью выбора множества значений "Зависит от подсистем". В этом свойстве разработчик должен выбирать другие подсистемы, необходимые для работы текущей, а также указывать минимальный номер версии "ведущей" подсистемы, с которой можно работать (т.к. не все зависимости можно выстроить по простой иерархии). Получится, что платформа сможет отслеживать наличие всех требуемых подсистем в конфигурации и соответствуют ли их версии. Как пример - указывать, что для подсистемы "Присоединенный файлы" необходимы подсистема "Базовая функциональность" версии 2.1.4 и "Работа с файлами" версии "1.6.2" и если эти требования не выполняются, то, например, функционал данной подсистемы недоступен для пользователя (или вообще невозможно запустить приложение). Есть сложность - при задании свойства необходимо отслеживать указанную зависимость на наличие "кольца", чтобы не получилось, что для "подсистемы 1" нужна "подсистема 2", для "подсистемы 2" - "подсистема 3", а для "подсистемы 3" - "подсистема 1".
  4. Для каждой подсистемы сделать предопределенные модули (как "Модуль менеджера" или "Модуль объекта") по типам модулей. Модуль "Клиент", "Сервер", "КлиентСервер", "ПовторныйВызов" (хотя бы на время сеанса). Плюсы этого подхода - модули сразу привязаны к подсистеме и открываются из окна свойств (что удобно), у нас очень сильно уменьшится список "Общие модули" (сейчас он получается очень большой и неудобно искать нужный модуль). А также добавить модуль "ОбновлениеПодсистемы", в котором должна быть предопределенная процедура "ОбновлениеВерсии", вызываемая автоматически при запуске программы, если - читай следующий пункт. Порядок вызова процедур обновления должен соответствовать зависимостям подсистем (пункт 3).
  5. Добавить в подсистему свойство "Номер рабочей версии". Это свойство невозможно установить в конфигураторе, а только вызвав в коде какую-нибудь процедуру "УстановитьНомерВерсииПодсистемы". С помощью этого свойства можно автоматически отслеживать версии и запускать процедуру обновления (смотри пункт 4).

Пока на этом с подсистемами остановимся. Как бонус - еще одна идея (возможно, это уже слишком). Для объекта метаданных "Отчет" или "Обработка" так же, как и для подсистем добавить возможность указания необходимых подсистем и их версий.