8.х Накладная на перемещение не хватает колонки сумма

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

  1. TopicStarter Overlay
    Disday
    Offline

    Disday

    Регистрация:
    30 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте уважаемые форумчане!
    Вот есть у меня такая обработка Перемещение_товаров_2.epf

    Она показывает и количество и цену за товар НО вот блин сумму не хочет. Скажите пожалуйста что где надо добавить что бы заработало. За ранее при много благодарен.

    Код прилагаю.

    Код:
    Функция Печать() Экспорт
    
    ПараметрыПечати = ПолучитьДанныеДляПечатиПеремещенияТоваров();	
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная";
    Макет       = ПолучитьМакет("Накладная");
    
    // Выводим шапку накладной
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.Вывести(ОбластьМакета);
    
    // Вывести табличную часть
    
    //Если ПараметрыПечати.ВыводитьЦены Тогда
    ИмяШапки  = "ШапкаТаблицыСЦенами";
    ИмяСтроки = "СтрокаСЦенами";
    //Иначе
    //	ИмяШапки  = "ШапкаТаблицы";
    //	ИмяСтроки = "Строка";
    //КонецЕсли;
    
    ОбластьНомера  = Макет.ПолучитьОбласть(ИмяШапки + "|НомерСтроки");
    ОбластьКодов   = Макет.ПолучитьОбласть(ИмяШапки + "|КолонкаКодов");
    ОбластьТовар   = Макет.ПолучитьОбласть(ИмяШапки + "|Товар");
    ОбластьМест    = Макет.ПолучитьОбласть(ИмяШапки + "|Мест");
    ОбластьДанных  = Макет.ПолучитьОбласть(ИмяШапки + "|Данные");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьТовар);
    ОбластьКолонкаТовар = Макет.Область("Товар");
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
    + ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
    Иначе
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
    + Макет.Область("КолонкаКодов").ШиринаКолонки
    + ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
    КонецЕсли;
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);	
    
    ОбластьНомера = Макет.ПолучитьОбласть(ИмяСтроки + "|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть(ИмяСтроки + "|КолонкаКодов");
    ОбластьТовар  = Макет.ПолучитьОбласть(ИмяСтроки + "|Товар");
    ОбластьМест   = Макет.ПолучитьОбласть(ИмяСтроки + "|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть(ИмяСтроки + "|Данные");
    
    // Выборка товаров
    Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл
    
    Если НЕ ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
    Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
    Продолжить;
    КонецЕсли;
    
    ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Вывести(ОбластьНомера);
    
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    
    ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьТовар);
    
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ОбластьМест.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    
    ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
    ТабДокумент.Присоединить(ОбластьДанных);		
    
    КонецЦикла;
    
    // Вывести подвал
    ОбластьНомера = Макет.ПолучитьОбласть("Подвал|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Подвал|КолонкаКодов");
    ОбластьТовар  = Макет.ПолучитьОбласть("Подвал|Товар");
    ОбластьМест   = Макет.ПолучитьОбласть("Подвал|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть("Подвал|Данные");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ПараметрыПечати.ВыводитьКоды Тогда
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьТовар);
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    
    // Вывести подписи
    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
    ТабДокумент.АвтоМасштаб=Истина;
    ТабДокумент.ОтображатьСетку=Ложь;
    ТабДокумент.Вывести(ОбластьМакета);
    
    Возврат ТабДокумент;
    
    КонецФункции // ПечатьПеремещениеТоваров()
    
    Функция ПолучитьДанныеДляПечатиПеремещенияТоваров() Экспорт
    //Функция Печать() Экспорт
    
    ПараметрыПечати = Новый Структура;
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |	Номер,
    |	Дата,
    |	Организация,
    |	СкладОтправитель,
    |	СкладОтправитель.Представление КАК Поставщик,
    |	СкладПолучатель,
    |	СкладПолучатель.Представление  КАК Покупатель,
    |	Товары.(
    |		Номенклатура,
    |		Номенклатура.НаименованиеПолное КАК Товар,
    |		Номенклатура.Код                КАК Код,
    |		Номенклатура.Артикул            Как Артикул,
    |		КоличествоМест,
    |		Количество,
    |		ЕдиницаИзмерения.Представление     КАК ЕдиницаИзмерения,
    |		ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМест,
    |		Цена,
    |		ХарактеристикаНоменклатуры КАК Характеристика,
    |		СерияНоменклатуры КАК Серия
    |	),
    |	ВозвратнаяТара.(
    |		Номенклатура,
    |		Номенклатура.НаименованиеПолное КАК Товар,
    |		Номенклатура.Код                КАК Код,
    |		Номенклатура.Артикул            КАК Артикул,
    |		0 КАК КоличествоМест,
    |		Количество,
    |		0 КАК Цена,
    |		Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
    |		NULL                                               КАК ЕдиницаИзмеренияМест
    |	)
    |ИЗ
    |	Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
    |ГДЕ
    |	ПеремещениеТоваров.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |	Товары.НомерСтроки,
    |	ВозвратнаяТара.НомерСтроки
    |";
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    ВыборкаСтрокТовары = Шапка.Товары.Выбрать();
    ВыборкаСтрокТара   = Шапка.ВозвратнаяТара.Выбрать();
    
    
    // Выводим шапку накладной
    ПараметрыПечати.Вставить("ТекстЗаголовка", ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Накладная на перемещение"));
    
    ПараметрыПечати.Вставить("ПредставлениеПоставщика", Шапка.Поставщик + ", "+ Шапка.СкладОтправитель.Комментарий);
    ПараметрыПечати.Вставить("Поставщик", Шапка.СкладОтправитель);
    
    ПараметрыПечати.Вставить("ПредставлениеПолучателя", Шапка.Покупатель+ ", "+ Шапка.СкладПолучатель.Комментарий);
    ПараметрыПечати.Вставить("Получатель", Шапка.СкладПолучатель);
    
    
    // Вывести табличную часть
    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ПараметрыПечати.Вставить("ВыводитьКоды", Истина);
    ПараметрыПечати.Вставить("ИмяКолонкиКодов", "Артикул");
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
    ПараметрыПечати.Вставить("ВыводитьКоды", Истина);
    ПараметрыПечати.Вставить("ИмяКолонкиКодов", "Код");
    Иначе
    ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
    КонецЕсли;
    
    ПараметрыПечати.Вставить("ВыводитьЦены", СсылкаНаОбъект.СкладОтправитель.ВидСклада = Перечисления.ВидыСкладов.НТТ ИЛИ СсылкаНаОбъект.СкладПолучатель.ВидСклада = Перечисления.ВидыСкладов.НТТ);
    ПараметрыПечати.Вставить("ФлагПечатиМест", (СсылкаНаОбъект.Товары.Итог("КоличествоМест") > 0));
    
    Позиции = Новый Массив;
    Ном = 0;
    
    // Выборка товаров
    Пока ВыборкаСтрокТовары.Следующий() Цикл
    
    ПараметрыПозиции = Новый Структура;
    ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);		
    
    Ном = Ном + 1;		
    
    ПараметрыПозиции.Вставить("НомерСтроки", Ном);
    
    Если ПараметрыПечати.ВыводитьКоды Тогда
    Если ПараметрыПечати.ИмяКолонкиКодов = "Артикул" Тогда
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Артикул);
    Иначе
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Код);
    КонецЕсли;
    КонецЕсли;
    
    ПараметрыПозиции.Вставить("Товар", ВыборкаСтрокТовары.Товар + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары));
    
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ПараметрыПозиции.Вставить("КоличествоМест", ВыборкаСтрокТовары.КоличествоМест);
    ПараметрыПозиции.Вставить("ЕдиницаИзмеренияМест", ВыборкаСтрокТовары.ЕдиницаИзмеренияМест);
    КонецЕсли;
    
    ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТовары.Количество);
    ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТовары.ЕдиницаИзмерения);		
    //----------------------------------------------------------------------------------
    ТипЦенРозница = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000004");		
    ЗапросЦенНовых=Новый Запрос();
    ЗапросЦенНовых.УстановитьПараметр("ТекТМЦ", ВыборкаСтрокТовары.Номенклатура);
    ЗапросЦенНовых.УстановитьПараметр("ТекДатаПрайса", Шапка.Дата);	
    ЗапросЦенНовых.УстановитьПараметр("ТекСписокТиповЦен", ТипЦенРозница);
    ЗапросЦенНовых.Текст="ВЫБРАТЬ 
    |	ЦеныНоменклатурыСрезПоследнихНовая.ТипЦен КАК ТипЦенНовая,
    |	ЦеныНоменклатурыСрезПоследнихНовая.Валюта КАК ВалютаНовая,
    |	ЦеныНоменклатурыСрезПоследнихНовая.ЕдиницаИзмерения КАК ЕдиницаИзмеренияНовая,
    |	ВЫБОР
    |		КОГДА ЦеныНоменклатурыСрезПоследнихНовая.Цена ЕСТЬ NULL 
    |			ТОГДА 0
    |		ИНАЧЕ ЦеныНоменклатурыСрезПоследнихНовая.Цена
    |	КОНЕЦ КАК ЦенаНовая
    |ИЗ
    |	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекДатаПрайса, ) КАК ЦеныНоменклатурыСрезПоследнихНовая
    |ГДЕ
    |	ЦеныНоменклатурыСрезПоследнихНовая.Номенклатура = &ТекТМЦ
    |	И ЦеныНоменклатурыСрезПоследнихНовая.ТипЦен В(&ТекСписокТиповЦен)
    |
    |УПОРЯДОЧИТЬ ПО
    |	ТипЦенНовая";	
    РезультатЗапросаЦенНовых = ЗапросЦенНовых.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    ТекТаблицаЦенНовых = Новый ТаблицаЗначений;
    ТекТаблицаЦенНовых.Колонки.Добавить("ЦенаНовая"); 
    
    Пока РезультатЗапросаЦенНовых.Следующий() <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/цикл')">Цикл					</span>
    ТекСтрока=ТекТаблицаЦенНовых.Добавить();									
    ПараметрыПозиции.Вставить("Цена", РезультатЗапросаЦенНовых.ЦенаНовая);		
    КонецЦикла;
    
    //------------------------------------------------------------------------------------------------------
    #Если ВнешнееСоединение Тогда
    WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
    #КонецЕсли
    
    Позиции.Добавить(ПараметрыПозиции);
    
    КонецЦикла;
    
    // Выборка возвратная тара
    Пока ВыборкаСтрокТара.Следующий() Цикл
    
    ПараметрыПозиции = Новый Структура;
    ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);		
    
    Ном = Ном + 1;
    
    ПараметрыПозиции.Вставить("НомерСтроки", Ном);
    
    Если ПараметрыПечати.ВыводитьКоды Тогда
    Если ПараметрыПечати.ИмяКолонкиКодов = "Артикул" Тогда
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТара.Артикул);
    Иначе
    ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТара.Код);
    КонецЕсли;
    КонецЕсли;
    
    ПараметрыПозиции.Вставить("Товар", ВыборкаСтрокТара.Товар);
    
    Если ПараметрыПечати.ФлагПечатиМест Тогда
    ПараметрыПозиции.Вставить("КоличествоМест", ВыборкаСтрокТара.КоличествоМест);
    ПараметрыПозиции.Вставить("ЕдиницаИзмеренияМест", ВыборкаСтрокТара.ЕдиницаИзмеренияМест);
    КонецЕсли;
    
    ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТара.Количество);
    ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТара.ЕдиницаИзмерения);
    ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТара.Цена);
    
    #Если ВнешнееСоединение Тогда
    WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
    #КонецЕсли
    
    Позиции.Добавить(ПараметрыПозиции);
    
    КонецЦикла;
    
    ПараметрыПечати.Вставить("Позиции", Позиции);
    
    #Если ВнешнееСоединение Тогда
    WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПечати);
    #КонецЕсли
    
    Возврат ПараметрыПечати;
    
    КонецФункции //ПолучитьДанныеДляПечатиПеремещенияТоваров()
    
    
    
  2. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    после получения цен на Товар, попробуйте вставить что-то типа:

    Код:
    ПараметрыПозиции.Вставить("Сумма", РезультатЗапросаЦенНовых.ЦенаНовая * ВыборкаСтрокТовары.Количество);    
    
    
    
  3. TopicStarter Overlay
    Disday
    Offline

    Disday

    Регистрация:
    30 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    К сожалению ни че не получилось, странно 1с даже не сматюкалось))) может ещё варианты будут просто очень надо горю

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