| 
    
            
         
         | 
    
  | 
Внешняя обработка, ошибка в получении макета. | ☑ | ||
|---|---|---|---|---|
| 
    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) Чего чего? это что то новое.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |