![]() |
|
УФ - программное изменение строки | ☑ | ||
---|---|---|---|---|
0
МешочекЗнаний
18.10.18
✎
11:08
|
Приветствую уважаемые.
Что-то туплю, помогите сообразить. УФ. Есть документ "Приобретение товаров услуг". Делаю доработку - когда пользователь записывает документ нужно программно проставить характеристику в ТЧ "Товары". Если делать в &НаКлиенте "Перед записью" в модуле формы документа то запросом не выбрать данные текущей ТЧ (ведь данные ещё не записаны в базу). По логике доработки данные ТЧ нужны. Если делать в &НаСервере "ПриЗаписиНаСервере" запросом можем прочитать данные т.к. они уже записаны, но уже не достучаться до типового обработчика &НаКлиенте "ТоварыХарактеристикаПриИзменении(Элемент)" чтобы поля пересчитались (пытаемся вызвать клиентскую процедуру из серверное что невозможно). Как это по правильному сделать? |
|||
1
ssh2006
18.10.18
✎
11:10
|
(0) Выгружай данный в ТЗ из объекта и помещай ее в запрос во врем таблицу
|
|||
2
МешочекЗнаний
18.10.18
✎
11:13
|
(0) Я рассматривал такой вариант, да так можно. Но для себя хочу узнать есть ли ещё другой способ т.к. этот мне не нравится тем, что при большом количестве строк скуль эту временную таблицу долго суёт себе в память.
|
|||
3
МешочекЗнаний
18.10.18
✎
11:13
|
(2) -> (1)
|
|||
4
ssh2006
18.10.18
✎
11:16
|
(2) нормальный способ, так и делается
|
|||
5
ZDenis
18.10.18
✎
11:21
|
(0) Насколько понимаю обработчик "ТоварыХарактеристикаПриИзменении(Элемент)" запускается для каждого отдельного товара, а не всего сразу, поэтому какой смысл от запроса, а потом его перебора. Не проще сразу для каждой строки ТЦ Товаров установить характеристику?
|
|||
6
ZDenis
18.10.18
✎
11:24
|
+5 Либо посмотреть что в этом обработчике происходит и запускать свой на стороне сервера.
|
|||
7
МешочекЗнаний
18.10.18
✎
11:26
|
(5) Общая логика - характеристика заполняется для строк, где характеристику пользователь не указал. Я запоминаю эти строки а потом циклом их перебираю
ИзменённыеСтроки = ПроставитьХарактеристикиНоменклатурыНаСервере(); Для каждого ИзмененнаяСтрока Из ИзменённыеСтроки Цикл Элементы.Товары.ТекущаяСтрока = ИзмененнаяСтрока; ТоварыХарактеристикаПриИзменении(Неопределено); КонецЦикла; (6) А если разрабы изменят что нибудь, это при обновлении гемморой. Проще просто вызвать эту процедуру. |
|||
8
ssh2006
18.10.18
✎
11:31
|
(7) Можно через НайтиСтроки отобрать строки с пустой характеристикой и проставить ее
|
|||
9
ZDenis
18.10.18
✎
11:38
|
(7) Я имел ввиду, что посмотри что выполняется в ТоварыХарактеристикаПриИзменении() и выполняй это не на клиенте, а в серверной процедуре, ведь это ПроставитьХарактеристикиНоменклатурыНаСервере() у тебя явно на сервере происходит.
|
|||
10
Вафель
18.10.18
✎
11:57
|
(7) и это все на клиенте?
лучше один раз на сервер пеерйти и форму не трогать вообще ( Элементы.Товары.ТекущаяСтрока = ИзмененнаяСтрока; ) |
|||
11
МешочекЗнаний
18.10.18
✎
12:19
|
(10) На сервер хожу 1 раз в строке
ИзменённыеСтроки = ПроставитьХарактеристикиНоменклатурыНаСервере() Ладно, видимо действительно временная таблица это единственный вариант. Спасибо всем за участие. |
|||
12
Вафель
18.10.18
✎
12:20
|
(11) у тебя ТоварыХарактеристикаПриИзменении каждый раз на сервер ходит
|
|||
13
МешочекЗнаний
18.10.18
✎
12:53
|
(12) Так это типовой механизма так отрабатывает. Думаю это небольшая цена за автоматизацию и лёгкость поддержки. Вариант в (1) в моём случае самый оптимальный.
|
|||
14
ZDenis
18.10.18
✎
12:58
|
(13) Сам подумай. У тебя сперва определяются незаполненые на сервере, потом ты их передаешь на клиент, там перебираешь и выполняешь серверные процедуры. Тебе предложили при определении пустых на сервере сразу там и отрабатывать заполнение. Либо второй вариант - зачем тогда уже лезть на сервер в самом начале что бы узнать незаполненные, если можно это сделать сразу на клиенте?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |