![]() |
|
v7: Перенести процедуру в глобальный модуль. | ☑ | ||
---|---|---|---|---|
0
JuixyJes
28.10.19
✎
14:40
|
Добрый день, имеется процедура в модуле формы документа, выводящая печатную форму. Имеются еще два подобных документа, для которых нужна такая же процедура. Она завязана на табличной чатси документа, но загвоздка в том, что во всех документах она называется по разному и изменять это нельзя. Потому спрошу, как перенести процедуру в Глобальный Модуль и использовать ее для 3 документов? Код процедуры прилагаю:
Процедура Направления() Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Направления"); ФактВ=""; НомерСтр=1; Ит=0; Сумма=0; ТЗ=СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Услуга","строка",150); ТЗ.НоваяКолонка("СпрДолжн","Справочник.Должности",50); ТЗ.НоваяКолонка("СпрУсл","Справочник.Номенклатура",50); ТЗ.НоваяКолонка("Отдел","Справочник.ГруппировкаБегунка"); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Если (ФакторВредности.Код = "10893") или (ФакторВредности.Код = "10894") или (ФакторВредности.Код = "9209") Тогда Иначе СпцВр=СоздатьОбъект("Справочник.СпискиСпецВрачей"); СпцВр.ИспользоватьВладельца(ФакторВредности); СпцВр.ВыбратьЭлементы(); Пока СпцВр.ПолучитьЭлемент()=1 Цикл ТЗ.НоваяСтрока(); ТЗ.Услуга=СпцВр.Должность.Наименование; ТЗ.СпрДолжн=СпцВр.Должность; Должн=СоздатьОбъект("Справочник.Должности"); Должн.ИспользоватьДату(ДатаДок); Если Должн.НайтиЭлемент(СпцВр.Должность) = 1 тогда ТЗ.СпрУсл=Должн.Услуга; КонецЕсли; КонецЦикла; КонецЕсли; СпУсл=СоздатьОбъект("Справочник.СпискиУслуг"); СпУсл.ИспользоватьВладельца(ФакторВредности); СпУсл.ВыбратьЭлементы(); Пока СпУсл.ПолучитьЭлемент()=1 Цикл Если СпУсл.Услуга.ВключатьВБегунок = 1 Тогда ТЗ.НоваяСтрока(); ТЗ.Услуга=СпУсл.Услуга.Наименование; ТЗ.СпрДолжн=""; ТЗ.СпрУсл=СпУсл.Услуга; //ТЗ.Отдел = СпУсл.Услуга.ОтделыПодразделений.Получить(ДатаДок); ТЗ.Отдел = СпУсл.Услуга.ГруппировкаБегунка; КонецЕсли; КонецЦикла; ФактВ=ФактВ+" / "+ФакторВредности; КонецЦикла; //ТЗ.ВыбратьСтроку(); //Таб.ВывестиСекцию("Шапка"); Если ТЗ.КоличествоСтрок() = 0 Тогда Сообщить("отсутствует Номенклатура для бегунка"); Возврат; КонецЕсли; ТЗ.Свернуть("СпрДолжн,СпрУсл, Отдел","Услуга"); ТЗ.Сортировать("Отдел"); //ТЗ.ВыбратьСтроку(); ТЗ.ВыбратьСтроки(); ТЗ.ПолучитьСтрокуПоНомеру(1); ТекОтдел = ТЗ.Отдел; УслугаСтр = ""+ Симв(13) + Симв(10) + Строка(ТЗ.СпрУсл.Код) + " " + Строка(ТЗ.СпрУсл.Наименование) + " " + Симв(13) + Симв(10) + Симв(13) + Симв(10); //сообщить(УслугаСтр); КолБегНаСтр = 0; Должн=СоздатьОбъект("Справочник.Должности"); Должн.ИспользоватьДату(ДатаДок); Ном=СоздатьОбъект("Справочник.Номенклатура"); Ном.ИспользоватьДату(ДатаДок); Пока ТЗ.ПолучитьСтроку()=1 Цикл //услуга Если ТекОтдел <> ТЗ.Отдел Тогда ТекОтдел = ТЗ.Отдел; Таб.ВывестиСекцию("Строка"); КолБегНаСтр = КолБегНаСтр + 1; Если КолБегНаСтр%(Константа.ПозицийВБегунке+1) = 0 Тогда Таб.НоваяСтраница(); КонецЕсли; НомерСтр=НомерСтр+1; УслугаСтр = Строка(тз.СпрУсл.Код) + " " + Строка(тз.СпрУсл.Наименование) + " " + Симв(13) + Симв(10) + Симв(13) + Симв(10); Иначе УслугаСтр = УслугаСтр + Строка(тз.СпрУсл.Код) + " " + Строка(тз.СпрУсл.Наименование) + " " + Симв(13) + Симв(10) + Симв(13) + Симв(10); //Сообщить(УслугаСтр); КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("Строка"); //Таб.ВывестиСекцию("Подвал"); Таб.ТолькоПросмотр(1); Таб.Опции(0,0,0,0,,); Таб.ПараметрыСтраницы(2,,,5,5,5,5,,,1,,); Таб.Показать("Реестр факторов риска",); КонецПроцедуры //Направления |
|||
1
Prog111
28.10.19
✎
14:49
|
(0) Ну в зависимости от вида документа сделай выбор условия и названия в этой процедуре.
|
|||
2
JuixyJes
28.10.19
✎
15:04
|
(1) подскажите как мне сделать это, я 7ку не трогала давно очень,а с глобальным модулем и вовсе не связывалась
|
|||
3
Злопчинский
28.10.19
✎
15:08
|
поток 77 какой-то.
стучись в скайп Zlopun сейчас прямо |
|||
4
Злопчинский
28.10.19
✎
15:09
|
(2) Борман сел в машину к Штрилицу и сказал "Трогайте"!
Штирлиц не смутился и потрогал |
|||
5
Злопчинский
28.10.19
✎
15:12
|
" что во всех документах она называется по разному и изменять это нельзя"
кто она? в разных документах по разному называется процедура печати? если в докуиментах в модулях ВООБЩЕ ничего изменять нельзя и процедуры печати сделаны "криво" - то в ГМ не удастся перенести. потому что в ГМ не будет виден контекст документа, если он не передается... |
|||
6
Злопчинский
28.10.19
✎
15:17
|
удяляешь процедуру из модуля формы документа
перемещаешь ее в ГМ. называешь Процедура УниверсальнаяПечать(ПараметрДокумент) Экспорт //тут твой код печати КонецПроцедуры Делаешь процедуры типа Процедура МояПроцедураПечатиИзДокументА(ПараметрДокумент) Экспорт УниверсальнаяПечать(ПараметрДокумент); КонецПроцедуры Процедура МояПроцедураПечатиИзДокументБ(ПараметрДокумент) УниверсальнаяПечать(ПараметрДокумент); КонецПроцедуры |
|||
7
Злопчинский
28.10.19
✎
15:20
|
только нафига делать как в (0) - если
можно тупо в модуле формы документа или сразу вызвать УниверсальнаяПечать() или в локальной процедуре печати сразу написать Процедура МояПроцедураПечатиИзДокумент(ПараметрДокумент) УниверсальнаяПечать(ПараметрДокумент); Возврат; //тут оставить весь старый код археологам на память КонецПроцедуры |
|||
8
JuixyJes
28.10.19
✎
15:44
|
(7) Мне вот эту процедуру, которая в (0) нужно в ГМ пихнуть, а в документе ее вызвать, правильно?
|
|||
9
Злопчинский
28.10.19
✎
15:47
|
(8) у тя постановка задачи описана так мутоно что можно только длгадываться что можно делать а что нельзя. отсюда - разные варианты решения. описаны выше.
есть вопросы - звони на скайп. контакт дал. |
|||
10
MWWRuza
гуру
28.10.19
✎
19:26
|
Я вообще не понимаю смысла переноса в ГМ процедур из трех!!! документов, если они все три разные... Такой перенос имеет смысл тогда, когда код в нескольких местах программы написан один и тот-же, тогда проще его убрать из этих мест, перенести в ГМ, а в тех местах, где он раньше был, вызывать его. Это, к тому-же, упрощает дальнейшее сопровождение - достаточно в ГМ поменять что-то, и во всех местах, откуда это вызывается, все будет автоматом "по новой" работать. Но, если во всех(трех, в данном случае) местах код разный - то в чем смысл этого действа? Лучше привести код к одному стандарту, и перенести в ГМ, чем в самой процедуре ГМ изобретать что-то, что должно "разбираться", откуда эта процедура/функция вызвана, или если это сложно или лень, то оставить как есть... Печатная форма, хотя-бы, надеюсь, в общих таблицах?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |