|
УФ. Как заполнить ТЧ оброботки на сервере без контекста вызванного из клиента? | ☑ | ||
---|---|---|---|---|
0
simol
13.03.13
✎
15:42
|
Есть обработка с двумя табличными частями.
На УФ формы две таблицы отображающие эти ТЧ. Одна заполняется при открытии по данным базы. Она большая. Пользователь в УФ может ее редактировать. При активации строке строки в этой таблице (исходя из данных строки) заполняется вторая таблица. Все по функционалу работает. При активации строки вызывается серверная процедура с контекстом, которая заполняет вторую таблицу. НО! При вызове серверной процедуры с контекстом, по причине большой первой таблицы, происходит задержка на передачу контекста. Как можно исторгнутся с серверной процедурой без контекста, чтобы передать ей данные текущей строки первой таблицы и она заполнила вторую таблицу? |
|||
1
simol
13.03.13
✎
15:43
|
исторгнутся = изгольнуться
|
|||
2
НЕА123
13.03.13
✎
15:45
|
передать через параметры
? |
|||
3
Жан Пердежон
13.03.13
✎
15:46
|
ответ же в (0) уже есть, передавай только нужные параметры
|
|||
4
simol
13.03.13
✎
15:51
|
Я не могу в параметры вызова функции вставить Объкт.ТЧ, так как тип "ДанныеФормыКоллекция" не передается с клиента на сервер. А с сервера Таблица значения на клиент не возвращается.
|
|||
5
НЕА123
13.03.13
✎
15:53
|
(4)
зачем Объкт.ТЧ? достаточно ведь данные строки. возвращай через структуру. |
|||
6
simol
13.03.13
✎
15:57
|
(5)Вариант возвращаемую таблицу на сервере преобразовывать в массив структур и на клиенте структуры из массива добавлять по построчно в таблицу рассматриваю, но это кажется мне костылем.
|
|||
7
НЕА123
13.03.13
✎
15:59
|
(6)
согласен. но на ум больше ничего не приходит... |
|||
8
MSII
13.03.13
✎
16:07
|
(6) Чтобы не казалось костылем, надо написать серверную и клиентскую функции, которые будут, соответственно, упаковывать переданные данные в массив структур и распаковывать этот массив, создавая строки табличной части. Дальше во всех аналогичных случаях пользоваться этими функциями.
|
|||
9
simol
13.03.13
✎
16:22
|
(8)Очень надеюсь, что кто-то обрадует что уже можно на клиенте тип ТаблицаЗначений :)
|
|||
10
MSII
13.03.13
✎
16:35
|
(9) Давно ли? Я где-то с УФ с 14-й платформы не работаю, не в курсе. А на 14-й вернуть ТЗ, как она есть, с сервера на клиент не представлялось возможным.
|
|||
11
simol
13.03.13
✎
16:49
|
(10)ТЗ есть только в в толстом клиенте. А загрузить ТЗ в ТЧ можно только на сервере, на клиенте доступно построчное добавление.
|
|||
12
simol
14.03.13
✎
00:35
|
(7)(8)Общий модуль так и назвал "КостылиДляУФ"
Задержку удалось победить таким способом. |
|||
13
Команданте
14.03.13
✎
00:38
|
у тебя активизация строки не отлажена
|
|||
14
Команданте
14.03.13
✎
00:41
|
нельзя вызывать при активизации строки серверную процедуру с контекстом
|
|||
15
Команданте
14.03.13
✎
00:43
|
попробуй так
&НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) Если Элементы.Список.ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; ПодключитьОбработчикОжидания("ОбработчикОжиданияСписокПриАктивизацииСтроки", 0.2, Истина); КонецПроцедуры &НаКлиенте Процедура ОбработчикОжиданияСписокПриАктивизацииСтроки() СервернаяПроцедураСКонтекстом(); КонецПроцедуры |
|||
16
Команданте
14.03.13
✎
00:45
|
в худшем случае, елси это не прокатит
&НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) Если Элементы.Список.ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; Если Элементы.Список.ТекущаяСтрока = ТекНоменклатура Тогда Возврат; КонецЕсли; ТекНоменклатура = Элементы.Список.ТекущаяСтрока; Если ФлагВидСклады Тогда ПодключитьОбработчикОжидания("ОбработчикОжиданияСписокПриАктивизацииСтроки", 0.2, Истина); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбработчикОжиданияСписокПриАктивизацииСтроки() ТекНоменклатураПриИзмененииСервер(); КонецПроцедуры где ТекНоменклатуры реквизит формы заменить на нужный реквизит ДС |
|||
17
Команданте
14.03.13
✎
00:48
|
скинь код, товарищ массив структур
|
|||
18
Aleksey
14.03.13
✎
00:53
|
(17) ты про
// Преобразовывает таблицу значений в массив структур &НаКлиенте Функция ПреобразоватьТаблицуВМассив(ТаблицаЗначений) Перем РезультатМассив; Перем СтруктураСтрока; // Сформируем массив структур РезультатМассив = Новый Массив; Для Каждого Строка Из ТаблицаЗначений Цикл // Сформируем структуру-строку СтруктураСтрока = Новый Структура; Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл СтруктураСтрока.Вставить(Колонка.Имя, Строка[Колонка.Имя]); КонецЦикла; РезультатМассив.Добавить(СтруктураСтрока); КонецЦикла; Возврат РезультатМассив; КонецФункции |
|||
19
Команданте
14.03.13
✎
00:55
|
(18) откуда на клиенте ТЗ
|
|||
20
Aleksey
14.03.13
✎
00:58
|
(19) Да пофиг ТЗ это или ТЧ
|
|||
21
Команданте
14.03.13
✎
01:00
|
у тебя путаница с клиентом-сервером. не обязательно делать массив структур (хотя ут 11 этим пользуется часто)
всё дело в стиле вызова |
|||
22
Команданте
14.03.13
✎
01:01
|
ты скинь код, а не огрызок
|
|||
23
simol
14.03.13
✎
02:19
|
(13)В активации у меня идет проверка на повторный вызов, потому зацикливания нет.
(22)
|
|||
24
simol
14.03.13
✎
02:22
|
Модуль _КостылиУФ
|
|||
25
simol
14.03.13
✎
02:23
|
ТЧРаспределяемоеПриАктивизацииСтрокиНаСервере
|
|||
26
simol
14.03.13
✎
02:25
|
(20)Совсем не пофиг. Оказалось и ".Колонки" даже нет.
|
|||
27
simol
14.03.13
✎
02:59
|
(21) Мне в в током клиенте с клиентской процедуры УФ в серверную процедуру без контекста нужно передать ДанныеФормыКолекция.
|
|||
28
simol
14.03.13
✎
13:07
|
Вылезла бяка - неявный вызов сервера с контекстом после обработчика Активация строки.
Буду искать причину. |
|||
29
simol
11.04.13
✎
11:08
|
(28)Наше, устранил. Серверные функции с контекстом это зло!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |