Имя: Пароль:
1C
1С v8
Вопрос по чекбоксам на таблице значений.
0 memogolik
 
19.04.12
10:28
Добавил в таблицу значений чекбокс. (взял из отчет ГрупповаяОбработкаДокументовСправочников.)

       МассивТипов = Новый Массив;
   МассивТипов.Добавить(Тип("Булево"));
   МассивТипов.Добавить(Тип("Null"));
   ОписаниеТипаБулево = Новый ОписаниеТипов(МассивТипов);
   //
   МояТЗ.Колонки.Вставить(0,"Пометка",ОписаниеТипаБулево);
   МояТЗ.Индексы.Добавить("Пометка");
   МояТЗ.ЗаполнитьЗначения(Истина, "Пометка");

Но он отображается как то странно: обычной "галочки" нет. Вместо нее сначала "Т" , а потом "нет" или пусто. Подскажите где это поправить. Вроде уже все свойства ТЗ излазил.
Заранее спасибо за ответ.
1 Wobland
 
19.04.12
10:28
зачем там NULL?
2 vicof
 
19.04.12
10:29
ключевые слова: Данные и ДанныеФлажка
3 Юрий Юрьевич
 
19.04.12
10:33
ЗначениеТабПоля = ЭлФормыТабличноеПоле.Значение;
   
   Если ЗначениеТабПоля.Колонки.Найти("Фл")=Неопределено Тогда
       ОписаниеТипа = Новый ОписаниеТипов("Булево");
       ЗначениеТабПоля.Колонки.Добавить("Фл", ОписаниеТипа);
       ЗначениеТабПоля.Колонки.Сдвинуть(ЗначениеТабПоля.Колонки["Фл"], -(ЗначениеТабПоля.Колонки.Количество() - 1));
   КонецЕсли;

   Если ЭлФормыТабличноеПоле.Колонки.Найти("Фл")=Неопределено Тогда
       ЭлФормыТабличноеПоле.Колонки.Добавить("Фл", "");
       ЭлФормыТабличноеПоле.Колонки.Сдвинуть(ЭлФормыТабличноеПоле.Колонки["Фл"], -(ЭлФормыТабличноеПоле.Колонки.Количество() - 1));
       ЭлФормыТабличноеПоле.Колонки["Фл"].Положение = ?(ПоложениеНовойКолонки=Неопределено, ПоложениеКолонки.НоваяКолонка, ПоложениеНовойКолонки);;
       ЭлФормыТабличноеПоле.Колонки["Фл"].Ширина = 3;
       ЭлФормыТабличноеПоле.Колонки["Фл"].ТекстШапки = "";
       ЭлФормыТабличноеПоле.Колонки["Фл"].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
       ЭлФормыТабличноеПоле.Колонки["Фл"].ДанныеФлажка = "Фл";
       ЭлФормыТабличноеПоле.Колонки["Фл"].Данные = "";
       ЭлФормыТабличноеПоле.Колонки["Фл"].Видимость = Истина;
   КонецЕсли;
4 memogolik
 
19.04.12
10:51
(3) Большое спасибо - буду пробовать
5 memogolik
 
19.04.12
11:25
Все как бы работает, только теперь этот чекбокс переключается между "да" и "нет". "Галочки" так и нет (
6 memogolik
 
19.04.12
11:37
ап
7 Wobland
 
19.04.12
11:37
(5) данные флажка?
8 memogolik
 
19.04.12
11:45
У меня вообще "ТаблицаЗначений", а тут пример для ТабличногоПоля ...
В отладчике у моей колонки нет такого реквизита.
И что не нашел "ТабличногоПоля" чтобы вставить его в форму, вроде такой тип нельзя туда воткнуть(
9 Wobland
 
19.04.12
11:46
(8) у формы нет ТЗ, у формы есть ТП
10 memogolik
 
19.04.12
11:50
что я запутался окончательно.

Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Запрос = Новый Запрос;
   Запрос.Текст="
   |ВЫБРАТЬ
   |    Ссылка КАК Док
   |ИЗ
   |    КритерийОтбора.ДокументыПоДоговоруКонтрагента(&Договор) КАК ДокументыПоДоговоруКонтрагента
   |";
   Запрос.УстановитьПараметр("Договор",ИсходныйДоговор);
   МояТЗ = ЭлементыФормы.ТЗ.Значение;
   МояТЗ.Очистить();
   ПоложениеНовойКолонки=0;
   //ЭлементыФормы.ТЗ.Значение=Запрос.Выполнить().Выгрузить();
   //пометочки
   Если МояТЗ.Колонки.Найти("Пометка") = Неопределено Тогда
       ОписаниеТипа = Новый ОписаниеТипов("Булево");
       МояТЗ.Колонки.Добавить("Пометка", ОписаниеТипа);
       МояТЗ.Колонки.Сдвинуть(МояТЗ.Колонки["Пометка"],1-МояТЗ.Колонки.Количество() );
   КонецЕсли;
   
    Если ЭлементыФормы.ТЗ.Значение.Колонки.Найти("Пометка")=Неопределено Тогда
      ЭлементыФормы.ТЗ.Значение.Колонки.Добавить("Пометка", "");
      ЭлементыФормы.ТЗ.Значение.Колонки.Сдвинуть( ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"], -( ЭлементыФормы.ТЗ.Значение.Колонки.Количество() - 1));
      ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"].Положение = ?(ПоложениеНовойКолонки=Неопределено, ПоложениеКолонки.НоваяКолонка, ПоложениеНовойКолонки);;
      ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"].Ширина = 3;
      ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"].ТекстШапки = "";
      ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"].РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
      ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"].ДанныеФлажка = "Пометка";
      ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"].Данные = Истина;
      ЭлементыФормы.ТЗ.Значение.Колонки["Пометка"].Видимость = Истина;
   КонецЕсли;
   
   МояТЗ.Колонки.Добавить("Документ");
   МояТЗ.Колонки.Добавить("Проведен",Новый ОписаниеТипов("Булево"));
   МояТЗ.Колонки.Добавить("ПометкаУдаления",Новый ОписаниеТипов("Булево"));
   МояТЗ.Колонки["Пометка"].ДанныеФлажка="Пометка";
   ЭлементыФормы.ТЗ.СоздатьКолонки();
   
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       НоваяСтрочка = МояТЗ.Добавить();
       НоваяСтрочка.Пометка = Истина;
       НоваяСтрочка.Документ = Выборка.Док;
       НоваяСтрочка.Проведен = Выборка.Док.Проведен;
       НоваяСтрочка.ПометкаУдаления = Выборка.Док.ПометкаУдаления;
   КонецЦикла;
   ЭлементыФормы.ТЗ.Значение=МояТЗ.Скопировать();
КонецПроцедуры

Как поправить? (
11 memogolik
 
19.04.12
12:55
Разобрался, если может кому пригодится:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   // Вставить содержимое обработчика.
   Запрос = Новый Запрос;
   Запрос.Текст="
   |ВЫБРАТЬ
   |    Ссылка КАК Док
   |ИЗ
   |    КритерийОтбора.ДокументыПоДоговоруКонтрагента(&Договор) КАК ДокументыПоДоговоруКонтрагента
   |";
   Запрос.УстановитьПараметр("Договор",ИсходныйДоговор);
   ТП = Новый ТабличноеПоле;
   ТабЗнач = Новый ТаблицаЗначений;
   ТабЗнач.Колонки.Добавить("Пометка",Новый ОписаниеТипов("Булево"));
   ТабЗнач.Колонки.Добавить("Документ");    
   ТабЗнач.Колонки.Добавить("Проведен",Новый ОписаниеТипов("Булево"));
   ТабЗнач.Колонки.Добавить("ПометкаУдаления",Новый ОписаниеТипов("Булево"));
   
       
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
       НоваяСтрока= ТабЗнач.Добавить();
       НоваяСтрока.Пометка = Истина;
       НоваяСтрока.Документ = Выборка.Док;
       НоваяСтрока.Проведен = Выборка.Док.Проведен;
       НоваяСтрока.ПометкаУдаления = Выборка.Док.ПометкаУдаления;
   КонецЦикла;
   
   ЭлементыФормы.ТЗ.Значение=ТабЗнач.Скопировать();
   Если ЭлементыФормы.ТЗ.Колонки.Найти("Пометка2")=Неопределено Тогда
       ЭлементыФормы.ТЗ.СоздатьКолонки();
       ЭлементыФормы.ТЗ.Колонки["Пометка"].ДанныеФлажка="Пометка";
       ЭлементыФормы.ТЗ.Колонки["Пометка"].Видимость=Истина;
       ЭлементыФормы.ТЗ.Колонки["Пометка"].Ширина=3;
       ЭлементыФормы.ТЗ.Колонки["Пометка"].Данные="";
   КонецЕсли;
КонецПроцедуры

1. Проблема у меня была в понимании разницы "ТабличногоПоля" и "ТаблицыЗначений".
В "ТабличномПоле" есть реквизит "значение", которое как раз имеет тип "ТаблицаЗначений".
2. СоздатьКолонки в "ТабличномПоле" должна стоять ДО выставления параметров по столбцу )
Закон Брукера: Даже маленькая практика стоит большой теории.