Имя: Пароль:
1C
1С v8
Можно ли в табличное поле, добавить редактируемую колонку?
0 Галахад
 
гуру
30.07.13
13:06
Подскажите, возможно ли в "Табличное поле", связанное с "Табличной частью" добавить редактируемую колонку?

Программно.
1 cw014
 
30.07.13
13:06
Не возражаю
2 Галахад
 
гуру
30.07.13
13:10
Гм. А как?
3 Галахад
 
гуру
30.07.13
13:12
Никак?
4 Капитан О
 
30.07.13
13:13
изменить реквизиты или тупо добавить
5 Галахад
 
гуру
30.07.13
13:14
Неохота менять структуру данных.
6 hhhh
 
30.07.13
13:15
(3) делаешь таблицу значений вспомогательную, в ней хранишь эту колонку. ПриПолученииДанных() выводишь в колонку табличного поля. Если щелкнули редактировать, то редактируешь поле в этой ТЗ.
7 ИС-2
 
naïve
30.07.13
13:16
(1) глупость. Иди учись.

Фактически нельзя т.к даже если указать элемент управления, то программно к информации не обратиться (специально проверил).

Тут если только подменять свойство данные у элемента формы в голову лезет
8 Капитан О
 
30.07.13
13:17
(7) а редактироваться будет?
9 Галахад
 
гуру
30.07.13
13:21
(6) А какое событие?

(7) Не понял.
10 mikecool
 
30.07.13
13:22
(7) "Фактически нельзя т.к даже если указать элемент управления, то программно к информации не обратиться (специально проверил). " это как? оО
11 Галахад
 
гуру
30.07.13
13:46
Спасибо, получилось.
12 ИС-2
 
naïve
30.07.13
14:15
(10) добавил в таб. поле колонку, которая не связана с ТЧ. Указал элемент управления - поле ввода. Текст вводить можно, но он отображается только при входе элемент управления (думаю если ихменить режим редактирования, то будет виден).
Текст введенный в ячейку сохраняется. Но как и пытался найти в каком свойстве сохранились введеные мною данные так и не нашел
(11) Теперь я удивляюсь - это как получилось. Поделись, пжс, опытом...
13 Галахад
 
гуру
30.07.13
14:32
(12) Как-то так:

[форма правилась только программно]


// Миста
Перем тзМиста;
// Миста


// Миста
Процедура МистаТаблицаОбработкиПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
    НайденнаяСтрока = тзМиста.Найти(ДанныеСтроки.Сотрудник, "Сотрудник");
    Если НайденнаяСтрока = Неопределено Тогда
        Возврат
    КонецЕсли;
    ОформлениеСтроки.Ячейки.ПроцентВхождения.УстановитьТекст(Формат(НайденнаяСтрока.Процент,"ЧДЦ=2"));    
    
КонецПроцедуры

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

тзМиста = Новый ТаблицаЗначений;
тзМиста.Колонки.Добавить("Сотрудник");
тзМиста.Колонки.Добавить("Процент");

МистаДействиеПриВыводеСтроки = Новый Действие("МистаТаблицаОбработкиПриВыводеСтроки");
ЭлементыФормы.ТаблицаОбработки.УстановитьДействие("ПриВыводеСтроки", МистаДействиеПриВыводеСтроки);
МистаТаблицаОбработкиВыбор = Новый Действие("МистаТаблицаОбработкиВыбор");
ЭлементыФормы.ТаблицаОбработки.УстановитьДействие("Выбор", МистаТаблицаОбработкиВыбор);

МистаКолонкаНовая = ЭлементыФормы.ТаблицаОбработки.Колонки.Добавить("ПроцентВхождения","Размер премии");
ЭлементыФормы.ТаблицаОбработки.Колонки.ПроцентВхождения.ГоризонтальноеПоложениеВКолонке = ГоризонтальноеПоложение.Право;

МистаДействиеВыбор = Новый Действие("МистаДействиеВыбор");

МистаКолонкаЭталон = ЭлементыФормы.ТаблицаОбработки.Колонки.Найти("Процент");
МистаКоличествоКолонок = ЭлементыФормы.ТаблицаОбработки.Колонки.Индекс(МистаКолонкаНовая);
МистаИндексКолонкаНовая = ЭлементыФормы.ТаблицаОбработки.Колонки.Индекс(МистаКолонкаЭталон);
ЭлементыФормы.ТаблицаОбработки.Колонки.Сдвинуть(МистаКолонкаНовая, -(МистаКоличествоКолонок - МистаИндексКолонкаНовая - 1));
// Миста
14 Галахад
 
гуру
30.07.13
14:33
Гм. Эта строка лишняя.

МистаДействиеВыбор = Новый Действие("МистаДействиеВыбор");
15 ИС-2
 
naïve
30.07.13
14:42
ТаблицаОбработки - это табличная часть
тзМиста - таблица, где хранятся значения доп. колонок.

При изменении как бы таб. части данные новой колонки сохраняются в ТЗ. Т.е идет связь между 2 таблицами. Верно понял?
16 Галахад
 
гуру
30.07.13
14:45
(15) Да. Алгоритм в (6).
17 cw014
 
30.07.13
15:02
(15) Двоечник
(14)(16) Молорик
18 User_Agronom
 
30.07.13
15:03
Можно. Добавить табличное поле. И не у всех колонок указать ТолькоЧтение.
Я думаю этот реквизит можно и программно менять.

У меня была задача: формировалась некая таблица и в ней должен быть только один редактируемый столбец. Собственно, всё несложно.
19 cw014
 
30.07.13
15:03
(15) Если ты не можешь представить алгоритм, не значит что его не существует