|   |   | 
| 
 | Добавить код во все документы в процедуру ПриОткрытии | ☑ | ||
|---|---|---|---|---|
| 0
    
        Stasik1976 05.08.14✎ 14:51 | 
        Как проще сделать? При открытии любого документа, должен выполняться один и тот же код, не пихать же его во все документы в процедуры ПриОткрытии().     | |||
| 1
    
        mikecool 05.08.14✎ 14:53 | 
        глобальная замена?     | |||
| 2
    
        NikVars 05.08.14✎ 14:54 | ||||
| 3
    
        SSSSS_AAAAA 05.08.14✎ 14:54 | 
        (0) Подписка на событие?     | |||
| 4
    
        Stasik1976 05.08.14✎ 14:55 | 
        (3) В подписке нет события ПриОткрытии     | |||
| 5
    
        Irbis 05.08.14✎ 14:57 | 
        А почему бы и не запихнуть? Сам код вынести в общий модуль? Любой падаван за час-другой справится.     | |||
| 6
    
        hhhh 05.08.14✎ 14:57 | 
        (4) в ПРиОткрытии уже есть такие процедуры. Найти такую процедуру и в нее врезаться     | |||
| 7
    
        Stasik1976 05.08.14✎ 14:58 | 
        (5) Ну тоже вариант :)     | |||
| 8
    
        RomaH naïve 05.08.14✎ 15:03 | 
        держи     | |||
| 9
    
        RomaH naïve 05.08.14✎ 15:03 | 
        Процедура ДобавитьВМоудульФормы(ОбрабатываемыйФайл)
 Путь = ОбрабатываемыйФайл.ПолноеИмя; Текст = Новый ТекстовыйДокумент; Текст.Прочитать(Путь); БылаПравка = Ложь; НашлиПроцедуруПередОткрытием = Ложь; НашлиКонецПроцедурыПередОткрытием = Ложь; НашлиПроцедуруПриОткрытии = Ложь; НашлиКонецПроцедурыПриОткрытии = Ложь; НачалоОсновногоТекстаПрограммы = 1; Для Ш = 1 По Текст.КоличествоСтрок() Цикл СтрокаМодуля = Текст.ПолучитьСтроку(Ш); //Процедура ПередОткрытием( Если Лев(СтрокаМодуля,25)= "Процедура ПередОткрытием(" Тогда НашлиПроцедуруПередОткрытием = Истина; КонецЕсли; Если НашлиПроцедуруПередОткрытием И НЕ НашлиКонецПроцедурыПередОткрытием Тогда //Кон ецП роц еду ры Если Лев(СтрокаМодуля,14)= "КонецПроцедуры" Тогда НашлиКонецПроцедурыПередОткрытием = Истина; НомерСтрокиКонцаПроцедурыПередОткрытием = Ш; //Прервать; КонецЕсли; КонецЕсли; Если НашлиПроцедуруПередОткрытием Тогда //Продолжить; КонецЕсли; //Про цед ура Пр иОт кры тии ( Если Лев(СтрокаМодуля,22)= "Процедура ПриОткрытии(" Тогда НашлиПроцедуруПриОткрытии = Истина; КонецЕсли; Если НашлиПроцедуруПриОткрытии И НЕ НашлиКонецПроцедурыПриОткрытии Тогда //КонецПроцедуры Если Лев(СтрокаМодуля,14)= "КонецПроцедуры" Тогда НашлиКонецПроцедурыПриОткрытии = Истина; НомерСтрокиКонцаПроцедурыПриОткрытии = Ш; //Прервать; КонецЕсли; КонецЕсли; Если Лев(СтрокаМодуля,5)= "Перем" Тогда НачалоОсновногоТекстаПрограммы = Ш + 1; КонецЕсли; Если Лев(СтрокаМодуля,14)= "КонецПроцедуры" Тогда НачалоОсновногоТекстаПрограммы = Ш + 1; КонецЕсли; КонецЦикла; ИмяФайла = ОбрабатываемыйФайл.ИмяБезРасширения; ИмяФайла = СтрЗаменить(ИмяФайла,".",""); Если НашлиПроцедуруПередОткрытием И НашлиКонецПроцедурыПередОткрытием Тогда ////Lobanov //ДКБ_ДопМодуль.ДобавитьЭлементыФормы(ЭтаФорма); ////Lobanov Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПередОткрытием,Символы.Таб + ""); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПередОткрытием,Символы.Таб + "//Lobanov"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПередОткрытием,Символы.Таб + "ДКБ_ДопМодуль.ДобавитьЭлементыФормы(ЭтаФорма,""" + ИмяФайла + """);"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПередОткрытием,Символы.Таб + ";"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПередОткрытием,Символы.Таб + "//Lobanov"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПередОткрытием,Символы.Таб + ""); НачалоОсновногоТекстаПрограммы = НачалоОсновногоТекстаПрограммы + 6; БылаПравка = Истина; ИначеЕсли НашлиПроцедуруПриОткрытии И НашлиКонецПроцедурыПриОткрытии Тогда ////Lobanov //ДКБ_ДопМодуль.ДобавитьЭлементыФормы(ЭтаФорма); ////Lobanov Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПриОткрытии,Символы.Таб + ""); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПриОткрытии,Символы.Таб + "//Lobanov"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПриОткрытии,Символы.Таб + "ДКБ_ДопМодуль.ДобавитьЭлементыФормы(ЭтаФорма,""" + ИмяФайла + """);"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПриОткрытии,Символы.Таб + ";"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПриОткрытии,Символы.Таб + "//Lobanov"); Текст.ВставитьСтроку(НомерСтрокиКонцаПроцедурыПриОткрытии,Символы.Таб + ""); НачалоОсновногоТекстаПрограммы = НачалоОсновногоТекстаПрограммы + 6; БылаПравка = Истина; КонецЕсли; Если БылаПравка И (Найти(ИмяФайла,"ФормаЭлемента") ИЛИ Найти(ИмяФайла,"ФормаДокумента") ИЛИ Найти(ИмяФайла,"ФормаВидаРасчета") ИЛИ Найти(ИмяФайла,"ФормаУзла")) Тогда ////Lobanov //Процедура НовыйЭлементФормыПриИзменении(Элемент) // // //КонецПроцедуры ////Lobanov Если НачалоОсновногоТекстаПрограммы > Текст.КоличествоСтрок() Тогда Текст.ДобавитьСтроку(""); КонецЕсли; Текст.ВставитьСтроку(НачалоОсновногоТекстаПрограммы,""); Текст.ВставитьСтроку(НачалоОсновногоТекстаПрограммы,"//Lobanov"); Текст.ВставитьСтроку(НачалоОсновногоТекстаПрограммы,"КонецПроцедуры"); Текст.ВставитьСтроку(НачалоОсновногоТекстаПрограммы,Символы.Таб + "ДКБ_ДопМодуль.ОбработкаПриИзмененииНовогоЭлементаФормы(Элемент,ЭтаФорма,""" + ИмяФайла + """);"); Текст.ВставитьСтроку(НачалоОсновногоТекстаПрограммы,"Процедура НовыйЭлементФормыПриИзменении(Элемент)"); Текст.ВставитьСтроку(НачалоОсновногоТекстаПрограммы,"//Lobanov"); Текст.ВставитьСтроку(НачалоОсновногоТекстаПрограммы,""); КонецЕсли; Если БылаПравка Тогда Текст.Записать(Путь); КонецЕсли; КонецПроцедуры | |||
| 10
    
        Stasik1976 05.08.14✎ 15:06 | 
        (9) Спасибо     | |||
| 11
    
        RomaH naïve 05.08.14✎ 15:09 | 
        ну и что бы не мучить с работой с файлами:
 Процедура ОсновныеДействияФормыДополнитьТиповыеСтандартом(Кнопка) МассивФайлов = НайтиФайлы(КаталогТиповыхФайлов,"*.txt"); Для Каждого ОбрабатываемыйФайл Из МассивФайлов Цикл Состояние(ОбрабатываемыйФайл.ПолноеИмя); ДополнитьФайлСтандартом(ОбрабатываемыйФайл); ОбработкаПрерыванияПользователя(); КонецЦикла; КонецПроцедуры Процедура ДополнитьФайлСтандартом(ОбрабатываемыйФайл) Путь = ОбрабатываемыйФайл.ПолноеИмя; ИмяФайла = ОбрабатываемыйФайл.Имя; //Документ.НачислениеОтпускаРаботникамОрганизаций.Форма.ФормаДокумента.Форма.Модуль Для Ш = 1 По 2 Цикл ПерваяТочка = Найти(ИмяФайла,"."); Если Ш = 1 Тогда ИмяОбъекта = Лев(ИмяФайла,ПерваяТочка-1); КонецЕсли; ИмяФайла = Сред(ИмяФайла,ПерваяТочка + 1); КонецЦикла; ПерваяТочка = Найти(ИмяФайла,"."); ИмяФайла = Лев(ИмяФайла,ПерваяТочка-1); Если ИмяФайла = "Форма" Тогда ДобавитьВМоудульФормы(ОбрабатываемыйФайл); ИначеЕсли ИмяФайла = "МодульОбъекта" И ИмяОбъекта = "Отчет" Тогда ДобавитьВМоудульОбъектаОтчета(ОбрабатываемыйФайл); КонецЕсли; КонецПроцедуры | |||
| 12
    
        mikecool 05.08.14✎ 15:10 | 
        (9) а если в "Процедура ПередОткрытием(" пробелов будет больше?     | |||
| 13
    
        RomaH naïve 05.08.14✎ 15:12 | 
        (12) ну на типовой ЗУП охват 100%     | |||
| 14
    
        RomaH naïve 05.08.14✎ 15:13 | 
        (12) поэтому я сильно с унификацией не заморачивался
 можно регулярные выражения прикрутить, если очень хочется | |||
| 15
    
        Фокусник 05.08.14✎ 15:14 | 
        (0) плюсую за (6), в типовых конфигурациях обычно уже есть такие общие процедуры.     | |||
| 16
    
        RomaH naïve 05.08.14✎ 15:16 | 
        (15) это ж надо проверять
 плюс эти процедуры должны передавать некий параметр который мне нужен в общем лет пять назад в ЗУП я такой процедуры не нашел была одно - но не во всех формах | |||
| 17
    
        RomaH naïve 05.08.14✎ 15:19 | 
        ИМХО - более универсально и красиво переопределить ПриОткрытии для формы
 ибо в (9) просто может быть не назначено "ПриОткрытии" | |||
| 18
    
        Фокусник 05.08.14✎ 15:23 | 
        (16) "это ж надо проверять"
 Конечно, нужно проверять. Но БЕЗ ЭТОЙ ПРОВЕРКИ добавлять во ВСЕ ПриОткрытии (тем более в ЗУП), считаю просто вредительством. Пожалейте будущих обновлялщиков этой базы ;) | |||
| 19
    
        NikVars 05.08.14✎ 15:38 | 
        (18) Это специально сделано, и именно для усложнения последующего обновления. Так можно больше бабла срубить. Ведь конфа "серьезно" изменена в ста местах.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |