Имя: Пароль:
1C
1С v8
Добавление свободных колонок в Табличное поле
,
0 moonlight
 
27.11.16
13:48
Добрый день!

В табличное поле документа добавляют несколько колонок, которые не связаны с данными. Редактировать вроде могу, вижу значение, которое я ввожу в эти колонки но после потери фокуса значение не видно, а при помещении курсора в колонку значение видно, но одинаковое для всех строк колонки. Как правильно добавить в Табличное поле произвольные колонки с возможностью редактирования и отображения введенных данных для каждой ячейки?
1 h-sp
 
27.11.16
14:44
не получится так. Не мучайтесь, добавьте реквизит в ТЧ.
2 moonlight
 
27.11.16
15:11
Сформулирую по другому.

У меня есть в форме документа Табличное поле связанное с таблицей документы Товары. Мне надо добавить программно в зависимости от определенных данных несколько колонок в ячейки которых для разных строк я должен интерактивно вносить данные. При закрытии документа значения ячеек этих колонок будут сохранятся.

Как добится редактирования ячеек в доп колонках кде свойство ДАННЫЕ =""?
3 Mauser
 
27.11.16
15:19
(2) Сформулирую по другому. Так не получится. Потому что редактируется не ячейки, а связанные данные. Котрых у тебя нет.
4 lucbak
 
27.11.16
15:26
(2) Для реализации данного функциона тебе необходим ID строки (т.е. как минимум 1 реквизит в ТЧ тебе все таки придется добавить) + некое хранилище значений (введенных в ячейки) - это будет или РС или ТЧ или еще что нить...
5 moonlight
 
27.11.16
15:46
т.е насколько я понимаю мне надо создать ТЗ и динамически колонки сколько требуется, а затем связать с Табличным полем?
6 Mauser
 
27.11.16
16:14
(5) Хз, тебе там видней. Попробуй, что-ли. Если не получится - попробуй понять почему.
7 lucbak
 
27.11.16
16:29
(5) Да, именно так.
8 Злопчинский
 
27.11.16
16:33
Если после закрытия дока данныеидолжны сохраняться, то почему их не сделать реквизитами этого самого дока?
9 lucbak
 
27.11.16
16:37
(8) Судя по всему кол-во реквизитов заранее не известно (т.е. смысл именно в динамическом их создании)
10 Злопчинский
 
27.11.16
16:43
(9) а почему тогда не хранить это в отдельной тч ПОСТРяоЧНО?
11 lucbak
 
27.11.16
16:54
(10) Это и предлагается в (4)
12 Mauser
 
27.11.16
16:54
(10) Потому что он идет не от хранения и логики обработки, а от пользовательского интерфейса. Он так видит. Художника любой обидеть норовить и так далее.
Так-то.
13 lucbak
 
27.11.16
16:56
(10) Хранить можно как угодно а представление требуется так как описано в (0)
14 Mauser
 
27.11.16
16:58
(13) Прости меня, о великий телепат, познающий тонкости задания силой мысли и фантазии. Напиши ему готовый код что-ли, уже?
15 lucbak
 
27.11.16
17:11
(14) Фантазии у пользователей а у меня опыт (как говорится "почувствуйте разницу").
16 Mauser
 
27.11.16
17:13
(15) Код-то автору напишешь? Или опыт уже не позволяет? =)
17 lucbak
 
27.11.16
17:24
(16) Кратенько так:

//Добавляем колонку (доп.атрибут) в таблицу значений
тзДопАтрибуты.Колонки.Добавить(стИдентификатор, текОписаниеТипа, стрНаименование);

//Добавляем колонку (доп.атрибут) в табличную часть
ОбъектКолонка=ТабличноеПолеНаФорме.Колонки.Добавить(стИдентификатор, стрНаименование);
ОбъектКолонка.УстановитьЭлементУправления(Тип(ЗначениеАтрибута));

//При изменении значения в указанной процедуре запишем его в ТЗ (как вариант)
ОбъектКолонка.ЭлементУправления.УстановитьДействие("ПриИзменении", Новый Действие("ОписаниеПроцедуры"));
ОбъектКолонка.ЭлементУправления.ТипЗначения=текОписаниеТипа;


//В модуле формы документа
Процедура тпНашаТабличнаяЧасть_ПриПолученииДанных(Элемент, ОформленияСтрок)
    Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
        НайденнаяСтрока=тзДопАтрибуты.Найти(ОформлениеСтроки.ДанныеСтроки.ID, "Ключ");
        Если НайденнаяСтрока=Неопределено Тогда Продолжить; КонецЕсли;
        
        Для Каждого СтрокаКоллекции Из тзДопАтрибуты.Колонки Цикл
            Если СтрокаКоллекции.Имя="Ключ" Тогда Продолжить; КонецЕсли;
            ОформлениеСтроки.Ячейки[СтрокаКоллекции.Имя].Значение=НайденнаяСтрока[СтрокаКоллекции.Имя];
        КонецЦикла;
    КонецЦикла;    
КонецПроцедуры
18 Mauser
 
27.11.16
17:35
(17) Отлично, ждем реакции ТС.
Предполагаю первый вопрос про "ОписаниеПроцедуры". Хотя скорей всего просто промолчит и больше не появится =)
19 lucbak
 
27.11.16
17:40
//Процедура, которые вещается на событие ячейки табличного поля "ПриИзменении"
Процедура ОписаниеПроцедуры(Элемент)
    //Тут пищем код запоминая введенного значения ячейки в ТЗ, для его последущего
    //отобрадения в процедуре "ПриПолученииДанных"
КонецПроцедуры
20 Злопчинский
 
27.11.16
17:42
не, фигня какая-то.. такие вывороты имхо обычно свиделеьствует либо о кривлой постановке задачи, либо о кривой архитектуре. надо переделывать как-то по нормальному
21 Mauser
 
27.11.16
17:47
(20) +1
У некоторых, правда, об "опыте" =)
22 lucbak
 
27.11.16
17:48
(20) Такое обычно пишется для универсальных механизмов - для типовых конфигураций конечно сомнительно, что такое необходимо.
23 moonlight
 
27.11.16
18:51
Да, данные хранятся в двух таблицах документа Потребности и ОСтатки по складам. В таблице, которую видит пользователь надо, чтобы добавилось столько колонок сколько складов в целом существуют с остатками по номенклатуре. Поэтому Видимая таблица при открытии будет формироваться доп колонками и заполнятся из 2 таблиц документа а при записи сохранять данные в 2х таблицах документа
24 Mauser
 
27.11.16
19:07
(23) > ... при открытии будет формироваться доп ...

Если напишешь - будет. Если не напишешь - не будет. Все взаимосвязано.