Имя: Пароль:
1C
1C 7.7
v7: Как пользоваться событием ПриВыбореФлажка 1С++
,
0 Adecvator
 
11.09.12
18:23
Прочитал кучу умных статей, но ни одного куска кода с использованием УстановитьФлажок? Может может кто поделиться?
1 ADirks
 
12.09.12
08:35
к примеру

Процедура ПоказатьФлажок(ОформлениеСтроки, ДанныеСтроки, ИмяКолонки) Экспорт
   Сам = Сам(Контекст);
   
   Попытка
       Колонка = Сам.Колонки.Получить(ИмяКолонки);
   Исключение
       Возврат;
   КонецПопытки;
   Если ПустоеЗначение(Колонка) = 1 Тогда
       Возврат;
   КонецЕсли;
   
   Если Колонка.Видимость = 1 Тогда
       Ячейка = ОформлениеСтроки.Ячейки.Получить(ИмяКолонки);
       Ячейка.ОтображатьТекст = 0;
       Ячейка.ОтображатьФлажок = 1;
       Попытка
           Ячейка.ЗначениеФлажка   = ДанныеСтроки.Получить(ИмяКолонки);
       Исключение
       КонецПопытки;
   КонецЕсли;
КонецПроцедуры

Процедура ПоказатьДату(ОформлениеСтроки, ДанныеСтроки, ИмяКолонки) Экспорт
   Сам = Сам(Контекст);
   
   Попытка
       Колонка = Сам.Колонки.Получить(ИмяКолонки);
   Исключение
       Возврат;
   КонецПопытки;
   Если ПустоеЗначение(Колонка) = 1 Тогда
       Возврат;
   КонецЕсли;
   
   Если Колонка.Видимость = 1 Тогда
       Ячейка = ОформлениеСтроки.Ячейки.Получить(ИмяКолонки);
       _Дата = ДанныеСтроки.Получить(ИмяКолонки);
       Если ПустоеЗначение(_Дата) = 1 Тогда
           Ячейка.Текст = "";
       ИначеЕсли _Дата = '01.01.1753' Тогда
           Ячейка.Текст = "";
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

Процедура ПриВыводеСтроки(ОформлениеСтроки, ДанныеСтроки, ТипРегиона) Экспорт
   Если сзФлажки <> "" Тогда
       Для н = 1 По сзФлажки.РазмерСписка() Цикл
           ИмяКолонки = сзФлажки.ПолучитьЗначение(н);
           ПоказатьФлажок(ОформлениеСтроки, ДанныеСтроки, ИмяКолонки);
       КонецЦикла;
   КонецЕсли;
   
   Если сзДаты <> "" Тогда
       Для н = 1 По сзДаты.РазмерСписка() Цикл
           Имя = сзДаты.ПолучитьЗначение(н);
           ПоказатьДату(ОформлениеСтроки, ДанныеСтроки, Имя)
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры


Процедура Пометка(тзДанные, нСтр, ИмяКолонки, Знач Флажок = -1)
   Если Флажок = -1 Тогда
       Флажок = тзДанные.ПолучитьЗначение(нСтр, ИмяКолонки);
       Флажок = (Флажок + 1) % 2;
   КонецЕсли;
   тзДанные.УстановитьЗначение(нСтр, ИмяКолонки, Флажок);
КонецПроцедуры

Функция ПриВыбореФлажка(нСтр, Кол, ТипРегиона) Экспорт
   Сам = Сам(Контекст);
   
   ИмяКолонки = Кол.Имя;
   Если сзРедактируемыеФлажки.НайтиЗначение(ИмяКолонки) = 0 Тогда
       Возврат 0;
   КонецЕсли;

   Если ТипРегиона = 3 Тогда
       Флажок = тзДанные.ПолучитьЗначение(нСтр, ИмяКолонки);
       Флажок = (Флажок + 1) % 2;
       
       Строки = Сам.ВыделенныеСтроки;
       Количество = Строки.Количество();
       Для н = 0 По Количество-1 Цикл
           нСтр = Строки.Получить(н);
           Пометка(тзДанные, нСтр, ИмяКолонки, Флажок);
       КонецЦикла;

   Иначе
       Пометка(тзДанные, нСтр, ИмяКолонки);
   КонецЕсли;
   
   фДанныеИзменены = 1;

   Сам.ОбновитьСтроки();
   
   Возврат 1;
КонецФункции
2 antoneus
 
12.09.12
09:48
3 antoneus
 
12.09.12
09:50
не, вот эта ссылка http://rghost.ru/40318279
4 Adecvator
 
12.09.12
10:03
(1) Функция Сам предполагается объект ТабличноеПоле. Проблема функция ПриВыбореФлажка не вызывается из формы, как и другие процедуры, может надо какие-то разместить в глобальнике?
5 Adecvator
 
12.09.12
10:05
(3) код не много видоизменил в функции ПослеСозданияФормы():

оФорма = СоздатьОбъект("РасширениеФормы");
ТП = оФорма.ПолучитьАтрибут("кнТП").СоздатьЭлементУправления("ТабличноеПоле");

так ругается на то что не обнаружено поле агрегатного объекта - РежимВыделения :(
6 antoneus
 
12.09.12
10:06
(5) 1сpp какой версии? на 3.2.3.19 всё работает.
7 Adecvator
 
12.09.12
10:17
версия уже старенькая - 1cpp2037
8 antoneus
 
12.09.12
10:18
дык обнови, там много ещё всяких ништяков появилось)
9 Adecvator
 
12.09.12
10:20
(8) ссылку можешь дать или выложить, если не трудно :)
10 Adecvator
 
12.09.12
10:21
на http://www.1cpp.ru/index.php/Download, нашел только - Рекомендованный стабильный релиз с раздельной загрузкой FormEx: 2.5.0.7
11 smaharbA
 
12.09.12
10:23
не понял - а нафига это надо ?
12 antoneus
 
12.09.12
10:24
13 Adecvator
 
12.09.12
10:38
(10)Вот старая загрузка 1С++, простая замена файла 1cpp2037.dll на более новую версию не канает :(

Результат=Загрузчик.ЗагрузитьВК(глКаталогDLL+"1cpp2037.dll", "Addin.1C++=fde5ae76-00b3-4bdb-921b-d5937997b1b7");
14 Ёпрст
 
12.09.12
10:42
(13) а нафига тебе загрузчик вк впёрся ?
15 Ёпрст
 
12.09.12
10:42
он уже давно не актуален.
16 Ёпрст
 
12.09.12
10:43
пиши проще:

ЗагрузитьВнешнююКомпоненту("1cpp.dll"); и наслаждайся
17 Adecvator
 
12.09.12
10:46
(16) а как же на счет регистрации компонент, которые не проходят без админских прав. У нас есть условия:

// Работает с 1С++
Если ЗагрузитьВнешнююКомпоненту(глКаталогDLL+"vkloader.dll")=1 Тогда
    Загрузчик = СоздатьОбъект("ЗагрузчикВК");
    Результат = Загрузчик.ЗагрузитьВК(глКаталогDLL+"1cpp2037.dll","Addin.1C++=fde5ae76-00b3-4bdb-921b-d5937997b1b7");
    //Результат= Загрузчик.ЗагрузитьВК(глКаталогDLL+"1CPP32320.dll", "Addin.1C++=fde5ae76-00b3-4bdb-921b-d5937997b1b7");
    гл1CPP = 1;
Иначе
    гл1CPP= ЗагрузитьВнешнююКомпоненту(глКаталогDLL+ "1cpp2037.dll");
    //гл1CPP= ЗагрузитьВнешнююКомпоненту(глКаталогDLL+ "1CPP32320.dll");
   КонецЕсли;
18 Ёпрст
 
12.09.12
10:49
(17) 1cpp и формексу сто лет в обед не нужна регистрация в реестре, собственно и на твои админские права им фиолетово, и на загрузчик тем более.
19 Salimbek
 
12.09.12
10:56
(10) Тут смотри: http://www.1cpp.ru/index.php/Main
раздел
----------------------------------
icpp/3.x (рекомендуется к использованию)

В начале 2008 года проект 1C++ портирован с MSVS 6.0 на MSVS 2005(2008) / Intel Compiler (IСL) / STLPort / Boost 1.35.0

Дальнейшее развитие идет под именем icpp (версии 3.x.x.x)
20 Adecvator
 
12.09.12
11:28
(16) После того как подгрузил 1CPP32320, не срабатывает процедура - ПослеОткрытия(), ПослеСозданияФормы(). Хотя ЗагрузитьВнешнююКомпоненту("1cpp.dll") вернула 1 :)
21 Adecvator
 
12.09.12
11:29
может чего не хватает?
22 Mikeware
 
12.09.12
11:29
(21) формекса?
23 Ёпрст
 
12.09.12
11:30
(21) не хватает формекса (formex.dll) - это его события.
24 Ёпрст
 
12.09.12
11:30
25 Adecvator
 
12.09.12
11:34
(24) Б... экстаз :)
26 Adecvator
 
12.09.12
11:54
(3) спасибо за обработку все заработало :)
27 Adecvator
 
12.09.12
13:25
(3) а подскажи пожалуйста, почему когда я решил переименовать твою переменную ТП на свою КККтттО, про форму тоже не забыл. У меня ничего не вышло :(
28 Adecvator
 
12.09.12
13:26
т.е. объект ТабличноеПоле создался по без флажков.
29 Adecvator
 
12.09.12
13:30
все понял, оказывается, надо меня префикс процедуры: ПриВыбореФлажка, ПриВыводеСтроки.
30 Ёпрст
 
12.09.12
14:15
(29) либо оборачивать события в класс
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.