Виджеты для третьей бухгалтерии. [Расширение] Шаблон блоков для информационной панели.

Расширение конфигурации Бухгалтерия предприятия 3.0 для создания собственных блоков (виджетов) информационной панели.

Что это:

Перед вами расширение конфигурации "1С Бухгалтерия предприятия" редакции 3.0, которое содержит шаблоны пользовательских блоков для информационной панели. Мне больше нравиться называть это "виджеты". С помощью этого расширения вы можете сделать от одного до трех собственных виджетов. Вот как это выглядит:

На скриншоте два левых виджета пользовательские. Их можно адаптировать под себя. Пример такой адаптации виджет "Курсы валют". При старте конфигурации отображаются курсы трех валют. Информацию виджет берет из регистра конфигурации "Курсы валют". Ниже скриншот настроек блоков информационной панели. Красным подчеркнуты пользовательские виджеты.

Проект доступен на GitHub. Ставьте звездочки, если расширение пригодилось.

Тестировалось на версии Бухгалтерия предприятия, редакция 3.0 (3.0.58.41) 

Для тех, кто торопится:

Желаете собственный виджет? Выполните следующие 6 шагов:

  1. Подключите расширение к собственной конфигурации
  2. Отключите пользовательские виджеты, которые вы не будете использовать.
  3. Дайте вашему виджету классное название
  4. Выберите способ обновления данных
  5. На форме "Информационная панель" разместите реквизиты, которые будут отображать данные вашего виджета
  6. В общем модуле "Блоки информационной панели" реализуйте логику заполнения реквизитов вашего виджета 

Далее, подробнее.

Встраивание пользовательских виджетов в конфигурацию

Подключение расширения к конфигурации многократно описано на просторах Интернета, поэтому здесь этому внимание уделено не будет. Дальнейшее описание будет касаться только пользовательских виджетов и поэтому слово "пользовательские" в нем использоваться не будет. В расширении реализовано три шаблона виджетов с номерами 0, 1 и 2. Номера виджетов используются в наименовании методов, которые описаны ниже. В описании номер метода заменен на символ "Х".

Отключение виджета

Любой виджет можно отключить, после чего он становиться недоступен в "Настройке информационной панели" и не отображается на самой информационной панели. Воспользуйтесь методом:

ПОЛЬЗX_Доступен()

Расположение: РасширениеКонфигурации — общий модуль БлокиИнформационнойПанели Установите возвращаемое значение метода в Истина если виджет доступен или Ложь если недоступен.

Наименование виджета

Наименование виджета в "Настройке информационной панели" определяется методом:

ТекстЗаголовкаПОЛЬЗX()

Пример, смотри на скриншоте выше. Расположение: РасширениеКонфигурации — общий модуль БлокиИнформационнойПанелиКлиентСервер. Наименование виджета обычно, но не обязательно используется как значение заголовка информационного блока.

Способ обновления данных

Расширение к стандартному способу обновления данных виджетов добавляет альтернативный способ обновления данных.

Стандартный способ обновление данных срабатывает при наступлении событий:

  • запуск конфигурации
  • смена организации на информационной панели
  • нажатие на кнопку "Обновить"
  • по прошествию суток после последнего обновления, если конфигурация не выгружалась

Альтернативный способ обновление данных срабатывает при наступлении событий:

  • все события стандартного способа
  • по тайм-ауту с помощью обработчика ожидания

В расширении тайм-аут установлен равным 15 минутам. Значение можно изменить, установив переменную модуля:

м_чИнтервалОбновления = 900;

Расположение: РасширениеКонфигурации — модуль формы ИнформационнаяПанель. Переключение между способами обновления данных выполняется с помощью переменной модуля:

м_бАльтернативныйСпособОбновления = Ложь;

Расположение: РасширениеКонфигурации — модуль формы ИнформационнаяПанель Если значение Истина то работает альтернативный способ обновления, если Ложь то работает стандартный способ.

Информация виджета

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

  1. Разместить на форме РасширениеКонфигурации — форма ИнформационнаяПанель реквизиты, которые будут программно заполнены данными. Тип реквизита: ФорматированнаяСтрока.
  2. Расставить реквизиты и иные элементы формы в блоке виджета.
Дизайн блока информационной панели

 
  1. Если виджет имеет элементы управления, разместите на форме команды и их обработчик.
  2. Установите наименование виджета в методе ТекстЗаголовкаПОЛЬЗХ(), который располагается РасширениеКонфигурации — общий модуль БлокиИнформационнойПанелиКлиентСервер
  3. Включите доступность виджета с помощью метода ПОЛЬЗХ_Доступен(), который располагается РасширениеКонфигурации — общий модуль БлокиИнформационнойПанели
  4. Опишите свойства вашего виджета в методе СвойстваПОЛЬЗX(), который распологается РасширениеКонфигурации — общий модуль БлокиИнформационнойПанели. Свойства, определенные в этом методе должны соответствовать реквизитам формы из п.п. 1. Пример реализации: 
    Функция СвойстваПОЛЬЗ0()
    Перем сСвойства;
    
    сСвойства = "ПОЛЬЗ0_Заголовок, ПОЛЬЗ0_ДатаКурса,
    | ПОЛЬЗ0_Валюта1, ПОЛЬЗ0_Валюта2, ПОЛЬЗ0_Валюта3,
    | ПОЛЬЗ0_Курс1, ПОЛЬЗ0_Курс2, ПОЛЬЗ0_Курс3,";
    
    Возврат сСвойства;
    КонецФункции

    Метод должен возвращать строку со свойствами через запятую.

  5. Реализуйте метод ПОЛЬЗХ(Параметры) для заполнения свойств виджета данными. Расположение метода РасширениеКонфигурации — общий модуль БлокиИнформационнойПанели. Полученные данные нужно "упаковать" в структуру, где ключ это имя свойства виджета, которое определено на шаге 6 этого алгоритма. Значение структуры это данные с типом Форматированная строка. Структуру с данными необходимо поместить во временное хранилище, адрес которого передан в параметре метода. Пример реализации: 
    Процедура ПОЛЬЗ2(Параметры) Экспорт
    Перем Шрифт, ЦветТекста, стДанныеБлока, фсДанные, фсЗаголовок;
    
    Если Параметры.Инициализация Тогда
    Возврат;
    КонецЕсли;
    
    Шрифт = ШрифтыСтиля.ШрифтТекстаИнформационнойПанели;
    ЦветТекста = ЦветаСтиля.ЦветТекстаИнформационнойПанели;
    
    стДанныеБлока = Новый Структура();
    фсЗаголовок = ЗаголовокБлока(БлокиИнформационнойПанелиКлиентСервер.ТекстЗаголовкаПОЛЬЗ1());
    стДанныеБлока.Вставить("ПОЛЬЗ2_Заголовок", фсЗаголовок);
    фсДанные = Новый ФорматированнаяСтрока("Информация виджета пользователя", Шрифт, ЦветТекста);
    стДанныеБлока.Вставить("ПОЛЬЗ2_Данные", фсДанные);
    
    ПоместитьВоВременноеХранилище(стДанныеБлока, Параметры.АдресХранилища);
    
    КонецПроцедуры

    Аргумент функции структура с данными: 

    Ключ Комментарий
    АдресХранилища Строка — адрес хранилища результата
    Организация СправочникСсылка.Организации — организация, которая установлена в отборе информационной панели
    ВариантОкругления Число — 1 — округлять до целых рублей, 1000 — до тысяч
    ПоказыватьСравнениеСПрошлымГодом Булево — необходимость сравнения с показателями прошлого года
    Инициализация Истина — заполнить только статическими данными

Итого

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

3 Comments

  1. 1c-intelligence

    Смотри-ка, +5 за день после публикации.

    Не благодарите.

    Reply
  2. infosoft-v

    (2) Здорово. Спасибо.

    Еще не читал эту статью, но в планах на ближайшие вечера.

    Reply
  3. adapter

    Мой вариант «виджетов»:

    Монитор сводных показателей

    https://infostart.ru/public/665135/

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *