|
УФ отображение характеристик при программном заполнении документов | ☑ | ||
---|---|---|---|---|
0
TomWaits
29.03.17
✎
17:50
|
При программном формировании документа заполняются в ТЧ номенклатура и характеристика, но при этом отображения характеристики не происходит - пишет "<характеристики не используются>".
В целом причина понятна - не вызвался обработчик события изменения номенклатуры, который определяет доступность хар-ки для конкретной номенклатуры, т.к. заполнение не интерактивное. Не могу понять как тут поступать, ведь: 1. на сервере не вызвать обработчик события изменения поля ТЧ; 2. на клиенте не перебрать ТЧ. Как поступать в данной ситуации? |
|||
1
lubitelxml
29.03.17
✎
18:01
|
перечитал несколько раз, но так и не понял, показывай код как создаешь документ и "обработчик события изменения номенклатуры" который не вызвался
|
|||
2
TomWaits
29.03.17
✎
18:12
|
Документ создается и заполняется без проблем.
Обработчик события изменения поля ТЧ при таком способе и не должен вызываться. Условно так: &НаКлиенте Процедура СоздатьДокумент(Команда) Форма = ПолучитьФорму("Документ.ХХХ.Форма.ФормаДокумента"); ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную ЗаполнитьНаСервере(ДанныеФормы); // Заполняем документ на сервере КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее Форма.Открыть(); КонецПроцедуры &НаСервере Процедура ЗаполнитьНаСервере(ДанныеФормы) Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ХХХ")); Для каждого стр из Объект.Товары Цикл НоваяСтрока = Док.Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, стр); КонецЦикла; ЗначениеВДанныеФормы(Док, ДанныеФормы); // Кладем обратно в объект формы уже созданный документ КонецПроцедуры В отладчике видно, что в ТЧ и номенклатура и характеристика заполнились, только вот отображения характеристики не происходит. По сути необходимо выполнить в цикле это: СтруктураДействий = Новый Структура; СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", НоваяСтрока.Характеристика); ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, Неопределено); Но на сервере оно недоступно. |
|||
3
singlych
29.03.17
✎
18:19
|
Вроде должна быть симметричная процедура в серверном модуле ОбработкаТабличнойЧастиСервер
|
|||
4
TomWaits
29.03.17
✎
18:36
|
Да, действительно такая процедура есть, спасибо.
Дело упирается в отсутствие в таблице колонки "ХарактеристикиИспользуются". Обращение к ней есть, а в каком месте колонка появляется не ясно. |
|||
5
TomWaits
29.03.17
✎
19:38
|
И всетаки как возможно перебрать ТЧ на клиенте?
Колонка "ХарактеристикиИспользуются" для ТЧ "Товары" документа создана непосредственно на форме и не является реквизитом табличной части объекта - возможно проблема в этом. И поэтому обращаться к ней нужно из-под клиента. В самом документе под клиентом это поле видно в отладчике и не видно на сервере. |
|||
6
TomWaits
29.03.17
✎
19:47
|
Если я все правильно понимаю, то я должен каким то образом заполнить реквизит Товары.ХарактеристикиИспользуются для каждой строки ТЧ Товары.
На сервере он мне недоступен, а на клиенте доступен, но ТЧ я перебрать не могу. |
|||
7
h-sp
30.03.17
✎
03:06
|
(6) на клиенте перебор таб поля доступен, почему всё время пишете, что не можете перебрать?
|
|||
8
TomWaits
30.03.17
✎
07:48
|
А можно пример такого перебора?
|
|||
9
TomWaits
30.03.17
✎
08:09
|
Вопрос решился так:
На клиенте перебрал ТЧ: Для каждого ТекСтрока из Форма.Объект.Товары Цикл СтруктураДействий = Новый Структура; СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекСтрока.Характеристика); ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекСтрока, СтруктураДействий, Неопределено); КонецЦикла; Всем кто навел на верные мысли, спасибо) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |