|
Пересчет суммы ПриИзмененииКоличества в управляемой форме | ☑ | ||
---|---|---|---|---|
0
Управляемые Формы
02.02.12
✎
13:34
|
Добрый день.
Есть управляемая форма документа. Необходимо при изменении количества вызывать процедуру общего модуля, которая используется для обычных форм. Как правильно это сделать? Пока обошелся следующим кодом: &НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) Сервер_ТоварыКоличествоПриИзменении(); КонецПроцедуры &НаСервере Процедура Сервер_ТоварыКоличествоПриИзменении() ДокументОбъект = РеквизитФормыВЗначение("Объект"); Для Каждого СтрокаТовары Из ДокументОбъект.Товары Цикл ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТовары, ДокументОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТовары, ДокументОбъект); СтрокаТовары.СуммаСНДС = СтрокаТовары.Сумма + СтрокаТовары.СуммаНДС; КонецЦикла; ЗначениеВРеквизитФормы(ДокументОбъект,"Объект"); КонецПроцедуры Но это, мне кажется, неверно. Вопрос: Как правильно преобразовать а) текущую строку ЭЛЕМЕНТА формы (Клиент) в б) текущую строку РЕКВИЗИТА формы (сервер) и потом в в) строку табличного документа (Толстый клиент, Сервер), передать ее в качестве параметра в процедуру ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТовары, ДокументОбъект), и потом обновить данные? Спасибо! |
|||
1
Defender aka LINN
02.02.12
✎
13:37
|
Странно видеть такие вопросы от человека с таким ником...
|
|||
2
Управляемые Формы
02.02.12
✎
13:42
|
(1) Постановка вопроса некорректна? Формулировки не видны? Или на этом форуме не принято общаться по 1С? Вопрос в группе "Политика" и "Игры" получит более быстрый ответ?
|
|||
3
Defender aka LINN
02.02.12
✎
13:48
|
(2) Да. Идиотские вопросы тут не любят. Хотя иногда и отвечают, ХЗ почему.
|
|||
4
Управляемые Формы
02.02.12
✎
13:54
|
(3) Объясните, пожалуйста, в чем "идиотство" вопроса?
|
|||
5
Defender aka LINN
02.02.12
✎
13:55
|
(4) 1. Ты не потрудился заглянуть в типовую
2. Ты не потрудился выяснить, какие типы данных можно передавать между клиентом и сервером 3. Ты не потрудился даже заглянуть в СП, чтобы выяснить ответы на (0). 4. Ты даже не потрудился подумать, прежде чем нагадить кодом из (0) в базе. Достаточно? |
|||
6
Управляемые Формы
02.02.12
✎
13:57
|
(5) Но на обсуждение вопроса v8: Есть тут v8.УФ-ники? Как раскрасить динамический список.... вы потратили свое время, несмотря на очевидность ответа.
Вы знаете ответ на мой вопрос? Или нет? |
|||
7
Управляемые Формы
02.02.12
✎
13:58
|
(5) И может не стоит "тыкать" незнакомому человеку? :)
|
|||
8
Defender aka LINN
02.02.12
✎
14:00
|
(7) Это интернеты. На "Вы" тут переходят, когда уже в реале морду бьют
|
|||
9
Управляемые Формы
02.02.12
✎
14:02
|
(5) Вы же модератор? Почему вы тогда не стараетесь соблюдать кодекс модератора?
"Уважайте участников, требуйте уважения к себе, но гораздо более решительно пресекайте неуважение к новичкам. Если кто-то назовёт новичка дятлом, да треснет его собственный клюв! Модератор — это всегда образец для подражания, пример поведения на форуме. Если модератор что-то разрешает себе, то остальные участники тоже себе это разрешают. Если модератор плюёт на культуру общения, то форум начинает зарастать сорняками. " (8) Может тогда стоит с этого начать, что бы вы не начинали называть незнакомого человека идиотом? |
|||
10
Управляемые Формы
02.02.12
✎
14:03
|
Впрочем, с Defender aka LINN понятно, и я не готов кормить тролля, который почему-то модератор.
Может кто-нибудь еще поделится опытом? |
|||
11
shuhard
02.02.12
✎
14:04
|
(10) с тобой - нет
|
|||
12
aleks-id
02.02.12
✎
14:06
|
(10) тебе ответ дали в (5) п.2
|
|||
13
Управляемые Формы
02.02.12
✎
14:06
|
Спасибо.
|
|||
14
aleks-id
02.02.12
✎
14:08
|
а вообще жесть - взять вот так и захерачить в сервант ботинком через РеквизитФормыВЗначение("Объект")
|
|||
15
DexterMorgan
02.02.12
✎
14:10
|
Зачем вызывать сервер это все можно (нужно) делать на клиенте.
У текущей строки "ПолучитьУникальныйИдентификатор", по нему найти строку в Объект.Товары - это реквизит формы. Если хочешь найти строку в объекте БД можно например через поиск по номеру строки (НомерСтроки = ИсходныйНомерСтроки на форме) |
|||
16
Управляемые Формы
02.02.12
✎
14:19
|
(15) В типовой торговле 10.3 есть процедура пересчета строки табличной части с учетом скидок, ставок ндс, и прочих параметров. Конечно, я могу переписать эту процедуру, взяв пример из типовой УТ 11, но у меня тут не практический, а скорее учебный.
Так что, если нужно на сервер передать именно строку табличной части документа - именно такого типа "ДокументТабличнаяЧастьСтрока.МойДокумент.Товары", при событии в управляемой форме, это невозможно? Сейчас попробую через индекс строки "Элементы.Товары.ТекущаяСтрока" |
|||
17
aleks-id
02.02.12
✎
14:24
|
заняться больше нечем? передавай туда номер строки. а на сервере обрабатывай через Объект.ИмяТабЧасти
|
|||
18
DexterMorgan
02.02.12
✎
14:34
|
(16) Ты 10.3 так под УФ переписываешь?)))))))))))))) Ну если тебе очень надо то в (0) все верно, только передавай еще номер строки и вместо обхода цикла:
ДокОбъект.Товары.Найти(НомерСтроки, "НомерСтроки") вот тебе будет твоя строка XDDDDDDDDDDD |
|||
19
Управляемые Формы
02.02.12
✎
14:35
|
(17) Спасибо большое, благодаря мысли про индекс удалось оптимизировать, и избежать пересчета всей табличной части.
&НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) Сервер_ТоварыКоличествоПриИзменении_ПоИндексу(Элементы.Товары.ТекущаяСтрока); КонецПроцедуры &НаСервере Процедура Сервер_ТоварыКоличествоПриИзменении_ПоИндексу(Индекс) ДокументОбъект = РеквизитФормыВЗначение("Объект"); СтрокаТовары = ДокументОбъект.Товары[Индекс]; ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТовары, ДокументОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТовары, ДокументОбъект); ЗначениеВРеквизитФормы(ДокументОбъект,"Объект"); КонецПроцедуры Я думаю, что избежать ДокументОбъект = РеквизитФормыВЗначение("Объект"); Не переписывая процедуру на сервере - там именно из реквизитов объекта определяются ставка НДС, скидки по договору, и т.п. |
|||
20
Управляемые Формы
02.02.12
✎
14:38
|
(18) Я не то, что бы переписываю какую-то рабочую базу. Я а) изучаю управляемые формы и б) пока только прикидываю возможность перехода очень сильно дописанной 10.3 на УФ. Перехода на 11 УТ не будет еще года два, или какая там будет.
Спасибо большое за советы. |
|||
21
Mort
02.02.12
✎
14:53
|
Ну да, сервер, то простаивает, почему бы ему количество на цену умножить, зачем клиента напрягать...
|
|||
22
Управляемые Формы
02.02.12
✎
14:57
|
(21) Понимаете - " количество на цену умножить" тут не обойдешься, потому что есть сумма НДС, ставка НДС, скидка(наценка) ручная, скидка (наценка) автоматическая, курс опять-таки. Не буду же я все это на клиенте считать.
|
|||
23
DexterMorgan
02.02.12
✎
14:58
|
(21) Не кошерно?
|
|||
24
DexterMorgan
02.02.12
✎
14:59
|
сорри это было (22)
|
|||
25
DexterMorgan
02.02.12
✎
15:02
|
Если тебе нужен курс тогда и вызывай сервер, и то только для того чтобы этот курс получить, для этого в УТ11 и формируют структуру в которой есть ("НеобходимВызовСервера", Булево), а не всегда когда количество меняется
|
|||
26
aleks-id
02.02.12
✎
15:04
|
(19) пля.. у тебя есть уже Объект на сервере!!!
&НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) Сервер_ТоварыКоличествоПриИзменении_ПоИндексу(Элемент.Родитель.ТекущаяСтрока); КонецПроцедуры &НаСервере Процедура Сервер_ТоварыКоличествоПриИзменении_ПоИндексу(Индекс) СтрокаТовары = Объект.Товары[Индекс]; ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТовары, Объект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТовары, Объект); КонецПроцедуры |
|||
27
Управляемые Формы
02.02.12
✎
15:07
|
(26) Так это не тот "Объект", к сожалению. Этот объект имеет тип "ДанныеФормыСтруктура", а мне нужен "ДокументОбъект.МойДокумент". Поэтому и использую ДокументОбъект = РеквизитФормыВЗначение("Объект")
|
|||
28
aleks-id
02.02.12
✎
15:08
|
(27) так получи его! Объект.Ссылка.ПолучитьОбъект()
|
|||
29
Mort
02.02.12
✎
15:09
|
Концерт с вариациями...
|
|||
30
DexterMorgan
02.02.12
✎
15:09
|
(28) Ты заболел? =))))))))))
|
|||
31
aleks-id
02.02.12
✎
15:11
|
(30) вроде нет. а что не так?
|
|||
32
Управляемые Формы
02.02.12
✎
15:16
|
(28) Документ может быть еще не записан.
|
|||
33
cw014
02.02.12
✎
15:17
|
(31) Ты получишь исходный объект до каких либо изменений на форме
|
|||
34
DexterMorgan
02.02.12
✎
15:17
|
(30) То что документ может быть новый и ссылки у него нету и получить объект ты не сможешь
|
|||
35
hhhh
02.02.12
✎
15:19
|
(32) а зачем тебе именно ДокументОбъект? Ты что, фанат этого ДокументОбъекта? Работай с ДанныеФормыСтруктура.
|
|||
36
Mort
02.02.12
✎
15:21
|
(35) Тут две мегасложные функции, принимают ДокОбъект.
|
|||
37
DexterMorgan
02.02.12
✎
15:22
|
(32) Потому что (16)
|
|||
38
DexterMorgan
02.02.12
✎
15:23
|
Блин да че такое я ослеп совсем=)))(36) потому что (16)
|
|||
39
Управляемые Формы
02.02.12
✎
15:26
|
(35) Конечно, я добавлю процедуры общего модуля, принимающие структуру, и это будет ПРАВИЛЬНО. Спасибо еще раз всем.
|
|||
40
hhhh
02.02.12
✎
15:45
|
(39) чего-то ты нам мозги компостируешь. Эта функция ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти - это же для обычных форм.
|
|||
41
Управляемые Формы
02.02.12
✎
15:45
|
(40) Да, именно так.
|
|||
42
hhhh
02.02.12
✎
15:47
|
(41) ну значит тебе документ объект ни к чему.
|
|||
43
Управляемые Формы
02.02.12
✎
15:53
|
(42) Не очень понял, почему "ни к чему". Я отлично понимаю, что использовать процедуру ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти", изначально написанную так, что в нее надо передавать строку табличного документа из обычной формы (тип СтрокаТабличногоДокумента, тип, который отсутствует в управляемой форме), и объект типа "ДокументОбъект" для использования в управляемой форме некорректно. Но, тем не менее, если вдруг в процессе перехода на управляемые формы сталкиваешься с тем, что очень прямо сейчас нужно, то можно и так, как в (19), в качестве временной меры. Но использовать это в качестве конечного решения нельзя. Ибо "некошерно"
|
|||
44
Поpyчик-4
02.02.12
✎
16:34
|
Какой чоткий пацанчик, только зарегался, сразу всех по местам, так мне не тыкать, пальцы не гнуть, прочитали первый пост, бросили всё и метнулись мне объяснять.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |