Имя: Пароль:
1C
1С v8
Флажок в табличном поле - табл. части
,
0 БабкаЕжка
 
26.12.11
08:21
Есть табличная часть документа, в ней есть колонка "факт. количество"  и нужно добавить колонку "Все поступило"(флажок),при установке флажка  должна заполняться колонка "факт. кол-во" значением из колонки "количество", для удобства и наглядности. Не хочется делать колонку с флажком - реквизитом таб. части(хотя с ним всё получилось). Если делаю это просто колонкой, делаю след. свойства:
ЭлементУправления = флажок,
При выводе строки: ОтображатьФлажок = Истина, как при изменении флажка изменить значение в другой колонке?
В процедуре "При изменении флажка" таб. поля?
1 kosts
 
26.12.11
08:34
(0) > В процедуре "При изменении флажка" таб. поля?
Ну да
2 БабкаЕжка
 
26.12.11
08:37
а как добраться до текущего значения флага?
3 kosts
 
26.12.11
08:42
(2)

вот еще вариант через ПередНачаломИзменения

Процедура ДокументСписокПередНачаломИзменения(Элемент, Отказ)
   
   Если ЭлементыФормы.ДокументСписок.ТекущаяКолонка.Имя = "Флажок1" Тогда
       Отказ = Истина;
       Ссылка = ЭлементыФормы.ДокументСписок.ТекущиеДанные.Ссылка;
       Если СписокДокументовДляОбработки.Получить(Ссылка) = Неопределено Тогда
           СписокДокументовДляОбработки.Вставить(Ссылка, Ссылка);
       Иначе
           СписокДокументовДляОбработки.Удалить(Ссылка);
       КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры
4 БабкаЕжка
 
26.12.11
08:56
(3) не поняла.. как это к моему вопросу относится
мне нужно при изменении флажка считать его значение и если оно истина -  установить значение в соотв. колонке
5 БабкаЕжка
 
26.12.11
09:08
ап
6 ice777
 
26.12.11
09:11
(5) как в (1) смотри значение элемента.
7 БабкаЕжка
 
26.12.11
09:17
(6) ТоварыПриИзмененииФлажка(Элемент, Колонка)
Элемент - это табличное поле, т.к. колонка не привязана к данным, то и значение иЗ Элемент.ТекущаяСтрока и Элемент.ТекущиеДанные - не получить...
8 ice777
 
26.12.11
09:26
(7) да все можно получить и из ТЧ и из элемента ТЧ.
в (1) - случай обработчика не ТЧ, а поля ТЧ.
9 PuhUfa
 
26.12.11
09:35
Элемент.Колонки.ИмяКолонкиСФлажком.ЭлементУправления.Значение
10 БабкаЕжка
 
26.12.11
09:56
(9) всегда значение = ложь
11 МишельЛагранж
 
26.12.11
10:05
платформа 8.1?
12 БабкаЕжка
 
26.12.11
10:10
(11)8.2, толстый клиент
13 PuhUfa
 
26.12.11
10:11
(10) не верю (с)

Процедура ТабличнаяЧасть1ПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
   Сообщить(Элемент.Колонки.ИмяКолонкиСФлажком.ЭлементУправления.Значение);
КонецПроцедуры

http://s41.radikal.ru/i094/1112/ec/316291fd8b86.jpg
14 PuhUfa
 
26.12.11
10:12
+(13) сори за кривой линк... фиг знает как так он вышел
15 ice777
 
26.12.11
10:18
(10) может, не к ТЧ обращаешься?
16 БабкаЕжка
 
26.12.11
10:25
(15)Табличное поле связано с табличной частью, но колонка с флажком не привязана к данным Таб. части.
(10) при изменении флажка, не связанного с ТЧ, я в процедуру ТабличнаяЧасть1ПриОкончанииРедактирования( ) вообще не попадаю, только в ТоварыПриИзмененииФлажка(Элемент, Колонка)
Расширение элементов управления, расположенных в поле табличного документа (Extension for controls located in a spreadsheet document field)
Значение (Value)
Использование:

Чтение и запись.
Описание:

Тип: Произвольный. Предоставляет доступ к значению, которое редактируется в элементе управления.

Доступность:

Толстый клиент.
Примечание:

Только для элементов управления, поддерживающих связь с данными.
17 PuhUfa
 
26.12.11
10:39
(16)
Процедура ТабличнаяЧасть1ИмяКолонкиСФлажкомПриИзменении(Элемент)
   Сообщить(Элемент.Значение);
КонецПроцедуры

да/нет/да/нет
18 hhhh
 
26.12.11
10:45
(17) в обычном приложении не прокатит.
19 PuhUfa
 
26.12.11
10:57
Хм... сейчас посмотрел, действительно, если делать через:
Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   ОформлениеСтроки.Ячейки.ИмяКолонкиСФлажком.ОтображатьФлажок = истина;
КонецПроцедуры

то тогда:
Процедура ТабличнаяЧасть1ПриИзмененииФлажка(Элемент, Колонка)
   Сообщить(Элемент.Колонки.ИмяКолонкиСФлажком.ЭлементУправления.Значение);
КонецПроцедуры

всегда сообщает: Нет
20 PuhUfa
 
26.12.11
11:17
А данные флажка не надо что ли запоминать при сохранении документа?
21 БабкаЕжка
 
26.12.11
11:19
(20)нет, флажок только отображает, что значения колонки совпали + для быстрого заполнения колонки2 значением из колонки1.
22 PuhUfa
 
26.12.11
11:26
(21) так тогда в приоткрытии тебе придется еще пробигать по ТЧ, сравнивать значения колонок и выставлять флажки при их совпадении. Не проще все же флажок привязать тогда к данным?
23 kosts
 
26.12.11
19:33
Вот готовое рабочее решение


Процедура ИТПриПолученииДанных(Элемент, ОформленияСтрок)
   
   Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
       ДанныеСтроки = ОформлениеСтроки.ДанныеСтроки;
       ОформлениеСтроки.Ячейки.Флаг.УстановитьФлажок(ДанныеСтроки.План <> 0 и (ДанныеСтроки.План = ДанныеСтроки.Факт));
   КонецЦикла;
   
КонецПроцедуры

Процедура ИТПриИзмененииФлажка(Элемент, Колонка)
   
   ДанныеСтроки = Элемент.ТекущиеДанные;
   Если Колонка.Имя = "Флаг" Тогда
       Если ДанныеСтроки.План = ДанныеСтроки.Факт Тогда
           ДанныеСтроки.Факт = 0;
       Иначе
           ДанныеСтроки.Факт = ДанныеСтроки.План;
       КонецЕсли;        
   КонецЕсли;
   
КонецПроцедуры

Колонка = ЭлементыФормы.ИТ.Колонки.Вставить(ЭлементыФормы.ИТ.Колонки.Индекс(ЭлементыФормы.ИТ.Колонки.Факт) + 1, "=");
Колонка.Имя = "Флаг";
Колонка.Ширина = 3;
Колонка.ИзменятьПозицию = Ложь;
Колонка.ИзменениеРазмера = ИзменениеРазмераКолонки.НеИзменять;
Колонка.ИзменятьВидимость = Ложь;
Колонка.ИзменятьНастройку = Ложь;
Колонка.РежимРедактирования =  РежимРедактированияКолонки.Непосредственно;