Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Установка элементов на форму программно

v7: Установка элементов на форму программно
Я
   TDV
 
14.05.20 - 16:40
Возможно ли устанавливать разные элементы (флажок, выбор и тому подобное) программно на форму, если возможно то можно увидеть пример?
   АЛьФ
 
1 - 14.05.20 - 16:47
   Злопчинский
 
2 - 14.05.20 - 19:13
(1) а можно как-то в ТЧ документа и списках форм журналов/справочников -
1. менять программно положение колонок..?
2. задавать программно ширину колонок?
   Mikeware
 
3 - 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;
;-)
   Mikeware
 
5 - 14.05.20 - 20:10
(4) магическое число от Ёпа :-)
   Mikeware
 
6 - 14.05.20 - 20:16
(4) вообще, стиль нужно задавать числом. Но почему-то не во всех формах получалось. поэтому было взято значение стиля этого самого флажка КДИР...
вообще, тонкостей не помню, уж лет 5 прошло.
   Mikeware
 
7 - 14.05.20 - 20:19
кому-то обещал почти год назад классы для подбора а-ля снеговик, но не было времени, вот только начал разгребать, поднял клюшки на ноуте - лепота. после идиотских УФ - все летает.
   Злопчинский
 
8 - 14.05.20 - 21:23
(7) может, ну его нах, эту 8-ку..? организуем секту иеговистов 77 дня?
   big
 
9 - 15.05.20 - 05:39
(8) Надо перенести ТиС на 8-ую платформу. И можно будет дальше спокойно жыть ))
   ДенисЧ
 
10 - 15.05.20 - 06:39
МОжно, я сохраню эту ветку до зимы? Там дорожки посыпать буду...
   MWWRuza
 
11 - 15.05.20 - 07:42
(7) лепота. после идиотских УФ - все летает.
(8) организуем секту иеговистов 77 дня?

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.