Имя: Пароль:
1C
1С v8
v8: Программное создание колонки нет возможности редактирования
0 Baloven
 
26.03.13
07:14
есть код создания колонки:

   Запрос = ПолучитьСправочник("ТипыКонтактов");        
   ЭлементыФормы.ТаблицаДанных.Значение.Очистить();
   Если ЭлементыФормы.ТаблицаДанных.Колонки.Найти("ТипКонтакта")=Неопределено Тогда
       ЭлементыФормы.ТаблицаДанных.Колонки.Добавить("ТипКонтакта","Тип контакта");
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Видимость = Истина;
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Доступность = Истина;
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.УстановитьЭлементУправления(Тип("ПолеВвода"));
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Данные = "ТипКонтакта";
       
       ЭлементыФормы.ТаблицаДанных.Значение.Колонки.Добавить("ТипКонтакта",Новый ОписаниеТипов("Строка"));
   КонецЕсли;
   
       
   Если Запрос.RecordCount > 0 Тогда
       Пока Запрос.EOF()=0 Цикл
           
           Стр=ЭлементыФормы.ТаблицаДанных.Значение.Добавить();
           Стр.ID                = Формат(Запрос.Fields("ID").Value,"ЧГ=0");
           Стр.ТипКонтакта    = Запрос.Fields("Name").Value;
           Запрос.MoveNext();
       КонецЦикла;
   КонецЕсли;

колонка добавляется, выводится, но при создании новой строки или попытки редактирования - в созданой колонке отсутсвует возможность редактирования, т.е. если я редактирую строку - то все поля редактировать в строке могу, а именно поле "ТипКонтакта" не редактируется (не работают в этом поле ни какие клавиши), тоже самое и при создании новой строки.
перепроверил все реквизиты поля ТипКонтакта и соседнего (специально в конфигураторе создал пустой столбец) и разницы в значениях не нашел, на редактирование у столбца все есть, куды рыть не пойму :(
1 kosts
 
26.03.13
07:31
(0) Так вроде

Колонка = ЭлементыФормы.ТаблицаДанных.Колонки.Добавить("ТипКонтакта","Тип контакта");

Колонка.Видимость = Истина;
Колонка.Доступность = Истина;
Колонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
Колонка.Данные = "ТипКонтакта";
2 kosts
 
26.03.13
07:32
Хотя...
3 Baloven
 
26.03.13
07:35
(1)(2) "хотя..." результат тот же :(
4 kosts
 
26.03.13
07:41
КС = Новый КвалификаторыСтроки(20);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);

ЭлементыФормы.ТаблицаДанных.Значение.Колонки.Добавить("ТипКонтакта", ОписаниеТиповС);
5 Baloven
 
26.03.13
07:57
(4) результата нет :( этот код у меня был, просто нашел в инете другой пример по сути сокращающий этот (4)
6 kosts
 
26.03.13
07:58
(5) Не знаю, у меня работает.
7 Baloven
 
26.03.13
07:58
и мой и Ваш вариант определения типа корректно записывает тип для поля
8 Baloven
 
26.03.13
07:59
(6) а у меня нет :(
9 kosts
 
26.03.13
07:59

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

       ЭлементыФормы.ТаблицаДанных.Значение.Колонки.Добавить("ТипКонтакта", ОписаниеТиповС);
       
       ЭлементыФормы.ТаблицаДанных.Колонки.Добавить("ТипКонтакта", "Тип контакта");
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Видимость = Истина;
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Доступность = Истина;
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.УстановитьЭлементУправления(Тип("ПолеВвода"));
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Данные = "ТипКонтакта";
       
       
   КонецЕсли;
   
КонецПроцедуры
10 Baloven
 
26.03.13
08:05
блин, ну когда искал инфу ну видел же в одном из обсуждений что очень важно последовательность соблюдать :) и мой и ваш вариант рабочий, только вот такой вариант вашей интерпритации приведет к моей проблеме :)

вопрос на смекалку найдите разницу :)

   ЭлементыФормы.ТаблицаДанных.Значение.Очистить();
   Если ЭлементыФормы.ТаблицаДанных.Колонки.Найти("ТипКонтакта") = Неопределено Тогда
       
       // Создание описателя типов для таблицы значений

       КС = Новый КвалификаторыСтроки(50);
       Массив = Новый Массив;
       Массив.Добавить(Тип("Строка"));
       ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
       

       
       ЭлементыФормы.ТаблицаДанных.Колонки.Добавить("ТипКонтакта", "Тип контакта");
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Видимость = Истина;
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Доступность = Истина;
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.УстановитьЭлементУправления(Тип("ПолеВвода"));
       ЭлементыФормы.ТаблицаДанных.Колонки.ТипКонтакта.Данные = "ТипКонтакта";
       
       ЭлементыФормы.ТаблицаДанных.Значение.Колонки.Добавить("ТипКонтакта", ОписаниеТиповС);
       
   КонецЕсли;
11 Baloven
 
26.03.13
08:06
в общем нужно сначала ТЗ описать а потом ТЧ а не наобророт :(
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.