|
преобразовать процедуру в функцию | ☑ | ||
---|---|---|---|---|
0
Neznayka_5
13.07.12
✎
10:51
|
можно ли преобразовать процедуру в функцию (без ее изменения) знаю, нагло, но вдруг??
интересует процедура печать, которая есть в каждом документе (модуль объекта) |
|||
10
le_
13.07.12
✎
10:55
|
(0) neшbI uщ0!
|
|||
11
EasyRider
13.07.12
✎
10:55
|
(0)можно ли преобразовать мясо в фарш?Но только чур без изменения мяса!
|
|||
12
YF
13.07.12
✎
10:59
|
(1) :-D
|
|||
13
izekia
13.07.12
✎
11:03
|
(8) ты не поверишь, 1С вообще пофиг
|
|||
14
servs
13.07.12
✎
11:05
|
(0) Делай так:
Процедура Печать2() Результат = Печать(); КонецПроцедуры; Далее используй Процедуру Печать2 вместо функции Печать(). |
|||
15
izekia
13.07.12
✎
11:05
|
(14) пятнично
|
|||
16
GLazNik
13.07.12
✎
11:06
|
(14) гы
|
|||
17
GLazNik
13.07.12
✎
11:06
|
(14) чукча не читатель, чукча писатель?
|
|||
18
servs
13.07.12
✎
11:06
|
(15) Ага :D
|
|||
19
servs
13.07.12
✎
11:07
|
(17) какой вопрос был такой и ответ + пятница)
|
|||
20
Пыльный
13.07.12
✎
11:07
|
(15) Не, это скорее субботично! В пятницу 1с еще что-то соображают ;)
|
|||
21
izekia
13.07.12
✎
11:07
|
(19) ему наоборот надо)
|
|||
22
le_
13.07.12
✎
11:08
|
(21) Он - это она )
|
|||
23
GLazNik
13.07.12
✎
11:08
|
(21) судя по фото - ей
|
|||
24
izekia
13.07.12
✎
11:08
|
Незнайка всегда М был
|
|||
25
GLazNik
13.07.12
✎
11:08
|
+(23) но опять же ... пятница...
|
|||
26
servs
13.07.12
✎
11:09
|
(21) (0) тогда так:
Функция Печать2() Печать(); Возврат true; КонецФункции; |
|||
27
izekia
13.07.12
✎
11:10
|
предлагаю вообще не использовать процедуры в 1С, а писать одними функциями, а они уже если захотят будут что-то возвращать, а если функция вернула неопределено, то значит она процедура
|
|||
28
Пыльный
13.07.12
✎
11:10
|
(0) Ты отзывайся, отзывайся :)
Чем подробнее ты объяснишь, что тебе надо - тем скорее помогут. |
|||
29
izekia
13.07.12
✎
11:10
|
ага, фотка есть, что бы не помочь?
|
|||
30
Neznayka_5
13.07.12
✎
11:10
|
(14) спасибо) я уже догадалась)
|
|||
31
servs
13.07.12
✎
11:10
|
(27) я за)
|
|||
32
izekia
13.07.12
✎
11:11
|
(30) реально - пятница
|
|||
33
Пыльный
13.07.12
✎
11:11
|
(30) /* с трудом вылезая из по стола */
Это лучше, чем Новая ПЯТНИЦА13 !!!! |
|||
34
le_
13.07.12
✎
11:12
|
Предлагаю такой вариант:
Профедура ФункцияПечать()
|
|||
35
Neznayka_5
13.07.12
✎
11:12
|
)))
|
|||
36
izekia
13.07.12
✎
11:12
|
(34) ошибку выдает
|
|||
37
Aleks73
13.07.12
✎
11:14
|
(34)
Процедура Этофунция() КонецПроцедуры |
|||
38
Omskdizel
13.07.12
✎
11:14
|
(34) Нам в конце надо написать "КонецПрофедуры"
|
|||
39
le_
13.07.12
✎
11:15
|
(36) А так:
? ) |
|||
40
izekia
13.07.12
✎
11:15
|
тоже
|
|||
41
Omskdizel
13.07.12
✎
11:16
|
(40) У тебя неправильная 1Ска
|
|||
42
le_
13.07.12
✎
11:16
|
(40) Чорд, надо с саппорт писать.
|
|||
43
izekia
13.07.12
✎
11:18
|
профедура вроде проходит
пишет вот что: Сообщение 102, уровень 15, состояние 1, строка 1 Неправильный синтаксис около конструкции ")". |
|||
44
GLazNik
13.07.12
✎
11:19
|
(43) двоеточия не хватает... сто пудов
|
|||
45
hhhh
13.07.12
✎
11:22
|
всё-таки правильнее "Профи-дура"
|
|||
46
Neznayka_5
13.07.12
✎
11:23
|
да ну вас( чего-то она не работает.. мне результат нужно присвоить переменной
|
|||
47
Neznayka_5
13.07.12
✎
11:24
|
Процедура Печать2()
Результат = Печать(); КонецПроцедуры; нельзя присваивать процедуру чему-либо |
|||
48
le_
13.07.12
✎
11:25
|
Смиренно ждем 8.4 - там можно будет писать без двоеточий, обзывать процедуры функциями и на результат можно будет аще забить.
|
|||
49
izekia
13.07.12
✎
11:25
|
(47) присвой переменной что-нибудь другое
|
|||
50
Neznayka_5
13.07.12
✎
11:26
|
(49) но тогда у меня будет открываться табличный документ все равно. а мне именно его и нужно усмирить!
|
|||
51
чувак
13.07.12
✎
11:26
|
(46) Какой ркзультат? Печатную форму?
|
|||
52
GLazNik
13.07.12
✎
11:26
|
(48) почему только на результат... забить будет можно на все
(47) конфигурация какая хоть? |
|||
53
Neznayka_5
13.07.12
✎
11:26
|
(52) упп 1.3
|
|||
54
Neznayka_5
13.07.12
✎
11:28
|
(51) НУ да, чтоб потом ее впихнуть с другими. в одну общую
|
|||
55
izekia
13.07.12
✎
11:30
|
кого впихнуть, с кем еще, в какую общую?
|
|||
56
Neznayka_5
13.07.12
✎
11:34
|
дело в том, что в документе РеализацияТоваровУслуг есть много печатных форм. Нашим пользователям надоело нажимать много кнопочек, и поэтому мое руководство поставило мне задачу сделать обработку в которой бы пользователи, эти милейшие лентяи, задавали бы сколько и каких печатных форм им надо вывести и выводились бы они в одном табличном документе. Вот этим я и занимаюсь. И не знаю, как несколько типовых форм поместить в один печатный документ
|
|||
57
izekia
13.07.12
✎
11:39
|
(56) в обработку печати параметром передавай документ в который выводишь
по умолчанию он будет неопределен, соответственно в печати смотришь и либо выводишь в уже готовый, либо создаешь новый, и все что тебе нужно будет - вызвать сколько нужно раз каждую процедуру печати с параметром |
|||
58
izekia
13.07.12
✎
11:39
|
документ = табличныйдокумент
|
|||
59
rool
13.07.12
✎
11:42
|
Оо. Беги от такого руководства, они тебя плохому научат...
А если по теме то надо тупо заменить Процедура ... КонецПроцедуры на Функция ... КонецФункции и заставить все это что-то возвращать Возврат ТирлимБомБом; |
|||
60
Neznayka_5
13.07.12
✎
11:44
|
(59) в том то и дело, что я не могу так сделать, потому что обращаюсь к процедуре в модуле объекта (документа), так уже не знаю, что делать
|
|||
61
servs
13.07.12
✎
11:46
|
(47) я в (26) исправился в (14) наоборот делал из функции процедуру.
|
|||
62
servs
13.07.12
✎
11:48
|
(60) тебе надо получать в результате выполнения функции табличный док..., а потом их объединять
|
|||
63
izekia
13.07.12
✎
11:48
|
сделай как в (57)
|
|||
64
Neznayka_5
13.07.12
✎
11:50
|
(62) РАССКАЖИТЕ ПОДРОБНЕЕ, КАК ОБЪЕДИНИТЬ НЕСКОЛЬКО ТАБ ДОКУМЕНТОВ?
|
|||
65
Neznayka_5
13.07.12
✎
11:50
|
(63) это сложнее, если не получиться сейчас объединить, сделаю так
|
|||
66
Neznayka_5
13.07.12
✎
11:51
|
(57) вы уверены, что параметром а не реквизитом?
|
|||
67
servs
13.07.12
✎
11:51
|
(64) тсс, тише.
|
|||
68
Neznayka_5
13.07.12
✎
11:52
|
(67) это случайно)
|
|||
69
servs
13.07.12
✎
11:52
|
(64) в поиске полно примеров
|
|||
70
rool
13.07.12
✎
11:52
|
Процедура Печать()
... КонецПроцедуры Функция Печать() ... Возврат КакаяТоХрень; КонецФункции С точки зрения вызова не отличаются вообще ни чем: Печать(); Просто во втором случае есть возможность что-то получить на выходе: ЧтоТо = Печать(); Так, что можно просто заменить скобки Процедура ... КонецПроцедуры на Функция ... КонецФункции и добавить возврат. Для кода который уже юзает эту процедуру ничего не изменится |
|||
71
servs
13.07.12
✎
11:53
|
(69) + лучше 1 раз увидеть, чем 100 раз услышать (с)
|
|||
72
Neznayka_5
13.07.12
✎
11:54
|
(70) не могу лезть в типовую
|
|||
73
izekia
13.07.12
✎
11:55
|
(65) с чего бы это сложнее?
|
|||
74
Neznayka_5
13.07.12
✎
11:56
|
(73) точно мы говорим о параметре? Зачем параметр, если можно и просто создать Табличный документ?
|
|||
75
Lama12
13.07.12
✎
11:57
|
(0)Можно.
Если хочешь что ни будь вернуть, поставь в конце - Возврат Неопределено; Функция что ни будь вернет. |
|||
76
rool
13.07.12
✎
11:58
|
Тогда не очень понятно чего вы хотите :) Скопируйте типовую процедуру печати в другое место во внешнюю обработку например, и делайте с ней что хотите)
|
|||
77
Neznayka_5
13.07.12
✎
11:59
|
(76) неоптимально получается уже)
|
|||
78
izekia
13.07.12
✎
12:02
|
(74) мы его передаем в процедуру печати, там смотрим, если мы получили документ то вывод идет в него, далее мы передаем его в следующую процедуру и не надо будет ничего объединять
|
|||
79
rool
13.07.12
✎
12:03
|
(77)
Ну заставить процедуру, что то вернуть, не трогая кода этой процедуры (тобиш не изменяя типовой) не реально в принципе... Если только посмотреть ее параметры, может она уже умеет что-то возвращать, какой-нибуть параметр по ссылке передается... |
|||
80
Neznayka_5
13.07.12
✎
12:04
|
(79) ну дело в том что в процедуре есть вывод. можно ли мне прервать процедуру на середине? не изменяя ее опять таки. я сейчас код скину процедуры
|
|||
81
Neznayka_5
13.07.12
✎
12:06
|
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
// Получить экземпляр документа на печать Если ИмяМакета = "Акт" Тогда ТабДокумент = ПечатьАктаОбОказанииУслуг(Ложь); ИначеЕсли ИмяМакета = "АктРуб" Тогда ТабДокумент = ПечатьАктаОбОказанииУслуг(Истина); ИначеЕсли ИмяМакета = "1Т" или ИмяМакета = "_1Т" Тогда ТабДокумент = ПечатьТТН(); ИначеЕсли ИмяМакета = "Бланк" Тогда ТабДокумент = ПечатьБланк(НаПринтер); ИначеЕсли ИмяМакета = "СправкаРасчетВал" тогда // Справка-расчет формирования рублевой суммы документа в валюте БухгалтерскийУчетРасчетовСКонтрагентами.НапечататьСправкуРасчетРублеваяСуммаДокументаВВалюте(Ссылка); Возврат; Иначе //Формы Накладная, М15, ТОРГ12 печатаются из модуля менеджера ПараметрКоманды = Новый Массив; ПараметрКоманды.Добавить(Ссылка); ИменаМакетов = ИмяМакета; Если НЕ ПустаяСтрока(ИмяМакета) Тогда Для Итератор = 1 По КоличествоЭкземпляров - 1 Цикл ИменаМакетов = ИменаМакетов + "," + Сред(ИмяМакета, 1, Найти(ИмяМакета + ",", ",") - 1); КонецЦикла; КонецЕсли; Если НаПринтер Тогда УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер("Документ.РеализацияТоваровУслуг", ИменаМакетов, ПараметрКоманды, Неопределено); Иначе УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Документ.РеализацияТоваровУслуг", ИменаМакетов, ПараметрКоманды, Неопределено, Неопределено); КонецЕсли; Возврат; КонецЕсли; УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект), Ссылка); КонецПроцедуры // Печать Ну примерно так.. |
|||
82
Neznayka_5
13.07.12
✎
12:07
|
вот мне бы ТабДокумент получить как-нибудь. Но все эти функции не помечены словом ЭСПОРТ вот проблема(
|
|||
83
izekia
13.07.12
✎
12:07
|
эта тема ни о чем
|
|||
84
GLazNik
13.07.12
✎
12:08
|
(81) ну и соответственно таких процедур много.. для каждого документа
Без изменения процедуры не реально... Еще вариант... в довесок к этой процедуры сделать свою функцию |
|||
85
Neznayka_5
13.07.12
✎
12:09
|
(84) продолжите идею. которая бы делала... что?
|
|||
86
Steel_Wheel
13.07.12
✎
12:11
|
(64)
ТабДок = Новый ТабличныйДокумент(); СоздатьТабличныйДокумент1(ТабДок); СоздатьТабличныйДокумент1(ТабДок); ТабДок.Показать() |
|||
87
GLazNik
13.07.12
✎
12:12
|
(85) которая бы возвращала ТабДокумент.
В данном случае было бы что-то типа: Функция ФункцияПечать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт // Получить экземпляр документа на печать Если ИмяМакета = "Акт" Тогда Возврат ПечатьАктаОбОказанииУслуг(Ложь); ИначеЕсли ИмяМакета = "АктРуб" Тогда Возврат ПечатьАктаОбОказанииУслуг(Истина); ИначеЕсли ИмяМакета = "1Т" или ИмяМакета = "_1Т" Тогда Возврат ПечатьТТН(); ИначеЕсли ИмяМакета = "Бланк" Тогда Возврат ечатьБланк(НаПринтер); Иначе Возврат Неопределено; КонецЕсли; КонецФункции |
|||
88
Neznayka_5
13.07.12
✎
12:13
|
(87) ну тут получается, что ПечатьАктаОбОказанииУслуг и остальные стали процедурами) и они то как раз увы и без пометки ЭКСПОРТ..
|
|||
89
GLazNik
13.07.12
✎
12:15
|
(88) кто их сделал процедурами? О_О
Нет. Вы эту функцию размещаете рядом с процедурой Печать. Но вместо процедуры печать извне, вызываете функцию. Она вам вернет ТабДокумент |
|||
90
Пыльный
13.07.12
✎
12:16
|
(88) Я же тебе уже писал в соседней теме
АктОбОказанииУслуг.Печать(ИмяМакета); где имя макета "Акт","АктРуб и т.д. УПП-шка дальше сама разберется. |
|||
91
Neznayka_5
13.07.12
✎
12:17
|
(89) это интересно уже. если только вы не имеете ввиду вставить функцию там же где написано определение процедуры)
|
|||
92
Neznayka_5
13.07.12
✎
12:19
|
(90) оттуда то все и пошло. АктОбОказанииУслуг.Печать(ИмяМакета); - это процедура. а мне функция нужна
|
|||
93
GLazNik
13.07.12
✎
12:20
|
(91) вставить там же где и написано определение процедуры...
|
|||
94
GLazNik
13.07.12
✎
12:21
|
+(93) модуль объекта(ов) править так или иначе придется. Либо полностью повторять логику печати во вне модуля объекта.
|
|||
95
Neznayka_5
13.07.12
✎
12:23
|
(94) я уже поняла это, ну это конечно ппц..
|
|||
96
Пыльный
13.07.12
✎
12:27
|
Так. Стоп. Я нифига не уверен, ибо я "травкой" не увлекаюсь ;), но...
Разве удастся вывести в ОДИН табличный документ несколько макетов с разной шириной колонок так, что бы не сбилось форматирование? Кто-нибудь здесь пытался? Убеди начальство, что это неверно методологически :) Пусть выбирают сколько угодно печатных форм, но печататься они будут в разных табличных документах. А иначе - Беги, Лола, беги! |
|||
97
Neznayka_5
13.07.12
✎
12:29
|
Начальник кроме всего прочего в отпуске, в мне сдавать во вторник( Поздравляйте меня. в этот близящийся наконец к завершению рабочий день пятницы 13го
|
|||
98
izekia
13.07.12
✎
12:30
|
(96) это не семерка, тут такое нормально будет работать
|
|||
99
Neznayka_5
13.07.12
✎
12:36
|
(57) вернулась снова. можно поподробнее
|
|||
100
Cube
13.07.12
✎
12:46
|
Сотка
|
|||
101
Neznayka_5
13.07.12
✎
12:48
|
дешевеет)
|
|||
102
Cube
13.07.12
✎
12:49
|
(101) Эх ты, это не цена, это пост номер сто!)))
|
|||
103
Cube
13.07.12
✎
12:50
|
+(102) А по теме ответить не могу, т.к. читать много))) Я лучше в пятничной ветке посижу)
|
|||
104
Smallrat
13.07.12
✎
12:57
|
Дайте угадать - автор делает групповую печать, чтобы пачка документов в одну таблицу вывелась ?
без правки не получится - 2 варианта - приписать экспорт непосредственно к функции формирования табдокумента или добавить в процедуру печати лишний параметр в конце что-то типа: Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, ВернутьТабДок = Неопределено) Экспорт и вписать Если ВернутьТабДок <> Неопределено Тогда ВернутьТабДок = ТабДокумент; Возврат; КонецЕсли; чтобы вернуть откуда-нибуть табдок, в параметр передать что-нибуть отличное от Неопределено |
|||
105
rool
13.07.12
✎
12:58
|
(102) Мораль: Вам либо придется слегка поправить код типовой, слегка усложнив дальнейшие обновления, либо полностью переносить все не экспортные методы печати во внешнюю обработку...
|
|||
106
Steel_Wheel
13.07.12
✎
13:01
|
(97) Думаю, зря ты взялась за эту задачу в пятнциу 13-ое.... Бегом билеты сдавать )
|
|||
107
AndyD
13.07.12
✎
15:16
|
я думаю намного проще сделать на форме кнопку печать комплекта документов и в ней печатать напрямую на принтер по умолчанию все что надо, например:
ТД = ПечатьДокумента(Ссылка); УниверсальныеМеханизмы.НапечататьДокумент(ТД, 1, Истина, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект), Ссылка); ТД = ПечатьТОРГ12(Ссылка); УниверсальныеМеханизмы.НапечататьДокумент(ТД,1, Истина, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект), Ссылка); |
|||
108
stonewolf
13.07.12
✎
17:08
|
(96) СоздатьФорматСтрок()
|
|||
109
SachoZ
14.07.12
✎
13:28
|
Можно использовать глобальные переменные:
Перем Результат; Процедура ТипаФункция() Результат = "Миста!"; КонецПроцедуры; ТипаФункция(); Сообщить(Результат); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |