Имя: Пароль:
1C
 
Как передать параметра с сервера на клиент
0 Python
 
14.11.09
14:21
&НаСервере
Функция  СформироватьВыборкуИЗЗапроса()
   
   Запрос = Новый Запрос;
   
   Запрос.Текст = "ВЫБРАТЬ
                  |    ЗадачаИсполнителя.Наименование,
                  |    ЗадачаИсполнителя.СрокИсполнения КАК ПериодКонец,
                  |    ЗадачаИсполнителя.Дата КАК ПериодНачало,
                  |    ЗадачаИсполнителя.Ссылка,
                  |    ЗадачаИсполнителя.Описание,
                  |    ЗадачаИсполнителя.Номенклатура
                  |ИЗ
                  |    Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
                  |ГДЕ
                  |    ЗадачаИсполнителя.Выполнена = ИСТИНА";
   
   ТаблицаДанных = Запрос.Выполнить().Выгрузить();
   
   Возврат ТаблицаДанных;
   
КонецФункции

&НаКлиенте

Процедура Сформировать(Команда)
   
   Выборка = СформироватьВыборкуИЗЗапроса();    
   

КонецПроцедуры

Вот такой кусок кода а ТаблицаДанных не хочет передаватся на клиент. Помогите кто знает
1 Lama12
 
14.11.09
14:34
Вроде должна...
2 Lama12
 
14.11.09
14:34
Какая версия платформы, релиз какой?
3 H A D G E H O G s
 
14.11.09
14:34
Если ТЗ принципиально доступна на клиенте - то тебе поможет
ПоместитьВоВременноеХранилище()
ПолучитьИзВременногоХранилища()
5 Python
 
14.11.09
14:42
(2) 8.2.9.260
7 Lama12
 
14.11.09
15:04
(5)Какой клиент? Тонкий, толстый, Вэб?
9 Python
 
14.11.09
15:08
{Обработка.ДиаграммаЗадач.Форма.ФормаОтчета.Форма(99)}: Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
   Выборка = ПолучитьИзВременногоХранилища(АдресВременогоХранилища);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.2/mngsrv/ws}response    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}ValueTable
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'

Пишет отакое. Даже пробую предавть результат запросто то тоще чтото подобное
10 Python
 
14.11.09
15:08
(5) пока толстий но хотелось что визде работало
11 Lama12
 
14.11.09
15:09
7+
В описании встроенного языка написано что ТЗ сериализуется и воозможен обмен с сервером, возможно преобразование XDTO и т.д. Так что, скорее всего это ошибка платформы.
12 Lama12
 
14.11.09
15:10
11+
Забыл сказать.
Версия руководства 82.001.01
13 Python
 
14.11.09
15:11
кто модет знает а как обойти это
15 Lama12
 
14.11.09
15:15
(13) Ну разве что извращениями всякими...
Например создать справочник с табличной частью и в объект выгружать на сервере данные, а на клиенте считывать. Но это все баловство...
17 H A D G E H O G s
 
14.11.09
15:20
Вариант (3) пробовал?
19 Jolly Roger
 
14.11.09
15:33
(0) а чо, таблица значений доступна на тонком клиенте?
21 Python
 
14.11.09
15:56
(19) в каком смысле.
23 Jolly Roger
 
14.11.09
19:14
(21) в буквальном...
25 AleksS
 
16.11.09
12:30
а как работать с функциями (помогите разобраться)

ПоместитьВоВременноеХранилище(Данные,Переменная "Необязательная")

ПолучитьИзВременногоХранилища(Переменная "Обязательная")

Переменная - где ее определить, а если ее неопределять, что указать в ПолучитьИзВременногоХранилища(Переменная "Обязательная")
26 программистище
 
16.11.09
14:19
создавай реквизит формы таблицу и выгружай туда
27 AleksS
 
16.11.09
15:53
я решил немного по другому обойти

