Имя: Пароль:
1C
1С v8
8.1 Динамическая табличная часть
0 breezee
 
11.09.15
17:12
Нужно на обычной форме создать динамическую табличную часть. Создал её - все нормально создает, но при добавлении новой строки не подставляется тип данных для колок. Нет значка выбора из справочника, просто поле ввода. Хотя тип задаю
Новый ОписаниеТипов("СправочникСсылка.Числа")
Еще желательно, хоть и нее обязательно её где-нибудь хранить, т.к. 8.1 в параметрах сеанса не могу.
1 Лефмихалыч
 
11.09.15
17:13
колонка табличного поля не связана с данными
2 Лефмихалыч
 
11.09.15
17:14
про хранить - ваще феерия...
3 mehfk
 
11.09.15
17:20
(0) Посмотри как в УТ 10 установка цен номенклатуры сделана. Там на форме ТЗ, у которой динамически добавляются колонки, а в докаументе две табличных части.
4 breezee
 
11.09.15
17:25
(1) А как её связать?
ЭлементыФормы.ТабличноеПоле1.Колонки.Вставить(Итератор-1,"строка" + Строка(Итератор), Новый ОписаниеТипов("СправочникСсылка.Числа"));    
    Колонка.данные = Новый ОписаниеТипов("СправочникСсылка.Числа");    
Я не так обращаюсь к ней? Данные в колонках просто перестали редактироваться. На метод "данные" не ругаеться, но автоподсказка тоже не сработала.
(3) Спасибо, но сейчас нет УТ под рукой.
5 Nuobu
 
11.09.15
17:25
(4) Создай реквизит с типом ХранилищеЗначения.
6 breezee
 
11.09.15
17:31
(5) Спасибо вроде должно получиться. И все же как данные у колонок установить?
7 breezee
 
11.09.15
17:40
Что я не так делаю?
http://i.imgur.com/HumOxhN.png
8 breezee
 
11.09.15
17:46
АП! Почему тип строка то?
9 breezee
 
11.09.15
17:57
Я бы мог сделать несколько табличных частей, но неизвестно сколько пользователю колонок понадобиться, так что такой вариант не подойдет.
10 breezee
 
11.09.15
18:10
Это даже не гуглиться. Что я не так делаю? Может заново напишу что мне нужно - мне нужно создавать динамическую таблицу значений, для некоторых колонок - разные типы данных. Вот что я делаю
Процедура ТекстПриИзменении(Элемент)

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

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

Процедура Кнопка1Нажатие(Элемент)
    ЭлементыФормы.ТабличноеПоле1.ДобавитьСтроку();
КонецПроцедуры
11 breezee
 
11.09.15
18:14
(10) Там было Новый ОписаниеТипов("СправоникСсылка.Числа")); Все равно что так что так не работает.
12 Ненавижу 1С
 
гуру
11.09.15
18:34
Справочник числа это мощно
13 breezee
 
11.09.15
18:42
(12) Для тестов я создал его не задумываясь, сейчас и самому кажется забавным. Но все же как указать эта данные для поля или что нужно чтобы у колонки тип был справочника?
14 breezee
 
11.09.15
19:37
Да почему у меня значение не ссылка на справочник, а описание типов? http://i.imgur.com/ekiaojg.png Я сделал отдельно для элемента формы и для самой таблицы значения и ничерта не пашет. Где я мог накосячить? То же самое делала уже, только на 8.3 и программно заполнял значения. Вот весь код. Если ни кто не ответит пересоздам - заметил что если долго в теме ни кто не отвечает, даже если её поднимать все равно уже не ответят.

    КоличествоКолонок = ЭлементыФормы.ТабличноеПоле1.Колонки.Количество()-1;
    Если НЕ ЗначениеЗаполнено(КоличествоКолонок) Тогда КоличествоКолонок = 0;
        КонецЕсли;
    Пока КоличествоКолонок>=0 цикл
    ЭлементыФормы.ТабличноеПоле1.Колонки.Удалить(КоличествоКолонок);
    КоличествоКолонок = КоличествоКолонок -1;    
КонецЦикла;

  КоличествоКолонок = ТабличноеПоле1.Колонки.Количество()-1;
    Если НЕ ЗначениеЗаполнено(КоличествоКолонок) Тогда КоличествоКолонок = 0;
        КонецЕсли;
    Пока КоличествоКолонок>=0 цикл
    ТабличноеПоле1.Колонки.Удалить(КоличествоКолонок);
    КоличествоКолонок = КоличествоКолонок -1;    
    КонецЦикла;


    Для Итератор=1 По КолСеместров цикл
         ТабличноеПоле1.Колонки.Вставить(Итератор-1,"строка" + Строка(Итератор), Новый ОписаниеТипов("СправочникСсылка.Номенк"));
        
        Колонка = ЭлементыФормы.ТабличноеПоле1.Колонки.Вставить(Итератор-1,"строка" + Строка(Итератор), Новый ОписаниеТипов("СправочникСсылка.Номенк"));
        
    КонецЦикла;
