|
1C 82 Управляемая форма с двумя связанными табличными частями | ☑ | ||
---|---|---|---|---|
0
dmabramov
28.03.14
✎
14:32
|
Приветствую форумчане!
Недавно столкнулся с управляемыми формами и не могу понять реализовать следующее: Есть справочник "пакет услуг" с табличной частью "Состав" которая хранит список номенклатуры. Есть документ с двумя табличными частями: 1 ТЧ - "Товары" хранит список пакетов услуг 2 ТЧ - "Расшифровка" хранит список номенклатуры Нужно сделать так, чтобы при выборе пакета услуг в ТЧ "Товары" автоматически заполнялись строки в ТЧ "Расшифровка" (данными из справочника) В модуле формы для колонки "Пакет услуг" создал процедуру: &НаКлиенте Процедура ПакетУслугОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) ЗаполнитьРасшифровку(ВыбранноеЗначение); КонецПроцедуры Потом понял, что через "ВыбранноеЗначение" не получиться получить табличную часть справочника. Как поступить? |
|||
1
butterbean
28.03.14
✎
14:33
|
ПриИзменении как-то правильнее
|
|||
2
dmabramov
28.03.14
✎
14:42
|
Я сначала так и поступил но:
&НаКлиенте Процедура ПакетУслугПриИзменении(Элемент) // Вставить содержимое обработчика. КонецПроцедуры В "Элемент" вообще нет ссылки на выбранное значение! Мне необходимо как то получить данные из табличной части справочника. Я не могу понять как это реализуется в управляемой форме. |
|||
3
butterbean
28.03.14
✎
14:43
|
(2)
как-то так: ТекДанные = Элемент.ТекущиеДанные; ЗаполнитьРасшифровку(ТекДанные.ПакетУслуг); |
|||
4
butterbean
28.03.14
✎
14:44
|
(3)+
т.е. так: ЗаполнитьРасшифровку(Элементы.ТвояТабЧасть.ТекущиеДанные.ПакетУслуг); |
|||
5
dmabramov
28.03.14
✎
14:48
|
Не прокатывает:
{Документ.Заправка.Форма.ФормаДокумента.Форма(22)}: Поле объекта не обнаружено (ТекущиеДанные) ТекДанные = Элемент.ТекущиеДанные; |
|||
6
toypaul
гуру
28.03.14
✎
14:51
|
Элемент это колонка
надо через Элементы.ИмяТвоейТЧ вообще хоть бы чуть материал по УФ для начало подучить. |
|||
7
dmabramov
28.03.14
✎
14:59
|
Да я согласен что надо подучить! Просто как всегда срочно нужно сделать, а я в УФ профан)
butterbean Спасибо! Получилось, я очень благодарен. |
|||
8
dmabramov
28.03.14
✎
15:11
|
Блин! Прошу не ругайте меня сильно. Теперь такая проблема:
Создал такие процедуры: &НаСервере Функция ПолучитьСостав(ПакетУслуг) Состав = ПакетУслуг.Состав.Выгрузить(); Возврат Состав КонецФункции &НаКлиенте Процедура ПакетУслугПриИзменении(Элемент) Состав = ПолучитьСостав(Элементы.Товары.ТекущиеДанные.ПакетУслуг); Для Каждого ТекСтрока Из Состав Цикл Элементы.Расшифровка.ДобавитьСтроку(); НоваяСтрока = Элементы.Товары.ТекущиеДанные; НоваяСтрока.Номенклатура =ТекСтрока.Номенклатура; НоваяСтрока.Количество =ТекСтрока.Количество; КонецЦикла; КонецПроцедуры Ругается: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable' Как я понял, нельзя передать таблицу значений на форму. А как тогда поступить? |
|||
9
butterbean
28.03.14
✎
15:12
|
(8) ты поднапрягись и прочитай СП, про таблицу значений, например
|
|||
10
dmabramov
28.03.14
✎
15:29
|
Читал. В обычно приложении это работало...
|
|||
11
dmabramov
28.03.14
✎
15:30
|
Попробую через массив передать.
|
|||
12
antoneus
28.03.14
✎
15:41
|
&НаСервере
Функция ПолучитьСостав(ПакетУслуг) Состав = ПакетУслуг.Состав.Выгрузить(); ЗначениеВРеквизитФормы(Состав.Скопировать("Номенклатура, Количество"), "Расшифровка") КонецФункции |
|||
13
antoneus
28.03.14
✎
15:41
|
+(12) И процедура будет, а не функция, то есть.
|
|||
14
antoneus
28.03.14
✎
15:42
|
фак.
ЗначениеВРеквизитФормы(Состав.Скопировать(, "Номенклатура, Количество"), "Расшифровка") |
|||
15
dmabramov
28.03.14
✎
15:55
|
Ошибка при вызове метода контекста (ЗначениеВРеквизитФормы)
ЗначениеВРеквизитФормы(Состав.Скопировать(,"Номенклатура, Количество"), "Расшифровка"); по причине: Недопустимое значение параметра (параметр номер '2') Такое выдал. |
|||
16
dmabramov
28.03.14
✎
15:56
|
Этот метод для табличной части разве работает?
|
|||
17
antoneus
28.03.14
✎
16:04
|
Ну на сервере и заполняй её.
Для каждого ТекСтрока из ПакетУслуг.Состав Цикл НовСтрока = Объект.Расшифровка.Добавить(); ЗаполнитьЗначенияСвойств(НовСтрока, ТекСтрока); КонецЦикла |
|||
18
DexterMorgan
28.03.14
✎
16:18
|
При решении этой задачи ты все равно придешь к тому, что необходимо связь реализовывать не по номенклатуре, а по ключу связи строк. Что будет если в тч есть дубли пакетов услуг?
Для заполнения тч "Расшифровка": &НаСервере Процедура ЗаполнитьРасшифровка(ПакетУслуг) Запрос = Новый Запрос; ... Объект.Расшифровка.Загрузить(Запрос.Выполнить().Выгрузить()); КонецПроцедуры |
|||
19
dmabramov
28.03.14
✎
17:48
|
antoneus Спасибо, получилось!А то я уже отчаялся))
DexterMorgan Да! Я именно так и планирую - Таблицы связать реквизитами "КлючСвязи". Набор нужен чтобы расшифровки удобнее заполнять было. Я это много раз делал в обычном приложении. Но в управляемом я чувствую еще поломаю голову)) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |