|
|
Функция Вычислить() и расширение
dergreche, rozer76, ass1c, Джордж1, wHammer, Кирпич, Жан Пердежон, 2S, Ненавижу 1С, ДемьянТ, Ботаник Гарден Меран, ДенисСмирнов, Шурик71, ndrv, Доминошник, PR, who respawn, formista2000, aka MIK, Garykom, Arh01, okmail, sdf, denk32, maxab72, Timon1405, avkynev, H A D G E H O G s, Климов Сергей, trk415e76, YFedor, Жеглофф, егаис, nick86, Ногаминебить, Greeen, Fish, Homer, zenik, Мультук, oleg_km, Олдж, reg0303, Anton1307, Bad_Aleks, arsik, craxx, Crusher, Vstur, Neo58, Fedor-1971, Fragster, TormozIT, Эх-эх-эх, tulke, Бычье сердце, Толич, _Batoo, Chameleon1980, X Leshiy, Hawk_1c, Lama12, Prog_man, patapum, calmius, Indian, 1cVandal, Caesar
| ☑ |
|
0
егаис
23.07.26
✎
16:22
|
Не пойму, в чем ошибка
УАТ. Пишу через расширение свою функцию печати нового вида путевки.
уатПечать_Мояформа() Экспорт
Печать в УАТ вызываются через Вычислить(ИмяФункцииПечати)
При вызове функции печати из расширения появляется ошибка из вложения.
Расширение не в безопасном режиме, пробовал и в безопасном.
Кэш чистил, не помогло. Имя вызываемой функции и функции в расширении 100% совпадают. В чем ошибка?
|
|
|
1
егаис
23.07.26
✎
16:24
|
странно, вложение не отправилось
|
|
|
2
Ненавижу 1С
гуру
23.07.26
✎
16:27
|
Написано же, что нет такого метода
|
|
|
3
егаис
23.07.26
✎
16:28
|
Есть! В расширении , в модуле менеджера документа.
|
|
|
4
Толич
23.07.26
✎
16:30
|
(0) Сделать в расширении уже имеющуюся функцию - экспортной, нельзя. И кстати количество параметров увеличить тоже нельзя в расширяемой функции.
|
|
|
5
егаис
23.07.26
✎
16:30
|
Имя при вызове совпадает
|
|
|
6
егаис
23.07.26
✎
16:30
|
(4) Это новая функция
|
|
|
7
Lama12
23.07.26
✎
16:33
|
Расширение с какими галками подключено?
|
|
|
8
craxx
23.07.26
✎
16:34
|
(4) Но можно обернуть ее в другую функцию, экспортную. и вызвать
|
|
|
9
егаис
23.07.26
✎
16:36
|
(7) Активно + использовать основные роли. Играл галками (кроме активно конечно), монописуально.
|
|
|
10
Chameleon1980
23.07.26
✎
16:41
|
(9) про "бесопасные" галки спрашивают, скорее всего
|
|
|
11
егаис
23.07.26
✎
16:43
|
(10) Проверялось в первую очередь. Знаю, что Вычислить() выполняется в безопасном режиме.
|
|
|
12
Толич
23.07.26
✎
16:45
|
Вызов функции и сама функция в одном расширении?
|
|
|
13
Ненавижу 1С
гуру
23.07.26
✎
16:47
|
(3) посмотрите отладкой, в каком модуле оно пытается вызваться, возможно модуль другой прописан
|
|
|
14
егаис
23.07.26
✎
16:53
|
(12) Вычислить(ИмяФункцииПечати) вызывается из модулей печати в конфигурации.
Сама ИмяФункцииПечати описана в расширении.
(13) В ошибке видно имя функции. Я даже скопировал имя из ошибки и вставил в расширение.
Придется снимать замок с модуля похоже.
|
|
|
15
Ненавижу 1С
гуру
23.07.26
✎
16:55
|
(14) в ошибке видно имя функции, которой нет. Функция какого модуля вызывается?
|
|
|
16
егаис
23.07.26
✎
16:56
|
(15) Модуля менеджера документа "Путевой лист"
|
|
|
17
Ненавижу 1С
гуру
23.07.26
✎
16:58
|
(16) ты это в отладке увидел или ты хочешь чтобы это было так?
|
|
|
18
YFedor
23.07.26
✎
16:59
|
Может вызывается с клиента
|
|
|
19
Ненавижу 1С
гуру
23.07.26
✎
17:02
|
(18) вот! похоже на правду
|
|
|
20
егаис
23.07.26
✎
17:04
|
(17) Смотри, ММ документа ПЛ, как все устроено
ВЫЗОВ
ИмяМакета = ТекущийДокумент.ВидПЛ.Метаданные().ЗначенияПеречисления[Перечисления.уатВидыПЛ.Индекс(ТекущийДокумент.ВидПЛ)].Имя;
ИмяМакета = "ПФ_MXL" + ИмяМакета;
ТабДокумент = Вычислить(ИмяФункцииПечати);
Все эти функции ИмяФункцииПечати описаны тут же, в ММ
Например
Функция уатПечать_ЭСМ1(ТекущийДокумент, ИмяМакета, ФлагПечати="") Экспорт
Я по аналогии добавляю новую функцию в расширение и ловлю ошибку.
|
|
|
21
егаис
23.07.26
✎
17:05
|
(18) Причем тут клиент, не догоняю
|
|
|
22
Fish
гуру
23.07.26
✎
17:07
|
(21) С клиента модуль менеджера недоступен.
|
|
|
23
YFedor
23.07.26
✎
17:21
|
(20) Я конечно понимаю, что ты выложил не весь код, но в выложенном куске "ИмяФункцииПечати" нигде не определяется.
+
Он же пишет, что не нашел функцию с именем "уатПечать_" ....
Т.е. ему не передали нужное имя функции
|
|
|
24
егаис
23.07.26
✎
17:22
|
ИмяМакета = ТекущийДокумент.ВидПЛ.Метаданные().ЗначенияПеречисления[Перечисления.уатВидыПЛ.Индекс(ТекущийДокумент.ВидПЛ)].Имя;
Если (ИмяМакета = "_ЭСМ1") Или (ИмяМакета = "_ЭСМ3") Тогда
ИмяФункцииПечати = "уатПечать" + ИмяМакета + "(ТекущийДокумент, ""уат"" + Сред(ИмяМакета,2,4), 1)";
ИначеЕсли (ИмяМакета = "_6") Тогда
ИмяФункцииПечати = "уатПечать" + ИмяМакета + "(ТекущийДокумент, ИмяМакета + ""_пп"", 1)";
ИначеЕсли (ИмяМакета = "_412_АПК") Тогда
ИмяФункцииПечати = "уатПечать" + ИмяМакета + "(ТекущийДокумент,ИмяМакета, 1)";
Иначе
ИмяФункцииПечати = "уатПечать" + ИмяМакета + "(ТекущийДокумент, ИмяМакета, 1)";
КонецЕсли;
ИмяМакета = "ПФ_MXL" + ИмяМакета;
ТабДокумент = Вычислить(ИмяФункцииПечати);
Т.е. условно ИмяФункцииПечати превращается в уатПечать_ЭСМ1(ТекущийДокумент, ИмяМакета, ФлагПечати="")
|
|
|
25
YFedor
23.07.26
✎
17:27
|
Ни разу не пользовался вызовом функции так чтобы:
Вызывалась функция из того же модуля, где осуществлен вызов, причем вызов из исходного модуля, а вызывается функция из расширения этого же модуля.
Попробуй в копии снять замочек и в месте вызова написать не просто имя функции, а имя с модулем, т.е. не Выполнить("МояФункция"), а Выполнить("Модуль.МояФункция")
|
|
|
26
Timon1405
23.07.26
✎
17:28
|
(22) так уж прямо и недоступен
|
|
|
27
егаис
23.07.26
✎
17:38
|
(25) это Рарус.
|
|
|
28
Ненавижу 1С
гуру
23.07.26
✎
19:24
|
(26) толстый клиент
|
|