15 lex-kex
 
11.09.15
19:45
(14) Вот тебе пример готового решения, правда в 8.2, если скопировать в 8.1 думаю работать будет примерно также https://cloud.mail.ru/public/G7wm/oxTNJ9cTG
16 breezee
 
11.09.15
19:47
(15) Большое спасибо! Сейчас скопирую
17 breezee
 
11.09.15
20:25
В итогде вышло примерно то же самое и все равно нихера не работает. Скорее всего я идиот. Я не понимаю в чем проблема - 8.3 я делал все то же самое. Создавал тз, в тз добавлял колонки где тип указывал НОВЫЙ Описание типов(СправочникСсылка.Номенклатура) потом присваивал элементу формы тз и все работало. Эти обычные формы сводят меня с ума.
18 breezee
 
11.09.15
20:30
Теперь еще и данные редактировать нельзя, которые программно создаються. На строчку добавления строки ругатся
    МассивТипов = Новый Массив;
        МассивТипов.Добавить(Тип("СправочникСсылка.Номенк"));

    ТаблицаСписок = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "ТаблицаСписок", Истина, ЭлементыФормы.ПанельТаблицы);
        ТаблицаСписок.ТипЗначения = Новый ОписаниеТипов(МассивТипов);
        
        ТаблицаСписок.Ширина = ЭлементыФормы.ПанельТаблицы.Ширина;
        ТаблицаСписок.Высота = ЭлементыФормы.ПанельТаблицы.Высота;
        
        ТаблицаСписок.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.ПанельТаблицы, ГраницаЭлементаУправления.Право);
        ТаблицаСписок.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭлементыФормы.ПанельТаблицы, ГраницаЭлементаУправления.Низ);
        
                Для Итератор=1 По КолСеместров цикл

            НоваяКолонка = ТаблицаСписок.Колонки.Добавить("строка" + Строка(Итератор), "строка" + Строка(Итератор));
            НоваяКолонка.Данные = "строка" + Строка(Итератор);
            
        
             ЭлементыФормы.ТаблицаСписок.добавитьстроку();    

    КонецЦикла;
19 lex-kex
 
11.09.15
20:35
(18) В динамическую таблицу нельзя добавить строку, нужно создавать новый элемент справочника "Номенк"

Справочники.Номенк.СоздатьЭлемент();

Вроде
20 breezee
 
11.09.15
20:38
(19) О_О Но там же не только элемент справочника номенк будет, нужно еще чтобы пользователь вводил туда цифры всякие. Зачем тогда еще нужен динамчиеский список?
21 lex-kex
 
11.09.15
20:42
(20) Проще тогда сделать возможность редактирование списка справочника в самом списке
22 lex-kex
 
11.09.15
20:43
(21) Редактирование справочника в списке
23 breezee
 
11.09.15
20:49
(21) Да мне не нужно редактирование списка справочника. Вот полное задание, даже с ситуацией отпишусь. В ВУЗе спросили знает кто 1С - я сказал что да. Там сказали что в ворде отчеты делают, говорят не удобно, я говорю что могу сделать(надеюсь на зачеты), прикинул, из сложного там 2 таблицы, которые имеют разное кол-во столбцов + сам документ очень длинный - хорошо бы его разбить на несколько форм, чтобы пользователь мог переходить по формам, но он может вернуться - а таблица динамечикская не заполнена. У них стоит какая-то самописная конфа, и предприятие версии 8.1, апать конфу они не будут, ридется делать на 8.1, похожее на 8.3 делал(хотя после целого дня я ничего не сделал - может мне показалось что я делал). В общем - пользователь должен указывать количество стобцов и записывать в получивуюся таблицу данные.
24 lex-kex
 
11.09.15
20:52
(23) ln-group@yandex.ru скинь пример вордовского файла и cf конфы попробую помочь
25 breezee
 
11.09.15
20:59
(24) Спасибо большое за предложение, но ты и так помогал) Дело все равно не срочное, пострадаю  хренью, поищу в гугле, может еще пару тем создам - может кто сразу заметит ошибки. Еще раз спасибо за предложение, но я буду чувствовать себя крайне неудобно. Пойду спать лучше) Еще раз спасибо за помощь - кстати, может еще в обработке доразберусь - может и свое доделаю.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой