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

09.02.19

Разработка - Механизмы платформы 1С

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

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

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

ОБЪЕКТ

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

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

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

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

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

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

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

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

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

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

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

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

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

ЭПИЛОГ

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

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

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

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

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

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

См. также

Сервисы интеграции без Шины и интеграции

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    3287    dsdred    16    

65

Как готовить и есть массивы

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    7701    YA_418728146    25    

69

Планы обмена VS История данных

Перенос данных 1C Механизмы платформы 1С Системный администратор Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    7901    dsdred    43    

116

1С-ная магия

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    20226    SeiOkami    46    

125

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Системный администратор Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    14165    human_new    27    

77

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    10542    YA_418728146    7    

149

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    7067    sebekerga    54    

99
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. German_Tagil 43 10.02.19 06:58 Сейчас в теме
2. user612295_death4321 11.02.19 18:22 Сейчас в теме
3. German_Tagil 43 12.02.19 05:33 Сейчас в теме
(2) пометку ставлю чтобы не искать потом
5. starik-2005 3048 12.02.19 11:18 Сейчас в теме
(3) так можно в избранное добавить.
(4) по сцылке убогий велосипед? Не буду нажимать.
8. SirAlexIT 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 3048 14.02.19 10:10 Сейчас в теме
(6) в следующей статье расскажу, как сделать универсальный редактор объектов из внешней обработке пошагово с примерами кода )))
9. pvlunegov 157 10.12.20 06:47 Сейчас в теме
Убого! Делаем новую обработку. Создаем управляемую форму. В форме обработки добавляем новое поле с типом ЛюбаяСсылка. В режиме Предприятия открываем поле формы, выбираем исследуемый объект (например справочник.Номенклатура) абсолютно в любой конфигурации. В обработчике поля ПриИзменении пишем код в котором обращаемся к функции Метаданные(). Из этой функции вытягиваем циклами:
1. все реквизиты Объекта
2. Все табличные части объекта.
3. В каждой табличной части объекта опять же циклом (получается цикл в цикле) вытягиваем все реквизиты табличной части.
4. При необходимости можно у ссылочных реквизитов (когда реквизит есть ссылка на другой объект) через шаги 1-3 вытягивать всю вложенную информацию о Метаданных.

Всю вытащенную информацию (шаги 1-4) вытягиваем на форму, создавая необходимые таблицы.

Блин. Хорошая идея, надо по быстрому статейку написать с простой обработочкой.
user1503726; +1 Ответить
10. starik-2005 3048 10.12.20 11:46 Сейчас в теме
(9) ну так Вы тут текста на парочку статей накидали - могли бы уже написать за потраченное время статью и огребать рейтинг)))

Подобных редакторов форм полно, но основная фишка как раз в том, чтобы выбрать основной объект, как объект конфигурации, а не как ссылку. В этом есть свои плюсы.
11. user1503726 10.12.20 12:02 Сейчас в теме
А запрос к метаданным это только через справочник БСП? И реквизитов табличных частей в нем нет, а писать нетленку на базе конвертации это глупость конечно.
В любом случае даже если в одной базе есть все это, в запросе по регистру с несколькими регистраторами нельзя сделать соединение и группировку по типу регистратора.
А счастье было так возможно
Оставьте свое сообщение