|
Внешняя обработка, ошибка в получении макета. | ☑ | ||
---|---|---|---|---|
0
SSz
13.04.20
✎
09:17
|
Приветствую вас гуру 1С.
Понимаю, что данный вопрос набил уже оскомину, но для новичков вроде меня, он остаётся актуальным. Есть такой код: &НаСервере Функция СформироватьОтчёт() Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Тест"); ПечатнаяФорма = Новый ТабличныйДокумент; Область = Макет.ПолучитьОбласть("Область1"); ПечатнаяФорма.Вывести(Область); КонецФункции При выполнении данного кода, возникает следующая ошибка: {ВнешняяОбработка.ЗагрузкаДанных.Форма.Форма.Форма(875)}: Ошибка при вызове метода контекста (Вывести) ПечатнаяФорма.Вывести(Область); по причине: Несоответствие типов (параметр номер '1') Судя по ошибке, проблема в получении макета. Как победить данную проблему? Т.к. этот код в другой обработке, прекрасно отрабатывает. |
|||
1
Ns33
13.04.20
✎
09:26
|
Посмотри отладчиком что в Область, такое впечатление, что есть реквизит формы с таким именем, но другого типа.
|
|||
2
Фрэнки
13.04.20
✎
09:36
|
у меня обычно подобный фрагмент выглядит вот так
ОбъектЗначение = РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.СамыйНужныйДокумент")); Макет_ТабДок = ОбъектЗначение.ПолучитьМакет("ТабДок"); Вероятно, что принципиальное отличие от того, что у тебя в отсутствии второго параметра или, что еще более вероятно, в данном конкретном использовании что-то не так с "Объект" |
|||
3
SSz
13.04.20
✎
09:50
|
(1) - Переменные Макет, ПечатнаяФорма и Область, содержат "ТабличныйДокумент"
(2) - Обработка внешняя. Как ещё можно проверить содержимое "Объект"? |
|||
4
Фрэнки
13.04.20
✎
09:58
|
(3) А точно такая область в макете есть?
Проверь отладчиком. Установи в просмотр значений, когда в отладчике сидишь, вот эту запись туда Макет.ПолучитьОбласть("Область1") |
|||
5
SSz
13.04.20
✎
10:13
|
(4) - В переменную "Макет" приходит ТабличныйДокумент макета "тест", в разделе Области, присутствует "Область1" (ОбластьЯчейкиТабличногоДокумента). Использовал выражение "Макет.ПолучитьОбласть("Область1")".
|
|||
6
Фрэнки
13.04.20
✎
10:45
|
вроде все правильно
|
|||
7
SSz
13.04.20
✎
10:47
|
(6) - Сам голову ломаю. Похоже опять моя невнимательность.
|
|||
8
GGDots
13.04.20
✎
10:48
|
Если все проверил и все как надо, но ошибка есть - и нихера не понятно. Сделай копию этой обработки, назови под другому и открой её...
|
|||
9
SSz
13.04.20
✎
10:51
|
(8) - Спасибо за совет, сейчас попробую.
|
|||
10
GGDots
13.04.20
✎
10:52
|
Еще часто бывает такая штука: реквизит на форме совпадает по имени с переменными в модуле формы, и они имеют разные типы. Это тоже проверь.
|
|||
11
SSz
13.04.20
✎
10:54
|
(10) - Копия не помогла, реквизиты формы и переменные уникальны, тоже проверил.
|
|||
12
GGDots
13.04.20
✎
10:56
|
Обработка ценности не имеет? Если нет, то кинь мне на почту я гляну...ну если не против
|
|||
13
SSz
13.04.20
✎
10:57
|
(12) - Посмотрим, если сегодня меня не "озарит", то может и скину.
|
|||
14
GGDots
13.04.20
✎
10:58
|
(13) кк
|
|||
15
GGDots
13.04.20
✎
11:00
|
ну как вариант, если ошибка не программная и ты в коде уверен - то запусти предприятие с очисткой кэша ClearCache - мало ли
|
|||
16
SSz
13.04.20
✎
11:02
|
(15) - Тоже была такая идея, сейчас проверю.
|
|||
17
SSz
13.04.20
✎
11:05
|
(15) - Не помогло.
В какую ещё сторону можно копнуть? А то у меня заканчиваются варианты. |
|||
18
GGDots
13.04.20
✎
11:10
|
Скорее всего ты напутал с областями - скинь принт скрин своей области в макете
|
|||
19
SSz
13.04.20
✎
11:16
|
||||
20
SSz
13.04.20
✎
11:17
|
(18) - Я встраиваю свой функционал в чужую обработку, по этой причине такие пляски с бубном.
|
|||
21
GGDots
13.04.20
✎
11:20
|
(19) вроде норм. (20) обзави переменные по другому. К примеру "ПечатнаяФорма" = "ПечатнаяФорма2" и т.д. из своего функционала.
|
|||
22
GGDots
13.04.20
✎
11:22
|
код вроде рабочий. попробуй в свой макет добавить "Область2" и попробуй получить и вывести её
|
|||
23
GGDots
13.04.20
✎
11:23
|
создай 2 такой же макет и попробуй получить области с него... Ну много вариков же есть - когда не видишь в чем ошибка)
|
|||
24
SSz
13.04.20
✎
11:40
|
(23) - Спасибо за советы, всё перечисленное уже делал.
|
|||
25
GGDots
13.04.20
✎
11:42
|
ну тогда как найдешь в чем косяк, напиши хоть! Интересно.
|
|||
26
MaxS
13.04.20
✎
11:43
|
Чтобы понять используется переменная ещё где-то можно попробовать Рефакторинг - Переименовать. Если даст, значит уникальная переменная.
|
|||
27
SSz
13.04.20
✎
11:58
|
(25) - Если разберусь, то обязательно сообщу.
(26) - К сожалению уже проверял, не помогло. Интересно, что в переменные данные попадают, но на строке ПечатнаяФорма.Вывести(Область); появляется сообщение о несоответствии типов. |
|||
28
GGDots
13.04.20
✎
12:01
|
Скинь принт скрин табло из отладчика, что бы было понятно какого типа "ПечатнаяФорма", а какого "Область".
|
|||
29
SSz
13.04.20
✎
12:03
|
||||
30
GGDots
13.04.20
✎
12:08
|
(29) вроде все неплохо...
|
|||
31
GGDots
13.04.20
✎
12:09
|
этот же код в другой конфе работает?
|
|||
32
Ёпрст
13.04.20
✎
12:10
|
(29) тест на вшивость:
|
|||
33
Ёпрст
13.04.20
✎
12:11
|
ПечатнаяФорма - поди реквизит чего-то у тебя
|
|||
34
Ёпрст
13.04.20
✎
12:11
|
ну и твоя функция ничего не возвращает, как бэ
|
|||
35
SSz
13.04.20
✎
12:18
|
(31) - Копия данного текста отрабатывает без проблем, если создать другую внешнюю обработку. Именно в редактируемой (чужой) обработке, возникает ошибка.
(32) - Тест пройден, ошибка осталась. (33) - Не совсем вас понял, что за реквизит? Если имелось в веду Имя макета, то содержит "Макет". (34) - Это я знаю, т.к. нет смысла возвращать данные если возникает ошибка. |
|||
36
GGDots
13.04.20
✎
12:20
|
33 - проверь "ПечатнаяФорма" встречается в реквизитах обработки или в реквизитах формы?
|
|||
37
GGDots
13.04.20
✎
12:21
|
Ставкаи
1. Это Кэш. 2 Имя "ПечатнаяФорма" кем-то занята :) |
|||
38
GGDots
13.04.20
✎
12:22
|
хотя в отладчике типы верные
|
|||
39
SSz
13.04.20
✎
12:24
|
(37) - Где вы были раньше с этим ответом? Я уже всю голову сломал.
Спасибо, теперь всё работает. :) |
|||
40
GGDots
13.04.20
✎
12:26
|
(39) ты шутишь? Тебе об этом писали 50 постов назад)
|
|||
41
GGDots
13.04.20
✎
12:28
|
50 комментариев вернее)) Блин суть мисты крутая - что бы получить ответ на простой вопрос, необходимо привлечь кучу народа и написать 40 сообщений) ... Хотя достаточно было просто взглянуть на обработку кому нибудь 1 глазом)
|
|||
42
SSz
13.04.20
✎
12:42
|
(40) - Не тот кэш. Проблема была в накопителе, помог перезапуск машины.
|
|||
43
sitex
naïve
13.04.20
✎
13:25
|
(42) Чего чего? это что то новое.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |