Имя: Пароль:
1C
1С v8
И снова Табличное Поле
0 Memfis
 
10.06.13
04:47
В общем хочу сделать, что-то вроде универсального табличного поля, т.е. в зависимости от выбранного документа, создается табличное поле визуально идентичное табличному полю выбранного документа.

    ТЗ = ДокументОб.РаботникиОрганизации.Выгрузить();
    Результат = Новый ХранилищеЗначения(ТЗ);
    ТабличноеПоле.Имя = "РаботникиОрганизации";
    ТабличноеПоле.Значение =  Результат.Получить();
    ТабличноеПоле.СоздатьКолонки();

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

Пробовал другой вариант

   ТабличноеПолеЭ = ЭлементыФормы.табполе;
   ФормаОб = Документы.ОтпускаОрганизаций.ПолучитьФорму("ФормаДокумента");
   ТабОб = ФормаОб.ЭлементыФормы.РаботникиОрганизации.Колонки;
   Для Каждого КолонкиЭлемент Из ТабОб Цикл
       Если КолонкиЭлемент.ЭлементУправления <> Неопределено  Тогда
           Если Тип(КолонкиЭлемент.ЭлементУправления)= "ПолеВвода" Тогда
               ТипЭ = Тип(КолонкиЭлемент.ЭлементУправления);
               КнопкаОткрытия = Истина;
               КнопкаВыбора = Истина;
           Иначе
               ТипЭ = Тип(КолонкиЭлемент.ЭлементУправления);
               КнопкаВыбора = Неопределено;
               КнопкаОткрытия = Неопределено;
           КонецЕсли;
       Иначе
           ТипЭ = Неопределено;
           КнопкаВыбора = Неопределено;
           КнопкаОткрытия = Неопределено;
       КонецЕсли;
       
            РаботаСДиалогами.ВставитьКолонкуВТабличноеПоле(, ТабличноеПолеЭ, КолонкиЭлемент.Имя, КолонкиЭлемент.ТекстШапки,
                                   КолонкиЭлемент.Данные, КолонкиЭлемент.ДанныеФлажка, , КолонкиЭлемент.Видимость,
                                   ТипЭ, КолонкиЭлемент.Положение, КолонкиЭлемент.Ширина,
                                   КнопкаВыбора, КнопкаОткрытия ,);    
   
     
   КонецЦикла;
                               
   ТабличноеПолеЭ.Значение =  Результат.Получить()

при таком варианте табличное поле визуально идентично исходному, данные в строчках заполнены, но теряется так сказать ссылочная целостность, т.е. при изменении поля "Сотрудник" к примеру не открывается список справочника. Поле редактируется как обычное поле ввода. При 1 варианте ссылочная целостность присутствует.
Собственно может кто сталкивался с похожей проблемой, да подскажет чего дельного.
1 Godofsin
 
10.06.13
05:03
ЭлементыФормы.ТП.Значение = ТЧ;
ЭлементыФормы.ТП.СоздатьКолонки();
2 Godofsin
 
10.06.13
05:07
ТЧ = Таблица с типизированными колонками
3 Memfis
 
10.06.13
05:19
(2)  Чем это

    ТЗ = ДокументОб.РаботникиОрганизации.Выгрузить();
    Результат = Новый ХранилищеЗначения(ТЗ);
    ТабличноеПоле.Имя = "РаботникиОрганизации";
    ТабличноеПоле.Значение =  Результат.Получить();
    ТабличноеПоле.СоздатьКолонки();

принципиально отличается от этого

ЭлементыФормы.ТП.Значение = ТЧ;
ЭлементыФормы.ТП.СоздатьКолонки();

?
4 Wobland
 
10.06.13
05:25
а зачем ХЗ?
5 Godofsin
 
10.06.13
05:26
хз, а чем тебя тогда не устраивает?
Твой способ я принципиально не пробовал, т.к. много строк
6 Memfis
 
10.06.13
05:27
(5)
Тем что визуально табличное поле выглядит не так
7 Wobland
 
10.06.13
05:27
(6) сделай так
8 Memfis
 
10.06.13
05:29
(4) хитры документ сделать хочу "Проект приказа об изменении приказа" для того и ХЗ, что исходный документ менять нельзя пока проект не пройдёт регистрацию на подпись
9 Memfis
 
10.06.13
05:29
(7)
Пользователям так не удобно
10 Wobland
 
10.06.13
05:31
(9) сделай удобно
(8) так зачем ХЗ?
11 Memfis
 
10.06.13
05:35
(10) Вот и пытаюсь сделать удобно

ТабличноеПолеЭ = ЭлементыФормы.табполе;
   ФормаОб = Документы.ОтпускаОрганизаций.ПолучитьФорму("ФормаДокумента");
   ТабОб = ФормаОб.ЭлементыФормы.РаботникиОрганизации.Колонки;
   Для Каждого КолонкиЭлемент Из ТабОб Цикл
       Если КолонкиЭлемент.ЭлементУправления <> Неопределено  Тогда
           Если Тип(КолонкиЭлемент.ЭлементУправления)= "ПолеВвода" Тогда
               ТипЭ = Тип(КолонкиЭлемент.ЭлементУправления);
               КнопкаОткрытия = Истина;
               КнопкаВыбора = Истина;
           Иначе
               ТипЭ = Тип(КолонкиЭлемент.ЭлементУправления);
               КнопкаВыбора = Неопределено;
               КнопкаОткрытия = Неопределено;
           КонецЕсли;
       Иначе
           ТипЭ = Неопределено;
           КнопкаВыбора = Неопределено;
           КнопкаОткрытия = Неопределено;
       КонецЕсли;
       
            РаботаСДиалогами.ВставитьКолонкуВТабличноеПоле(, ТабличноеПолеЭ, КолонкиЭлемент.Имя, КолонкиЭлемент.ТекстШапки,
                                   КолонкиЭлемент.Данные, КолонкиЭлемент.ДанныеФлажка, , КолонкиЭлемент.Видимость,
                                   ТипЭ, КолонкиЭлемент.Положение, КолонкиЭлемент.Ширина,
                                   КнопкаВыбора, КнопкаОткрытия ,);    
   
     
   КонецЦикла;
                               
   ТабличноеПолеЭ.Значение =  Результат.Получить()

но как туда Тип подвязать чего то не догоняю

Ну а как без ХЗ изменяемый приказ может быть любой (Увольнение, Отпустк, Перемещение и т.д.), так вот когда Проект проходит регистрацию, приказ должен поменятся, без участия пользователя. А создавать ТЧ под каждый тип документа мне кажется моветон.
12 Wobland
 
10.06.13
05:37
>Ну а как без ХЗ
ТабличноеПоле.Значение=ДокументОб.РаботникиОрганизации.Выгрузить();
13 Wobland
 
10.06.13
05:38
а вообще, где-то в проектировании косяк, имхо
14 Memfis
 
10.06.13
05:41
(13) Возможно.
Моё дело маленькое, задача поставлено нужно выполнять
15 Memfis
 
10.06.13
05:44
(12) При закрытии документа ТабличноеПоле.Значение сохранится, при отсутствии реквизитов?
16 Wobland
 
10.06.13
05:51
(15) только, если ты его не попросишь.
вопрос в чём? надо сделать удобно - сделай