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