Имя: Пароль:
1C
1С v8
Не могу вывести на печать Дополнительные реквизиты
0 Robert51
 
31.05.12
10:07
Доброго времени Уважаемые форумчане.
Для упрощения своей работы, решил сделать внешнюю печатную форму.
Сразу скажу, это мой первый опыт и скорее всего будут смешные вещи)) Сильно не ругайте;)

Не могу вывести в печатную форму, значение дополнительных реквизитов к документу Поступление Товаров и Услуг. А точнее не знаю как обратиться к этим значениям(( Кучу примеров пересмотрел, смог всё, только на этом сил уже нет разбираться, прошу помощи.

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

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

     ОбластьМакета = Макет.ПолучитьОбласть("Фильм");
   ОбластьМакета.Параметры.Основание = Шапка.Основание;
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Реквизиты");
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.ДатаДоговора = Шапка.ДатаДоговора;
   ОбластьМакета.Параметры.НомерДоговора = Шапка.НомерДоговора;
   ОбластьМакета.Параметры.Контрагент = Шапка.Контрагент;
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок2");
   ОбластьМакета.Параметры.Номер = Шапка.Номер;
   ОбластьМакета.Параметры.Дата = Шапка.Дата;
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Строка");
   ОбластьМакета.Параметры.Сеансов = Данные.Сеансов;
       Для Каждого СтрокаТабЧасти Из СсылкаНаОбъект.Услуги Цикл
        ОбластьМакета.Параметры.Заполнить(СтрокаТабЧасти);
        ОбластьМакета.Параметры.ВаловыйСбор = СтрокаТабЧасти.Сумма * 2;
       КонецЦикла;
   ТабДокумент.Вывести(ОбластьМакета);


   ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
       Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.Дата,);
       Руководитель = Руководители.Руководитель;
       Бухгалтер    = Руководители.ГлавныйБухгалтер;

       ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
       ОбластьМакета.Параметры.ФИОБухгалтера   = Бухгалтер;

   ТабДокумент.Вывести(ОбластьМакета);    
   
   Возврат ТабДокумент;

КонецФункции // ПечатьДокумента()

Функция Печать() Экспорт
   
   ТабДокумент = ПечатьДокумента();
   Возврат ТабДокумент;
   
КонецФункции // Печать
1 John83
 
31.05.12
11:38
тебя хоть немного удивило, что второй запрос выдал ошибку?
сиди, ковыряйся

ВЫБРАТЬ
   ПоступлениеТоваровУслуг.Номер,
   ПоступлениеТоваровУслуг.Дата,
   ПоступлениеТоваровУслуг.Организация КАК Руководители,
   ПоступлениеТоваровУслуг.Контрагент,
   ЕСТЬNULL(ПоступлениеТоваровУслуг.ДоговорКонтрагента.Представление, """") КАК Основание,
   ЕСТЬNULL(ПоступлениеТоваровУслуг.ДоговорКонтрагента.Дата, """") КАК ДатаДоговора,
   ЕСТЬNULL(ПоступлениеТоваровУслуг.ДоговорКонтрагента.Номер, """") КАК НомерДоговора,
   ЗначенияСвойствОбъектов.Значение КАК Сеансов
ИЗ
   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       ПО ПоступлениеТоваровУслуг.Ссылка = ЗначенияСвойствОбъектов.Объект
           И (ЗначенияСвойствОбъектов.Свойство = &ТвойДопРеквизит)
ГДЕ
   ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент
2 Robert51
 
31.05.12
12:37
Обратил внимание только на это
"Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(14, 41)}: Не задано значение параметра "Сеансов"
И (ЗначенияСвойствОбъектов.Свойство = <<?>>&Сеансов)"



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

   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); //используем в качестве параметра реквизит обработки СсылкаНаОбъект
   
   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
3 Шапокляк
 
31.05.12
12:48
|        И (ЗначенияСвойствОбъектов.Свойство = &Сеансов)
.....
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); //используем в качестве параметра реквизит обработки СсылкаНаОбъект
   Запрос.УстановитьПараметр("Сеансов", ПланыВидовХарактеристик.СвойстваОбъектов.КакиеТоСеансы); //вот как-то так
4 John83
 
31.05.12
12:50
(3) скорее
Запрос.УстановитьПараметр("Сеансов", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Какие-то там сеансы"));

т.к. он использует типовой функционал
5 Robert51
 
31.05.12
14:29
John83 и Шапокляк,
Огромное СПАСИБО!
Урок усвоен, принцип понял.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.