|
|
|
Имитация интерактивного ввода. | ☑ | ||
|---|---|---|---|---|
|
0
SivanT
21.10.14
✎
13:06
|
Имеется типовая УТ11 (упр. формы). Написал обработку заполнения для документа "Заказ клиента" которая меняет цены в табличной части в соответствии с полученным от пользователя числом.
Проблема - что при программном изменении цены не срабатывают обработчики событий формы документа, соответственно не пересчитываются суммы, НДС и т.д. В интернете ничего подходящего не нашел, наиболее близко здесь http://infostart.ru/public/16985/ но все равно не получилось. Кто-либо решал такую проблемму? |
|||
|
1
Maxus43
21.10.14
✎
13:09
|
переноси куски по изменению нужного к себе в код заполнения
|
|||
|
2
vicof
21.10.14
✎
13:10
|
(0) Если ты копнешь глубже, о, юный падаван, ты узнаешь, что обработчики интерактивных событий ссылаются на процедуры общих модулей. Достаточно обратиться к ним с твоими параметрами.
|
|||
|
3
SivanT
21.10.14
✎
13:42
|
(2) Тогда следующий вопрос.. Вызов общих модулей происходит на клиенте, а у меня перезаполнение цен происходит в цикле по на сервере
Если НовыйОбъект.Товары.Количество() > 0 Тогда Для Каждого значтч Из НовыйОбъект.Товары Цикл значтч.Цена = 33; КонецЦикла; КонецЕсли; Как лучше вызывать эти процедуры? |
|||
|
4
kosts
21.10.14
✎
14:08
|
(3) > Как лучше вызывать эти процедуры?
Не помешает помолиться. |
|||
|
5
kosts
21.10.14
✎
14:08
|
(3) "Если-Тогда" - тут лишнее
|
|||
|
6
SivanT
21.10.14
✎
14:14
|
(3) Если - Тогда - ошибка копипаста )
А по поводу вызова процедур общего модуля, все-таки как их лучше вызывать? И откуда? |
|||
|
7
kosts
21.10.14
✎
14:18
|
(6) Это можно посмотреть в твоей форме.
Открой, например, событие "при изменении цены" посмотри какая процедура там вызывается и скопируй в свою процедуру. |
|||
|
8
SivanT
21.10.14
✎
14:27
|
(7) Не все так просто. Обработка внешняя, поэтому напрямую обращаться к форме документа и обработчикам события не получается.
Доступ к форме получаю так: Форма = ОткрытьФорму("Документ.ЗаказКлиента.Форма.ФормаДокумента", КлючПоиска,,,Окно); НовыйОбъект = Форма.Объект; ЗаполнитьОбъект(НовыйОбъект, СуммаКРаспределению); КопироватьДанныеФормы(НовыйОбъект, Форма.Объект); Процедура ЗаполнитьОбъект работает на сервере. |
|||
|
9
Fish
гуру
21.10.14
✎
14:29
|
(8) Не надо обращаться из обработке к форме объекта. Заполняй сразу данные в объекте.
|
|||
|
10
SivanT
21.10.14
✎
14:55
|
(8) А пример можно?
И еще, пробую обратиться к ЭКСПОРТНОЙ функции ОбработатьСтрокуТЧ общего модуля ОбработкаТабличнойЧастиКлиент пишет что Переменная не определена (ОбработкаТабличнойЧастиКлиент) Как так? |
|||
|
11
kosts
21.10.14
✎
15:00
|
(10) >Переменная не определена (ОбработкаТабличнойЧастиКлиент)
На сервере возможно вызываешь |
|||
|
12
SivanT
21.10.14
✎
15:05
|
На сервере. Я и спрашиваю, как вызвать процедуры из общего модуля, если обработка ТЧ происходит на сервере? Получается, что надо после обработки каждой строки на сервере возвращаться на клиент и вызывать стандартный обработчик события? Это совсем плохо. А как вызвать его один раз, после изменений ТЧ, не представляю.
|
|||
|
13
kosts
21.10.14
✎
15:11
|
(12) Если не удается вызвать процедуру, можно попробовать сделать похожую свою.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |