Имя: Пароль:
1C
 
checkbox в таблице 1С
0 alkinoos
 
21.04.10
00:55
Здравствуйте, подскажите как в табличной части документа организовать колонку с checkbox-ом, и корректно обрабатывать состояние "флажка" ?
Спасибо.
1 also
 
21.04.10
00:57
Размещай ТЗ в диалоге, назначай ей картинку.
потом
ТЗ.НоваяКолонка("Пометка","Число", 2,0,"");
ТЗ.ВыводитьПиктограммы("Пометка");
2 also
 
21.04.10
00:58
а вообще в поиск
3 alkinoos
 
21.04.10
01:02
Что-то типа такого же (http://www.macleod-1c.narod.ru/Paint.bmp), только в документе в табличной части (и кстати сохраняться ли показатели срок??)
4 Cthulhu
 
21.04.10
01:03
(1): а вообще не ТЗ а Мн.Ч.
(0): картинку назначить для Мн.ч. (в свойствах); добавить вычисляемую колотнку в Мн.ч. (активизировать Мн.ч, ткнуть в кнопку добавления реквизита "текст" и добавить его ткнув прямо в Мн.Ч) - добавится пустая колонка. перетащить её куда надо, назвать как надо, поставить ширину какую надо, взвести флажок "для вывода пиктогроамм" (или как-то так), а в формулу добавленной колонки всандалить выражение, вычисляющее номер отображаемой пиктограммы.
а вообще - в поиск. (с)
5 alkinoos
 
21.04.10
01:08
Да все это пробовал, вот здесь тоже описано,
CheckBox в таблице
только не работает, пишет в строке
Флаг = ТабЗнач.ПолучитьЗначение(ТабЗнач.НомерСтроки, "КолонкаСПиктограммой");
НеверныйИдентификаторКолонки, а она именно так и обозвана - КолонкаСПиктограммой
6 alkinoos
 
21.04.10
01:10
В результате у меня функция выглядит так
Функция ПриСменеСтроки()
   
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");

Флаг = ТабЗнач.ПолучитьЗначение(ТабЗнач.НомерСтроки, "Пикт");  
Сообщить(Флаг);
Если Флаг = 1 Тогда
Флаг = 0;
Иначе
Флаг = 1;
КонецЕсли;
ТабЗнач.УстановитьЗначение(ТабЗнач.НомерСтроки, "Пикт", Флаг);
КонецФункции

но не работает, пишет про неверный идентификатор (пикт - назвал), в чем может быть проблема?
7 Злопчинский
 
21.04.10
01:11
После создания таблицы значений - опиши ее структуру
8 alkinoos
 
21.04.10
01:12
это как (подскажите)
9 Злопчинский
 
21.04.10
01:13
положи на форму ТЗ, идентификатор = ТЗФ
на эту ТЗ повесь картинку с пиктограммами

Процедура ПриОткрытии()
ТЗФ.НоваяКолонка("Пометка","Число",1);
ТЗФ.НоваяКолонка("Наименование","Строка");
ТЗФ.ВыводитьПиктограммы("Пометка",);

ТЗФ.НоваяСтрока();
ТЗФ.Пометка = 1;
ТЗФ.Наименование = "одна пиктограмка";
ТЗФ.НоваяСтрока();
ТЗФ.Пометка = 2;
ТЗФ.Наименование = "Вторая пиктограмка";
КонецПроцедуры
10 Злопчинский
 
21.04.10
01:14
если флаг может принимат 1 или 0, тогда красиво будет
Флаг = 1-Флаг;
11 alkinoos
 
21.04.10
01:21
Но ведь в этом случае у меня на форме список значений (с колонками), а я говорил о табличной части документа (или я что-то неправильно понял)
И как на этот список значений повесить пиктограмму
На колонку в табличной части - знаю, а на список значений - не понял
12 Злопчинский
 
21.04.10
01:30
в табличную часть документа - очень просто
1. на ТЧ документа повесь картинку с пиктограммами
13 Злопчинский
 
21.04.10
01:32
и не путай СписокЗначений и ТаблицуЗначений
14 Злопчинский
 
21.04.10
01:34
на ТЧ кинь текстовую колонку
15 Злопчинский
 
21.04.10
01:34
у ней в свойствах поставь галку показывать пиктограммы
16 Злопчинский
 
21.04.10
01:35
в формулу - пиши функцияю, функция должна возвращать номер пиктограммы (в картинке, которую назначил на тЧ)
17 Злопчинский
 
21.04.10
01:38
переключение пиктограммы
//*****************************************************************************
Процедура ПриНачалеРедактированияСтроки()
ЭлементДиалога = Форма.ТекущаяКолонка();
 Если НЕ(ЭлементДиалога = "ТутИдТвойеТекстовойКолонки")
 Тогда Возврат;
 КонецЕсли;

 ФлагПиктограммы = 3-ФлагПиктограммы;
КонецПроцедуры //ПриНачалеРедактированияСтроки()
.
надо четко понимать что пиктограммка показывается в зависимости ОТ ЧЕГО-ТО - это что-то - или реквизит дока или некая вычисляемая значения ыункции
18 alkinoos
 
21.04.10
01:47
а как показать-то саму картинку (пиктограмму) в текстовой колонке,где уже все атрибуты типа (показывать пикт.) выставлено
19 Cthulhu
 
21.04.10
01:52
(5),(6),(8),(11),(18): в (4) - мантра.
20 alkinoos
 
21.04.10
01:52
Сделал так


Функция Флаг()  // вызывается из формулы текстовой колонки
   Возврат Флаг+1;
КонецФункции


Процедура ПриНачалеРедактированияСтроки()
 Если Форма.ТекущаяКолонка() = "Пикт" Тогда
       Флаг = 1 - Флаг;  
       СтатусВозврата(0);
   КонецЕсли;
КонецПроцедуры

Вот и все , работает
21 alkinoos
 
21.04.10
01:53
всем спасибо
22 Злопчинский
 
21.04.10
01:55
.Вот видишь - всехний пообеждатель!
Не есть кошерно юзать переменную Флаг и функцию Флаг()
;-)
23 Злопчинский
 
21.04.10
01:56
хм... а нахрена СтатусВозврата(0); - при редактировании текстовой колонки.. ;-)?
но для общей дисциплины - ок.
24 Cthulhu
 
21.04.10
02:03
(23): зато теперь можно вызывать из некоторых предопределенных процедур модуля формы! )))
25 Злопчинский
 
21.04.10
02:54
ага с таким бешенно богатым кодом? ;-)
Закон Брукера: Даже маленькая практика стоит большой теории.