Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Печатная форма Реализации товаров и услуг.  (Прочитано 20949 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ge4r
Участник

ru
Offline Offline

« : 02-08-2011 10:02 » 

Еще раз здравствуйте)

Ваяю еще одну печатную форму для документа "Реализация товоров и услуг"
В типовой там в табличной части выводится только Количество, Цена и Сумма. Мне нужно, чтобы еще в каждой строке выводился НДС и сумма с учетом НДС.

В общем поковырял код, макет нарисовал. проверяю - все отлично выводится. и текстовки и сведения об организации. а вот табличная часть остается пустой. почему - не понимаю. прикладываю внешнюю обработку к сообщению(там 2 макета. Акт1 - исходный, Акт- сделанный мной), буду премного благодарен если ткнете в ошибку носом)

Добавлено через 1 час, 16 минут и 17 секунд:
меня смущает вот этот код

Код:
Если Проведен И (Шапка.РасчетыВУсловныхЕдиницах
ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И ТаблицаУслуги.Дата >= '20090101000000')) Тогда

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СчетУчетаРасчетовСКонтрагентом);
Текст =
во внешней обработке он ругается на  то, что непонятно что за проведен, ссылка и СчетУчета.

я так понимаю нужно видоизменить так

Код:
Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах
ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И ТаблицаУслуги.Дата >= '20090101000000')) Тогда

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

или я дурак и все не так?

* 1.epf (14.35 Кб - загружено 930 раз.)
« Последнее редактирование: 02-08-2011 11:18 от ge4r » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 02-08-2011 12:23 » 

Все верно.
Когда ты в модуле объекта - у тебя по умолчанию доступны свойства и методы этого объекта. Т.е. для модуля документа обращение ЭтотОбъект.Проведен === Проведен.
Когда же ты в модуле обработки - то переменная ЭтотОбъект ссылается на твою обработку, соответсвенно - этих свойств у нее нет, вот и ругается.
Абсолютно верный вывод - обращайся через ссылку на объект.
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #2 : 02-08-2011 12:45 » 

Обратился, но все равно табличная часть пуста. то есть выводится сразу шапка таблици и итого, а области строка и в помине не видно
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 02-08-2011 14:06 » 

По идее у тебя должен быть запрос по строкам
Покажи полный цикл, в котором выводится область строки
Записан
ge4r
Участник

ru
Offline Offline

« Ответ #4 : 02-08-2011 17:10 » 

разобрался уже. база была пустая, и для тестов сам ручками забивал. видимо криво назабивал.  взял нормальную базу - все работает)
Спасибо за помощь.
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #5 : 15-02-2012 11:12 » new

Добрый день. Можете подсказать как можно сделать чтобы информация о исполнителе и заказчике выводились в самом вверху в два столбца по вертикали, а ниже было написано номер акта? Пробовал исправить все на макете, все равно Акт всегда находится выше исполнителя с заказчиком и плюс еще они всегда расположены в 2 строки по горизонтали.
Код:
Функция Печать()      Экспорт

ЗапросШапка = Новый Запрос;
ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
ЗапросШапка.Текст =
"ВЫБРАТЬ
| Номер,
| Дата,
| ДоговорКонтрагента,
| ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
| Контрагент КАК Получатель,


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

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

//
ЗапросУслуги.Текст =
"ВЫБРАТЬ
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + " КАК Номенклатура,
| " + ЧастьЗапросаДляВыбораСодержанияУслуг + " КАК Товар,
| Истина КАК Услуга,
| Количество,
| Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Цена * &Курс / &Кратность КАК Цена,
| Сумма * &Курс / &Кратность КАК Сумма,
| СтавкаНДС,
| СуммаНДС * &Курс / &Кратность КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
|
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|";

Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах
ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И Шапка.Дата >= '20090101000000')) Тогда

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

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

РасчетСуммыНДСПоСтавке =  УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.Дата);

Если НЕ СуммаВзаиморасчетов = NULL Тогда

ТаблицаУслуги.Колонки.Добавить("СуммаБезНДС");

МассивРаспределения = Новый Массив;

Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл

СуммаСНДС = СтрокаТовар.Сумма + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;

МассивРаспределения.Добавить(СуммаСНДС);
СтрокаТовар.СуммаБезНДС = СуммаБезНДС;
   
КонецЦикла;

ТаблицаУслуги.Колонки.Добавить("СуммаРублевая");
УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ТаблицаУслуги, "СуммаРублевая");

Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл

Если РасчетСуммыНДСПоСтавке Тогда
//Выделение суммы НДС, Расчет суммы без НДС
ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС);

СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2));
СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;

Иначе
МассивРаспределения.Очистить();
МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДС);
МассивРаспределения.Добавить(СтрокаТовар.СуммаНДС);
МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения);
Если МассивРаспределенныхСумм <> Неопределено Тогда
СтрокаТовар.Сумма = МассивРаспределенныхСумм[0];
СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1];
КонецЕсли;
КонецЕсли;

Если Шапка.СуммаВключаетНДС Тогда
СтрокаТовар.Сумма = СтрокаТовар.Сумма+СтрокаТовар.СуммаНДС;
КонецЕсли;

