|
Добавить код во все документы в процедуру ПриОткрытии | ☑ | ||
---|---|---|---|---|
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) Это специально сделано, и именно для усложнения последующего обновления. Так можно больше бабла срубить. Ведь конфа "серьезно" изменена в ста местах.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |