ge4r
Участник
Offline
|
|
« : 02-08-2011 10:02 » |
|
Еще раз здравствуйте) Ваяю еще одну печатную форму для документа "Реализация товоров и услуг" В типовой там в табличной части выводится только Количество, Цена и Сумма. Мне нужно, чтобы еще в каждой строке выводился НДС и сумма с учетом НДС. В общем поковырял код, макет нарисовал. проверяю - все отлично выводится. и текстовки и сведения об организации. а вот табличная часть остается пустой. почему - не понимаю. прикладываю внешнюю обработку к сообщению(там 2 макета. Акт1 - исходный, Акт- сделанный мной), буду премного благодарен если ткнете в ошибку носом) Добавлено через 1 час, 16 минут и 17 секунд:меня смущает вот этот код Если Проведен И (Шапка.РасчетыВУсловныхЕдиницах ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И ТаблицаУслуги.Дата >= '20090101000000')) Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СчетУчетаРасчетовСКонтрагентом); Текст = во внешней обработке он ругается на то, что непонятно что за проведен, ссылка и СчетУчета. я так понимаю нужно видоизменить так Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И ТаблицаУслуги.Дата >= '20090101000000')) Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом); Текст =
или я дурак и все не так?
|
1.epf (14.35 Кб - загружено 993 раз.)
|
« Последнее редактирование: 02-08-2011 11:18 от ge4r »
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #1 : 02-08-2011 12:23 » |
|
Все верно. Когда ты в модуле объекта - у тебя по умолчанию доступны свойства и методы этого объекта. Т.е. для модуля документа обращение ЭтотОбъект.Проведен === Проведен. Когда же ты в модуле обработки - то переменная ЭтотОбъект ссылается на твою обработку, соответсвенно - этих свойств у нее нет, вот и ругается. Абсолютно верный вывод - обращайся через ссылку на объект.
|
|
|
Записан
|
|
|
|
ge4r
Участник
Offline
|
|
« Ответ #2 : 02-08-2011 12:45 » |
|
Обратился, но все равно табличная часть пуста. то есть выводится сразу шапка таблици и итого, а области строка и в помине не видно
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #3 : 02-08-2011 14:06 » |
|
По идее у тебя должен быть запрос по строкам Покажи полный цикл, в котором выводится область строки
|
|
|
Записан
|
|
|
|
ge4r
Участник
Offline
|
|
« Ответ #4 : 02-08-2011 17:10 » |
|
разобрался уже. база была пустая, и для тестов сам ручками забивал. видимо криво назабивал. взял нормальную базу - все работает) Спасибо за помощь.
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #5 : 15-02-2012 11:12 » |
|
Добрый день. Можете подсказать как можно сделать чтобы информация о исполнителе и заказчике выводились в самом вверху в два столбца по вертикали, а ниже было написано номер акта? Пробовал исправить все на макете, все равно Акт всегда находится выше исполнителя с заказчиком и плюс еще они всегда расположены в 2 строки по горизонтали. Функция Печать() Экспорт
ЗапросШапка = Новый Запрос; ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросШапка.Текст = "ВЫБРАТЬ | Номер, | Дата, | ДоговорКонтрагента, | ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах, | Контрагент КАК Получатель, | Организация КАК Поставщик, | Организация, | СуммаДокумента, | ВалютаДокумента, | УчитыватьНДС, | СуммаВключаетНДС |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент"; Шапка = ЗапросШапка.Выполнить().Выбрать(); Шапка.Следующий();
ЗапросУслуги = Новый Запрос; ЗапросУслуги.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросУслуги.УстановитьПараметр("Курс", ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета)); ЗапросУслуги.УстановитьПараметр("Кратность", ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета)); ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("РеализацияТоваровУслуг"); // ЗапросУслуги.Текст = "ВЫБРАТЬ | " + ЧастьЗапросаДляВыбораСодержанияУслуг + " КАК Номенклатура, | " + ЧастьЗапросаДляВыбораСодержанияУслуг + " КАК Товар, | Истина КАК Услуга, | Количество, | Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена * &Курс / &Кратность КАК Цена, | Сумма * &Курс / &Кратность КАК Сумма, | СтавкаНДС, | СуммаНДС * &Курс / &Кратность КАК СуммаНДС |ИЗ | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент |"; Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И Шапка.Дата >= '20090101000000')) Тогда ЗапросУслуги.Текст = ЗапросУслуги.Текст + " |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Номенклатура КАК Номенклатура, | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар, | Ложь КАК Услуга, | Количество, | ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена * &Курс / &Кратность КАК Цена, | Сумма * &Курс / &Кратность КАК Сумма, | СтавкаНДС, | СуммаНДС * &Курс / &Кратность КАК СуммаНДС |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент"; ТаблицаУслуги = ЗапросУслуги.Выполнить().Выгрузить(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Текст = "ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Регистратор = &Ссылка | И Хозрасчетный.СчетДт = Хозрасчетный.Регистратор.СчетУчетаРасчетовСКонтрагентом | И Хозрасчетный.СчетКт В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | РеализацияТоваровУслугТовары.СчетДоходовБУ | ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ГДЕ | РеализацияТоваровУслугТовары.Ссылка = Хозрасчетный.Регистратор | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | РеализацияТоваровУслугУслуги.СчетДоходовБУ | ИЗ | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги | ГДЕ | РеализацияТоваровУслугУслуги.Ссылка = Хозрасчетный.Регистратор) |"; Запрос.Текст = Текст; СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма; РасчетСуммыНДСПоСтавке = УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.Дата); Если НЕ СуммаВзаиморасчетов = NULL Тогда ТаблицаУслуги.Колонки.Добавить("СуммаБезНДС"); МассивРаспределения = Новый Массив; Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл СуммаСНДС = СтрокаТовар.Сумма + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС); СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;
МассивРаспределения.Добавить(СуммаСНДС); СтрокаТовар.СуммаБезНДС = СуммаБезНДС; КонецЦикла; ТаблицаУслуги.Колонки.Добавить("СуммаРублевая"); УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ТаблицаУслуги, "СуммаРублевая"); Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл Если РасчетСуммыНДСПоСтавке Тогда //Выделение суммы НДС, Расчет суммы без НДС ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС); СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2)); СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС; Иначе МассивРаспределения.Очистить(); МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДС); МассивРаспределения.Добавить(СтрокаТовар.СуммаНДС); МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения); Если МассивРаспределенныхСумм <> Неопределено Тогда СтрокаТовар.Сумма = МассивРаспределенныхСумм[0]; СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1]; КонецЕсли; КонецЕсли; Если Шапка.СуммаВключаетНДС Тогда СтрокаТовар.Сумма = СтрокаТовар.Сумма+СтрокаТовар.СуммаНДС; КонецЕсли; КонецЦикла; КонецЕсли; Иначе ТаблицаУслуги = ЗапросУслуги.Выполнить().Выгрузить(); КонецЕсли; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт"; Макет = ПолучитьМакет("Акт");
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт"); ТабДокумент.Вывести(ОбластьМакета);
//Добавленная строка СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата); ОбластьМакета = Макет.ПолучитьОбласть("Поставщик"); //Первоначальная строка //ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "НаименованиеДляПечатныхФорм,"); ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике); ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика; ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик; ТабДокумент.Вывести(ОбластьМакета);
//Добавленная строка СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель"); //Первоначальная строка //ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ПолноеНаименование,"); ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе); ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя; ОбластьМакета.Параметры.Получатель = Шапка.Получатель; ТабДокумент.Вывести(ОбластьМакета);
ЕстьСкидки = Ложь;
// Вывести табличную часть ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
ТабДокумент.Вывести(ОбластьМакета); НомерСтроки = 0; Сумма = 0; СуммаНДС = 0; Для Каждого СтрокаТабличнойЧасти Из ТаблицаУслуги Цикл Если Не СтрокаТабличнойЧасти.Услуга Тогда Продолжить; КонецЕсли; НомерСтроки = НомерСтроки + 1; Сумма = Сумма + СтрокаТабличнойЧасти.Сумма; СуммаНДС = СуммаНДС + СтрокаТабличнойЧасти.СуммаНДС; ОбластьСтроки.Параметры.Заполнить(СтрокаТабличнойЧасти); ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки; ОбластьСтроки.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.Товар); ТабДокумент.Вывести(ОбластьСтроки);
КонецЦикла; ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма); ТабДокумент.Вывести(ОбластьМакета);
Если Шапка.УчитыватьНДС Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС"); Если СуммаНДС <> 0 Тогда ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС); ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС"); Иначе ОбластьМакета.Параметры.ВсегоНДС = "-"; ОбластьМакета.Параметры.НДС = "Без налога (НДС)"; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС); ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью"); ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг " + НомерСтроки + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, мВалютаРегламентированногоУчета); ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета); ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьАктаОбОказанииУслуг()
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #6 : 15-02-2012 13:57 » |
|
Нужен скриншот макета из конфигуратора, чтобы понять где какие области. Также желательно скриншот, в каком виде нужно получить документ
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #7 : 16-02-2012 05:20 » |
|
Нужен скриншот макета из конфигуратора, чтобы понять где какие области. Также желательно скриншот, в каком виде нужно получить документ
Прикрепил скриншот макета, там уже видно как все должно быть расположено.
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #8 : 16-02-2012 13:36 » |
|
Думаю что саму структуру у тебя выводит, но она не заполнена. Чтобы получилось, как ты хочешь, попробуй закомментировать строки: ОбластьМакета = Макет.ПолучитьОбласть("Поставщик"); ОбластьМакета = Макет.ПолучитьОбласть("Покупатель"); и ТабДокумент.Вывести(ОбластьМакета); после строк ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт"); ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик; Оставь только после ОбластьМакета.Параметры.Получатель = Шапка.Получатель; и далее
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #9 : 17-02-2012 06:01 » |
|
Kivals, Огромное спасибо, все заработало. Можете еще подсказать какие параметры нужно добавить в модуль чтобы заработали <ДоговорКонтрагента> и <ДатаДокумента>?
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #10 : 18-02-2012 11:22 » |
|
Patronus, нужно чтобы соотвествующие параметры в области заполнялись _до_ ТабДокумент.Вывести()
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #11 : 20-02-2012 10:50 » |
|
Kivals, Можете подсказать как можно сделать чтобы в заголовке Акта был только его номер без даты, я так понял это надо где то здесь править: ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт");
|
|
|
Записан
|
|
|
|
Dest
Опытный
Offline
|
|
« Ответ #12 : 20-02-2012 11:17 » |
|
Вот вариант: Это ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт"); Меняем на это: ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокументаБезДаты(Шапка, "Акт"); А вот это: Функция СформироватьЗаголовокДокументаБезДаты(ДокументОбъект, НазваниеДокумента = "") Экспорт Если ДокументОбъект = Неопределено Тогда Возврат ""; Иначе Возврат ?(НЕ ЗначениеЗаполнено(НазваниеДокумента), ДокументОбъект.Метаданные().Синоним, НазваниеДокумента) + " № " + ПолучитьНомерНаПечать(ДокументОбъект); КонецЕсли;
КонецФункции В общий модуль, который называется "ОбщегоНазначения" Анекдот: Сдает студент экзамен: - Эту хуйню вставляем в эту хуйню, а эту хуйню в эту... . и получается вот эта мелочь. Преподаватель берет зачетку, пишет " офигительно"
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #13 : 20-02-2012 12:05 » |
|
Dest, Сделал попроще: ОбластьМакета.Параметры.ТекстЗаголовка = "Акт № " + Прав(Шапка.Номер, 7);
|
|
« Последнее редактирование: 20-02-2012 12:11 от Patronus »
|
Записан
|
|
|
|
Dest
Опытный
Offline
|
|
« Ответ #14 : 20-02-2012 19:43 » |
|
Можно и так
|
|
|
Записан
|
|
|
|
|