Имя: Пароль:
1C
1С v8
Внешняя печатная форма (спецификация) цены встают без учета скидки
0 emptycolor
 
30.01.13
08:48
Добрый день. В 1С работаю всего 5й день и появилась задача:
При печати спецификации из документа Заказ покупателя итоговая сумма встает правильная, а цены встают без учета скидки.

Как это можно реализовать?
1 Галахад
 
гуру
30.01.13
08:49
1. Нуно почитать текст модуля.
2 Balabass
 
30.01.13
08:51
1. Мужской
2. Не сработаемся
3 Balabass
 
30.01.13
08:51
А вообще посмотреть как формируется эта цена, и как формируется та, что тебе нужна.
4 Azverin
 
30.01.13
08:55
(0) давай кусок кода, где выводится строка табл части в макет
5 emptycolor
 
30.01.13
09:16
Функция ПечатьСпецификации(ДанныеДляПечати)

   ТабДокумент = Новый ТабличныйДокумент;

   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Спецификация";
   Макет = ПолучитьМакет("Спецификация");

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

   НПП = 0;

   ВыборкаСтрокТовары = ДанныеДляПечати.ТабличнаяЧасть;
   СуммаНДС = 0;
   Сумма = 0;
   Для Каждого Строчка Из ВыборкаСтрокТовары Цикл
       Если Строчка.Количество <= 0 Тогда
           Продолжить;
       КонецЕсли;    
       НПП = НПП + 1;
       ОбластьМакета.Параметры.Заполнить(Строчка);
       ОбластьМакета.Параметры.НПП  = НПП;
       ТабДокумент.Вывести(ОбластьМакета);
       СуммаНДС = СуммаНДС + Строчка.СуммаНДС;
       Сумма = Сумма  + Строчка.Сумма;
   КонецЦикла;

   ОбластьМакета = Макет.ПолучитьОбласть("Итого");
   СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(Сумма, ДанныеДляПечати.Валюта);
   ОбластьМакета.Параметры.СуммаПрописью = СуммаПрописью;
   ОбластьМакета.Параметры.СуммаНДС = СуммаНДС;
   ОбластьМакета.Параметры.Сумма = Сумма;
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
   ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати);
   ОбластьМакета.Параметры.Дата1 = Формат(Дата1,"ДФ=dd.MM.yy");
   ОбластьМакета.Параметры.Дата2 = Формат(Дата2,"ДФ=dd.MM.yy");
   
   ТабДокумент.Вывести(ОбластьМакета);

   ТабДокумент.ПолеСверху = 0;
   ТабДокумент.ПолеСлева  = 0;
   ТабДокумент.ПолеСнизу  = 0;
   ТабДокумент.ПолеСправа = 0;
   ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
   ТабДокумент.АвтоМасштаб = Истина;

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

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

Функция Печать() Экспорт
   
   ТипОснования = ТипЗнч(СсылкаНаОбъект);
   ДанныеДляПечати = Неопределено;
       
   Если ТипОснования = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
           ЧастьДаты = ЧастиДаты.Дата;
           ВвестиДату(Дата1, "Введите срок оплаты:", ЧастьДаты);
           ВвестиДату(Дата2, "Введите срок поставки:", ЧастьДаты);
           ДанныеДляПечати    = СобратьДанныеПоЗаказу(СсылкаНаОбъект);
   КонецЕсли;    
   Если ДанныеДляПечати = Неопределено Тогда
       Возврат NULL;
   КонецЕсли;
       
   Возврат ПечатьСпецификации(ДанныеДляПечати);
   
КонецФункции // Печать
6 Balabass
 
30.01.13
09:22
ОбластьМакета.Параметры.Заполнить(Строчка);
Вот эта строка заполняюет твою цену.
Берет она свои данные из выборки:
Для Каждого Строчка Из ВыборкаСтрокТовары Цикл
Тебе нужно теперь предоставить запрос - который выгружается в ВыборкаСтрокТовары.
7 Balabass
 
30.01.13
09:28
Кстати ВыборкаСтрокТовары = ДанныеДляПечати.ТабличнаяЧасть;
Тебе надо посмотреть что выгружается в данныедляпечати
8 emptycolor
 
30.01.13
09:31
По ДаннымДляПечати

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

   Запрос.УстановитьПараметр("ДокументОснование", Основание);
   Запрос.УстановитьПараметр("Директор", Справочники.РолиКонтактныхЛиц.Директор);
   
   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
   
   ДанныеДляПечати = Новый Структура();
   
   ДанныеДляПечати.Вставить("ДатаДокумента", Шапка.ДатаДокумента);
   ДанныеДляПечати.Вставить("ДатаДоговора", Шапка.ДатаДоговора);
   ДанныеДляПечати.Вставить("НомерДоговора", Шапка.НомерДоговора);
   ДанныеДляПечати.Вставить("Спецификация", ?(Шапка.Акция = Неопределено, Неопределено, ?(Шапка.Акция.АкцияКДоговоруСоСпецификацией, Шапка.Акция, Неопределено)));
   ДанныеДляПечати.Вставить("ПредставлениеПоставщика", Шапка.ПредставлениеПоставщика);
   ДанныеДляПечати.Вставить("ПредставлениеПокупателя", Шапка.ПредставлениеПокупателя);
   ДанныеДляПечати.Вставить("СуммаДокумента", Шапка.СуммаДокумента);
   ДанныеДляПечати.Вставить("ТипДоставки", Шапка.ТипДоставки);
   ДанныеДляПечати.Вставить("Валюта", Шапка.Валюта);
   ДанныеДляПечати.Вставить("Дата1", Дата1);
   ДанныеДляПечати.Вставить("Дата2", Дата2);
   ДанныеДляПечати.Вставить("ПредставлениеОрганизации", Шапка.ПредставлениеОрганизации);
   ФИОДиректораПокупателя = ?(ЗначениеЗаполнено(Шапка.ФИОДиректораПокупателя), ПолучитьСокращенноеФИО(Шапка.ФИОДиректораПокупателя), "                 ");
   ДанныеДляПечати.Вставить("ФИОДиректораПокупателя", ФИОДиректораПокупателя);
   Если Шапка.ТипДоставки = Перечисления.НикольТипДоставки.Самовывоз Тогда
       СпособДоставки = "Передача Товара уполномоченному  Покупателем экспедитору/ перевозчику на складе Поставщика в г.Омск";
   ИначеЕсли Шапка.ТипДоставки = Перечисления.НикольТипДоставки.ДоставкаНашимТранспортомПоГороду Тогда    
       СпособДоставки = "Доставка товара до склада покупателя в г.Омск";
   Иначе
       РегионНаименование = ?(ЗначениеЗаполнено(Шапка.РегионНаименование), ПолучитьРегион(Шапка.РегионНаименование), "    ");
       СпособДоставки = "Доставка товара до склада покупателя в " + РегионНаименование;
   КонецЕсли;    
   ДанныеДляПечати.Вставить("СпособДоставки", СпособДоставки);
   
   Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации(Шапка.Организация, СсылкаНаОбъект.Дата);
   ДанныеДляПечати.Вставить("ФИОРуководителя", Руководители.Руководитель);
   
   
   //ЗапросТовары = Новый Запрос("ВЫБРАТЬ
   //                            |    ЗаказПокупателяТовары.ЕдиницаИзмерения,
   //                            |    ЗаказПокупателяТовары.Количество,
   //                            |    ЗаказПокупателяТовары.Цена,
   //                            |    ЗаказПокупателяТовары.Сумма КАК Стоимость,
   //                            |    ЗаказПокупателяТовары.Номенклатура.Наименование КАК ТоварНаименование,
   //                            |    ЗаказПокупателяТовары.СуммаНДС
   //                            |ИЗ
   //                            |    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
   //                            |ГДЕ
   //                            |    ЗаказПокупателяТовары.Ссылка = &ДокументОснование");
                               
   ЗапросТовары = Новый Запрос("ВЫБРАТЬ
                               |    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(100)) КАК ТоварНаименование,
                               |    ВложенныйЗапрос.Количество,
                               |    ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
                               |    ВложенныйЗапрос.ПроцентСкидкиНаценки + ВложенныйЗапрос.ПроцентАвтоматическихСкидок КАК Скидка,
                               |    ВложенныйЗапрос.Цена,
                               |    ВложенныйЗапрос.Сумма,
                               |    ВложенныйЗапрос.СуммаНДС,
                               |    ВложенныйЗапрос.Характеристика,
                               |    NULL КАК Серия
                               |ИЗ
                               |    (ВЫБРАТЬ
                               |        ВЛОЖЕННЫЙЗАПРОС1.Номенклатура КАК Номенклатура,
                               |        ВЛОЖЕННЫЙЗАПРОС1.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                               |        ВЛОЖЕННЫЙЗАПРОС1.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
                               |        ВЛОЖЕННЫЙЗАПРОС1.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
                               |        ВЛОЖЕННЫЙЗАПРОС1.Цена КАК Цена,
                               |        СУММА(ВЛОЖЕННЫЙЗАПРОС1.Количество) КАК Количество,
                               |        СУММА(ВЛОЖЕННЫЙЗАПРОС1.Сумма) КАК Сумма,
                               |        СУММА(ВЛОЖЕННЫЙЗАПРОС1.СуммаНДС) КАК СуммаНДС,
                               |        ВЛОЖЕННЫЙЗАПРОС1.Характеристика КАК Характеристика
                               |    ИЗ
                               |        (ВЫБРАТЬ
                               |            ЗаказПокупателя.Номенклатура КАК Номенклатура,
                               |            ЗаказПокупателя.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                               |            ЗаказПокупателя.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
                               |            ЗаказПокупателя.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
                               |            ЗаказПокупателя.Цена КАК Цена,
                               |            СУММА(ЗаказПокупателя.Количество) КАК Количество,
                               |            СУММА(ЗаказПокупателя.Сумма) КАК Сумма,
                               |            СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС,
                               |            ЗаказПокупателя.ХарактеристикаНоменклатуры КАК Характеристика
                               |        ИЗ
                               |            Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателя
                               |        ГДЕ
                               |            ЗаказПокупателя.Ссылка = &ДокументОснование
                               |        
                               |        СГРУППИРОВАТЬ ПО
                               |            ЗаказПокупателя.Номенклатура,
                               |            ЗаказПокупателя.ЕдиницаИзмерения,
                               |            ЗаказПокупателя.ПроцентСкидкиНаценки,
                               |            ЗаказПокупателя.ПроцентАвтоматическихСкидок,
                               |            ЗаказПокупателя.Цена,
                               |            ЗаказПокупателя.ХарактеристикаНоменклатуры
                               |        
                               |        ОБЪЕДИНИТЬ ВСЕ
                               |        
                               |        ВЫБРАТЬ
                               |            КорректировкаЗаказаПокупателяТовары.Номенклатура,
                               |            КорректировкаЗаказаПокупателяТовары.ЕдиницаИзмерения,
                               |            КорректировкаЗаказаПокупателяТовары.ПроцентСкидкиНаценки,
                               |            КорректировкаЗаказаПокупателяТовары.ПроцентАвтоматическихСкидок,
                               |            КорректировкаЗаказаПокупателяТовары.Цена,
                               |            СУММА(КорректировкаЗаказаПокупателяТовары.Количество),
                               |            СУММА(КорректировкаЗаказаПокупателяТовары.Сумма),
                               |            СУММА(КорректировкаЗаказаПокупателяТовары.СуммаНДС),
                               |            КорректировкаЗаказаПокупателяТовары.ХарактеристикаНоменклатуры
                               |        ИЗ
                               |            Документ.КорректировкаЗаказаПокупателя.Товары КАК КорректировкаЗаказаПокупателяТовары
                               |        ГДЕ
                               |            КорректировкаЗаказаПокупателяТовары.Ссылка.Проведен = ИСТИНА
                               |            И КорректировкаЗаказаПокупателяТовары.Ссылка.ЗаказПокупателя = &ДокументОснование
                               |        
                               |        СГРУППИРОВАТЬ ПО
                               |            КорректировкаЗаказаПокупателяТовары.Номенклатура,
                               |            КорректировкаЗаказаПокупателяТовары.ЕдиницаИзмерения,
                               |            КорректировкаЗаказаПокупателяТовары.ХарактеристикаНоменклатуры,
                               |            КорректировкаЗаказаПокупателяТовары.ПроцентСкидкиНаценки,
                               |            КорректировкаЗаказаПокупателяТовары.ПроцентАвтоматическихСкидок,
                               |            КорректировкаЗаказаПокупателяТовары.Цена) КАК ВЛОЖЕННЫЙЗАПРОС1
                               |    
                               |    СГРУППИРОВАТЬ ПО
                               |        ВЛОЖЕННЫЙЗАПРОС1.Номенклатура,
                               |        ВЛОЖЕННЫЙЗАПРОС1.ЕдиницаИзмерения,
                               |        ВЛОЖЕННЫЙЗАПРОС1.ПроцентСкидкиНаценки,
                               |        ВЛОЖЕННЫЙЗАПРОС1.ПроцентАвтоматическихСкидок,
                               |        ВЛОЖЕННЫЙЗАПРОС1.Цена,
                               |        ВЛОЖЕННЫЙЗАПРОС1.Характеристика) КАК ВложенныйЗапрос
                               |
                               |ОБЪЕДИНИТЬ ВСЕ
                               |
                               |ВЫБРАТЬ
                               |    ВЫБОР
                               |        КОГДА ЗаказПокупателя.Содержание ЕСТЬ NULL
                               |                ИЛИ ЗаказПокупателя.Содержание ПОДОБНО """"
                               |            ТОГДА ВЫРАЗИТЬ(ЗаказПокупателя.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
                               |        ИНАЧЕ ЗаказПокупателя.Содержание
                               |    КОНЕЦ,
                               |    ЗаказПокупателя.Количество,
                               |    ЗаказПокупателя.Номенклатура.ЕдиницаХраненияОстатков,
                               |    ЗаказПокупателя.ПроцентСкидкиНаценки,
                               |    ЗаказПокупателя.Цена,
                               |    ЗаказПокупателя.Сумма,
                               |    ЗаказПокупателя.СуммаНДС,
                               |    NULL,
                               |    NULL
                               |ИЗ
                               |    Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателя
                               |ГДЕ
                               |    ЗаказПокупателя.Ссылка = &ДокументОснование");
                               
                               
   ЗапросТовары.УстановитьПараметр("ДокументОснование", Основание);                            
   Товары = ЗапросТовары.Выполнить().Выгрузить();
   
   ДанныеДляПечати.Вставить("ТабличнаяЧасть", Товары);
   
   Возврат ДанныеДляПечати;

КонецФункции
9 Галахад
 
гуру
30.01.13
09:33
ОбластьМакета.Параметры.Заполнить(Строчка);
ОбластьМакета.Параметры.Цена = Строчка.Сумма / Сторчка.Количество;
10 emptycolor
 
30.01.13
10:34
Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (Выполнить): {(17, 20)}: Поле не найдено "ВЛОЖЕННЫЙЗАПРОС1.а"
ВЛОЖЕННЫЙЗАПРОС1.<<?>>а КАК Цена,
11 emptycolor
 
30.01.13
11:00
всем спасибо!!! разобрался где проблема)
задача решена
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.