Имя: Пароль:
1C
1С v8
Не получается передать ТЗ с сервера на клиент, почему?
0 Elf56
 
08.09.17
10:00
Всем доброго времени суток.
Имеется платформа 1С:Предприятие 8.3 (8.3.10.2466)

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

&НаСервере
Процедура ПодборДокументовНаСервере()
        УИД =  Новый УникальныйИдентификатор();
    АдресмТаблицаОплат = ПоместитьВоВременноеХранилище(мТаблицаОплат, УИД);
КонецПроцедуры

&НаКлиенте
Процедура ПодборДокументовНаКлиенте()
    мТаблицаОплат = ПолучитьИзВременногоХранилища(АдресмТаблицаОплат);
КонецПроцедуры


Где АдресмТаблицаОплат реквизит формы типа Строка(255)

Проблема в том, что на клиенте после всех действий переменная мТаблицаОплат  становится типа НЕОПРЕДЕЛЕНО почему понять не могу?

Всем заранее спасибо за ответы.
1 Elf56
 
08.09.17
10:01
>> мТаблицаОплат  становится типа НЕОПРЕДЕЛЕНО

Не типа НЕОПРЕДЕЛЕНО, а значения НЕОПРЕДЕЛЕНО
2 Heckfy
 
08.09.17
10:07
ТЗ не живет на клиенте.
3 Elf56
 
08.09.17
10:10
И как быть ?
4 Alexandr_U1982
 
08.09.17
10:12
(3)Строчку ТЗ превратить в структуру и вместо таблицы значений передавать массив структур.
5 Господин ПЖ
 
08.09.17
10:13
в бсп готовая функция есть
6 Heckfy
 
08.09.17
10:15
Если структура ТЗ известна, как вариант, сделать реквизит формы с типом ТЗ с соответствующей структурой и заполнять уже его.
7 Numerus Mikhail
 
08.09.17
10:15
Или пересмотреть решение задачи.
8 sergey198
 
08.09.17
10:19
(5) Это какая?
9 Господин ПЖ
 
08.09.17
10:19
ОбщегоНазначения.ТаблицаЗначенийВМассив
10 Elf56
 
08.09.17
10:23
На сколько я знаю на клиенте ТЗ имеет тип ДанныеФормыКоллекция а вот как нибудь можно при получении из временного хранилища на клиенте сразу преобразовывать в ДанныеФормыКоллекция ?
11 oslokot
 
08.09.17
10:24
передавай тз через реквизит формы
12 nicxxx
 
08.09.17
10:39
ДанныеФормыВЗначение()
ЗначениеВДанныеФормы()
13 Господин ПЖ
 
08.09.17
10:42
вчера только похожее обсуждали кстати Жизненный цикл реквизитов обработки УФ
14 Elf56
 
08.09.17
10:42
(11) структура разная может быть
(12) спасибо попробую
15 Heckfy
 
08.09.17
10:43
(14) Да можешь не пробовать. :)
16 Elf56
 
08.09.17
10:46
И верно работает только на сервере )))
17 Heckfy
 
08.09.17
10:49
В твоем случае, по ходу один вариант:
Раз структура ТЗ заранее не известна, то рисовать ТЗ на форме программно и уже её заполнять. Могу примером поделиться. Где то было у меня по моему.
18 dezss
 
08.09.17
10:57
Так а чем не подходит (9) ОбщегоНазначения.ТаблицаЗначенийВМассив?
19 lodger
 
08.09.17
11:08
ну ладно. способы обсудили.
а где обсуждение по теме "а нафейхоа вам ТЗ на клиенте"?
это не в духе УФ. все обработки данных на сервере, однака, отображение клиенту табдоком или реквизитом формы.
20 Heckfy
 
08.09.17
11:10
(19) "обработки данных на сервере" - иногда хочется, например, видеть ход выполнения обработки. Например в процентах. :)
21 lodger
 
