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

Помогите с печатной формой пожалуйста

Автор drapik, 13 июл 2011, 16:37

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

drapik

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

   // Выводим шапку накладной
   ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
   ОбластьМакета.Параметры.Заполнить(Шапка);
   ОбластьМакета.Параметры.ПредставлениеОрганизации = Шапка.Организация;
   ОбластьМакета.Параметры.Дата                   = Шапка.Дата;
   ОбластьМакета.Параметры.ФизЛицо                = Шапка.ФизЛицо;
   ТабДокумент.Вывести(ОбластьМакета);
   
   // Выводим заголовок таблицы
   ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
   ТабДокумент.Вывести(ЗаголовокТаблицы);

   КоличествоСтрок = ВыборкаСтрокТовары.Количество();

   // Выводим многострочную часть докмента
   ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
   ОбластьМакета = Макет.ПолучитьОбласть("Строка");
   Пока ВыборкаСтрокТовары.Следующий() Цикл
        ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
      ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование;
      ОбластьМакета.Параметры.ДатаПриход = Шапка.ДатаПриход;
        ТабДокумент.Вывести(ОбластьМакета);
   КонецЦикла;   
      // Зададим параметры макета
   ТабДокумент.ПолеСверху = 0;
   ТабДокумент.ПолеСлева  = 0;
   ТабДокумент.ПолеСнизу  = 0;
   ТабДокумент.ПолеСправа = 0;
   ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

   Возврат ТабДокумент;

КонецФункции // ПечатьКарточкиМЦ()

Печатная форма карточки из документа инвентаризации по МОЛ. В печатной форме ДатаПриход ставится одинаковая дата документа, хотя приход товаров был по разным документам и разным датам поступления. Как ДатаПриход связать с Товары, чтобы выбиралась дата поступления для каждого товара? Заранее благодарен!!!

drapik

Да, и еще вдогонку, как оставить только дату, а то отображается и дата и время документа поступления.

Андрей Федотов

Если я правильно понимаю, то вы печатаете форму из документа ИнвентаризацияТоваровНаСкладе
Каждый товар приходуется отдельным документом?
Чтобы вывести только дату необходимо сделать Формат вывода

has

Цитата: drapik от 13 июл 2011, 16:43
Да, и еще вдогонку, как оставить только дату, а то отображается и дата и время документа поступления.
ОбластьМакета.Параметры.Дата = Формат(Шапка.Дата, "ДЛФ=Д");

has

Цитата: drapik от 13 июл 2011, 16:37
Печатная форма карточки из документа инвентаризации по МОЛ. В печатной форме ДатаПриход ставится одинаковая дата документа, хотя приход товаров был по разным документам и разным датам поступления. Как ДатаПриход связать с Товары, чтобы выбиралась дата поступления для каждого товара? Заранее благодарен!!!
Надо выбирать табличную часть документа инвентаризация и левым соединением с таб. частью поступления по номенклатуре.

drapik

to Андрей Федотов: Да, каждый документ приходуется отдельным документом, т.е. даты должны быть разные для каждой строки номенклатуры, но у меня ставится одна и та же дата, которая берется с документа поступления одного из товаров. Has, спасибо, время убрал.

drapik

Цитата: has от 14 июл 2011, 07:08
Цитата: drapik от 13 июл 2011, 16:37
Печатная форма карточки из документа инвентаризации по МОЛ. В печатной форме ДатаПриход ставится одинаковая дата документа, хотя приход товаров был по разным документам и разным датам поступления. Как ДатаПриход связать с Товары, чтобы выбиралась дата поступления для каждого товара? Заранее благодарен!!!
Надо выбирать табличную часть документа инвентаризация и левым соединением с таб. частью поступления по номенклатуре.
Так в запросе так и стоит левое соединение, запрос отрабатывает данные если проверять через консоль запросов, только с печатной формой проблемки. Как мне кажется, тут надо изменить что-то в этом куске:
// Выводим многострочную часть докмента
   ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
   ОбластьМакета = Макет.ПолучитьОбласть("Строка");
   Пока ВыборкаСтрокТовары.Следующий() Цикл
        ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
      ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование;
      ОбластьМакета.Параметры.ДатаПриход = Формат(Шапка.ДатаПриход, "ДЛФ=Д");
        ТабДокумент.Вывести(ОбластьМакета);
   КонецЦикла;   

Вася Новенький

у тебя должно быть Левое соединение инвентаризацию присоединяешь к поступлению, а ты наоборот.
ты к поступлению присоединяешь инвентаризацию.если такой порядок. тогда правое соединение.
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
   |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
   |      ПО (ИнвентаризацияТоваровНаСкладе.Товары.Номенклатура = ПоступлениеТоваровУслуг.Товары.Номенклатура)
   |ГДЕ

drapik

Цитата: Вася Новенький от 14 июл 2011, 09:12
у тебя должно быть Левое соединение инвентаризацию присоединяешь к поступлению, а ты наоборот.
ты к поступлению присоединяешь инвентаризацию.если такой порядок. тогда правое соединение.
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
   |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
   |      ПО (ИнвентаризацияТоваровНаСкладе.Товары.Номенклатура = ПоступлениеТоваровУслуг.Товары.Номенклатура)
   |ГДЕ
Менял и левое и правое, один и тот же результат получается, все равно в печатной форме ДатаПриход у всех товаров из табличной части одно и то же значение

has

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

Теги:

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

Рейтинг@Mail.ru

Поиск