|
Функция Вычислить() и расширение kir-g, okmail, Климов Сергей, integer, Кир Пластелинин, avkynev, alexxx961503, Prog_man, azt-yur, Timon1405, егаис, JohnGilbert, ДенисСмирнов, 2S, El_Duke, YFedor, DeeK, lEvGl, Ненавижу 1С, Elf_80_lvl, RVN, dedmoroz777, ReaLg, Dotoshin, kittystark, Niveus, Fish, Mafiozaa, laeg, Indian, phabeZ, Hawk_1c, Lama12, Шурик71, Homer, Интересный вопрос, nick86, Ager, sergey198, RomanYS, bimbambum, Доминошник, denk32, boozin, Dmitrii, sikuda, rozer76, LuckyStar, maxab72, craxx, obs191, lxndr, Гипервизор, Chameleon1980, AndreyZhukov, SleepyHead, Вадя
| ☑ | ||
|---|---|---|---|---|
|
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) толстый клиент
|
|||
|
29
Кир Пластелинин
24.07.26
✎
07:47
|
а где код, который переопределяет формирование на нетиповую пф? просто в свое время вкрячивал для 4с и 4м свои
|
|||
|
30
Timon1405
24.07.26
✎
09:19
|
а у расширения есть префикс? может быть ожидается что функция в расширении должна называться префикс_уатПечать_МояФункция?
|
|||
|
31
егаис
24.07.26
✎
10:56
|
(29) зачем код? Создано новое значение перечисления ВидыПЛ.
Далее стандартно, генерится имя функции (30) однох..вено Внутри ММ дока работает как надо, что-то с безопасностью, имхо |
|||
|
32
егаис
24.07.26
✎
11:27
|
Пришлось вскрывать замок, в общем только так сработало.
Если у кого-то получилось решить сабж через расширение, напишите, интересно. |
|||
|
33
YFedor
24.07.26
✎
11:32
|
(32) Решение в (25), я не поленился - проверил.
1с в своем стиле :-) |
|||
|
34
егаис
24.07.26
✎
11:37
|
(33) Да, возможно.
Но это геморнее, так как есть несколько функций печати - весь путевой при выезде, лицевая, оборотная... И в каждую надо вставлять заплатку через изменениеиконтроль. |
|||
|
35
Кир Пластелинин
24.07.26
✎
11:50
|
(32) вот так в свое время было сделано. сейчас обратно на типовые формы переползли
|
|||
|
36
егаис
24.07.26
✎
12:20
|
(35) Попробую, но не понимаю как это поможет. Вы просто переопределили имя функции, то так же передаете в Вычислить().
|
|||
|
37
Кир Пластелинин
24.07.26
✎
12:26
|
(36) это 100% рабочий код. какие у вас доработки и как они реализованы - никто лучше вас не знает.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |