Имя: Пароль:
1C
 
Хочу в таб. части обработки прикрутить рекв-т типа "ТаблицаЗначений". Я многого хочу?
0 гг-ламер
 
16.09.09
19:25
Доброго времени суток. С одной стороны, хочу юзать типовой отбор, а не мудиться с таблицами значений, с другой - прям ужас как надо держать в реквизите табличку значений.
Ну для понимания, в табличке есть заказы, и данные по ним - это хочется отбирать. А есть табличные части заказов, причем обработанные и динамически показываемые во второй табличке, в зависимости от активной строки в первой таблицы.
Вариант с оперативным формированием отпадает - слишком тягомотное дело при каждой смене строки обрбатывать вспомогательную табличку...

Думаю, если таки нельзя такой реквизит прикрутить, попробовать эти данные во второй табличнойчасти обработки держать и запросами при смене строчки подтягивать...

Таки, внимание, вопрос:

"Хочу в таб. части обработки прикрутить рекв-т типа "ТаблицаЗначений". Есть варианты? " :)
1 ТелепатБот
 
гуру
16.09.09
19:25
2 sapphire
 
16.09.09
19:27
(0) Ну и прикрути
3 гг-ламер
 
16.09.09
19:29
(2) Прикрутить - прикрутил. Как заполнить? :) Табличная часть не позволяет в себе хранить такой реквизит. Табличное поле позволяет его создать, визуально есть, а как туда таблицузначений засандалить - большой вопрос...
4 Asmody
 
16.09.09
19:31
(3) неправильный вариант - хранилище значения
5 sapphire
 
16.09.09
19:32
(3) Табличная чать не может, а элемент управления - может.
6 sapphire
 
16.09.09
19:32
(4) Витя, к чему такие сложности?
7 sapphire
 
16.09.09
19:32
есть реквизит - ТЗ, у ЭУ данные вяжем к этому реквизиту и всё
8 Asmody
 
16.09.09
19:33
правильный вариант: 2 таб.части и два дополнительных поля типа ИдСтрокиОсновнойТабЧасти. По нему ставится отбор неизменяемый пользователем во второй таб.части.
9 Asmody
 
16.09.09
19:34
(7) пропустил, что у него обработка. тогда да
10 Asmody
 
16.09.09
19:35
только такой вариант (ТЗ в реквизите) обрабатывать труднее, имхо
11 гг-ламер
 
16.09.09
19:43
(4) Задумалсо :)
(5) Для ламеров просьба поподробней.

Грубо говоря, действующие лица:
ТЧ- табличная часть обработки с неким набором реквизитов. Пусть это будет "Заказ" и "Клиент" для простоты ради.

На форме создан элемент ТабТЧ с источником данных - ТЧ. Тип ставится оболочкой и недоступен для изменения - "внешняяобработка.табличнаячасть".

Данный код позволяет создать колонку на элементе управления:

ТЧ.Колонки.Создать("Состав",Новый ОписаниеТипов("ТаблицаЗначений"));
ЭлементыФормы.ТабТЧ.СоздатьКолонки();

Но как эту колонку заполнить, имея таблицу значений с реквизитами: "Клиент", "Заказ", "Состав". "Состав" - реквизит типа таблицазначений.

Чем бы эту колонку "Состав" из таблицы значений запихать в колонку "Состав" элемента управления? о_О
12 гг-ламер
 
16.09.09
19:46
+(11) Попутал малость, код такой:
ЭлементыФормы.ТабТЧ.Колонки.Добавить("Состав",Новый ОписаниеТипов("ТаблицаЗначений"));
13 гг-ламер
 
16.09.09
19:47
ну и, собственно, визуально колонку-то наблюдаю, а как туда данные запихать - представляю себе плохо.
14 Serginio1
 
16.09.09
19:53
Выгрузи Табличную часть в ТЗ , в тз прикрути полеТЗ , при записи выгружай из Тз в табличную часть.
Прикрути  его как табличное поле
например v8: два разных отбора
15 гг-ламер
 
16.09.09
19:53
(7) Данные можно привязать только из реквизитов табличной части. А табличная часть реквизита с типом "таблицазначений" создать не дает.
16 гг-ламер
 
16.09.09
19:57
(14) бесполезно, если я правильно понял мысль. Вариант:

ТЧ_Обработки.Загрузить(ТаблицаЗначений_С_Нужным_Реквизитом_Типа_ТаблицаЗначений);

Загрузит только тех, кто указан в реквизитах табличнойчасти обработки.
17 Serginio1
 
16.09.09
20:05
Загрузить (Load)
Синтаксис:
Загрузить(<Таблица>)
Параметры:
<Таблица> (обязательный)
Тип: ТаблицаЗначений. Таблица значений, откуда загружается табличная часть. Колонки таблиц совмещаются по именам.
Описание:
Загружает табличную часть из таблицы значений. При этом все прежние строки табличной части удаляются. При загрузке значения в колонках табличной части заполняются значениями из колонок таблицы значений с совпадающими именами.
Примечание:
Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:
Состав.Загрузить(ТаблицаСостава);
18 Serginio1
 
16.09.09
20:06
А что мешает в ТЧ_Обработки добавить это поле?
19 гг-ламер
 
16.09.09
20:08
(17) Ключевая фраза: " Колонки таблиц совмещаются по именам". Если такого совпадения нет - эта колонка просто игнорируется, к сожалению.
(18) Тип "ТаблицаЗначений" отсутствует, возможно выбрать только ссылочные типы вроде Справочников, документов, ну и число, строка, дата...
20 Serginio1
 
16.09.09
20:09
Да я понял. Сейчас посмотрю. в 7 все на ура идет.
21 гг-ламер
 
16.09.09
20:10
Я вот лелеял смутную надежду, что можно както через ЭлементыФормы.ТабличноеПоле запихать этот реквизит, но как-то все это очень-очень зыбко...
22 Serginio1
 
16.09.09
20:22
Процедура Кнопка1Нажатие(Элемент)
   // Вставить содержимое обработчика.
   Запрос= Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
               чего то там";
               
               Запр=Запрос.Выполнить().Выгрузить();
               Запр.Колонки.Добавить("Состав",Новый ОписаниеТипов("ТаблицаЗначений")); // Добавили колонку
           
               Для каждого Стр Из Запр Цикл
               
                    стр.Состав=Запр.Скопировать(); // Установили значение
               
               КонецЦикла;                    
               
           
               ТабПоле= ЭлементыФормы.ТабличноеПоле1;
               ТабПоле.Данные="Запр";
               ТабПоле.СоздатьКолонки();
               КонецПроцедуры


                                   Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
                                       // Вставить содержимое обработчика.
                                   ТекДок=ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.Состав.ВыбратьСтроку();
                   ТекДок=ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.ссылка;
                   Форма=ТекДок.ПолучитьФорму();
                   Форма.Открыть();

                                   КонецПроцедуры
23 гг-ламер
 
16.09.09
20:26
(22) По-моему, отбор после таких махинаций
ТабПоле.Данные="Запр";

перестает работать? По крайней мере в интерактиве точно перестает... Но попробую, спасибо
24 Serginio1
 
16.09.09
20:27
А у меня все работает. Только Запр это реквизит формы.
25 Serginio1
 
16.09.09
20:30
Реквизит фвормы это тот который на вкладке реквизиты с типом таблицаЗначений
26 гг-ламер
 
16.09.09
20:31
"Шайтан, как ты это сделал!" :) А если серьезно - спасибо. Реально работает. :)
27 Serginio1
 
16.09.09
20:33
На здоровье. Просто Табличное поле это всего навсего отобразитель данных.
А вот в сами данные и нужно что то добавлять
28 Фокусник
 
16.09.09
20:33
(24) можно без реквизита формы: табПоле.значение = запр;
29 Serginio1
 
16.09.09
20:33
(28) Спасибо буду знать.
30 гг-ламер
 
16.09.09
20:47
(27) Ложка дегтя, я так спешил обрадоваться, что не обратил внимание на привязанную командную панель, в ней значок фильтра стал недоступен. Что я сделал не так? :(
(28) Не заполняет вроде тоже.

Или я туплю не подетски, или отбор не работает...
31 гг-ламер
 
16.09.09
20:57
+(30) Точно, смотрю в отладчике, у ЭлементыФормы.ТабличноеПоле1 пропадает свойство "ОТборСтрок" после выполнения
ТабПоле.Данные="Запр";

(
32 Serginio1
 
16.09.09
20:59
А к чему Командная панель привязана?
33 гг-ламер
 
16.09.09
21:01
К ЭлементыФормы.ТабличноеПоле1
34 Фокусник
 
16.09.09
21:02
(31) для ТЗ нет отбора
35 гг-ламер
 
16.09.09
21:05
(34) Так ради отбора и вся каша затеяна с табличнойчастью обработки. Стало быть, динамический отбор и реквизит типа "таблицазначений" - детальки из разных конструкторов?
36 Serginio1
 
16.09.09
21:08
(35) Впринципе то несложно и свой отбор для Тз написать
37 Фокусник
 
16.09.09
21:13
(35) если ТЗ нужна для ускорения отображения, то можно держать ее в кеше, например в соответствии, где ключом будет строкаТЧ, а значением нужная ТЗ.
38 гг-ламер
 
16.09.09
21:18
(36) Судя по всему, у меня по-любому без вариантов. :)
(36),(37) Спасибо за помощь. Отрицательный результут - тоже результат. Буду шаманить с таблицамизначений.
39 Serginio1
 
16.09.09
21:20
Ну удачи тебе. Тоже многое для себя уяснил.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан