Проблема с передачей данных с сервера на клиент в модуле управляемой формы
Добрый день!
1С:Предприятие 8.2 (8.2.17.169)
У меня возникла такая проблема!
В модуле управляемой формы клиент обращается к серверу, сервер через com соединение подключается к другой базе, получает результаты запроса из этой базы и передает их через реквизит формы клиенту.
Код:
&НаСервере
Процедура ПолучениеСотрудника()
ПодключениеКБазе(DataSource);
ЗапросСотруд = DataSource.NewObject("Запрос");
ЗапросСотруд.Текст = "ВЫБРАТЬ
| СотрудникиОрганизаций.Ссылка
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
| СотрудникиОрганизаций.Физлицо = &Физлицо
| И СотрудникиОрганизаций.Организация = &Организация";
ЗапросСотруд.УстановитьПараметр("Физлицо",ТекФизЛи цо);
ЗапросСотруд.УстановитьПараметр("Организация",Data Source.Справочники.Организации.НайтиПоКоду("000000 002"));
// ТЗВыгрСотр = РеквизитФормыВЗначение("ВыгрСотр");
ТЗВыгрСотр = Новый ТаблицаЗначений;
ТЗВыгрСотр = ЗапросСотруд.Выполнить().Выгрузить();
сообщить(ТипЗнч(ТЗВыгрСотр));
ЗначениеВРеквизитФормы(ТЗВыгрСотр,"ВыгрСотр");
КонецПроцедуры
Но, при выполнении кода происходит ошибка Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
ЗначениеВРеквизитФормы(ТЗВыгрСотр,"ВыгрСотр");
по причине:
Недопустимое значение параметра (параметр номер '2')
Получаю тип значения результата запроса - тип comобъект!
Как же мне получить в качестве результата запроса ТаблицуЗначений?
Спасибо!!!
1С:Предприятие 8.2 (8.2.17.169)
У меня возникла такая проблема!
В модуле управляемой формы клиент обращается к серверу, сервер через com соединение подключается к другой базе, получает результаты запроса из этой базы и передает их через реквизит формы клиенту.
Код:
&НаСервере
Процедура ПолучениеСотрудника()
ПодключениеКБазе(DataSource);
ЗапросСотруд = DataSource.NewObject("Запрос");
ЗапросСотруд.Текст = "ВЫБРАТЬ
| СотрудникиОрганизаций.Ссылка
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
| СотрудникиОрганизаций.Физлицо = &Физлицо
| И СотрудникиОрганизаций.Организация = &Организация";
ЗапросСотруд.УстановитьПараметр("Физлицо",ТекФизЛи цо);
ЗапросСотруд.УстановитьПараметр("Организация",Data Source.Справочники.Организации.НайтиПоКоду("000000 002"));
// ТЗВыгрСотр = РеквизитФормыВЗначение("ВыгрСотр");
ТЗВыгрСотр = Новый ТаблицаЗначений;
ТЗВыгрСотр = ЗапросСотруд.Выполнить().Выгрузить();
сообщить(ТипЗнч(ТЗВыгрСотр));
ЗначениеВРеквизитФормы(ТЗВыгрСотр,"ВыгрСотр");
КонецПроцедуры
Но, при выполнении кода происходит ошибка Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
ЗначениеВРеквизитФормы(ТЗВыгрСотр,"ВыгрСотр");
по причине:
Недопустимое значение параметра (параметр номер '2')
Получаю тип значения результата запроса - тип comобъект!
Как же мне получить в качестве результата запроса ТаблицуЗначений?
Спасибо!!!
По теме из базы знаний
- Внеконтекстный вызов методов объекта обработки (отчета) в управляемой форме
- Подсистема "Обмен данными по произвольным правилам КД 2.x"
- Шаблон внешней печатной управляемой формы с возможностью передачи параметров из клиентской формы в стандартную общую форму печати документов
- Как работают управляемые формы и тонкий клиент 1С – взгляд "из-под капота"
- Открыть форму внутри другой формы - наконец-то возможно!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Ukubaeva, вы пытаетесь передать в форму com-объект, т.к. это список ссылок на элементы справочника СотрудникиОрганизаций из другой базы. Вы не можете обрабатывать ссылочные типы, полученные по com соединению, только Наименование или Код, так что подкорректируйте запрос.
ПодключениеКБазе(DataSource);
ЗапросСотруд = DataSource.NewObject("Запрос");
ЗапросСотруд.Текст = "ВЫБРАТЬ
| СотрудникиОрганизаций.Ссылка
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
| СотрудникиОрганизаций.Физлицо = &Физлицо
| И СотрудникиОрганизаций.Организация = &Организация";
ЗапросСотруд.УстановитьПараметр("Физлицо",ТекФизЛицо);
ЗапросСотруд.УстановитьПараметр("Организация",DataSource.Справочники.Организации.НайтиПоКоду("000000002"));
// ТЗВыгрСотр = РеквизитФормыВЗначение("ВыгрСотр");
ТЗВыгрСотр = Новый ТаблицаЗначений;
com_ТЗВыгрСотр = ЗапросСотруд.Выполнить().Выгрузить(); //получили comобъект, мать его
стр_ТЗВыгрСотр = DataSource.ЗначениевСтрокуВнутр(com_ТЗВыгрСотр);
ТЗВыгрСотр = ЗначениеИзСтрокиВнутр(стр_ТЗВыгрСотр); //а вот только теперь получили таблицу значений
ЗначениеВРеквизитФормы(ТЗВыгрСотр,"ВыгрСотр");
КонецПроцедуры
ЗапросСотруд = DataSource.NewObject("Запрос");
ЗапросСотруд.Текст = "ВЫБРАТЬ
| СотрудникиОрганизаций.Ссылка
|ИЗ
| Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
| СотрудникиОрганизаций.Физлицо = &Физлицо
| И СотрудникиОрганизаций.Организация = &Организация";
ЗапросСотруд.УстановитьПараметр("Физлицо",ТекФизЛицо);
ЗапросСотруд.УстановитьПараметр("Организация",DataSource.Справочники.Организации.НайтиПоКоду("000000002"));
// ТЗВыгрСотр = РеквизитФормыВЗначение("ВыгрСотр");
ТЗВыгрСотр = Новый ТаблицаЗначений;
com_ТЗВыгрСотр = ЗапросСотруд.Выполнить().Выгрузить(); //получили comобъект, мать его
стр_ТЗВыгрСотр = DataSource.ЗначениевСтрокуВнутр(com_ТЗВыгрСотр);
ТЗВыгрСотр = ЗначениеИзСтрокиВнутр(стр_ТЗВыгрСотр); //а вот только теперь получили таблицу значений
ЗначениеВРеквизитФормы(ТЗВыгрСотр,"ВыгрСотр");
КонецПроцедуры
(8) Ukubaeva, если надо просто видеть что там за документы, то смысла в такой конструкции нет.
Достаточно в запросе использовать функцию представление.
Другое дело если гонять тудаобратно, но там лучше сериализатор использовать.
Этот метод довольно корявый, старинный, да и в тонком не работает.
Достаточно в запросе использовать функцию представление.
Другое дело если гонять тудаобратно, но там лучше сериализатор использовать.
Этот метод довольно корявый, старинный, да и в тонком не работает.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот