Проблема программной настройки рабочей области начальной страницы.
В модульном приложении существует проблема, когда несколько модулей содержат формы АРМ и эти формы нужно в зависимости от пользователя отобразить в рабочей области начальной страницы 1С. Программного доступа к рабочей области нет.
Как вы решаете проблему кастомизации начальной страницы?
Как один из предполагаемых способов рассматривается решение следующее, но может оно не оптимально и у вас есть более эффективный способ решения. Модули и интерфейсы модулей предложены в статье: http://infostart.ru/public/192074/
Все формы АРМ из модулей должны быть добавлены в Рабочая область начальной страницы.
Модули, содержащие формы АРМ, должны поддерживать интерфейс "ПоддержкаАРМ" и реализовывать серверную функцию
ПеречислитьФормыАРМ(ПользовательСсылка), возвращающую информации о формах АРМ (метаданные, имя формы). Этот метод будет вызываться в форме редактирования пользователя при определении, какие АРМ доступны данному пользователю.
АРМ хранится в функциональной опции АРМ с параметром Пользователь (справочник Пользователи). Каждая форма АРМ делает проверку (или через метод ядра, т.к. логика однотипная):
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АРМ = ПолучитьФункциональнуюОпцию("АРМ", Новый Структура("Пользователь", ПараметрыСеанса.ТекущийПользователь));
Если АРМ <> ЭтаФорма.ИмяФормы Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
(1) Elisy, а почему бы не набросать пару-тройку подходящих диаграмм (классов, взамодействия, юзекейсов...) дабы пояснить ваше видение и указать узкие места, требующие анализа? "На пальцАх" оно, конечно, тоже вариант, но обсуждение вряд-ли будет эффективным. Вы согласны?
А по существу - ОбработкаПолученияФормы более привлекательна, имхо. Используя ее можно реализовать вариант, когда модуль не имеет полноценной формы, а содержит лишь фрагмент формы, призванный расширить возможности основной формы.
Например, некий доп. модуль расширяет вариант использования "Заказ поставщику" (extend Use Case) своим набором доп. реквизитов (их представлением, алгоритмами обработки, командами), но не является самостоятельным ВИ. Такие модули имеют место быть в вашей системе?
3.
1c-intelligence
1287601.07.13 21:04 Сейчас в теме
(1) Elisy, мне кажется, что вы слишком увлеклись техникой интерфейса.
Задача кастомизации интерфейса легко решается одной НАДсистемой. НАДсистеме насрать, какие у вас там модули - она выведет то, что нужно и тому, кому нужно. Посмотрите на приложенные скриншоты - они из разных конфигураций (УПП 1.3 и БП 3.0) и разных клиентов (толстый, тонкий).
(1) Elisy, мне кажется, что вы слишком увлеклись техникой интерфейса.
Задача кастомизации интерфейса легко решается одной НАДсистемой. Посмотрите на приложенные скриншоты - они из разных конфигураций (УПП 1.3 и БП 3.0) и разных клиентов (толстый, тонкий).
Так мне сейчас и нужно добиться, чтобы каждый модуль мог нести в себе форму АРМ или несколько форм АРМ и пользователь в настройках мог выбрать, какую форму открывать при запуске 1С по умолчанию.
Разные рабочие столы из разных конфигураций - это хорошо. Но как добиться, чтобы все это разнообразие было в одной конфигурации и открывалось по настройкам пользователя.
Состав НАДсистемы (НАД - потому что базовая, для всех модулей):
1) 2 справочника - в одном элементы, в другом наборы элементов;
2) 1 обработка, которая выведена на рабочий стол;
3) Какое-то место, где хранится настройка для пользователя (РС, например).
Форма обработки, если на нее посмотреть через конфигуратор, содержит только кнопку "Обновить".
Все, что на ней рисуется, рисуется программно.
Все АРМ модулей, хранятся не в конфигурации, а в одном из двух справочников.
Пользователь тупо выбирает себе подходящий АРМ. Может поменять его под себя, накидав элементов из справочника.
Или программист может "накидать пользователю" элементов. Заранее, или на ходу - опять же, не залезая в конфигуратор.
Или, например, если клиент купил 2 модуля, они "принесли с собой" набор элементов для рабочего стола - ссылки на свои документы/справочники/отчеты, специальные гаджеты и т.д. При запуске скомпоновали рабочие столы для разных пользователей (или использовали "типовые" АРМ из этих модулей).
Потом докупили еще один модуль, он "принес с собой" еще несколько элементов. Мы просто накидываем их на существующие рабочие столы. Раньше пользователь видел отгрузки и закупки, теперь мы купили модуль "Задачи" - он стал видеть задачи.
(7) zaebunga,
Ваш подход обладает гибкостью и позволяет составлять начальную страницу из отдельных блоков.
Сейчас решили сделать реализацию следующую: в справочнике Пользователи добавляется реквизит ФормаНачальнойСтраницы, где хранится путь до формы. Каждый модуль может возвратить список поддерживаемых форм начальной страницы.
Показ начальной страницы сводится к вызову
ОткрытьФорму(<ФормаНачальнойСтраницы>, , , , ПолучитьОкна()[0]);
Такой способ не будет исключать использование вашего способа с НАДСистемой. В этом случае НАДСистема будет оформлена в виде модуля и нести с собой форму начальной страницы, на которой может динамически выводить элементы форм из своих справочников.
(1) Elisy, а почему бы не набросать пару-тройку подходящих диаграмм (классов, взамодействия, юзекейсов...) дабы пояснить ваше видение и указать узкие места, требующие анализа? "На пальцАх" оно, конечно, тоже вариант, но обсуждение вряд-ли будет эффективным. Вы согласны?
Да, я согласен, что "на пальцах" тяжело воспринимать. Но проблема рабочего стола давно известна в 1С, поэтому не стал готовить прототип. Можно посмотреть варианты решения здесь:
http://infostart.ru/public/82615/ http://infostart.ru/public/159826/ Предложенное мной решение не выдерживает критики в следующем плане. Чтобы выполнение дошло до события ПриСозданииНаСервере и вернуло Отказ, необходимо, чтобы форма была создана. Это ведет к тому, что все добавленные на рабочий стол формы будут созданы и только одна показана.
А по существу - ОбработкаПолученияФормы более привлекательна, имхо. Используя ее можно реализовать вариант, когда модуль не имеет полноценной формы, а содержит лишь фрагмент формы, призванный расширить возможности основной формы.
Например, некий доп. модуль расширяет вариант использования "Заказ поставщику" (extend Use Case) своим набором доп. реквизитов (их представлением, алгоритмами обработки, командами), но не является самостоятельным ВИ. Такие модули имеют место быть в вашей системе?
Да, конечно разные модули имеют право на существование. Но ОбработкаПолученияФормы не вызывается, когда форма добавлена на рабочий стол и появляется сразу при запуске 1С.
(1) Elisy, ещё один вариант решения: http://infostart.ru/public/556324/ В кофигуратор лезть не надо, даже механизм расширений не понадобился.
Оказывается теперь в "ХранилищеСистемныхНастроек" есть "НастройкиНачальнойСтраницы" для каждого пользователя