08.09.17
11:15
(20) в БСП уже давно реализовано. но зачем в этом случае ТЗ на клиенте?
22 Heckfy
 
08.09.17
11:19
Я ХЗ, надо ТС-а спрашивать. :)
23 ildary
 
08.09.17
11:42
(21) подскажите пожалуйста, где в БСП искать такую функцию? В интернете полно обработок, которые работают без БСП, но которые тяжело вкручивать в типовую конфигурацию.
24 VladZ
 
08.09.17
11:47
(0) Создай табличную часть и работай с ней всяко-разно-безобразно (и на сервере, и на клиенте).
25 Новиков
 
08.09.17
11:55
(21) Это редкие задачи. В частности, чтобы мутить такое:

(1) для краткости обозначу вызов &НаКлиентеНаСервереБезКонтекста->&НаСервереБезКонтекста -> ОМ "Сервер"

Теперь возможно делать такие фичи:
&НаКлиенте-> (1)

&&НаСервере-> (1)

На практике это когда используется? Напр., когда тебе нужно это одновременно и ПриСозданииНаСервере(), и откуда-то с клиента, при условии что на клиенте ты будешь логику обрабатывать как-то.
26 Новиков
 
08.09.17
11:57
Но ТС вряд ли это надо, т.к. до такой минимизации программной логики нужно дорасти и понять, что это реально нужно. Ответы верные в (17), если известны колонки и их тип, то (24).
27 lodger
 
08.09.17
12:20
(23) да хотя бы вот ГрупповоеИзменениеРеквизитов.МодульФормы(1031):

&НаКлиенте
Процедура ОбработатьРезультатИзменения(РезультатИзменения = Неопределено, ПродолжитьОбработку = Неопределено)
    Перем КоличествоОшибок, КоличествоИзмененных;
    ---------
какой-то код
    ---------
    ТекущееСостояниеИзменения.ТекущаяПозиция = ТекущееСостояниеИзменения.ТекущаяПозиция + ТекущееСостояниеИзменения.РазмерПорции;
    
    Если ТекущееСостояниеИзменения.ПоказыватьПроцентОбработанных Тогда
        // Вычисляем текущий процент обработанных объектов.
        ТекущийПроцент = Окр(ТекущееСостояниеИзменения.ТекущаяПозиция / ТекущееСостояниеИзменения.КоличествоОбъектовДляОбработки * 100);
        Состояние(НСтр("ru = 'Обрабатываются элементы...'"), ТекущийПроцент, НСтр("ru = 'Изменение выделенных элементов'"));
    КонецЕсли;
    
    ЕстьЭлементыДляОбработки = ?(ТекущееСостояниеИзменения.ТекущаяПозиция < ТекущееСостояниеИзменения.КоличествоОбъектовДляОбработки, Истина, Ложь);
    
    Если ЕстьЭлементыДляОбработки И НЕ ТекущееСостояниеИзменения.ПрерватьИзменение Тогда
        ПодключитьОбработчикОжидания("ИзменитьПорциюОбъектов", 0.1, Истина);
    Иначе
        ПодключитьОбработчикОжидания("ЗавершитьИзменениеОбъектов", 0.1, Истина);
    КонецЕсли;

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


немного топорно, но что есть то есть.
8.3.10 и дальнейшие предлагают решать эту проблему через сервисы Взаимодействия (для передачи состояния с сервера на клиент по ходу движения прогресса).
28 ildary
 
08.09.17
13:23
(27) Спасибо, интересно последние БСП уже работают с сервисом Взаимодействия или нет.
29 h-sp
 
08.09.17
13:26
(28) еще можете посмотреть в типовых общие модули: ОбщегоНазначения..., СтроковыеФункции...  Там можно увидеть и перетащить к себе много интересных функций.
30 ildary
 
08.09.17
13:28
(29) Это да, сколько нам открытий чудных... Недавно я начал активно ковырять модуль ОбщегоНазначения и пришлось, краснея, заменять самописные велосипеды на типовые методы.