Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 09:47

Не работает макет Конструктора. Не понимает Области

Автор Восходящий, 22 мая 2014, 16:23

0 Пользователей и 1 гость просматривают эту тему.

Восходящий

Добрый день!
Подскажите, пожалуйста, что не так делаю?
Создаю печатную форму. С помощью мастера макетов, выбираю шапку, тело, подвал из предложенных реквизитов, создается макет, команда и добавляется код в модуль менеджера. Но при сохранении ругается, что переменная не определена, не видит переменные областей. Как так?

Процедура Пример1(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Пример1)
Макет = Документы.ЗаказПокупателя.ПолучитьМакет("Пример1");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Комментарий,
| ЗаказПокупателя.Контрагент,
| ЗаказПокупателя.Номер
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ТабДок.Вывести(ОбластьРаботыШапка);
ВыборкаРаботы = Выборка.Работы.Выбрать();
Пока ВыборкаРаботы.Следующий() Цикл
ОбластьРаботы.Параметры.Заполнить(ВыборкаРаботы);
ТабДок.Вывести(ОбластьРаботы, ВыборкаРаботы.Уровень());
КонецЦикла;

Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры


Цитировать{Документ.ЗаказПокупателя.МодульМенеджера(8229,18)}: Переменная не определена (ОбластьРаботыШапка)
      ТабДок.Вывести(<<?>>ОбластьРаботыШапка); (Проверка: Сервер)
{Документ.ЗаказПокупателя.МодульМенеджера(8232,4)}: Переменная не определена (ОбластьРаботы)
         <<?>>ОбластьРаботы.Параметры.Заполнить(ВыборкаРаботы); (Проверка: Сервер)
{Документ.ЗаказПокупателя.МодульМенеджера(8233,19)}: Переменная не определена (ОбластьРаботы)
         ТабДок.Вывести(<<?>>ОбластьРаботы, ВыборкаРаботы.Уровень()); (Проверка: Сервер)
{Документ.ЗаказПокупателя.МодульМенеджера(8236,3)}: Переменная не определена (Подвал)
      <<?>>Подвал.Параметры.Заполнить(Выборка); (Проверка: Сервер)
{Документ.ЗаказПокупателя.МодульМенеджера(8237,18)}: Переменная не определена (Подвал)
      ТабДок.Вывести(<<?>>Подвал); (Проверка: Сервер)

cska-fanat-kz

у вас только
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

а другие переменные не проинициализированы, вот и ругается...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Восходящий

Конструктор одну область инициализирует, а другие нет? Наверное конструктор должен полностью создавать форму печати. Одна форма печати получилась, где только Заголовок и Шапка, конструктор с нею справился. Но тут таблица и несколько областей.
Недостающие добавил, но на переменную Подвал все равно ругается.
Процедура Пример1(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Пример1)
Макет = Документы.ЗаказПокупателя.ПолучитьМакет("Пример1");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Комментарий,
| ЗаказПокупателя.Контрагент,
| ЗаказПокупателя.Номер
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
// <<Добавил
ОбластьРаботы = Макет.ПолучитьОбласть("Работы");
ОбластьРаботыШапка = Макет.ПолучитьОбласть("РаботыШапка");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
// Добавил>>
Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ТабДок.Вывести(ОбластьРаботыШапка);
ВыборкаРаботы = Выборка.Работы.Выбрать();
Пока ВыборкаРаботы.Следующий() Цикл
ОбластьРаботы.Параметры.Заполнить(ВыборкаРаботы);
ТабДок.Вывести(ОбластьРаботы, ВыборкаРаботы.Уровень());
КонецЦикла;

Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры

Цитировать{Документ.ЗаказПокупателя.МодульМенеджера(8241,3)}: Переменная не определена (Подвал)
      <<?>>Подвал.Параметры.Заполнить(Выборка); (Проверка: Сервер)
{Документ.ЗаказПокупателя.МодульМенеджера(8242,18)}: Переменная не определена (Подвал)
      ТабДок.Вывести(<<?>>Подвал); (Проверка: Сервер)
Добавлено: 22 мая 2014, 20:33


Кроме того, если закомментировать это:

//Подвал.Параметры.Заполнить(Выборка);
//ТабДок.Вывести(Подвал);

то конфигурация сохраняется.
Но при открытии заказа ошибка такая:
Цитировать{Документ.ЗаказПокупателя.МодульМенеджера(8235)}: Поле объекта не обнаружено (Работы)
      ВыборкаРаботы = Выборка.Работы.Выбрать();
Добавлено: 22 мая 2014, 20:38


Ошибся чуть-чуть. Ошика Поле объекта не обнаружено (Работы) выходит при нажатии на кнопку Пример1

cska-fanat-kz

Ну правильно на "Подвал" ругается, потому что "ОбластьПодвал" :befhbt:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Восходящий

Благодарю) на ОбластьПодвал теперь не ругается, но при нажатии на кнопку Пример1, так же:
Цитировать{Документ.ЗаказПокупателя.МодульМенеджера(8235)}: Поле объекта не обнаружено (Работы)
      ВыборкаРаботы = Выборка.Работы.Выбрать();

cska-fanat-kz

Ну правильно пишет. У вас запрос тока по шапке документа. Добавьте туда еще и ТЧ РАБОТЫ и будет вам счастье.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Восходящий

Не могу найти запрос по Шапке. Ткните, пожалуйста, куда добавить

cska-fanat-kz

Цитата: Восходящий от 22 мая 2014, 19:26
Запрос = Новый Запрос;
Запрос.Текст =  "ВЫБРАТЬ   
|   ЗаказПокупателя.Комментарий,   
|   ЗаказПокупателя.Контрагент,   
|   ЗаказПокупателя.Номер   
|ИЗ   
|   Документ.ЗаказПокупателя КАК ЗаказПокупателя   
|ГДЕ   
|   ЗаказПокупателя.Ссылка В (&Ссылка)";

вот ЭТО - запрос по шапке!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Восходящий

Спасибо. Так и думал, но не догадывался, что ТЧ там можно указывать.
Взял пример запроса ТЧ из Акта оказания услуг, получилось так:
Процедура Пример1(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Пример1)
Макет = Документы.ЗаказПокупателя.ПолучитьМакет("Пример1");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Комментарий,
| ЗаказПокупателя.Контрагент,
| ЗаказПокупателя.Номер
| ЗаказПокупателя.Работы.(
| НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(ЗаказПокупателя.Работы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))) = """"
| ТОГДА ЗаказПокупателя.Работы.Номенклатура.Наименование
| ИНАЧЕ ВЫРАЗИТЬ(ЗаказПокупателя.Работы.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
| КОНЕЦ КАК Товар,
| Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
| ЗаказПокупателя.Работы.Количество КАК Количество,
| Цена КАК Цена,
| Сумма КАК Сумма,
| Всего КАК Всего,
| )
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
// <<Добавил
ОбластьРаботы = Макет.ПолучитьОбласть("Работы");
ОбластьРаботыШапка = Макет.ПолучитьОбласть("РаботыШапка");
Подвал = Макет.ПолучитьОбласть("Подвал");
// Добавил>>
Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ТабДок.Вывести(ОбластьРаботыШапка);
ВыборкаРаботы = Выборка.Работы.Выбрать();
Пока ВыборкаРаботы.Следующий() Цикл
ОбластьРаботы.Параметры.Заполнить(ВыборкаРаботы);
ТабДок.Вывести(ОбластьРаботы, ВыборкаРаботы.Уровень());
КонецЦикла;

Подвал.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Подвал);

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры

Тогда при нажатии на кнопку ошибка такая:
Цитировать{Документ.ЗаказПокупателя.МодульМенеджера(8225)}: Ошибка при вызове метода контекста (Выполнить)
   Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(5, 2)}: Неправильный псевдоним "ЗаказПокупателя.Работы."
<<?>>ЗаказПокупателя.Работы.(

cska-fanat-kz

Пока вариант единственный - ТЧ документа у Вас НЕ Работы называется...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск