8.х Не могу вывести сумму и количество

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Antibiotic, 16 ноя 2010.

  1. TopicStarter Overlay
    Antibiotic
    Offline

    Antibiotic

    Регистрация:
    28 авг 2008
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Хочу сделать внешнюю печатную форму для ПеремещенияТоваров в УТ с ценой, не получется вывести сумму и количество, помогите пожалуйста.

    Код:
    Функция ПолучитьДанныеДляПечатиПеремещенияТоваров() Экспорт
    
    ПараметрыПечати = Новый Структура;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |	Номер,
    |	Дата,
    |	Организация,
    |	СкладОтправитель,
    |	СкладОтправитель.Представление КАК Поставщик,
    |	СкладПолучатель,
    |	СкладПолучатель.Представление  КАК Покупатель,
    |	Товары.(
    |		Номенклатура,
    |		Номенклатура.НаименованиеПолное КАК Товар,
    |		Номенклатура.Код                КАК Код,
    |		Номенклатура.Артикул            Как Артикул,
    |		КоличествоМест,
    |		Количество,
    |		ЕдиницаИзмерения.Представление     КАК ЕдиницаИзмерения,
    |		ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМест,
    |		Цена,
    |		ХарактеристикаНоменклатуры КАК Характеристика,
    |		СерияНоменклатуры КАК Серия
    |	),
    |	ВозвратнаяТара.(
    |		Номенклатура,
    |		Номенклатура.НаименованиеПолное КАК Товар,
    |		Номенклатура.Код                КАК Код,
    |		Номенклатура.Артикул            КАК Артикул,
    |		0 КАК КоличествоМест,
    |		Количество,
    |		0 КАК Цена,
    |		Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
    |		NULL                                               КАК ЕдиницаИзмеренияМест
    |	)
    |ИЗ
    |	Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
    |ГДЕ
    |	ПеремещениеТоваров.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |	Товары.НомерСтроки,
    |	ВозвратнаяТара.НомерСтроки
    |";
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
    ВыборкаСтрокТара   = Шапка.ВозвратнаяТара.Выбрать();
    
    // Выводим шапку накладной
    ПараметрыПечати.Вставить("ТекстЗаголовка", ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение"));
    
    ПараметрыПечати.Вставить("ПредставлениеПоставщика", Шапка.Поставщик);
    ПараметрыПечати.Вставить("Поставщик", Шапка.СкладОтправитель);
    
    ПараметрыПечати.Вставить("ПредставлениеПолучателя", Шапка.Покупатель);
    ПараметрыПечати.Вставить("Получатель", Шапка.СкладПолучатель);
    
    // Вывести табличную часть
    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ПараметрыПечати.Вставить("ВыводитьКоды", Истина);
    ПараметрыПечати.Вставить("ИмяКолонкиКодов", "Артикул");
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
    ПараметрыПечати.Вставить("ВыводитьКоды", Истина);
    ПараметрыПечати.Вставить("ИмяКолонкиКодов", "Код");
    Иначе
    ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
    КонецЕсли;
    
    ПараметрыПечати.Вставить("ВыводитьЦены", Шапка.СкладОтправитель.ВидСклада = Перечисления.ВидыСкладов.НТТ 
    ИЛИ Шапка.СкладПолучатель.ВидСклада = Перечисления.ВидыСкладов.НТТ 
    ИЛИ Шапка.СкладПолучатель.ВидСклада = Перечисления.ВидыСкладов.Розничный);
    
    ПараметрыПечати.Вставить("ФлагПечатиМест", (СсылкаНаОбъект.Товары.Итог("КоличествоМест") > 0));
    
    Позиции = Новый Массив;
    
    Ном = 0;
    
    Итого = 0;
    
    // Выборка товаров
    Пока ВыборкаСтрокТовары.Следующий() Цикл
    
    ПараметрыПозиции = Новый Структура;
    ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);		
    
    Ном = Ном + 1;
    
    ПараметрыПозиции.Вставить("НомерСтроки", Ном);
    
    Если ПараметрыПечати.ВыводитьКоды Тогда
    Если ПараметрыПечати.ИмяКолонкиКодов = "Артикул" Тогда
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Артикул);
    Иначе
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Код);
    КонецЕсли;
    КонецЕсли;
    
    ПараметрыПозиции.Вставить("Товар", ВыборкаСтрокТовары.Товар + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары));
    
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ПараметрыПозиции.Вставить("КоличествоМест", ВыборкаСтрокТовары.КоличествоМест);
    ПараметрыПозиции.Вставить("ЕдиницаИзмеренияМест", ВыборкаСтрокТовары.ЕдиницаИзмеренияМест);
    КонецЕсли;
    
    ЦенаПечати = ?(Шапка.СкладПолучатель.ВидСклада = Перечисления.ВидыСкладов.Розничный,
    УправлениеРозничнойТорговлей.ПолучитьПродажнуюЦену(СсылкаНаОбъект.Дата, 
    ВыборкаСтрокТовары.Номенклатура,
    ВыборкаСтрокТовары.Характеристика,
    ВыборкаСтрокТовары.Номенклатура.ЕдиницаХраненияОстатков,
    Шапка.СкладПолучатель),
    ВыборкаСтрокТовары.Цена);
    
    Итого=Итого+ВыборкаСтрокТовары.Количество*ВыборкаСтрокТовары.Цена;
    ПараметрыПозиции.Вставить("Итого",Итого);
    
    
    ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТовары.Количество);
    ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТовары.ЕдиницаИзмерения);
    ПараметрыПозиции.Вставить("Цена", ЦенаПечати);
    
    #Если ВнешнееСоединение Тогда
    WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
    #КонецЕсли
    
    Позиции.Добавить(ПараметрыПозиции);
    
    КонецЦикла;
    
    // Выборка возвратная тара
    Пока ВыборкаСтрокТара.Следующий() Цикл
    
    ПараметрыПозиции = Новый Структура;
    ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);		
    
    Ном = Ном + 1;
    
    ПараметрыПозиции.Вставить("НомерСтроки", Ном);
    
    Если ПараметрыПечати.ВыводитьКоды Тогда
    Если ПараметрыПечати.ИмяКолонкиКодов = "Артикул" Тогда
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТара.Артикул);
    Иначе
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТара.Код);
    КонецЕсли;
    КонецЕсли;
    
    ПараметрыПозиции.Вставить("Товар", ВыборкаСтрокТара.Товар);
    
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ПараметрыПозиции.Вставить("КоличествоМест", ВыборкаСтрокТара.КоличествоМест);
    ПараметрыПозиции.Вставить("ЕдиницаИзмеренияМест", ВыборкаСтрокТара.ЕдиницаИзмеренияМест);
    КонецЕсли;
    
    ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТара.Количество);
    ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТара.ЕдиницаИзмерения);
    ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТара.Цена);
    
    #Если ВнешнееСоединение Тогда
    WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
    #КонецЕсли
    
    Позиции.Добавить(ПараметрыПозиции);
    
    КонецЦикла;
    
    ПараметрыПечати.Вставить("Позиции", Позиции);
    
    #Если ВнешнееСоединение Тогда
    WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПечати);
    #КонецЕсли
    
    Возврат ПараметрыПечати;
    
    КонецФункции //ПолучитьДанныеДляПечатиПеремещенияТоваров()
    
    #Если Клиент Тогда
    Функция Печать() Экспорт
    
    ПараметрыПечати = ПолучитьДанныеДляПечатиПеремещенияТоваров();	
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная";
    Макет       = ПолучитьМакет("Накладная");
    
    // Выводим шапку накладной
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    
    // Вывести табличную часть
    
    Если ПараметрыПечати.ВыводитьЦены Тогда
    ИмяШапки  = "ШапкаТаблицыСЦенами";
    ИмяСтроки = "СтрокаСЦенами";
    Иначе
    ИмяШапки  = "ШапкаТаблицы";
    ИмяСтроки = "Строка";
    КонецЕсли;
    
    ОбластьНомера  = Макет.ПолучитьОбласть(ИмяШапки + "|НомерСтроки");
    ОбластьКодов   = Макет.ПолучитьОбласть(ИмяШапки + "|КолонкаКодов");
    ОбластьТовар   = Макет.ПолучитьОбласть(ИмяШапки + "|Товар");
    ОбластьМест    = Макет.ПолучитьОбласть(ИмяШапки + "|Мест");
    ОбластьДанных  = Макет.ПолучитьОбласть(ИмяШапки + "|Данные");
    ОбластьИтого = Макет.ПолучитьОбласть(ИмяСтроки + "|Итого");
    
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьТовар);
    ОбластьКолонкаТовар = Макет.Область("Товар");
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
    + ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
    Иначе
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
    + Макет.Область("КолонкаКодов").ШиринаКолонки
    + ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
    КонецЕсли;
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    
    ОбластьНомера = Макет.ПолучитьОбласть(ИмяСтроки + "|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть(ИмяСтроки + "|КолонкаКодов");
    ОбластьТовар  = Макет.ПолучитьОбласть(ИмяСтроки + "|Товар");
    ОбластьМест   = Макет.ПолучитьОбласть(ИмяСтроки + "|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть(ИмяСтроки + "|Данные");
    ОбластьИтого = Макет.ПолучитьОбласть(ИмяСтроки + "|Итого");
    
    
    // Выборка товаров
    Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл
    
    Если НЕ ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
    Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
    Продолжить;
    КонецЕсли;
    
    ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Вывести(ОбластьНомера);
    
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    
    ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьТовар);
    
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ОбластьМест.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    
    ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьДанных);
    
    
    
    КонецЦикла;
    
    // Вывести подвал
    ОбластьНомера = Макет.ПолучитьОбласть("Подвал|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Подвал|КолонкаКодов");
    ОбластьТовар  = Макет.ПолучитьОбласть("Подвал|Товар");
    ОбластьМест   = Макет.ПолучитьОбласть("Подвал|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть("Подвал|Данные");
    ОбластьИтого = Макет.ПолучитьОбласть("Подвал|Итого");
    
    //ОбластьДанных.Параметры.Итого=ОбщегоНазначения.ФорматСумм(Итого);
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьТовар);
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    
    // Вывести подписи
    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    
    Возврат ТабДокумент;
    
    КонецФункции // Печать()
    #КонецЕсли
    
  2. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    1. Оформляйте код соответствующим тэгом. Читать не возможно!
    2. В чем именно загвоздка? Какую вы хотите помощь?
    3. Посмотрите как выводится цена например в печати М-15 для того же перемещения и сделайте по аналогии.

Поделиться этой страницей