|
Как программно активизировать нужную строку таблицы в тонком клиенте? | ☑ | ||
---|---|---|---|---|
0
veronika1888
14.05.12
✎
17:35
|
Как программно активизировать нужную строку таблицы в тонком клиенте?
|
|||
1
shamannk
14.05.12
✎
17:36
|
500р без налогов.
|
|||
2
veronika1888
14.05.12
✎
17:37
|
И почему работает в тонком клиенте следующий код
СтрокаТабличнойЧасти = Элементы["ОбъектыНедвижимости"].ТекущиеДанные? В справке ТекущиеДанные работают только на толстом клиенте ТабличноеПоле.ТекущиеДанные (TableBox.CurrentData) ТабличноеПоле (TableBox) ТекущиеДанные (CurrentData) Использование: Только чтение. Описание: Содержит данные текущей строки табличного поля. Доступность: Толстый клиент. Примечание: Тип значения данных строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов. Для табличных полей, отображающих иерархический список в виде дерева, свойство может принимать значение Неопределено. |
|||
3
Defender aka LINN
14.05.12
✎
17:37
|
(0) В (1) выгодное предложение, соглашайся
|
|||
4
veronika1888
14.05.12
✎
17:54
|
КоличествоСтрок = Объект.ОбъектыНедвижимости.Количество();
Для ш = 0 По КоличествоСтрок-1 Цикл Элементы.ОбъектыНедвижимости.ТекущаяСтрока = ш; РассчитатьСуммуНДССтрокиТабличнойЧастиНаКлиенте(); РассчитатьСуммуДоговораБезРассрочкиПоСтроке(); КонецЦикла; |
|||
5
Defender aka LINN
14.05.12
✎
17:58
|
(4) Ты решила эту тему в качестве записной книжки использовать?
|
|||
6
veronika1888
14.05.12
✎
18:01
|
(5) чтобы другие 500 рублей не платили
|
|||
7
Defender aka LINN
14.05.12
✎
18:02
|
(6) Ничего, что код нерабочий?
|
|||
8
veronika1888
14.05.12
✎
18:03
|
(7) это почему нерабочий?
|
|||
9
veronika1888
14.05.12
✎
18:03
|
+(8) только что оттестировала, работает
&НаКлиенте Процедура ЦенаВключаетНДСПриИзменении(Элемент) КоличествоСтрок = Объект.ОбъектыНедвижимости.Количество(); Для ш = 0 По КоличествоСтрок-1 Цикл Элементы.ОбъектыНедвижимости.ТекущаяСтрока = ш; РассчитатьСуммуНДССтрокиТабличнойЧастиНаКлиенте(); РассчитатьСуммуДоговораБезРассрочкиПоСтроке(); КонецЦикла; //шапка РассчитатьСуммуДоговораБезРассрочки(); РассчитатьСуммуУслуг(); РассчитатьСуммуНДС(); Если Объект.ГрафикПлатежей.Количество() > 0 И (Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.УПН_ВидыОперацийДоговоровПоНедвижимости.Договор") ИЛИ Объект.КорректироватьГрафикПлатежей) Тогда Если Вопрос("Пересчитать график платежей?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда Объект.ГрафикПлатежей.Очистить(); РассчитатьГрафикПлатежейНаКлиенте(); КонецЕсли; КонецЕсли; РассчитатьСуммуДоговора(); КонецПроцедуры |
|||
10
experimentator76
14.05.12
✎
18:07
|
опять из мисты мозги выкачиваются на ИС ((
|
|||
11
Defender aka LINN
14.05.12
✎
18:07
|
(8) Потому что идентификатор строки <> индексу. Они МОГУТ совпадать. А могут и нет.
|
|||
12
veronika1888
14.05.12
✎
18:08
|
(11) а как тогда пересчитать на клиенте?
|
|||
13
experimentator76
14.05.12
✎
18:09
|
(12) считать не на клиенте
|
|||
14
experimentator76
14.05.12
✎
18:09
|
(9) жесть )) я так понимаю кол строк в мильон не планируется ?
|
|||
15
shamannk
14.05.12
✎
18:10
|
(12) Сам то по скока сие чуда на ИС загонять буш? Может % с тебя взять?
|
|||
16
experimentator76
14.05.12
✎
18:10
|
не куплю
|
|||
17
experimentator76
14.05.12
✎
18:10
|
(15) сама
|
|||
18
veronika1888
14.05.12
✎
18:12
|
(11) Если таблица заполняется программно, строки пользователем не добавляются и не удаляются, то идентификатор всегда будет совпадать
|
|||
19
shamannk
14.05.12
✎
18:13
|
(17) Это не ашот? 0_о
|
|||
20
experimentator76
14.05.12
✎
18:13
|
(18) копайте дальше... открытий чудных вам еще открыть предстоит
|
|||
21
experimentator76
14.05.12
✎
18:14
|
(19) нужен личный осмотр - как у гинеколога - по высказываниям ОНА
|
|||
22
experimentator76
14.05.12
✎
18:15
|
(18) а это не ДС
тогда все проще но не на клиенте точно |
|||
23
veronika1888
14.05.12
✎
18:15
|
короче да, код не всегда работает
|
|||
24
veronika1888
14.05.12
✎
18:16
|
+(23) кто без выпендрежа подскажет как на клиенте получить строку и пересчитать?
|
|||
25
experimentator76
14.05.12
✎
18:16
|
(23) читай книжки по 8.2
приходи к пониманию клиент-сервер потом продавай поделки |
|||
26
veronika1888
14.05.12
✎
18:17
|
Ведь если у таблицы формы присуствтует ТекущаяСтрока(чтение запись), значит можно как-то её установить надежно
|
|||
27
veronika1888
14.05.12
✎
18:18
|
(25) предлагаешь продублировать клиентские процедуры серверными вызовами?
|
|||
28
experimentator76
14.05.12
✎
18:18
|
(26) я правильно понимаю что ты хочешь текущую строку передавать в расчет построчно чтобы заполнять текущиеданные?
|
|||
29
fisher
14.05.12
✎
18:19
|
Что-то я не понял. Тебе сабж нужен или просто всю табличную часть пересчитать?
|
|||
30
experimentator76
14.05.12
✎
18:19
|
(27) все расчеты делать не на клиенте
|
|||
31
experimentator76
14.05.12
✎
18:20
|
(29) судя по всему куйню хочет сделать
|
|||
32
experimentator76
14.05.12
✎
18:20
|
и продать)
|
|||
33
veronika1888
14.05.12
✎
18:23
|
(29) у меня все клиентскими процедурами рассчитывается
Надо пересчитать в цикле всю таблицу на форме |
|||
34
experimentator76
14.05.12
✎
18:24
|
(33) зря
|
|||
35
experimentator76
14.05.12
✎
18:24
|
тему можно закрывать...
|
|||
36
fisher
14.05.12
✎
18:28
|
(33) Желание понятное. Хочется минимизировать трафик и латенси на плохом канале.
Но полный пересчет придется делать на сервере. УФ в общем случае данные как бы и не хранит, а просто выступает динамическим окошком по серверным данным. |
|||
37
fisher
14.05.12
✎
18:30
|
А вот на сабжевый вопрос я бы сам хотел узнать ответ. Я в УФ тоже не настоящий сварщик...
|
|||
38
veronika1888
14.05.12
✎
18:31
|
(36) Создала дубли клиентских процедур с серверным вызовом, работает, не это не красиво.
Проще было бы конечно программно активизировать строку таблицы на форме и пересчитать её клиенской процедурой. &НаКлиенте Процедура ЦенаВключаетНДСПриИзменении(Элемент) ПересчетТабличнойЧастиНаСервере(); //шапка РассчитатьСуммуДоговораБезРассрочки(); РассчитатьСуммуУслуг(); РассчитатьСуммуНДС(); Если Объект.ГрафикПлатежей.Количество() > 0 И (Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.УПН_ВидыОперацийДоговоровПоНедвижимости.Договор") ИЛИ Объект.КорректироватьГрафикПлатежей) Тогда Если Вопрос("Пересчитать график платежей?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда Объект.ГрафикПлатежей.Очистить(); РассчитатьГрафикПлатежейНаКлиенте(); КонецЕсли; КонецЕсли; РассчитатьСуммуДоговора(); КонецПроцедуры &НаСервере Процедура ПересчетТабличнойЧастиНаСервере() Для Каждого СтрокаТаблицы из Объект.ОбъектыНедвижимости Цикл РассчитатьСуммуНДССтрокиТабличнойЧастиНаСервере(СтрокаТаблицы); РассчитатьСуммуДоговораБезРассрочкиПоСтрокеНаСервере(СтрокаТаблицы); КонецЦикла; КонецПроцедуры |
|||
39
veronika1888
14.05.12
✎
18:32
|
(34) ты, кстати, сам не понимаешь, что Объект.ОбъектыНедвижимости присутствует как на клиенте, так и на сервере и это разные вещи
|
|||
40
experimentator76
14.05.12
✎
18:36
|
(39) чей-то? разве я не говорил делать все на сервере?
|
|||
41
veronika1888
14.05.12
✎
18:37
|
(40) иди дальше в свой толстый клиент
|
|||
42
experimentator76
14.05.12
✎
18:37
|
(38) через активацию строки - это убогое решение
и минимизация трафике не отмазка мильон строк положит клиент надолго |
|||
43
experimentator76
14.05.12
✎
18:37
|
(41) сними штаны\юбку и иди в то место что увидишь там
|
|||
44
veronika1888
14.05.12
✎
18:38
|
(42) представь себе договор купли продажи недвижимости с мильеном строк
|
|||
45
experimentator76
14.05.12
✎
18:38
|
(44) не куплю
|
|||
46
veronika1888
14.05.12
✎
18:38
|
(45) тебе и не по карману
|
|||
47
Defender aka LINN
14.05.12
✎
18:40
|
(42) Минимизацией трафика тут и не пахнет.
Предлагаю всем желающим в ПриСозданииНаСервере добавить в табличную часть пару тысяч строк и на клиенте ее просто перебрать циклом. |
|||
48
fisher
14.05.12
✎
18:40
|
(38) Если дубли полные, то достаточно их объявить &НаКлиентеНаСервереБезКонтекста
Тогда они и там и там скомпилируются. |
|||
49
veronika1888
14.05.12
✎
18:42
|
(48)
Как эти дубли объединить в один? &НаСервере Процедура РассчитатьСуммуНДССтрокиТабличнойЧастиНаСервере(СтрокаТабличнойЧасти) ПроцентНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(СтрокаТабличнойЧасти.СтавкаНДС)/100; КоэффициентНДС = ?(Объект.ЦенаВключаетНДС, ПроцентНДС / (1 + ПроцентНДС), ПроцентНДС); Сумма = СтрокаТабличнойЧасти.ЦенаЗаКвМ*СтрокаТабличнойЧасти.ОбщаяПлощадь; СтрокаТабличнойЧасти.СуммаНДС = Окр(Сумма * КоэффициентНДС, 2, РежимОкругления.Окр15как20); КонецПроцедуры &НаКлиенте Процедура РассчитатьСуммуНДССтрокиТабличнойЧастиНаКлиенте(СтрокаТабличнойЧасти = Неопределено) Если СтрокаТабличнойЧасти = Неопределено Тогда СтрокаТабличнойЧасти = Элементы["ОбъектыНедвижимости"].ТекущиеДанные; КонецЕсли; ПроцентНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(СтрокаТабличнойЧасти.СтавкаНДС)/100; КоэффициентНДС = ?(Объект.ЦенаВключаетНДС, ПроцентНДС / (1 + ПроцентНДС), ПроцентНДС); Сумма = СтрокаТабличнойЧасти.ЦенаЗаКвМ*СтрокаТабличнойЧасти.ОбщаяПлощадь; СтрокаТабличнойЧасти.СуммаНДС = Окр(Сумма * КоэффициентНДС, 2, РежимОкругления.Окр15как20); КонецПроцедуры |
|||
50
fisher
15.05.12
✎
07:19
|
&НаКлиентеСервереБезКонтекста
Процедура РассчитатьСуммуНДССтрокиТабличнойЧасти(СтрокаТабличнойЧасти, ЦенаВключаетНДС) ПроцентНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(СтрокаТабличнойЧасти.СтавкаНДС)/100; КоэффициентНДС = ?(ЦенаВключаетНДС, ПроцентНДС / (1 + ПроцентНДС), ПроцентНДС); Сумма = СтрокаТабличнойЧасти.ЦенаЗаКвМ*СтрокаТабличнойЧасти.ОбщаяПлощадь; СтрокаТабличнойЧасти.СуммаНДС = Окр(Сумма * КоэффициентНДС, 2, РежимОкругления.Окр15как20); КонецПроцедуры |
|||
51
veronika1888
15.05.12
✎
09:55
|
(50) вчера рубняк под вечер был... сейчас почитала - реально не то.
Спасибо за помощь |
|||
52
veronika1888
15.05.12
✎
10:07
|
(50) Процедура или функция с указанным именем не определена (РассчитатьСуммуНДССтрокиТабличнойЧасти)
Если ставить директиву &НаКлиентеСервереБезКонтекста |
|||
53
veronika1888
15.05.12
✎
10:08
|
+(52) модуль формы её не видит с такой директивой
|
|||
54
fisher
15.05.12
✎
10:31
|
В (50) описка. &НаКлиентеНаСервереБезКонтекста, конечно же.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |