Пересчет суммы ПриИзмененииКоличества в управляемой форме #593457


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

В этой группе 1С