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

09.02.19

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

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

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

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

ОБЪЕКТ

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

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

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

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

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

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

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

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

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

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

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

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

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

ЭПИЛОГ

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

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

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

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

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

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

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    3574    dsdred    48    

66

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

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

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

24.01.2024    5032    YA_418728146    25    

62

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

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

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

11.12.2023    6161    dsdred    36    

110

1С-ная магия

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

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

06.10.2023    18197    SeiOkami    46    

116

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

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

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

14.09.2023    11766    human_new    27    

72

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

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

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

28.08.2023    8559    YA_418728146    6    

139

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

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

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

20.08.2023    6198    sebekerga    54    

93

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

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

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15527    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. German_Tagil 42 10.02.19 06:58 Сейчас в теме
2. user612295_death4321 11.02.19 18:22 Сейчас в теме
3. German_Tagil 42 12.02.19 05:33 Сейчас в теме
(2) пометку ставлю чтобы не искать потом
5. starik-2005 3031 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 3031 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 3031 10.12.20 11:46 Сейчас в теме
(9) ну так Вы тут текста на парочку статей накидали - могли бы уже написать за потраченное время статью и огребать рейтинг)))

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