Имя: Пароль:
1C
 
флаг выбора на форме списка справочника
0 черный монах
 
23.05.11
22:00
Добрый вечер...
Проблема следующая, требуется добавить на форму списка флаг,
много раз обсуждалось на форуме как добавить текстовое поле и вывести пиктограмму, это все понятно и разжевано...

Мне требуется чтоб пиктограмма с галкой появлялась по клику на нужной ячейке и ИД при появлении галки становился равен 1 а если нет пиктограммы то =0
1 черный монах
 
23.05.11
22:05
ап
2 vicof
 
23.05.11
22:07
на таблицу значений вешаешь функцию, пиктограмму
И смотришь ,если текущая ячейка = твоей ячейке, меняешь свои ИД и пиктограмму меняешь.
3 черный монах
 
23.05.11
22:10
если не трудно приведите пример
4 Torquader
 
23.05.11
22:14
Можно даже не пиктограмму, а пробел и Х.
Функция ВывестиЗначениеФлага(КакиеТоПараметры)
Если УдовлетворяетУслугию(КакиеТоПараметры)=1 Тогда Возврат "Х";
Возврат " ";
КонецФункции

Теперь осталось отловить "нажатие" на данном столбце, чтобы изменить флаг.
5 vicof
 
23.05.11
22:15
Процедура ЩелчокНаКолонке()
   Значение = ТаблицаДоговоров.ПолучитьЗначение(ТаблицаДоговоров.ТекущаяСтрока(), ТаблицаДоговоров.ТекущаяКолонка());
   Если (ТаблицаДоговоров.ТекущаяКолонка() = "Агент") или (ТаблицаДоговоров.ТекущаяКолонка() = "Брокер") Тогда
       АгентИлиБрокер = СоздатьОбъект("Справочник.Агенты_Брокеры");
       АгентИлиБрокер.НайтиЭлемент(Значение);
       ОткрытьФорму(АгентИлиБрокер.ТекущийЭлемент());
   ИначеЕсли ТаблицаДоговоров.ТекущаяКолонка() = "ДоговорСтрахования" Тогда
       Договор = СоздатьОбъект("Справочник.ДоговораСтрахования");
       Договор.НайтиЭлемент(Значение);
       ОткрытьФорму(Договор.ТекущийЭлемент());    
   ИначеЕсли ТаблицаДоговоров.ТекущаяКолонка() = "Страхователь" Тогда
       Страхователь = СоздатьОбъект("Справочник.Контрагенты");
       Страхователь.НайтиЭлемент(Значение);
       ОткрытьФорму(Страхователь.ТекущийЭлемент());
   КонецЕсли;    
   
КонецПроцедуры // ЩелчокНаКолонке
6 черный монах
 
23.05.11
22:24
(4)Теперь осталось отловить "нажатие" на данном столбце, чтобы изменить флаг.

можете показать каким образом?
7 andrewks
 
23.05.11
22:25
(6) запихни процедуру в ТЗ
8 andrewks
 
23.05.11
22:25
т.е. вызов процедуры
9 Torquader
 
23.05.11
22:29
(6) У него список справочника, а не ТЗ. Там надо через активный элемент формы "допрашивать" и обработку нажатия включить.
10 черный монах
 
23.05.11
22:30
да список справочника
11 andrewks
 
23.05.11
22:34
справочник большой?
12 черный монах
 
23.05.11
22:36
нет
13 Torquader
 
23.05.11
22:37
(10) А изменять хочется при редактировании в диалоге или просто по щелчку ?
14 черный монах
 
23.05.11
22:40
(13)ну мне важно по щелчку изменять пиктограмму и присваивать ИД значение
15 andrewks
 
23.05.11
22:40
если (13) - нет, то
можно запросом при открытии дёргать данные, пихать в ТЗ, и там всё делать. это если штатно

или ТП можно заюзать. это если нештатно
16 Torquader
 
23.05.11
22:42
Просто, если мы присваиваем по щелчку, то в "ПриОткрытии":
Форма.ОбработкаВыбораЗначения(1);
// чтобы вызывалась процедура при выборе значения
Далее создать процедуру
Процедура ПриВыбореСтроки()
Если Форма.АктивныйЭлемент()="НашФлажок" Тогда
 ИзменитьЗначениеФлажка(ТекущийЭлемент);
 Возврат;
КонецЕсли;
КонецПроцедуры
17 черный монах
 
23.05.11
22:46
(16) а если просто при открытии?
18 черный монах
 
23.05.11
22:47
без выбора значения?
19 Torquader
 
23.05.11
22:48
При открытии чего ?
20 черный монах
 
23.05.11
22:51
(16)вы пишите: Просто, если мы присваиваем по щелчку, то в "ПриОткрытии"

логично что при открытии формы справочника
21 Torquader
 
23.05.11
22:53
(20) При открытии формы списка мы говорим системе (то есть 1С), что мы хотим, чтобы вместо открытия формы элемента справочника вызывалась процедура "ПриВыбореСтроки", где мы уже будем что-то менять, но эта процедура нужна только для того, чтобы щелчок на форме списка справочника не открывал его элементы.
22 черный монах
 
23.05.11
23:02
всем спасибо
23 Torquader
 
23.05.11
23:58
Кстати, забыл немного, но у объекта форма есть метод "ТекущаяКолонка()" который возвращает идентификатор текущей колонки многострочной части (а мне почему-то показалось, что его нет).