Всем добрый день!
"Давным давно, кажется в позапрошлую пятницу" (с), появилась у меня необходимость удалить пару строчек в табличной части одного справочника. Да вот незадача — у данного справочника форма не отображала эту самую табличную часть, поэтому пришлось "колхозить" по-быстрому!
ОБЪЕКТ
Во внешних обработках в качестве объекта можно выбрать в принципе любой объект. При этом на форме появятся соответствующие глобальные команды и команды по-умолчанию.
Вот здесь у нас "классический" объект "Внешняя обработка". При этом никто не мешает нам поменять его на что угодно, например, на справочник "Контрагенты":
У меня тут база новая, поэтому я наглядности ради добавил в справочник только контактную информацию, которая, как всем известно, на форму выводится совсем не в виде табличной части.
Но в нашей внешней обработке никто не мешает нам вывести данную табличную часть на форму и тем самым получить к ней доступ:
В итоге у нас появляется возможность не только посмотреть, но и отредактировать то, чего нет на форме объекта в конфигурации.
КАК ПОЛУЧИТЬ ДОСТУП К ОБЪЕКТУ?
С отображением объекта у нас все отлично, но при открытии обработки в объекте будет находиться новый пустой объект, который мы даже можем записать. Как получить доступ к уже имеющемуся объекту?
Очень просто. Для этого в серверной процедуре или функции модуля формы существует замечательный метод: "ЗначениеВРеквизитФормы".
Т.е. мы можем написать такой вот код, чтобы "загрузить" в объект выбранное значение:
&НаКлиенте
Процедура ВыбратьСсылку(Команда)
ПоказатьВводЗначения(Новый ОписаниеОповещения("ПриВыбореСсылки", ЭтаФорма, ), Объект.Ссылка, "Выберите значение", тип("СправочникСсылка.Контрагенты"));
КонецПроцедуры
&НаСервере
Процедура ПриВыбореСсылки(Рез, Доп) Экспорт
Если Рез = Неопределено Тогда Возврат
Иначе
ЗначениеВРеквизитФормы(Рез.ПолучитьОбъект(), "Объект");
КонецЕсли;
КонецПроцедуры
Ну и "ВыбратьСсылку" — это обработчик команды, а "ПриВыбореСсылки" — оповещение сразу на сервере (раньше, кстати, писать для подобных серверных процедур "Экспорт" было необязательно, но в последнее время правила игры поменялись.
В итоге у нас получилась обработка, которая может запросто позволить нам поменять данные любого объекта. Такой подход открывает множество возможностей для изменения объектов, а универсальности этим возможностям может добавить механизм создания реквизитов управляемой формы, о котором я писал в частности тут.
ЭПИЛОГ
А если кто-то хочет разобраться и с другими механизмами, то добро пожаловать в статьи:
Произвольный отбор при открытии формы любого динамического списка
Таблицы на управляемых формах: создание, расширение, управление
Подбор в управляемой форме — что может быть проще?
Всем добра! Надеюсь, что кто-то сможет почерпнуть для себя из этих статей что-то новое.
ок
(1) тролль шоле)
(2) пометку ставлю чтобы не искать потом
(0) какой убогий велосипед получился.
Тыц
(3) так можно в избранное добавить.
(4) по сцылке убогий велосипед? Не буду нажимать.
(6) в следующей статье расскажу, как сделать универсальный редактор объектов из внешней обработке пошагово с примерами кода )))
(5) В таком стиле можно собрать цикл статей с примерами (отличными от примеров в тиражной литературе) и оформить в курс для начинающих осваивать разработку в 1С.
Плюс.