|
Передача данных с сервера на клиент 1с УТ11 УФ | ☑ | ||
---|---|---|---|---|
0
Casper211
03.11.16
✎
10:29
|
При изменении поля в ТЧ необходимо извлечь данные из регистра и записать их в данную сроку
я сделал через ТЗ, но потом понял что ее нельзя передавать на клиент, так как там она не существует &НаКлиенте Процедура ТабличнаяЧастьВАТСсылкаНаДокПриИзменении(Элемент) Для каждого СтрокаТЗ из ТабличнаяЧастьВАТСсылкаНаДокПриИзмененииНаСервере(Параметр) Цикл ЗаполнитьЗначенияСвойств(Элементы.ТабличнаяЧастьВАТ.ТекущиеДанные,СтрокаТЗ); КонецЦикла; КонецПроцедуры &НаСервере Функция ТабличнаяЧастьВАТСсылкаНаДокПриИзмененииНаСервере(Параметр) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВАТОстатки.ДокументПоступлениеТоваровУслуг, | ВАТОстатки.СуммаВАТОстаток, | ВАТОстатки.Поставщик |ИЗ | РегистрНакопления.ВАТ.Остатки(&Период ) КАК ВАТОстатки |ГДЕ | ВАТОстатки.ДокументПоступлениеТоваровУслуг = &ДокПТУ |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ДокПТУ", Параметр); Запрос.УстановитьПараметр("Период", ТекущаяДата()); ТаблицаЗначений = Новый ТаблицаЗначений; ТаблицаЗначений.Колонки.Добавить("СуммаВАТ",,"Сумма ВАТ"); ТаблицаЗначений.Колонки.Добавить("ОстатокВАТ",,"Остаток ВАТ"); ТаблицаЗначений.Колонки.Добавить("СуммаДок",,"Сумма Документа"); ТаблицаЗначений.Колонки.Добавить("Партнер",,"Партнер"); ТаблицаЗначений.Колонки.Добавить("КоличествоВАТ",,"Количество ВАТ"); Для каждого СтрокаТЗ из Запрос.Выполнить().Выгрузить()Цикл Стр=ТаблицаЗначений.Добавить(); Стр.ОстатокВАТ = СтрокаТЗ.СуммаВАТОстаток; Стр.КоличествоВАТ = СтрокаТЗ.СуммаВАТОстаток; Если Объект.ВидОперации = Перечисления.ВидыОперацийВАТ.Передача Тогда Стр.СуммаВАТ = СтрокаТЗ.СуммаВАТОстаток; Иначе Стр.СуммаВАТ = (СтрокаТЗ.ДокументПоступлениеТоваровУслуг.СуммаДокумента*Объект.СтавкаВАТ)/100; КонецЕсли; Стр.Партнер = СтрокаТЗ.ДокументПоступлениеТоваровУслуг.Партнер; Стр.СуммаДок = СтрокаТЗ.ДокументПоступлениеТоваровУслуг.СуммаДокумента; КонецЦикла; Возврат ТаблицаЗначений; КонецФункции как мне реализовать заданную задачу?чтобы работала для тонкого клиента и веб клиента? Через массив или структуру?если так то подскажите как. Спасибо |
|||
1
Casper211
03.11.16
✎
10:32
|
ТабЗначВМассив(ТаблицаЗначений)
необходимо это использовать для Тз на сервере, передать на клиент, а затем на клиенте из массива записать? |
|||
2
Defender aka LINN
03.11.16
✎
10:33
|
Реквизит формы создать
|
|||
3
Casper211
03.11.16
✎
10:59
|
и использовать? ЗначениеВРеквизитФормы() или как?
|
|||
4
Casper211
03.11.16
✎
11:05
|
наверное нет. поскольку РеквизитФормыВЗначение() возвращает ТЗ
|
|||
5
Casper211
03.11.16
✎
12:25
|
(2) на сервере выгрузить значения в реквизит (МояТЗ)?
&НаСервере Процедура ТабличнаяЧастьВАТСсылкаНаДокПриИзмененииНаСервере(Параметр) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВАТОстатки.ДокументПоступлениеТоваровУслуг, | ВАТОстатки.СуммаВАТОстаток, | ВАТОстатки.Поставщик, | ВАТОстатки.Контрагент |ИЗ | РегистрНакопления.ВАТ.Остатки КАК ВАТОстатки |ГДЕ | ВАТОстатки.ДокументПоступлениеТоваровУслуг = &ДокПТУ |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ДокПТУ", Параметр); //МояТЗ.ЗаполнитьЗначения(Запрос.Выполнить().Выгрузить()); //выгрузить данные с ТЗ в реквизит как то КонецПроцедуры и на клиенте с реквизита в ТЧ? да? &НаКлиенте Процедура ТабличнаяЧастьВАТСсылкаНаДокПриИзменении(Элемент) ТабличнаяЧастьВАТСсылкаНаДокПриИзмененииНаСервере(Параметр); Объект.ТабличнаяЧастьВАТ.Очистить(); Для каждого СтрокаТЗ из МояТЗ Цикл ЗаполнитьЗначенияСвойств(Элементы.ТабличнаяЧастьВАТ.ТекущиеДанные,СтрокаТЗ); КонецЦикла; КонецПроцедуры |
|||
6
write
03.11.16
✎
12:26
|
(0) Вы в строку таб. части (текущиеданные) записываете несколько раз данные строк СтрокаТЗ в итоге там окажется последняя строка из СтрокаТЗ. Каков смысл получения ТЗ тогда?
|
|||
7
write
03.11.16
✎
12:27
|
(0) Вы вызываете контекстную серверную процедуру, что мешает Вам выполнить все необходимые действия на сервере?
|
|||
8
Casper211
03.11.16
✎
12:28
|
(6) у меня в результате запроса всегда будет 1 строка
|
|||
9
Casper211
03.11.16
✎
12:29
|
(7) а как в текущую строку ТЧ документа записать данные на сервере?
|
|||
10
Casper211
03.11.16
✎
12:30
|
Текущие данные таблицы недоступны на сервере
|
|||
11
write
03.11.16
✎
12:31
|
(8) Тогда используйте структуру.
|
|||
12
Casper211
03.11.16
✎
13:15
|
(11) Спасибо!!!Вот так??
&НаКлиенте Процедура ТабличнаяЧастьВАТСсылкаНаДокПриИзменении(Элемент) Для каждого СтрокаТЗ из ТабличнаяЧастьВАТСсылкаНаДокПриИзмененииНаСервере(Параметр) Цикл Если СтрокаТЗ.Ключ = "блабла" Тогда Элементы.ТабличнаяЧастьВАТ.ТекущиеДанные=СтрокаТЗ.Значение; //ЗаполнитьЗначенияСвойств(Элементы.ТабличнаяЧастьВАТ.ТекущиеДанные,СтрокаТЗ); КонецЦикла; &НаСервере Функция ТабличнаяЧастьВАТСсылкаНаДокПриИзмененииНаСервере(Параметр) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВАТОстатки.ДокументПоступлениеТоваровУслуг, | ВАТОстатки.СуммаВАТОстаток, | ВАТОстатки.Поставщик, | ВАТОстатки.Контрагент |ИЗ | РегистрНакопления.ВАТ.Остатки КАК ВАТОстатки |ГДЕ | ВАТОстатки.ДокументПоступлениеТоваровУслуг = &ДокПТУ |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ДокПТУ", Параметр); НужныеДанные = Новый Структура; Для каждого СтрокаТЗ из Запрос.Выполнить().Выгрузить()Цикл НужныеДанные.Вставить("ОстатокВАТ",СтрокаТЗ.СуммаВАТОстаток); НужныеДанные.Вставить("КоличествоВАТ",СтрокаТЗ.СуммаВАТОстаток); Если Объект.ВидОперации = Перечисления.ВидыОперацийВАТ.Передача Тогда НужныеДанные.Вставить("СуммаВАТ",СтрокаТЗ.СуммаВАТОстаток); Иначе НужныеДанные.Вставить("СуммаВАТ",(СтрокаТЗ.ДокументПоступлениеТоваровУслуг.СуммаДокумента*Объект.СтавкаВАТ)/100); КонецЕсли; НужныеДанные.Вставить("Партнер",СтрокаТЗ.ДокументПоступлениеТоваровУслуг.Партнер); НужныеДанные.Вставить("СуммаДок",СтрокаТЗ.ДокументПоступлениеТоваровУслуг.СуммаДокумента); КонецЦикла; Возврат НужныеДанные; КонецФункции |
|||
13
Casper211
03.11.16
✎
13:28
|
(11) а структура подойдет? если в результате запроса будет несколько записей?
|
|||
14
write
03.11.16
✎
13:32
|
(12) Ни надо ни каких циклов ЗаполнитьЗначенияСвойств (Элементы.ТабличнаяЧастьВАТ.ТекущиеДанные,ТабличнаяЧастьВАТСсылкаНаДокПриИзмененииНаСервере(Параметр));
(13) Как несколько строк запроса вы будете записывать в одну строку? |
|||
15
Casper211
03.11.16
✎
13:34
|
(14) Спосибо!
для варианта с 1 записью я сделал. А если их несколько? (Т.е. кнопкой "заполнить" заполнить все данные в ТЧ с результата запроса) будет несколько строк |
|||
16
write
03.11.16
✎
13:38
|
(15) Если всю таблицу тогда можно и на сервере загрузить Объект.ТабличнаяЧастьВАТ.Загрузить(Запрос.Выполнить().Выгрузить())
|
|||
17
shpioleg
03.11.16
✎
13:55
|
(0) Если не хочешь заполнять/изменять ТЧ на сервере, то делай вызов сервера без контекста и возвращай на клиент массив структур.
|
|||
18
Casper211
03.11.16
✎
18:07
|
(16) Спасибо за помощь, возможно посоветуете книгу по управляемых формах? или (17) , чтобы понять что можно на сервере (клиенте) или без контекста, а что нет?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |