Книга знаний

1С:Предприятие / v8

v8: Универсальные интерактивные команды для прикладных объектов.

А иногда так хочется добавить какую-нибудь универсальную команду для всех документов или справочников. Но так не хочется ковыряться потом при обновлении с тем, что сотворишь.Автор статьи: TormozIT | Редакторы: KAO111,
Последняя редакция №7 от 05.07.06 | История
URL: http://kb.mista.ru/article.php?id=272

Ключевые слова: универсальные, команды, действия, объекты


 Идея проста! Используем ввод на основании.
Разложим все по полочкам.

Для ввода на основании доступны следующие объекты:
  • планы обмена

  • справочники
  • документы

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



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

 Для наглядности возьмем и создадим 2 универсальные команды "Запомнить" и "Использовать". Первая будет сохранять ссылку. Вторая будет ее использовать.

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

    // Тут удобно передать основание в какой-нибудь отчет или обработку.
    // Но в данном случае мы запоминаем его.
    СохранитьЗначение("БуферОбмена.Ссылка", Основание);

КонецПроцедуры

Открываем модуль формы и добавляем обработчик ПередОткрытием. Он не даст форме открыться.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

    Отказ = Истина;

КонецПроцедуры

Первая команда готова!
Аналогично создаем команду "Использовать".
Модуль объекта. Здесь у нас есть только ссылка, на основании которой вызвали команду. Не очень интересно.
Процедура ОбработкаЗаполнения(Основание)
    
    лСсылка = ВосстановитьЗначение(""БуферОбмена.Ссылка");
    <Текст программы для использования ссылки-основания и запомненной ранее ссылки>

КонецПроцедуры

Модуль формы. Хотелось бы получить саму ту форму, из которой вызвали команду. Ведь команду могли вызвать из списка, и ссылка в обработке заполнения нам в таком случае ничего не дает. А вот в модуле формы мы уже можем получить форму-владельца. Вот тут уже можно пофантазировать.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

    Отказ = Истина;
    лСсылка = ВосстановитьЗначение(""БуферОбмена.Ссылка");
      <Текст программы для использования формы-владелеца и запомненной ранее ссылки>

КонецПроцедуры

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2024 | Mista.ru

Яндекс.Метрика