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

Публикация № 998493

Программирование - Практика программирования

управляемые формы изменение объектов

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

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

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

ОБЪЕКТ

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

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

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

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

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

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

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

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

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

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

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

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

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

ЭПИЛОГ

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

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

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

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

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

29

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. German_Tagil 6 10.02.19 06:58 Сейчас в теме
2. user612295_death4321 11.02.19 18:22 Сейчас в теме
3. German_Tagil 6 12.02.19 05:33 Сейчас в теме
(2) пометку ставлю чтобы не искать потом
5. starik-2005 1923 12.02.19 11:18 Сейчас в теме
(3) так можно в избранное добавить.
(4) по сцылке убогий велосипед? Не буду нажимать.
8. SirAlex1C 24.04.19 08:58 Сейчас в теме
(5) В таком стиле можно собрать цикл статей с примерами (отличными от примеров в тиражной литературе) и оформить в курс для начинающих осваивать разработку в 1С.
Плюс.
4. TMV 14 12.02.19 05:54 Сейчас в теме
(0) какой убогий велосипед получился.
Тыц
6. Dmtr666 14.02.19 07:25 Сейчас в теме
Инструменты разработчика-редактор объектов и динамический список
7. starik-2005 1923 14.02.19 10:10 Сейчас в теме
(6) в следующей статье расскажу, как сделать универсальный редактор объектов из внешней обработке пошагово с примерами кода )))
Оставьте свое сообщение