КонецЦикла;

КонецЕсли;

Иначе
ТаблицаУслуги = ЗапросУслуги.Выполнить().Выгрузить();
КонецЕсли;

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

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

//Добавленная строка
СведенияОПоставщике       = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация,       Шапка.Дата);

ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
//Первоначальная строка
//ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "НаименованиеДляПечатныхФорм,");
ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик;
ТабДокумент.Вывести(ОбластьМакета);

//Добавленная строка
СведенияОПокупателе       = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель,       Шапка.Дата);


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

ЕстьСкидки = Ложь;

// Вывести табличную часть
ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьСтроки = Макет.ПолучитьОбласть("Строка");

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

Если Не СтрокаТабличнойЧасти.Услуга Тогда
Продолжить;
КонецЕсли;

НомерСтроки = НомерСтроки + 1;
Сумма    = Сумма + СтрокаТабличнойЧасти.Сумма;
СуммаНДС = СуммаНДС + СтрокаТабличнойЧасти.СуммаНДС;

ОбластьСтроки.Параметры.Заполнить(СтрокаТабличнойЧасти);
ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки;
        ОбластьСтроки.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.Товар);

ТабДокумент.Вывести(ОбластьСтроки);

КонецЦикла;

ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Вывести(ОбластьМакета);

Если Шапка.УчитыватьНДС Тогда

ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");

Если СуммаНДС <> 0 Тогда
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
ОбластьМакета.Параметры.НДС      = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
Иначе
ОбластьМакета.Параметры.ВсегоНДС = "-";
ОбластьМакета.Параметры.НДС      = "Без налога (НДС)";
КонецЕсли;

ТабДокумент.Вывести(ОбластьМакета);

КонецЕсли;

СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг " + НомерСтроки
                                       + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, мВалютаРегламентированногоУчета);
ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета);
ТабДокумент.Вывести(ОбластьМакета);

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

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

КонецФункции // ПечатьАктаОбОказанииУслуг()
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 15-02-2012 13:57 » 

Нужен скриншот макета из конфигуратора, чтобы понять где какие области.
Также желательно скриншот, в каком виде нужно получить документ
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #7 : 16-02-2012 05:20 » 

Нужен скриншот макета из конфигуратора, чтобы понять где какие области.
Также желательно скриншот, в каком виде нужно получить документ
Прикрепил скриншот макета, там уже видно как все должно быть расположено.

* скрин.jpg (147.81 Кб - загружено 1067 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 16-02-2012 13:36 » 

Думаю что саму структуру у тебя выводит, но она не заполнена.
Чтобы получилось, как ты хочешь, попробуй закомментировать строки:
Код: (1C v8)
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
и
Код: (1C v8)
ТабДокумент.Вывести(ОбластьМакета);
после строк
Код: (1C v8)
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт");
Код: (1C v8)
ОбластьМакета.Параметры.Поставщик                                = Шапка.Поставщик;
Оставь только после
Код: (1C v8)
ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
и далее
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #9 : 17-02-2012 06:01 » 

Kivals,
Огромное спасибо, все заработало. Можете еще подсказать какие параметры нужно добавить в модуль чтобы заработали <ДоговорКонтрагента> и <ДатаДокумента>?
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 18-02-2012 11:22 » 

Patronus, нужно чтобы соотвествующие параметры в области заполнялись _до_ ТабДокумент.Вывести()
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #11 : 20-02-2012 10:50 » 

Kivals,  Можете подсказать как можно сделать чтобы в заголовке Акта был только его номер без даты, я так понял это надо где то здесь править:
Код:
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт");
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #12 : 20-02-2012 11:17 » 

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

Меняем на это:
Код:
ОбластьМакета.Параметры.ТекстЗаголовка =  ОбщегоНазначения.СформироватьЗаголовокДокументаБезДаты(Шапка, "Акт");

А вот это:
Код:
Функция СформироватьЗаголовокДокументаБезДаты(ДокументОбъект, НазваниеДокумента = "") Экспорт

Если ДокументОбъект = Неопределено Тогда
Возврат "";
Иначе
Возврат ?(НЕ ЗначениеЗаполнено(НазваниеДокумента), ДокументОбъект.Метаданные().Синоним, НазваниеДокумента) + " № " + ПолучитьНомерНаПечать(ДокументОбъект);
КонецЕсли;

КонецФункции

В общий модуль, который называется "ОбщегоНазначения"

Анекдот:
Сдает студент экзамен:
- Эту хуйню вставляем в эту хуйню, а эту хуйню в эту... . и получается вот эта мелочь.
Преподаватель берет зачетку, пишет "офигительно"
 Улыбаюсь
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #13 : 20-02-2012 12:05 » 

Dest,  Сделал попроще:
Код:
ОбластьМакета.Параметры.ТекстЗаголовка = "Акт № " + Прав(Шапка.Номер, 7);
« Последнее редактирование: 20-02-2012 12:11 от Patronus » Записан
Dest
Опытный

ru
Offline Offline

« Ответ #14 : 20-02-2012 19:43 » 

Можно и так Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines