Имя: Пароль:
1C
 
Как реализовать пометки в Таблице значений?
0 Живаго
 
24.11.09
15:09
В отчете есть реквизит таблица значений, на форме табличное поле, как реализовать пометки (как список с пометками)?
1 Vitello
 
24.11.09
15:11
Колонку с типом булево добавить
2 Живаго
 
24.11.09
15:15
(1)Спасибо
3 Живаго
 
24.11.09
15:17
А как сделать так чтобы там стоял именно флажок, как в семерке нужно пиктограмку прикручивать?
4 Vitello
 
24.11.09
15:18
(3)см Данные флажка элемента управления.
5 Aloex
 
24.11.09
15:20
(3) Процедура ТаблицаРезультатПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ОформлениеСтроки.Ячейки[0].ОтображатьФлажок = Истина;
   ОформлениеСтроки.Ячейки[0].ОтображатьТекст  = Ложь;
   ОформлениеСтроки.Ячейки[0].Флажок  = Истина;
КонецПроцедуры
6 Живаго
 
24.11.09
15:29
(5) эээм там теперь все в куче и ложь с истиной и флажок и почемуто всегда установлен!
7 Aloex
 
24.11.09
15:34
(6) Данные о флажке берутся из другой колонки(это не принципиально)

ОформлениеСтроки.Ячейки[0].Флажок = ДанныеСтроки.Пометка;
8 Живаго
 
24.11.09
15:37
(7) спасибо я понял, только смущает одна мелочь, т.е. все равно работать будет так как выбор булевого значения, отображение только идет флажком, я правильно понял?
9 Aloex
 
24.11.09
15:38
(8) ТЗ_QueryResults = Новый ТаблицаЗначений;
ТЗ_QueryResults.Колонки.Добавить("Пометка",ПолучитьОписаниеТипаБулево(),"v",2);
10 Aloex
 
24.11.09
15:38
(8) а как ещё?
11 Живаго
 
24.11.09
15:45
(9) я канешно дико извиняюсь (за свою неосведомленность), но что такое ПолучитьОписаниеТипаБулево()?
12 Живаго
 
24.11.09
15:46
(10) Ну в семерке разруливалось с помощью пиктограмки и просто тупо по двойному клику менялось значение, и не надо выбирать ложь истина, просто кликаешь и все.
13 Aloex
 
24.11.09
15:48
Функция ПолучитьОписаниеТипаБулево() Экспорт
   МассивТипов = Новый Массив;
   МассивТипов.Добавить(Тип("Булево"));
   ОписаниеТипаБулево = Новый ОписаниеТипов(МассивТипов);
   Возврат ОписаниеТипаБулево;
КонецФункции
14 Живаго
 
24.11.09
15:48
(11) вопрос снят!
15 Живаго
 
24.11.09
15:48
(13) Спасбио за помощь
16 Живаго
 
24.11.09
16:03
Теперь другая проблема меняю значение в соотв. ячейке и во всех строках ставится флаг соотвтственно той ячейке которую я поменял.
Процедура СписокСвойствПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ОформлениеСтроки.Ячейки[0].ОтображатьФлажок = Истина;
   ОформлениеСтроки.Ячейки[0].ОтображатьТекст  = Ложь;
   ОформлениеСтроки.Ячейки[0].Флажок = ложь;
   Если Элемент.ТекущаяСтрока.Пометка = ложь Тогда
       ОформлениеСтроки.Ячейки[0].Флажок = ложь;
   ИначеЕсли Элемент.ТекущаяСтрока.Пометка = истина Тогда
       ОформлениеСтроки.Ячейки[0].Флажок = Истина;
   Иначе
       ОформлениеСтроки.Ячейки[0].Флажок = Ложь;
   КонецЕсли;
КонецПроцедуры
вот код
17 butterbean
 
24.11.09
16:07
(16) что это??
здесь достаточно только
ОформлениеСтроки.Ячейки[0].УстановитьФлажок(данныеСтроки.ТвояКолонка);
ОформлениеСтроки.Ячейки[0].ОтображатьТекст  = Ложь;
18 butterbean
 
24.11.09
16:08
(17)+ изменение флажка должно отлавливаться в событии ПриИзмененииФлажка
19 Живаго
 
