Работа с элементом ТабличноеПоле
11.05.2010
15:18
#1
Всем, здравствуйте! В первой колонке табличного поля у меня флажок, подскажите как к нему добраться?
Спасибо за помощь.
Спасибо за помощь.
11.05.2010
15:36
#2
Какой странный вопрос. Флажок, если это не картинка - всегда имеет конкретные данные.
11.05.2010
15:47
#3
"Вот в таком коде условие не выполняется
номерВыбСтр = -1;
Для счетчик = 0 По ЭлементыФормы.ДоговораТП.Колонки.Количество() - 1 Цикл
Если ЭлементыФормы.ДоговораТП.Колонки[0] = Истина Тогда
номерВыбСтр = счетчик;
КонецЕсли;
КонецЦикла;
"
номерВыбСтр = -1;
Для счетчик = 0 По ЭлементыФормы.ДоговораТП.Колонки.Количество() - 1 Цикл
Если ЭлементыФормы.ДоговораТП.Колонки[0] = Истина Тогда
номерВыбСтр = счетчик;
КонецЕсли;
КонецЦикла;
"
11.05.2010
16:49
#4
"Странный код - из него даже не понятно, что пытаетесь сделать.
> Вот в таком коде условие не выполняется
> номерВыбСтр = -1;
> Для счетчик = 0 По ЭлементыФормы.ДоговораТП.Колонки.Количество() - 1 Цикл
это как понимать? Взять нулевую колонку, а строка какая? К тому же вы работаете с элементами формы, а тогда еще надо указать Значение (ЭлементыФормы.ДоговораТП[НомерСтроки][НомерКолонки].Значение). К тому же не ясно зачем счетчик, если в условии не фигурирует.
> Если ЭлементыФормы.ДоговораТП.Колонки[0] = Истина Тогда
> номерВыбСтр = счетчик;
> КонецЕсли;
> КонецЦикла;
>
Если обратить внимание на вашу переменную номерВыбСтр, получается, что ищите выбранную строку. Таким циклом (даже если бы он был правильный) - найдете последнюю выбранную строку. Если же нужна текущая, то чем не устраивает ЭлементыФормы.ДоговораТП.ТекущаяСтрока?"
> Вот в таком коде условие не выполняется
> номерВыбСтр = -1;
> Для счетчик = 0 По ЭлементыФормы.ДоговораТП.Колонки.Количество() - 1 Цикл
это как понимать? Взять нулевую колонку, а строка какая? К тому же вы работаете с элементами формы, а тогда еще надо указать Значение (ЭлементыФормы.ДоговораТП[НомерСтроки][НомерКолонки].Значение). К тому же не ясно зачем счетчик, если в условии не фигурирует.
> Если ЭлементыФормы.ДоговораТП.Колонки[0] = Истина Тогда
> номерВыбСтр = счетчик;
> КонецЕсли;
> КонецЦикла;
>
Если обратить внимание на вашу переменную номерВыбСтр, получается, что ищите выбранную строку. Таким циклом (даже если бы он был правильный) - найдете последнюю выбранную строку. Если же нужна текущая, то чем не устраивает ЭлементыФормы.ДоговораТП.ТекущаяСтрока?"
11.05.2010
17:01
#5
"Мне не понятно как работать с ТаблицейЗначений. Если это аналог DataTable в С#, то сходства в использовании я не вижу. Я изменил цикл т.о.:
номерВыбСтр = -1;
счетчик = 0;
Для каждого СтрТаб Из ДоговораТП Цикл
ЗначениеФлажка = СтрТаб.Отметка; //отметка - имя колонки
Если ЗначениеФлажка = Истина Тогда
номерВыбСтр = счетчик;
КонецЕсли;
счетчик = счетчик + 1;
КонецЦикла;
Как тогда должен выглядеть код? У меня была мысль использовать событие "Выбор"
"
номерВыбСтр = -1;
счетчик = 0;
Для каждого СтрТаб Из ДоговораТП Цикл
ЗначениеФлажка = СтрТаб.Отметка; //отметка - имя колонки
Если ЗначениеФлажка = Истина Тогда
номерВыбСтр = счетчик;
КонецЕсли;
счетчик = счетчик + 1;
КонецЦикла;
Как тогда должен выглядеть код? У меня была мысль использовать событие "Выбор"
"
11.05.2010
17:15
#6
"> Как тогда должен выглядеть код? У меня была мысль использовать событие "Выбор"
А что вы пытаетесь сделать? Событие выбор возникает при двойном щелчке на поле (входе в редактирование).
Что же вам надо?
Получить текущую строку? Тогда ЭлементыФормы.ДоговораТП.ТекущаяСтрока
Получить номер последней строки с Отметкой - тогда ваш цикл правильный.
Получить первый номер строки с Отметкой - тогда надо бы прервать цикл.
Тоже самое, что у вас, только без счетчика:
> номерВыбСтр = -1;
> Для каждого СтрТаб Из ДоговораТП Цикл
> ЗначениеФлажка = СтрТаб.Отметка; //отметка - имя колонки
> Если ЗначениеФлажка = Истина Тогда
номерВыбСтр = ДоговораТП.Индекс(СтрТаб);
> КонецЕсли;
> КонецЦикла;
"
А что вы пытаетесь сделать? Событие выбор возникает при двойном щелчке на поле (входе в редактирование).
Что же вам надо?
Получить текущую строку? Тогда ЭлементыФормы.ДоговораТП.ТекущаяСтрока
Получить номер последней строки с Отметкой - тогда ваш цикл правильный.
Получить первый номер строки с Отметкой - тогда надо бы прервать цикл.
Тоже самое, что у вас, только без счетчика:
> номерВыбСтр = -1;
> Для каждого СтрТаб Из ДоговораТП Цикл
> ЗначениеФлажка = СтрТаб.Отметка; //отметка - имя колонки
> Если ЗначениеФлажка = Истина Тогда
номерВыбСтр = ДоговораТП.Индекс(СтрТаб);
> КонецЕсли;
> КонецЦикла;
"
11.05.2010
17:19
#7
Как я предполагал раньше: для удобства в ТабличноеПоле добавил флажок, бухгалтер отмечает соответствующую строку, нажимает на кнопку "ОК", в цикле идет перебор строк, где выполняется проверка состояния флажка (и выбор номера строки откуда брать данные для передачи в др форму).
11.05.2010
17:29
#8
"1. За табличным полем стоит Таблица значений. Я надеюсь, что Отметка это не просто имя колонки, но тоже самое написано в свойстве ДанныеФлажка и имеется соответствующее поле в Таблице значений (заметьте, для Табличного поля и Таблицы значений могут не совпадать количество колонок, их имена. Табличное поле опирается на то что указано в свойствах Данные и ДанныеФлажка)
2. Предположим, что 1-е выполняется. В принципе ваш цикл правильный. Маленькое дополнение:
МасСтр = Новый Массив;
Для каждого СтрТаб Из ДоговораТП Цикл
ЗначениеФлажка = СтрТаб.Отметка; //отметка - имя колонки
Если ЗначениеФлажка = Истина Тогда
МасСтр.Добавить (СтрТаб);
КонецЕсли;
КонецЦикла;
//Теперь можете передавать массив МасСтр куда угодно."
2. Предположим, что 1-е выполняется. В принципе ваш цикл правильный. Маленькое дополнение:
МасСтр = Новый Массив;
Для каждого СтрТаб Из ДоговораТП Цикл
ЗначениеФлажка = СтрТаб.Отметка; //отметка - имя колонки
Если ЗначениеФлажка = Истина Тогда
МасСтр.Добавить (СтрТаб);
КонецЕсли;
КонецЦикла;
//Теперь можете передавать массив МасСтр куда угодно."
Читают тему
(гостей: 1)