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

Накладная на перемещение не хватает колонки сумма УТ 8.1 (8.1.15.14)

Автор Disday, 15 авг 2011, 12:17

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

Disday

     Здравствуйте уважаемые форумчане!
Вот есть у меня такая обработка Перемещение_товаров_2.epf

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

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


Функция Печать() Экспорт

ПараметрыПечати = ПолучитьДанныеДляПечатиПеремещенияТоваров();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная";
Макет       = ПолучитьМакет("Накладная");

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

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

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

// Вывести табличную часть

//Если ПараметрыПечати.ВыводитьЦены Тогда
ИмяШапки  = "ШапкаТаблицыСЦенами";
ИмяСтроки = "СтрокаСЦенами";
//Иначе
// ИмяШапки  = "ШапкаТаблицы";
// ИмяСтроки = "Строка";
//КонецЕсли;

ОбластьНомера  = Макет.ПолучитьОбласть(ИмяШапки + "|НомерСтроки");
ОбластьКодов   = Макет.ПолучитьОбласть(ИмяШапки + "|КолонкаКодов");
ОбластьТовар   = Макет.ПолучитьОбласть(ИмяШапки + "|Товар");
ОбластьМест    = Макет.ПолучитьОбласть(ИмяШапки + "|Мест");
ОбластьДанных  = Макет.ПолучитьОбласть(ИмяШапки + "|Данные");

ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьКолонкаТовар = Макет.Область("Товар");
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
                                    + ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
Иначе
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
                                    + Макет.Область("КолонкаКодов").ШиринаКолонки
                                    + ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
КонецЕсли;
Если ПараметрыПечати.ФлагПечатиМест Тогда
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);

ОбластьНомера = Макет.ПолучитьОбласть(ИмяСтроки + "|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть(ИмяСтроки + "|КолонкаКодов");
ОбластьТовар  = Макет.ПолучитьОбласть(ИмяСтроки + "|Товар");
ОбластьМест   = Макет.ПолучитьОбласть(ИмяСтроки + "|Мест");
ОбластьДанных = Макет.ПолучитьОбласть(ИмяСтроки + "|Данные");

// Выборка товаров
Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл

Если НЕ ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;

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

Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;

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

Если ПараметрыПечати.ФлагПечатиМест Тогда
ОбластьМест.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;

ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьДанных);

КонецЦикла;
   
// Вывести подвал
ОбластьНомера = Макет.ПолучитьОбласть("Подвал|НомерСтроки");
ОбластьКодов  = Макет.ПолучитьОбласть("Подвал|КолонкаКодов");
ОбластьТовар  = Макет.ПолучитьОбласть("Подвал|Товар");
ОбластьМест   = Макет.ПолучитьОбласть("Подвал|Мест");
ОбластьДанных = Макет.ПолучитьОбласть("Подвал|Данные");

ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
Если ПараметрыПечати.ФлагПечатиМест Тогда
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);

// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.АвтоМасштаб=Истина;
ТабДокумент.ОтображатьСетку=Ложь;
ТабДокумент.Вывести(ОбластьМакета);

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

КонецФункции // ПечатьПеремещениеТоваров()

Функция ПолучитьДанныеДляПечатиПеремещенияТоваров() Экспорт
//Функция Печать() Экспорт

ПараметрыПечати = Новый Структура;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);

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


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

ПараметрыПечати.Вставить("ПредставлениеПоставщика", Шапка.Поставщик + ", "+ Шапка.СкладОтправитель.Комментарий);
ПараметрыПечати.Вставить("Поставщик", Шапка.СкладОтправитель);

ПараметрыПечати.Вставить("ПредставлениеПолучателя", Шапка.Покупатель+ ", "+ Шапка.СкладПолучатель.Комментарий);
ПараметрыПечати.Вставить("Получатель", Шапка.СкладПолучатель);


// Вывести табличную часть
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ПараметрыПечати.Вставить("ВыводитьКоды", Истина);
ПараметрыПечати.Вставить("ИмяКолонкиКодов", "Артикул");
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ПараметрыПечати.Вставить("ВыводитьКоды", Истина);
ПараметрыПечати.Вставить("ИмяКолонкиКодов", "Код");
Иначе
ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
КонецЕсли;

ПараметрыПечати.Вставить("ВыводитьЦены", СсылкаНаОбъект.СкладОтправитель.ВидСклада = Перечисления.ВидыСкладов.НТТ ИЛИ СсылкаНаОбъект.СкладПолучатель.ВидСклада = Перечисления.ВидыСкладов.НТТ);
ПараметрыПечати.Вставить("ФлагПечатиМест", (СсылкаНаОбъект.Товары.Итог("КоличествоМест") > 0));

Позиции = Новый Массив;
Ном = 0;

// Выборка товаров
Пока ВыборкаСтрокТовары.Следующий() Цикл

ПараметрыПозиции = Новый Структура;
ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);

Ном = Ном + 1;

ПараметрыПозиции.Вставить("НомерСтроки", Ном);

Если ПараметрыПечати.ВыводитьКоды Тогда
Если ПараметрыПечати.ИмяКолонкиКодов = "Артикул" Тогда
ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Артикул);
Иначе
ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Код);
КонецЕсли;
КонецЕсли;

ПараметрыПозиции.Вставить("Товар", ВыборкаСтрокТовары.Товар + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары));

Если ПараметрыПечати.ФлагПечатиМест Тогда
ПараметрыПозиции.Вставить("КоличествоМест", ВыборкаСтрокТовары.КоличествоМест);
ПараметрыПозиции.Вставить("ЕдиницаИзмеренияМест", ВыборкаСтрокТовары.ЕдиницаИзмеренияМест);
КонецЕсли;

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

ТекТаблицаЦенНовых = Новый ТаблицаЗначений;
ТекТаблицаЦенНовых.Колонки.Добавить("ЦенаНовая");

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

//------------------------------------------------------------------------------------------------------
#Если ВнешнееСоединение Тогда
WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
#КонецЕсли

Позиции.Добавить(ПараметрыПозиции);

КонецЦикла;

// Выборка возвратная тара
Пока ВыборкаСтрокТара.Следующий() Цикл

ПараметрыПозиции = Новый Структура;
ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);

Ном = Ном + 1;

ПараметрыПозиции.Вставить("НомерСтроки", Ном);

Если ПараметрыПечати.ВыводитьКоды Тогда
Если ПараметрыПечати.ИмяКолонкиКодов = "Артикул" Тогда
ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТара.Артикул);
Иначе
ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТара.Код);
КонецЕсли;
КонецЕсли;

ПараметрыПозиции.Вставить("Товар", ВыборкаСтрокТара.Товар);

Если ПараметрыПечати.ФлагПечатиМест Тогда
ПараметрыПозиции.Вставить("КоличествоМест", ВыборкаСтрокТара.КоличествоМест);
ПараметрыПозиции.Вставить("ЕдиницаИзмеренияМест", ВыборкаСтрокТара.ЕдиницаИзмеренияМест);
КонецЕсли;

ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТара.Количество);
ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТара.ЕдиницаИзмерения);
ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТара.Цена);

#Если ВнешнееСоединение Тогда
WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
#КонецЕсли

Позиции.Добавить(ПараметрыПозиции);

КонецЦикла;

ПараметрыПечати.Вставить("Позиции", Позиции);

#Если ВнешнееСоединение Тогда
WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПечати);
#КонецЕсли

Возврат ПараметрыПечати;

КонецФункции //ПолучитьДанныеДляПечатиПеремещенияТоваров()


Теги:

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

Рейтинг@Mail.ru

Поиск