Имя: Пароль:
1C
1С v8
Передача ссылки в тонком клиенте
,
0 wraithik
 
17.09.13
09:37
Есть два модуля, один серверный, другой для клиента УП.
Серверный отдает ссылку на справочник.
В клиентском хочется писать:

спр = Серверный.ПолучитьСсылкуНаСправочник();
Сообщить(Спр.Код);
Сообщить(Спр.Наименование);

но полей Код и Наименование естественно нет.

как на клиента отдать объект упакованный в ДанныеФормыСтруктура.

зы. самому паковать урками в структуру желания нет.
1 ДенисЧ
 
17.09.13
09:38
Пакуй не урками, а гастарбайтерами....
2 cw014
 
17.09.13
09:39
Возврати структуру, будь мужиком, бл@#ть!!!
3 wraithik
 
17.09.13
09:40
(1) (2)
если по делу сказать не чего, лучше молчать
4 ДенисЧ
 
17.09.13
09:44
(3) Ну... Что могу посоветовать... Молчи... :-)
5 cw014
 
17.09.13
09:49
УТ11, Модуль "ОбщегоНазначения":

// Возвращает структуру, содержащую значения реквизитов прочитанные из информационной базы
// по ссылке на объект.
//
//  Если доступа к одному из реквизитов нет, возникнет исключение прав доступа.
//  Если необходимо зачитать реквизит независимо от прав текущего пользователя,
//  то следует использовать предварительный переход в привилегированный режим.
//
// Параметры:
//  Ссылка       - ссылка на объект, - элемент справочника, документ, ...
//  ИменаРеквизитов - Строка или Структура - если Строка, то имена реквизитов,
//               перечисленные через запятую, в формате требований к свойствам структуры.
//               Например, "Код, Наименование, Родитель".
//               Если Структура, то в качестве ключа передается псевдоним поля для
//               возвращаемой структуры с результатом, а в качестве значения (опционально)
//               - фактическое имя поля в таблице.
//               Если значение не определено, то имя поля берется из ключа.
//
// Возвращаемое значение:
//  Структура    - содержит список свойств, как список имен в строке
//                 ИменаРеквизитов, со значениям реквизитов, прочитанных
//                 из информационной базы.
//
Функция ПолучитьЗначенияРеквизитов(Ссылка, ИменаРеквизитов) Экспорт

    Если ТипЗнч(ИменаРеквизитов) = Тип("Структура") Тогда
        СтруктураРеквизитов = ИменаРеквизитов;
    ИначеЕсли ТипЗнч(ИменаРеквизитов) = Тип("Строка") Тогда
        СтруктураРеквизитов = Новый Структура(ИменаРеквизитов);;
    Иначе
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'Неверный тип второго параметра ИменаИлиСтруктураРеквизитов: %1'"),
            Строка(ТипЗнч(ИменаРеквизитов)));
    КонецЕсли;

    ТекстПолей = "";
    Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
        ИмяПоля   = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), СокрЛП(КлючИЗначение.Значение), СокрЛП(КлючИЗначение.Ключ));
        Псевдоним = СокрЛП(КлючИЗначение.Ключ);
        ТекстПолей  = ТекстПолей + ?(ПустаяСтрока(ТекстПолей), "", ",") + "
            |    " + ИмяПоля + " КАК " + Псевдоним;
    КонецЦикла;

    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |" + ТекстПолей + "
        |ИЗ
        |    " + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы
        |ГДЕ
        |    ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка
        |");
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();

    Результат = Новый Структура;
    Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
        Результат.Вставить(КлючИЗначение.Ключ);
    КонецЦикла;
    ЗаполнитьЗначенияСвойств(Результат, Выборка);

    Возврат Результат;
КонецФункции
6 cw014
 
17.09.13
09:50
Так что давай без наездов, тебе по делу сказали
7 wraithik
 
17.09.13
09:54
(6)
Вот блин :(

А без структуры никак?
Такое я и сам сочинил уже, да только не понравилась идея.
8 cw014
 
17.09.13
09:55
(7) За тебя уже давно 1С сочинил все, а ты изобрел велосипед
9 wraithik
 
17.09.13
09:57
да там велосипеда было мало :)
мне универсальность не нужна была.
просто думал чем то более универсальным (то что в платформе встроено) обойтись.
10 cw014
 
17.09.13
09:58
На клиенте нету свойств у ссылки
11 CerbeRUS
 
17.09.13
10:04
Кажется, еще можно с помощью ХранилищаЗначения или ЗначениеВСтрокуВнутр объект передать, но зачем извращаться, если есть структура?