фф = ЭтаФорма.Объект.УФЛ.Выгрузить();
       
 Для каждого ффф из фф Цикл
   Если ффф.НомерСтроки = Элементы.УФЛ.ТекущаяСтрока Тогда
   КонецЕсли;    
 КонецЦикла;    

ЭтаФорма.Объект.УФЛ.Загрузить(фф);

Элементы.УФЛ.ТекущаяСтрока - возвращает (0,2,5,9,14,20,...)
подскажите почему
28 detec
 
16.11.09
16:13
Буквально на выходных этих пришлось вплотную разбираться с тонким клиентом и передачей данных между клиентом и сервером. Итак:

(0) - полная ерунда всё это по архитектуре. Нельзя просто так тащить выборку на клиента. Выборкой необходимо заполнить реквизит или ТЧ объекта, и сам обновлённый объект передать на клиента.

В домонстрационной конфигурации я увидел и у себя реализовал примерно следующую архитектуру, пример:

&НаКлиенте  // в модуле формы
Процедура ПолеВВодаКомандОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   
   ЗапуститьКомандуОболочки(Текст);
   ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

&НаСервере // в модуле формы
Процедура ЗапуститьКомандуОболочки(ТКоманды)
   
   ТекстКоманды = "> " + Символы.ПС + ТКоманды;
// бла-бла-бла

   
   Обработка = РеквизитФормыВЗначение("Объект");
   Обработка.ОбработатьКонсольнуюКоманду(ТекстКоманды);
   ЗначениеВРеквизитФормы(Обработка, "Объект");
   
КонецПроцедуры    


// в модуле объекта
Процедура ОбработатьКонсольнуюКоманду(ТекстКоманды) Экспорт
   
   //ЛогКонсоли = ЛогКонсоли + Символы.ПС + "> " + ТекстКоманды;
   ЛогКонсоли = ТекстКоманды;
   ПолеВВодаКоманд = "";
   
   
КонецПроцедуры

Пояснение.

ЛогКонсоли - это реквизит объекта.

Сначала на клиенте мы дёрнули серверную процедуру формы, которая обработала данные, передала их в модуль объекта. Модуль объекта записал реквизит, севрерная процедура формы приняла реквизит и отрефрешила форму на сервере.

Затем клиент отрефрешил визуальное представление формы на клиенте и передал управление консоли клиента.
29 detec
 
16.11.09
16:15
(27)
Это элемент формы - ТЧ - возвращает индекс строки в табличной части объекта.
30 detec
 
16.11.09
16:17
(27)

Но эта фишка - ТекущаяСтрока - возможно, глючит; причём приходится полностью закрывать и переоткрывать форму. Билд 8.2.9.356. Но у себя я несколько раз обновлял с объекта таблицу на форме, и, возможно, в этот момент воспроизводится баг платформы.
31 NcSteel
 
16.11.09
16:21
Преоразовывай в масив и передавай .
32 AleksS
 
16.11.09
16:27
я стал передавать номер строки с клиента на сервер и все получилось правда как то на мой взгляд коряво(если табличная часть будет большой и каждый раз прогонять и изменять ???)
33 Filin396
 
16.11.09
16:29
(27)Используй "ТекущиеДанные".

Элементы.УФЛ.ТекущиеДанные.НомерСтроки

ТекущаяСТрока почему то глючит пока.
34 программистище
 
16.11.09
16:31
текущаястрока
это идентификатор строки и никак не номер
также она в динсписке является ссылкой основной таблицы
35 detec
 
16.11.09
16:33
(32)
С чего ты взял, что всё будет с нуля рефрешится? Может платформа умеет только изменения отображать.

Во всяком случае, создав управляемую форму для регистра, в который всё время пишутся строки, я заметил, что она сама по себе не рефрешится - только после нажатия кнопки F5. Т.е. можно предположить, что механизмы взаимодействия там полностью другие.
36 программистище
 
16.11.09
16:39
(32) смотри (34)
37 AleksS
 
17.11.09
16:59
(33) Элементы.УФЛ.ТекущиеДанные (Ошибка чтения данных)

(34) да быстрей всего ты прав
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший