|   |   | 
| 
 | Проблема с получением макета во внешнем отчете | ☑ | ||
|---|---|---|---|---|
| 0
    
        Fire-Rex 30.09.15✎ 09:02 | 
        Добрый день! Делаю внешний отчет кассовая книга для БСП 3.0. Задача - изменить счет в выборке. Все запросы идут через два десятка общих модулей, нашел отладчиком тот, в котором запрос формируется - перетянул в отчет. Синтакс-помошник говорит все нормально, но в отладке ругается:
 Макет = ЭтотОбъект.ПолучитьМакет("КассоваяКнига"). Где я накололся? | |||
| 1
    
        jurassic 30.09.15✎ 09:07 | 
        тебе всё рассказали русским по белому     | |||
| 2
    
        Fire-Rex 30.09.15✎ 09:08 | 
        Изначально было 
 Макет = ПолучитьМакет("КассоваяКнига") Переделал. В "ЭтотОбъект" проблема? | |||
| 3
    
        1Сергей 30.09.15✎ 09:09 | 
        >>Где я накололся?
 в подъезде... Макет перетянул в отчет? | |||
| 4
    
        Fire-Rex 30.09.15✎ 09:09 | 
        перетянул     | |||
| 5
    
        StillEnough 30.09.15✎ 09:10 | 
        если это отчет - тогда пиши ОтчетОбъект.ПолучитьМакет.
 А вообще смотри на сервере или на клиенте получаешь, мб в этом проблема. | |||
| 6
    
        Fire-Rex 30.09.15✎ 09:11 | 
        Да, насчет Сервер/Клиент тоже думал. Пробовал и так и так.     | |||
| 7
    
        StillEnough 30.09.15✎ 09:12 | 
        саму ошибку напишите сюда     | |||
| 8
    
        jurassic 30.09.15✎ 09:12 | 
        (7) не надо. мы обожаем загадки     | |||