24.11.09
16:16
(17) изменил код = все тоже
(18) имеется ввиду при изменении поля (моя колонка)?
20 butterbean
 
24.11.09
16:17
(19) нет, имеется ввиду событие табличного поля ПриИзмененииФлажка()
21 73
 
24.11.09
16:22
А зачем там вообще ПриВыводеСтроки?

Удали колонку в ТП и создай заново.
БЕЗ ЭлементаУправления.
Данные - вытереть.
ДанныеФлажка - заполнить.
РежимРедактирования - Непосредственно.

v8: Вывод логического значение в ТЗ на форме документа - очень познавательно.
22 Живаго
 
24.11.09
16:56
(21) ТЫ МЕНЯ СПАС!!! УРА!!!
23 Viktosha
 
08.12.09
17:01
Такая же проблема, помогите пож-та. Есть табличное поле, не связанное с табличной частью документа. Часть колонок формируется динамически. Колонка "Соответствует" занесена изначально, сделано все, как в (21), с той лишь разницей, что в списке свойств нет свойства "Режим редактирования". И не выходит, появляется только ложь/истина.Полдня уже мучаюсь((((
24 Mitriy
 
08.12.09
17:04
(23) Режим редактирования в свойствах колонки ищи, а не поля...
25 Mitriy
 
08.12.09
17:05
(24)+ на это обрати особое внимание:

Данные - вытереть.
ДанныеФлажка - заполнить.
26 73
 
08.12.09
17:06
(23) Кнопка "Показывать только важные" в заголовке окна свойств не нажата случаем?
27 73
 
08.12.09
17:13
(26)+ показывает "истина/ложь" - элемент управления точно удалили?
28 Viktosha
 
08.12.09
17:17
Стоит:
Имя : Соответствует
Данные: не заполнено
ДанныеФлажка: Соответствует
Спасибо (73): режим поставила непосредственно
Элемент управления удалила перед тем как записать данные флажка.
Все равно идет истина/ложь

Может стоит заполнить процедуру ПриВыводе строки?
29 Mitriy
 
08.12.09
17:20
(28) если колонка в таблице есть с типом булево, то вообще никаких обработчиков не надо...
30 73
 
08.12.09
17:22
Еще раз:
Из ссылки (21):

НЕА123
30 - 30.04.09 - 13:11 (28)
1. удали колонку;
2. добавь колонку;

3. в свойствах данные убери;
4. в свойствах данные флажка укажи имя;
5. тыкни мышом куда-нибудь(на другую колонку)
6. тыкни мышом на созданную колонку, в свойствах не должно быть ЭУ и типа

ЗЫ. В 15м релизе вроде уже не глючит. ЭлементУправления удаляется сам корректно.
По крайней мере я добиться "истина/ложь" уже не смог.
31 Viktosha
 
08.12.09
17:22
У меня табличная часть и табличное поле названы даже по разному, потому что формируются не построчно, например, как в документе Установка цен.
32 Viktosha
 
08.12.09
17:25
(30) несколько раз проделывала такой фокус(((( не помогает(((( стоит 14-ая платформа
33 73
 
08.12.09
17:29
(32) По схеме (30) и (21) делал и в 13м - все получалось.
34 Viktosha
 
08.12.09
17:33
(33) у вас табличное поле содержит данные табличной части?
35 73
 
08.12.09
17:36
(34) А у вас, что содержит? В (23): <Есть табличное поле, не связанное с табличной частью документа >

Или я чего-то не допонял.
Тогда поподробнее...
36 73
 
08.12.09
17:37
(35)+ Что у табличного поля в данных (тип какой)?
37 vmv
 
08.12.09
17:41
Процедура УстановитьРежимФлажкаКолонкиТабличногоПоля(Колонки, КолонкаИмя, ТолькоПросмотр = Ложь, ТриСостояния = Истина) Экспорт
   Перем Колонка;
   
   Колонка = Колонки[КолонкаИмя];
   
   Колонка.ТолькоПросмотр      = ТолькоПросмотр;
   Колонка.Данные              = "";
   Колонка.ДанныеФлажка        = КолонкаИмя;
   Колонка.ТриСостоянияФлажка  = ТриСостояния;
   Колонка.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;

КонецПроцедуры

При открытии/модификации формы или по вкусу
38 Viktosha
 
08.12.09
17:41
Есть документ, в нем табличная часть: анализы и есть табличное поле на форме: испытания, которое представляет собой сводную таблицу. Т.е. одной строке в табличном поле, соответствует несколько строк в табличной части документа.
39 Mitriy
 
08.12.09
17:44
(38) может, ты все-таки глянешь на тип значения табличного поля, партизанка? ))
40 Viktosha
 
08.12.09
17:44
(37) все это я ставлю изначально
41 73
 
08.12.09
17:44
(38)
Тыкни на табличное поле - открой свойства и посмотри, что там написано в Данные:
имя табличной части или имя чегой-тоТамеще(переменная, реквизитформы или что? и какой там тип) ?
42 Viktosha
 
08.12.09
17:44
(39)ТаблицаЗначений
43 Viktosha
 
08.12.09
17:46
(41) данные : испытания я так понимаю реквизит формы (точно не документа)
 тип: ТаблицаЗначений
44 vmv
 
08.12.09
17:47
три состояния полезны если у вас в табличной части документа ...дерево.

мне надоели громадные табличные части в типовом исполнении и я прикрутил деревянные табличные части в документы. Удобно когда в строках однородные данные по популярным полям, как то: контрагаент, номенклатура, физлица и пр.
в узлах итоги с суммовых колонках, в разворотах данные.

Итого документ с 1000 строк - при открытии может содержать очень малое число узлов, причем не факт, что каждый откроют.

когда  платформо-разработчики дойдут до мысли, что многострочная часть в виде плоской таблицы это не только неудобно, но и не экономно)
45 73
 
08.12.09
17:48
(42) Тогда при чем вопрос (34)? (30) и (21) как раз подойдет.

Как булева колонка называться будет знаешь?
46 73
 
08.12.09
17:49
(45)+ Там у тебя нигде СоздатьКолонки() не делается этому полю?
47 Viktosha
 
08.12.09
17:50
(45) ну не получается вот так, уже раз 40 делала, колонка называется "Соответствует", я ее изначально создаю, по этой колонке нигде ничего не создается
48 Viktosha
 
08.12.09
17:51
(44) согласна, тоже использую дерево значений переодически, но в данном случае, нужна таблица
49 73
 
08.12.09
17:53
СоздатьКолонки() - метод табличного поля. Если вызовешь - перетрет что в конфигураторе настроила. Так что проверить бы надо.

Попробуй создать новую колонку с другим(любым) именем и посмотри что получится.
50 Viktosha
 
08.12.09
17:56
(49) новая колонка с новым именем тоже дает ложь/истина(((((((((((((((((((
51 73
 
08.12.09
17:58
<Часть колонок формируется динамически> - показывай код.
52 Viktosha
 
08.12.09
18:01
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
   
       
   
   Отказ = Не УправлениеСертификациейНоменклатуры.ИспользоватьСертификациюНоменклатуры(Истина);

   ДокументВводитсяНаОснованииПотоком = ложь;

   ВидОперации = Перечисления.ВидыОперацийИспытаний.ПоПартиям;
   ОчереднойНомерКолонки = 3;    
       
    мСоответствиеПоказателей = Новый Соответствие;
    Для Каждого Строка Из Показатели Цикл
        НомерСоответствияТекущейКолонки = Показатели.Индекс(Строка);
        мСоответствиеПоказателей.Вставить(Строка.Образец, НомерСоответствияТекущейКолонки);
        Для КолПовторов=1 по Испытание.КоличествоПовторов Цикл
                Если Испытания.Колонки.Найти("Показатель" +Строка(КолПовторов)+Строка(Строка.Образец)+ НомерСоответствияТекущейКолонки) = Неопределено Тогда
                    Испытания.Колонки.Добавить("Показатель" +Строка(КолПовторов)+Строка(Строка.Образец)+ НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный)), "Образец" +Строка(КолПовторов)+Строка(Строка.Образец), 10);
                КонецЕсли;
        КонецЦикла;
    КонецЦикла;
   
КонецПроцедуры
53 vmv
 
08.12.09
18:01
(50) да просто строковую колонку объяви с длиной 0 и пропиши в "данные" имя булевой колонки, которая реально будет инициализироваться Ложь/Истина, причем, саму булеву сделай невидимой.

Ну и в эту строковую в свойства

Колонка.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
54 Viktosha
 
08.12.09
18:02
Процедура ОбновитьСоставКолонок()

   // Надо расположить все нужные колонки в правильном порядке.
   // Сначала должна идти колонка "Код".
   КолонкиТаблицыЦен = Испытания.Колонки;
   ОчереднойНомерКолонки = 0;
   
   ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Партия");
   СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
 
   ТекущаяКолонка = КолонкиТаблицыЦен.Найти("ПоказательИспытания");
   СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

   
   Для Каждого СтрокаТипаЦен Из Показатели Цикл
       Если НЕ ЗначениеЗаполнено(СтрокаТипаЦен.Образец) Тогда
           Продолжить;
       КонецЕсли;

       НомерСоответствияТекущейКолонки = мСоответствиеПоказателей[СтрокаТипаЦен.Образец];
       Если НомерСоответствияТекущейКолонки = Неопределено Тогда
           НомерСоответствияТекущейКолонки = мСоответствиеПоказателей.Количество();
           мСоответствиеПоказателей.Вставить(СтрокаТипаЦен.Образец, мСоответствиеПоказателей.Количество());
       КонецЕсли;

       // Цена.
        Для КолПовторов=1 по Испытание.КоличествоПовторов Цикл
           
       ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Показатель" +Строка(КолПовторов)+Строка(СтрокаТипаЦен.Образец)+ НомерСоответствияТекущейКолонки);
       Если ТекущаяКолонка = Неопределено Тогда // надо вставить
           КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "Показатель" +Строка(КолПовторов)+Строка(СтрокаТипаЦен.Образец)+ НомерСоответствияТекущейКолонки,  Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный)), "Образец" +Строка(КолПовторов)+Строка(СтрокаТипаЦен.Образец), 10);
           ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;  
       Иначе
           СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
       КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Значение");
   СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
   ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Соответствует");
   СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
   
   // Все, что за пределами, надо удалить.
   Для НомерУдаляемойКолонки = ОчереднойНомерКолонки По КолонкиТаблицыЦен.Количество() - 1 Цикл
       КолонкиТаблицыЦен.Удалить(ОчереднойНомерКолонки);
   КонецЦикла;

   ЭлементыФормы.Испытания.СоздатьКолонки();

КонецПроцедуры
55 73
 
08.12.09
18:03
А ЭТО ЧТО?

ЭлементыФормы.Испытания.СоздатьКолонки();
56 73
 
08.12.09
18:04
(55)+ Прочитай (49) еще раз.
57 vmv
 
08.12.09
18:04
после ЭлементыФормы.Испытания.СоздатьКолонки();

вызывай

УстановитьРежимФлажкаКолонкиТабличногоПоля(Колонки, КолонкаИмя, ТолькоПросмотр , ТриСостояния);
58 vmv
 
08.12.09
18:06
вернее, в этом случае

УстановитьРежимФлажкаКолонкиТабличногоПоля(ЭлементыФормы.Испытания.Колонки, "<ИмяБулевой>", Ложь , Ложь);
59 73
 
08.12.09
18:07
(57)+ Или после допиши:

   ЭлементыФормы.Испытания.СоздатьКолонки();

   ЭлементыФормы.Испытания.Колонки.Соответствует.Данные              = "";
   ЭлементыФормы.Испытания.Колонки.Соответствует.ДанныеФлажка        = "Соответствует";
   ЭлементыФормы.Испытания.Колонки.Соответствует.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
60 vmv
 
08.12.09
18:09
да вообще команда СоздатьКолонки() "сбивает" все)

после нее надо программно перенастраивать и ширину и видимость, и доступность и прочие прелести универсализма. Я тож раньше этим методом злоупотредлял, потом понял - он того не стоит)
61 Abracadabra
 
08.12.09
18:10
Во, для образца:
http://slil.ru/28313186
62 Viktosha
 
08.12.09
18:11
Спасибо большое 73 и vmv, все получилось. А я думала что создатьКолонки() создает только те, которые я действительно создаю, но не трогает те, которые уже есть на форме. Еще раз спасибо)))))))))))))))))))))