Простой механизм работы с объектами конфигурации с помощью внешних обработок

Доступ к объекту конфигурации по-быстрому!

Всем добрый день!

"Давным давно, кажется в позапрошлую пятницу" (с), появилась у меня необходимость удалить пару строчек в табличной части одного справочника. Да вот незадача — у данного справочника форма не отображала эту самую табличную часть, поэтому пришлось "колхозить" по-быстрому!

ОБЪЕКТ

Во внешних обработках в качестве объекта можно выбрать в принципе любой объект. При этом на форме появятся соответствующие глобальные команды и команды по-умолчанию.

Вот здесь у нас "классический" объект "Внешняя обработка". При этом никто не мешает нам поменять его на что угодно, например, на справочник "Контрагенты":

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

Но в нашей внешней обработке никто не мешает нам вывести данную табличную часть на форму и тем самым получить к ней доступ:

В итоге у нас появляется возможность не только посмотреть, но и отредактировать то, чего нет на форме объекта в конфигурации.

КАК ПОЛУЧИТЬ ДОСТУП К ОБЪЕКТУ?

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

Очень просто. Для этого в серверной процедуре или функции модуля формы существует замечательный метод: "ЗначениеВРеквизитФормы".

Т.е. мы можем написать такой вот код, чтобы "загрузить" в объект выбранное значение:

&НаКлиенте
Процедура ВыбратьСсылку(Команда)
ПоказатьВводЗначения(Новый ОписаниеОповещения("ПриВыбореСсылки", ЭтаФорма, ), Объект.Ссылка, "Выберите значение", тип("СправочникСсылка.Контрагенты"));
КонецПроцедуры

&НаСервере
Процедура ПриВыбореСсылки(Рез, Доп) Экспорт
Если Рез = Неопределено Тогда Возврат
Иначе
ЗначениеВРеквизитФормы(Рез.ПолучитьОбъект(), "Объект");
КонецЕсли;
КонецПроцедуры

Ну и "ВыбратьСсылку" — это обработчик команды, а "ПриВыбореСсылки" — оповещение сразу на сервере (раньше, кстати, писать для подобных серверных процедур "Экспорт" было необязательно, но в последнее время правила игры поменялись.

В итоге у нас получилась обработка, которая может запросто позволить нам поменять данные любого объекта. Такой подход открывает множество возможностей для изменения объектов, а универсальности этим возможностям может добавить механизм создания реквизитов управляемой формы, о котором я писал в частности тут.

ЭПИЛОГ

А если кто-то хочет разобраться и с другими механизмами, то добро пожаловать в статьи:

Произвольный отбор при открытии формы любого динамического списка

Таблицы на управляемых формах: создание, расширение, управление

Подбор в управляемой форме — что может быть проще?

Всем добра! Надеюсь, что кто-то сможет почерпнуть для себя из этих статей что-то новое.

8 Comments

  1. German_Tagil

    ок

    Reply
  2. user612295_death4321

    (1) тролль шоле)

    Reply
  3. German_Tagil

    (2) пометку ставлю чтобы не искать потом

    Reply
  4. TMV

    (0) какой убогий велосипед получился.

    Тыц

    Reply
  5. starik-2005

    (3) так можно в избранное добавить.

    (4) по сцылке убогий велосипед? Не буду нажимать.

    Reply
  6. Dmtr666

    Инструменты разработчика-редактор объектов и динамический список

    Reply
  7. starik-2005

    (6) в следующей статье расскажу, как сделать универсальный редактор объектов из внешней обработке пошагово с примерами кода )))

    Reply
  8. SirAlexIT

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

    Плюс.

    Reply

Leave a Comment

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