| 9
    
        StillEnough 30.09.15✎ 09:13 | 
        (8) слишком рано еще у меня для загадок (:     | |||
| 10
    
        Fire-Rex 30.09.15✎ 09:13 | 
        {Форма.ФормаОтчета.Форма(886)}: Метод объекта не обнаружен (ПолучитьМакет)
 Макет = ЭтотОбъект.ПолучитьМакет("КассоваяКнига"); | |||
| 11
    
        1Сергей 30.09.15✎ 09:14 | 
        (10) см (5)     | |||
| 12
    
        jurassic 30.09.15✎ 09:14 | 
        а что, СП правда утверждает, что у формы можно получить макет?     | |||
| 13
    
        Fire-Rex 30.09.15✎ 09:14 | 
        {Форма.ФормаОтчета.Форма(886,10)}: Переменная не определена (ОтчетОбъект)
 Макет = <<?>>ОтчетОбъект.ПолучитьМакет("КассоваяКнига"); (Проверка: Сервер | |||
| 14
    
        Goggy 30.09.15✎ 09:15 | 
        (10) Ну чтож ты...
 Даю подсказку, чтоб ты тоже подумал своей головешкой. -------------------------------------------------------- УправляемаяФорма (ManagedForm) РеквизитФормыВЗначение (FormAttributeToValue) Синтаксис: РеквизитФормыВЗначение(<ИмяРеквизита>, <Тип>) Параметры: <ИмяРеквизита> (обязательный) Тип: Строка. Имя реквизита формы, который необходимо преобразовать. Может быть указан реквизит данных формы (см. описание параметра <Объект> метода ДанныеФормыВЗначение). <Тип> (необязательный) Тип: Тип. Тип значения, получаемого из реквизита формы (данных формы). Если данный параметр не указан, то он также получается из реквизита формы. Если реквизит является составным типом и значение параметра не указано, генерируется исключение времени выполнения. Возвращаемое значение: Тип: Произвольный. Описание: Преобразует указанный реквизит формы в объект прикладного типа. Доступность: Сервер, мобильное приложение(сервер). | |||
| 15
    
        StillEnough 30.09.15✎ 09:18 | 
        v8: 8.2 Внешняя обработка => Управляемая форма => ПолучитьМакет
 смотри в теме 3 пост примерно код готовый. делай по аналогии | |||
| 16
    
        Fire-Rex 30.09.15✎ 09:33 | 
        Что-то не пойму     | |||
| 17
    
        Fire-Rex 30.09.15✎ 09:39 | 
        &НаСервере
 Функция ПолучитьМакетНаСервере() ЭтотОбъект=РеквизитФормыВЗначение("Объект"); Макет = ЭтотОбъект.ПолучитьМакет("Макет"); Возврат Макет; КонецФункции | |||
| 18
    
        Fire-Rex 30.09.15✎ 09:40 | 
        Как теперь перед запросом обратиться к макету?     | |||
| 19
    
        jurassic 30.09.15✎ 09:43 | 
        ОМойМакет=ПолучитьМакетНаСервере();
 Запрос=Новый Запрос; | |||
| 20
    
        Fire-Rex 30.09.15✎ 09:45 | 
        {Форма.ФормаОтчета.Форма(2154)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
 ЭтотОбъект=РеквизитФормыВЗначение("Объект"); по причине: Недопустимое значение параметра (параметр номер '1') | |||
| 21
    
        Fire-Rex 30.09.15✎ 09:49 | 
        Что-то пошло не так, Сэр     | |||
| 22
    
        jurassic 30.09.15✎ 09:51 | 
        будешь искать реквизит формы Объект?     | |||
| 23
    
        Fire-Rex 30.09.15✎ 09:56 | 
        Ребят, не ругайтесь только. На форме основной реквизит - "Отчет". Переделал, теперь вот что:
 {Форма.ФормаОтчета.Форма(2154)}: Поле объекта недоступно для записи (ЭтотОбъект) ЭтотОбъект = РеквизитФормыВЗначение("Отчет"); | |||
| 24
    
        Fire-Rex 30.09.15✎ 09:57 | 
        Я, видимо, не правильно понимаю "Объект"     | |||
| 25
    
        jurassic 30.09.15✎ 09:58 | 
        >Поле объекта недоступно для записи
 это значит, что туда писать ничего нельзя | |||
| 26
    
        Timon1405 30.09.15✎ 10:01 | 
        (23) как насчет
 НикогдаНеНазывайСвоюПеременнуюЭтотОбъект = РеквизитФормыВЗначение("Отчет"); ? | |||
| 27
    
        Fire-Rex 30.09.15✎ 10:21 | 
        (26) Да,спасибо, так и сделал     | |||
| 28
    
        Fire-Rex 30.09.15✎ 10:21 | 
        ЭтотОтчет     | |||
| 29
    
        hhhh 30.09.15✎ 10:26 | 
        ЭтотОбъект слово уже занято. Это Форма сама. Никак поверх нее Объект не запихнете.     | |||
| 30
    
        Fire-Rex 30.09.15✎ 10:40 | 
        Да-да, спасибо большое! Разобрался - понял.     | |||
| 31
    
        Fire-Rex 30.09.15✎ 12:21 | 
        Еще вопрос. Мне для каждого макета отдельную функцию прописывать? Или так пойдет:
 Функция ПолучитьМакетНаСервере() ЭтотОтчет = РеквизитФормыВЗначение("Отчет"); Макет = ЭтотОтчет.ПолучитьМакет("КассоваяКнига"); Макет2 = ЭтотОтчет.ПолучитьМакет("ОповеститьОПроблеме"); Возврат Макет; КонецФункции | |||
| 32
    
        jurassic 30.09.15✎ 12:22 | 
        Функция ПолучитьМакетНаСервере(НомерМакета)
 Возврат Вычислить("Макет"+НомерМакета) гыгы | |||
| 33
    
        Fire-Rex 30.09.15✎ 12:26 | 
        Функция ПолучитьМакетНаСервере(НомерМакета)
 ЭтотОтчет = РеквизитФормыВЗначение("Отчет"); Макет = ЭтотОтчет.ПолучитьМакет("КассоваяКнига"); Макет2 = ЭтотОтчет.ПолучитьМакет("ОповеститьОПроблеме"); Возврат Вычислить("Макет"+НомерМакета) КонецФункции | |||
| 34
    
        jurassic 30.09.15✎ 12:28 | 
        можешь выкинуть уже свою функцию и получать макет непосредственно перед употреблением     | |||
| 35
    
        Fire-Rex 30.09.15✎ 12:38 | 
        (34) Не понял     | |||
| 36
    
        jurassic 30.09.15✎ 12:40 | 
        (35) в (2) уже было почти правильно     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |