Имя: Пароль:
1C
1C 7.7
v7: Установка элементов на форму программно
0 TDV
 
14.05.20
16:40
Возможно ли устанавливать разные элементы (флажок, выбор и тому подобное) программно на форму, если возможно то можно увидеть пример?
1 АЛьФ
 
14.05.20
16:47
2 Злопчинский
 
14.05.20
19:13
(1) а можно как-то в ТЧ документа и списках форм журналов/справочников -
1. менять программно положение колонок..?
2. задавать программно ширину колонок?
3 Mikeware
 
14.05.20
20:03
Динамическое добавление флажков "Упр" и "бух" на форму документа, если справочником разрешено использование этих  флажков в документ такого вида... Ну, как в документах УПП
(сами реквизиты - общие с отбором, ДокБух и ДокУпр)

И динамическое добавления флажка разрешеиня редактирования, если пользователю разрешено разрешать редактирование:-)


В перехватчике
////======================================================================
Функция Событие_ПослеОткрытия() Экспорт
    Если ТипОбъекта="Документ" Тогда
        ТекДок = КонтФормы.ТекущийДокумент();
        ДобавитьФлажкиУчета(КонтФормы);
        ДобавитьФлажокРазрешения(КонтФормы);
        ДобавитьФлажокЗапрещения(КонтФормы);
    ИначеЕсли ТипОбъекта="Справочник" Тогда
        ТекДок=КонтФормы.ТекущийЭлемент();
    КонецЕсли;  

    Если ЗакладкиСканов.ЗакладкиСканов_РазрешеныСканыОбъекта(ПолныйТипОбъекта)=1 Тогда
        ЗакладкиСканов.ЗакладкиСканов_СоздатьЗакладку(КонтФормы);
    КонецЕсли;  

    Если ТипОбъекта="Документ" Тогда  
        КонтФормы.Форма.Обновить(); //!!
        ФормаРасш.СбросМодифицированности();
    КонецЕсли;  
    Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы,"ПослеОткрытия");
КонецФункции

//======================================================================    
Процедура ДобавитьФлажкиУчета(Конт)
    //ФормаРасш = СоздатьОбъект("РасширениеФормы");
    //ФормаРасш.УстановитьФорму(КонтФормы.Форма);
    ВидДокумента=Конт.Вид();
    СпрПравил=СоздатьОбъект("Справочник.ПравилаБухУпр");
    Если СпрПравил.НайтиПоНаименованию(ВидДокумента,0,1)=0 Тогда // Нет правила для объекта      
        Возврат;
    КонецЕсли;

    Попытка
        Флажок = ФормаРасш.ПолучитьАтрибут("КДИР");
        СтильФлажка=Флажок.Стиль;
        
    Исключение
        СтильФлажка=1073889283;
    КонецПопытки;
    ШиринаФ=ФормаРасш.Ширина;    
    ВысотаФ=ФормаРасш.Высота;
    Попытка
        АттрДатаДок=ФормаРасш.ПолучитьАтрибут("ДатаДок");
        ЛевК_АДД=0;
        ВерхК_АДД=0;
        ШирК_АДД=0;
        ВысК_АДД=0;
        СлойДатаДок=АттрДатаДок.Слой;
        АттрДатаДок.ПолучитьКоординаты(ЛевК_АДД, ВерхК_АДД, ШирК_АДД, ВысК_АДД);
        ЛевоК=ЛевК_АДД+ШирК_АДД+2;
        ВерхК=?(ВерхК_АДД>0,ВерхК_АДД,-ВерхК_АДД);    
        ШиринаК=Цел(ШирК_АДД/2);
        ВысотаК=ВысК_АДД;
    Исключение
        ШиринаК=20;
        ЛевоК=2;
        ВерхК=2;
        ВысотаК=10;
        СлойДатаДок="Основной";
    КонецПопытки;
    ф_флУпр_Идентификатор="флДокУпрУчет";
    ф_флУпр=ФормаРасш.ДобавитьАтрибут("флДокУпрУчет",12,"Число");
    ф_флУпр.Слой=СлойДатаДок;
    ф_флУпр.УстановитьКоординаты(ЛевоК, ВерхК, ШиринаК, ВысотаК);    
    ф_флУпр.Формула="ПриНажатииФлагаУчета"+"(Контекст,"""+ф_флУпр.Идентификатор+""",""ДокУпр"")";
    ф_флУпр.Заголовок="Упр";
    ф_флУпр.Подсказка="Документ по упручету";
    ф_флУпр.Стиль=СтильФлажка;
    Зн=Конт.ПолучитьАтрибут("ДокУпр");
    ф_флУпр.Значение=Зн;
    ф_флБух_Идентификатор="флДокБухУчет";
    ф_флБух=ФормаРасш.ДобавитьАтрибут("флДокБухУчет",12,"Число");
    ф_флБух.Слой=СлойДатаДок;
    ЛевоК=ЛевоК+2+ШиринаК;  
    ф_флБух.УстановитьКоординаты(ЛевоК, ВерхК, ШиринаК, ВысотаК);    
    ф_флБух.Формула="ПриНажатииФлагаУчета"+"(Контекст,"""+ф_флБух.Идентификатор+""",""ДокБух"")";
    ф_флБух.Заголовок="Бух";
    ф_флБух.Подсказка="Документ по бухучету";
    ф_флБух.Стиль=СтильФлажка;
    зн=Конт.ПолучитьАтрибут("ДокБух");
    ф_флБух.Значение=Зн;
    КонтФормы.Форма.ИспользоватьСлой(СлойДатаДок,1);
КонецПроцедуры
//======================================================================    
Процедура ДобавитьФлажокРазрешения(Конт)
    ВидДокумента=Конт.Вид();
    СпрПравил=СоздатьОбъект("Справочник.ПравилаЗапрета");
    Если СпрПравил.НайтиПоНаименованию(ВидДокумента,0,1)=0 Тогда // Нет правила для объекта      
        Возврат;
    КонецЕсли;  
    Если СпрПравил.ПометкаУдаления()=1 Тогда
        Возврат;
    КонецЕсли;  
    Если СпрПравил.Запрещать=1  Тогда
        Возврат;  
    КонецЕсли;
    Попытка
        Флажок = ФормаРасш.ПолучитьАтрибут("КДИР");
        СтильФлажка=Флажок.Стиль;
        
    Исключение
        СтильФлажка=1073889283;
    КонецПопытки;
    ШиринаФ=ФормаРасш.Ширина;    
    ВысотаФ=ФормаРасш.Высота;
    Попытка
        АттрДатаДок=ФормаРасш.ПолучитьАтрибут("ДатаДок");
        ЛевК_АДД=0;
        ВерхК_АДД=0;
        ШирК_АДД=0;
        ВысК_АДД=0;
        СлойДатаДок=АттрДатаДок.Слой;
        АттрДатаДок.ПолучитьКоординаты(ЛевК_АДД, ВерхК_АДД, ШирК_АДД, ВысК_АДД);
        ЛевоК=ЛевК_АДД+ШирК_АДД+2;
        ВерхК=?(ВерхК_АДД>0,ВерхК_АДД,-ВерхК_АДД);    
        ШиринаК=Цел(ШирК_АДД*2);
        ВысотаК=ВысК_АДД;
    Исключение
        ШиринаК=40;
        ЛевоК=2;
        ВерхК=2;
        ВысотаК=10;
        СлойДатаДок="Основной";
    КонецПопытки;      
    ф_флУпр_Идентификатор="флИзмененияРазрешены";
    ф_флУпр=ФормаРасш.ДобавитьАтрибут("флИзмененияРазрешены",12,"Число");
    ф_флУпр.Слой=СлойДатаДок;
    ф_флУпр.УстановитьКоординаты(ЛевоК, ВерхК+ВысотаК*1.2, ШиринаК, ВысотаК);    
    ф_флУпр.Формула="ПриНажатииФлагаУчета"+"(Контекст,"""+ф_флУпр.Идентификатор+""",""ИзмененияРазрешены"")";
    ф_флУпр.Заголовок="Изменения разрешены";
    ф_флУпр.Подсказка="Изменения документа разрешены";
    ф_флУпр.Стиль=СтильФлажка;
    Зн=Конт.ПолучитьАтрибут("ИзмененияРазрешены");
    ф_флУпр.Значение=Зн;                              
    ф_флУпр.Доступность=0;
    СтрокаРолей=СокрЛП(СпрПравил.РазрешающиеРоли);
    сз=глРазложить(СтрокаРолей);
    разрешаем=0;
    Для сч=1 По сз.РазмерСписка() Цикл
        Если глИграетРоль(сз.получитьЗначение(сч))=1 Тогда    
            //Сообщить("разрешено для роли "+сз.получитьЗначение(сч));
            разрешаем=разрешаем+1;
        КонецЕсли;
    КонецЦикла;
    Если разрешаем<>0 Тогда    
        ф_флУпр.Доступность=1;
    КонецЕсли;
    КонтФормы.Форма.ИспользоватьСлой(СлойДатаДок,0);    
    КонтФормы.Форма.ИспользоватьСлой(СлойДатаДок,1);    
КонецПроцедуры

//======================================================================
4 Злопчинский
 
14.05.20
20:06
особенно поянтно вот это
СтильФлажка=1073889283;
;-)
5 Mikeware
 
14.05.20
20:10
(4) магическое число от Ёпа :-)
6 Mikeware
 
14.05.20
20:16
(4) вообще, стиль нужно задавать числом. Но почему-то не во всех формах получалось. поэтому было взято значение стиля этого самого флажка КДИР...
вообще, тонкостей не помню, уж лет 5 прошло.
7 Mikeware
 
14.05.20
20:19
кому-то обещал почти год назад классы для подбора а-ля снеговик, но не было времени, вот только начал разгребать, поднял клюшки на ноуте - лепота. после идиотских УФ - все летает.
8 Злопчинский
 
14.05.20
21:23
(7) может, ну его нах, эту 8-ку..? организуем секту иеговистов 77 дня?
9 big
 
15.05.20
05:39
(8) Надо перенести ТиС на 8-ую платформу. И можно будет дальше спокойно жыть ))
10 ДенисЧ
 
15.05.20
06:39
МОжно, я сохраню эту ветку до зимы? Там дорожки посыпать буду...
11 MWWRuza
 
гуру
15.05.20
07:42
(7) лепота. после идиотских УФ - все летает.
(8) организуем секту иеговистов 77 дня?

+100500 :-)
12 vcv
 
15.05.20
08:07
(9) Где-то был на инфостарте такой проект. То ли разработка простой торговли на 1с8, то ли перенос ТиС на 1с8.
13 Mikeware
 
15.05.20
09:40
(10) у тебя собственной генерации нет?
(12) анафига? все равно все работают на более-менее типовых.
(9) "фарш невозможно провернуть назад". кроме простого ТиС еще и нормальная платформа нужна.
14 ДенисЧ
 
15.05.20
09:42
(13) Мне не хватает ))
15 Mikeware
 
15.05.20
09:49
(14) ограничивай себя в пространствах
16 ДенисЧ
 
15.05.20
09:52
(15) До зимы ещё долго, режим самоограничения закончится...
17 Mikeware
 
15.05.20
09:53
(16) так ты в Сахаре самоизолировался?
18 smitti911
 
15.05.20
10:16
19 smitti911
 
15.05.20
10:17
(18) 9- сообщение, не?
20 ДенисЧ
 
15.05.20
10:26
(17) Почему? Я у нас, в России... Но летом тут хватает...
21 trdm
 
15.05.20
10:57
(8) > может, ну его нах, эту 8-ку..? организуем секту иеговистов 77 дня?

Я бы согласился на 7.8 c нехилыми модификациями.
Ибо многое приходится делать через жопу.
22 big
 
15.05.20
11:10
(13) Ну, дык, платформа то будет 8.3, а "наполнение" ТиС-овское.
23 trdm
 
15.05.20
11:31
(4) > особенно поянтно вот это "СтильФлажка=1073889283;"
По хорошему надо было сделать объект типа структуры , где в названии - стили а в значениях - значения стилей. А потом просто дать прогу складывать их.
24 Arbuz
 
15.05.20
13:38
(21) да-да, помечтаем. пусть 1с сорцы клюшек на гитхаб выложит и отпустит. разойдись нога - раззудись плечо! на любом утюге со сверхзвуковой скоростью - нативная поддержка скулайта, ооп из коробки, нормальный сетевой стек, управление исполнением потоков, интерфейс внешним модулем в виарэмэль. преферанс, комсомолки. а там и Сталин в кремлин вернётся.
25 Mikeware
 
15.05.20
14:43
(18) дык этта... это я и был. про это и говорю.
26 Mikeware
 
15.05.20
14:44
(23) да это уже делалось на "вотщазз", уже переход на снеговика маячил, делать по человечески лениво было.
Или ты про реализацию стилей в формексе?