Передача параметров в обработку

1. artir 28.03.17 14:41 Сейчас в теме
Доброго времени суток. Можно ли каким-то образом передать значения переменных в обработку, кроме как с помощью экспортных переменных?
Приложение обычное, не управляемое.
+
По теме из базы знаний
Найденные решения
7. herfis 498 28.03.17 16:29 Сейчас в теме
(5) Нет, так нельзя. Внутренняя обработка в конфигураторе - это тип объекта (класс, можно сказать).
Экземпляров этого типа (одинаковых обработок) теоретически может быть открыто много.
Если хочешь из кода открыть форму своей обработки с установленным реквизитом, то можно так:
ФормаОбработки = ПолучитьФорму("Обработка.ПроверкаАдреса.Форма"); // при этом фактически в памяти инициализируется экземпляр обработки и для него создается форма
ФормаОбработки.Адрес = "тра-ля-ля";
ФормаОбработки.Открыть();

Но если для обработки настроено пользовательское сохранение значений реквизитов между сеансами, то восстановление пользовательских значений сработает при открытии формы и перезатрет.
Тогда можно присвоить реквизит и после открытия формы :)
Но учти, что в управляемых формах все совсем по-другому, а реквизиты отчетов и обработок там превращаются в тыкву.
Если ты хочешь работать с обработкой без создания форм, тогда в (6) пример дали.
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Boneman 298 28.03.17 15:20 Сейчас в теме
(1) во внешней обработке, для обычного приложения сделай реквизит "ДополнительныеПараметры"
и анализируй структуру.
А задается она при регистрации внешней обработки в табличной части в параметрах обработки.
Соответственно для свой однотипной обработки, но в разных базах можешь засылать какие-либо специфические параметры, без перепиливания всей обработки.
+
2. ipoloskov 162 28.03.17 15:00 Сейчас в теме
Откуда и как вызывается обработка?
+
3. herfis 498 28.03.17 15:05 Сейчас в теме
В обычном приложении проще всего - тупо присвоением реквизиту обработки (не формы).
+
5. artir 28.03.17 15:52 Сейчас в теме
(3) Значит, если, к примеру, есть внутренняя обработка ПроверкаАдреса, в ней создан реквизит Адрес, ему можно просто присвоить Обработки.ПроверкаАдреса.Адрес = АдресОбъекта, либо необходимо сперва что-то инициализировать? Или я делаю что-то не так? Просто познакомился с 1С сравнительно недавно.
+
6. ditp 91 28.03.17 16:20 Сейчас в теме
(5)
ПроверкаАдреса = Обработки.ПроверкаАдреса.Создать();
ПроверкаАдреса.Адрес = АдресОбъекта;
ПроверкаАдреса.Проверить();
+
7. herfis 498 28.03.17 16:29 Сейчас в теме
(5) Нет, так нельзя. Внутренняя обработка в конфигураторе - это тип объекта (класс, можно сказать).
Экземпляров этого типа (одинаковых обработок) теоретически может быть открыто много.
Если хочешь из кода открыть форму своей обработки с установленным реквизитом, то можно так:
ФормаОбработки = ПолучитьФорму("Обработка.ПроверкаАдреса.Форма"); // при этом фактически в памяти инициализируется экземпляр обработки и для него создается форма
ФормаОбработки.Адрес = "тра-ля-ля";
ФормаОбработки.Открыть();

Но если для обработки настроено пользовательское сохранение значений реквизитов между сеансами, то восстановление пользовательских значений сработает при открытии формы и перезатрет.
Тогда можно присвоить реквизит и после открытия формы :)
Но учти, что в управляемых формах все совсем по-другому, а реквизиты отчетов и обработок там превращаются в тыкву.
Если ты хочешь работать с обработкой без создания форм, тогда в (6) пример дали.
+
8. пользователь 16.09.21 09:17
Сообщение было скрыто модератором.
...
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот