|
Ошибка при создании внешней печатной формы | ☑ | ||
---|---|---|---|---|
0
nushenka
06.08.13
✎
06:58
|
Создаю внешнюю печатную форму акта выполненных работ:
Функция ПечатьАктаОбОказанииУслуг() //мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета"); мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); СуммыВРублях = Ложь; ЗапросШапка = Новый Запрос; ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросШапка.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Номер, | РеализацияТоваровУслуг.Дата, | РеализацияТоваровУслуг.ДоговорКонтрагента, | РеализацияТоваровУслуг.Контрагент КАК Получатель, | РеализацияТоваровУслуг.Организация КАК Поставщик, | РеализацияТоваровУслуг.Организация, | РеализацияТоваровУслуг.СуммаДокумента, | РеализацияТоваровУслуг.ВалютаДокумента, | РеализацияТоваровУслуг.УчитыватьНДС, | РеализацияТоваровУслуг.СуммаВключаетНДС, | РеализацияТоваровУслуг.КратностьВзаиморасчетов, | РеализацияТоваровУслуг.КурсВзаиморасчетов |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент"; Шапка = ЗапросШапка. Выполнить ().Выбрать(); Шапка.Следующий(); ЗапросУслуги = Новый Запрос; ЗапросУслуги.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("РеализацияТоваровУслуг"); ЗапросУслуги.Текст = "ВЫБРАТЬ | Номенклатура КАК Номенклатура, | " + СтрокаВыборкиПоляСодержания + " КАК Товар, | СУММА(Количество) КАК Количество, | ВЫБОР | КОГДА | Номенклатура.ЕдиницаХраненияОстатков.Представление ЕСТЬ NULL | ТОГДА | Номенклатура.БазоваяЕдиницаИзмерения.Представление | ИНАЧЕ | Номенклатура.ЕдиницаХраненияОстатков.Представление | КОНЕЦ КАК ЕдиницаИзмерения, | Цена * &Курс / &Кратность КАК Цена, | СУММА(Сумма * &Курс / &Кратность) КАК Сумма, | СтавкаНДС, | СУММА(СуммаНДС * &Курс / &Кратность) КАК СуммаНДС, | ПроцентСкидкиНаценки КАК Скидка, | МИНИМУМ(НомерСтроки) КАК НомерСтроки |ИЗ | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент | |СГРУППИРОВАТЬ ПО | Номенклатура, | " + СтрокаВыборкиПоляСодержания + ", | Количество, | ВЫБОР | КОГДА | Номенклатура.ЕдиницаХраненияОстатков.Представление ЕСТЬ NULL | ТОГДА | Номенклатура.БазоваяЕдиницаИзмерения.Представление | ИНАЧЕ | Номенклатура.ЕдиницаХраненияОстатков.Представление | КОНЕЦ, | Цена * &Курс / &Кратность, | СтавкаНДС, | ПроцентСкидкиНаценки | |УПОРЯДОЧИТЬ ПО НомерСтроки"; // Вычислим курс документа для печати Если СуммыВРублях И Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета Тогда ЗапросКурсАванса = Новый Запрос; ЗапросКурсАванса.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбЪект); ЗапросКурсАванса.Текст = "ВЫБРАТЬ | Док.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов, | Док.СуммаРегл КАК СуммаРегл |ИЗ | Документ.РеализацияТоваровУслуг.ДокументыРасчетовСКонтрагентом КАК Док |ГДЕ | Док.Ссылка = &ТекущийДокумент |ИТОГИ | СУММА(СуммаВзаиморасчетов), | СУММА(СуммаРегл) |ПО | ОБЩИЕ"; Выборка = ЗапросКурсАванса.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Если Выборка.Следующий() Тогда КурсОплаты = ?(Выборка.СуммаВзаиморасчетов = 0, 0, Выборка.СуммаРегл / Выборка.СуммаВзаиморасчетов); ВыборкаСуммаВзаиморасчетов = Выборка.СуммаВзаиморасчетов; ВыборкаСуммаРегл = Выборка.СуммаРегл; Иначе КурсОплаты = 0; ВыборкаСуммаВзаиморасчетов = 0; ВыборкаСуммаРегл = 0; КонецЕсли; СуммаВзаиморасчетов = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(УчетНДС.ПолучитьСуммуДокументаСНДС(СсылкаНаОбъект, "Услуги"), Шапка.ВалютаДокумента, Шапка.ДоговорКонтрагента.ВалютаВзаиморасчетов, ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета), Шапка.КурсВзаиморасчетов, ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета), Шапка.КратностьВзаиморасчетов); НеоплаченнаяСумма = СуммаВзаиморасчетов - ВыборкаСуммаВзаиморасчетов; Если НеоплаченнаяСумма > 0 Тогда КурсДляПечати = (НеоплаченнаяСумма * Шапка.КурсВзаиморасчетов + ВыборкаСуммаРегл)/(НеоплаченнаяСумма + ВыборкаСуммаВзаиморасчетов); Иначе КурсДляПечати = КурсОплаты; КонецЕсли; Если КурсДляПечати = 0 Тогда ЗапросУслуги.УстановитьПараметр("Курс", СсылкаНаОбъект.КурсВзаиморасчетов); ЗапросУслуги.УстановитьПараметр("Кратность", ?(Шапка.КратностьВзаиморасчетов=0, 1, СсылкаНаОбъект.КратностьВзаиморасчетов)); Иначе ЗапросУслуги.УстановитьПараметр("Курс", КурсДляПечати); ЗапросУслуги.УстановитьПараметр("Кратность", 1); КонецЕсли; Иначе // Пересчитывать цену и сумму не надо, т.к. // - либо документ оформлен и выводится в рублях // - либо документ выводится в той же валюте, в которой он оформлен ЗапросУслуги.УстановитьПараметр("Курс", 1); ЗапросУслуги.УстановитьПараметр("Кратность", 1); КонецЕсли; ТаблицаУслуги = ЗапросУслуги.Выполнить().Выгрузить(); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт"; Макет = ПолучитьМакет("АктВВалюте"); ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт"); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Поставщик"); ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,"); ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика; ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Покупатель"); ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ПолноеНаименование,"); ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя; ОбластьМакета.Параметры.Получатель = Шапка.Получатель; ТабДокумент.Вывести(ОбластьМакета); // Если количество строк с нулевой скидкой меньше общего количества строк, то в документе есть скидки ЕстьСкидки = (ТаблицаУслуги.НайтиСтроки(Новый Структура("Скидка", 0)).Количество() < ТаблицаУслуги.Количество()); // Вывести табличную часть Если ЕстьСкидки Тогда ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицыСоСкидкой"); ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСоСкидкой"); Иначе ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьСтроки = Макет.ПолучитьОбласть("Строка"); КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); НомерСтроки = 0; Для Каждого СтрокаТабличнойЧасти Из ТаблицаУслуги Цикл НомерСтроки = НомерСтроки + 1; ОбластьСтроки.Параметры.Заполнить(СтрокаТабличнойЧасти); ОбластьСтроки.Параметры.НомерСтроки = НомерСтроки; ОбластьСтроки.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.Товар); Если ЕстьСкидки Тогда Скидка = Ценообразование.ПолучитьСуммуСкидки(СтрокаТабличнойЧасти.Сумма, СтрокаТабличнойЧасти.Скидка); ОбластьСтроки.Параметры.Скидка = Скидка; ОбластьСтроки.Параметры.СуммаБезСкидки = ОбщегоНазначения.ФорматСумм(СтрокаТабличнойЧасти.Сумма + Скидка); КонецЕсли; ТабДокумент.Вывести(ОбластьСтроки); КонецЦикла; Сумма = ТаблицаУслуги.Итог("Сумма"); СуммаНДС = ТаблицаУслуги.Итог("СуммаНДС"); ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма); ТабДокумент.Вывести(ОбластьМакета); Если Шапка.УчитыватьНДС Тогда ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС"); ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС); ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС"); ТабДокумент.Вывести(ОбластьМакета); КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью"); СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС); ВалютаДляПечати = ?(СуммыВРублях, мВалютаРегламентированногоУчета, Шапка.ВалютаДокумента); ВалютаДляПечати = Шапка.ВалютаДокумента; ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего оказано услуг " + НомерСтроки + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, ВалютаДляПечати); ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, ВалютаДляПечати); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; КонецФункции // ПечатьАктаОбОказанииУслуг() При попытке вызвать форму вылетает ошибка: Невозможно обработать параметр "ВалютаРегламентированногоУчета" для получения значения. Что это значит и как исправить? |
|||
1
Zerg80
06.08.13
✎
07:04
|
Конфа не Раруса случайно? Под полными правами все ОК?
|
|||
2
nushenka
06.08.13
✎
07:09
|
А как проверить права? я не знаю чья конфигурация, но мысль, что это из-за прав мне нравится
|
|||
3
nushenka
06.08.13
✎
07:24
|
Ну помогите кто-нибудь. Затык полнейший с этой ошибкой. Я даже не могу проверить работоспособность кода, потому что до этого не доходит
|
|||
4
Zerg80
06.08.13
✎
07:26
|
1. Поменяйте фотку на свою
2. Название и релиз конфы напиши 3. Зайти под полными правами (146% что ошибка в RLS) |
|||
5
nushenka
06.08.13
✎
07:56
|
1) фотки у меня нет, я на работе. да и она не имеет отношения к проблеме.
2) Конфигурация: Бухгалтерия предприятия КОРП, редакция 2.0 (2.0.47.5) (http://v8.1c.ru/buh8corp/) Copyright (С) ООО "1C", 2009 - 2013. Все права защищены (http://www.1c.ru) 3) будете смеяться, но я не знаю как это сделать |
|||
6
Cube
06.08.13
✎
07:59
|
(5) По п.1 - все так говорят. Стандартная отмазка. Фотка из контакта/одноклассников нас устроит))
"да и она не имеет отношения к проблеме" - к проблеме да, не имеет, а вот к решению проблемы - ещё как имеет. Чем удачнее фото, тем качественнее помощь :) |
|||
7
nushenka
06.08.13
✎
08:02
|
меня нет ни в контакте, ни в одноклассниках
|
|||
8
nushenka
06.08.13
✎
08:02
|
я замужем и мои фото никого, кроме мужа интересовать не должны. Давайте перейдем к проблеме, пожалуйста
|
|||
9
Rovan
гуру
06.08.13
✎
08:05
|
(8) на этом форуме такая давняя традиция
|
|||
10
nushenka
06.08.13
✎
08:07
|
Не можете помочь, так и скажите. Разговор про фото закрыт
|
|||
11
фросия
06.08.13
✎
08:09
|
в конфигуратеро пользователю своему добавьте полные права. зайдите.
|
|||
12
nushenka
06.08.13
✎
08:11
|
(11) Где мне найти пользователей? Роли я нашла, там есть пункт полные права, что мне с ними сделать?
|
|||
13
фросия
06.08.13
✎
08:13
|
а внешнюю печатную форму вы как/где добавляете?
|
|||
14
Rovan
гуру
06.08.13
✎
08:13
|
(10) помощь уже была - советом
"Зайти под полными правами" |
|||
15
nushenka
06.08.13
✎
08:16
|
(13) в пользовательском режиме через меню Сервис/Дополнительные отчеты и обработки/ Внешние печатные формы. Там указываю файл обработки и документ, к которому она привязана
|
|||
16
фросия
06.08.13
✎
08:21
|
(12) пользователю своему добавьте роль полные права
|
|||
17
nushenka
06.08.13
✎
08:33
|
Даже при полных правах вылетает та же самая ошибка
|
|||
18
Галахад
гуру
06.08.13
✎
08:39
|
Покажите полный текст ошибки.
|
|||
19
dva1c
06.08.13
✎
08:41
|
(18) +1
(17) Да. Покажите. Там номер строки показывает. |
|||
20
nushenka
06.08.13
✎
08:57
|
Не удалось сформировать внешнюю печатную форму!
Невозможно обработать параметр "ВалютаРегламентированногоУчета" для получения значения |
|||
21
Zerg80
06.08.13
✎
09:05
|
(17) Про фотку уже сказали, из ФКантагда тоже пойдет.
Про полные права - извини, не верю. Точно-точно есть полные права? Проверь еще раз, это недолго. (18) Если это RLS, то там просто предупреждение вылазит |
|||
22
фросия
06.08.13
✎
09:05
|
(20)а номер строки с ошибкой?
|
|||
23
dva1c
06.08.13
✎
09:07
|
(22) При подключении ВПФ, может и не выдавать строку.
(20) Надо пользоваться обработкой, для отладки ВПФ и отладчиком. |
|||
24
dva1c
06.08.13
✎
09:10
|
+(23) Один из примеров http://infostart.ru/public/181590/
|
|||
25
nushenka
06.08.13
✎
09:17
|
Отложим этот вопрос. Теперь другая проблема. Написала по-другому: Перем мВалютаРегламентированногоУчета Экспорт;
Функция ПодготовитьДанныеДляПечатиАктаОбОказанииУслуг() ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить(); Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ВыводитьКоды = Истина; Колонка = "Артикул"; ТекстКодАртикул = "Артикул"; ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда ВыводитьКоды = Истина; Колонка = "Код"; ТекстКодАртикул = "Код"; Иначе ВыводитьКоды = Ложь; Колонка = ""; ТекстКодАртикул = "Код"; КонецЕсли; ЗапросШапка = Новый Запрос; ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросШапка.Текст = "ВЫБРАТЬ | Номер, | Дата, | ДоговорКонтрагента, | ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах, | Контрагент КАК Получатель, | Организация КАК Поставщик, | Организация, // {ОбособленныеПодразделения | ПодразделениеОрганизации КАК ПодразделениеОрганизации, // }ОбособленныеПодразделения | СуммаДокумента, | ВалютаДокумента, | УчитыватьНДС, | СуммаВключаетНДС, | ВалютаДокумента.Код КАК ВалютаДокументаКод, | БанковскийСчетОрганизации КАК БанковскийСчет |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент"; ТаблицаШапки = ЗапросШапка.Выполнить().Выгрузить(); Если ТаблицаШапки.Количество() = 0 Тогда Возврат Неопределено; Иначе Шапка = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(ТаблицаШапки[0]); КонецЕсли; ПодразделениеОтветственныхЛиц = Неопределено; // {ОбособленныеПодразделения ПодразделениеОтветственныхЛиц = СсылкаНаОбъект.ПодразделениеОрганизации; // }ОбособленныеПодразделения Руководители = ОбщегоНазначения.ОтветственныеЛица(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата, ПодразделениеОтветственныхЛиц); СформироватьСтруктуруПодписейДляПечати(Руководители, Шапка); ЗапросУслуги = Новый Запрос; ЗапросУслуги.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросУслуги.УстановитьПараметр("Курс", ЗаполнениеДокументов.КурсДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета)); ЗапросУслуги.УстановитьПараметр("Кратность", ЗаполнениеДокументов.КратностьДокумента(ЭтотОбъект, мВалютаРегламентированногоУчета)); ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("РеализацияТоваровУслуг"); ЗапросУслуги.Текст = "ВЫБРАТЬ | ОбщаяТаблица.Номенклатура, | ОбщаяТаблица.Товар, | ОбщаяТаблица.КодАртикул, | ОбщаяТаблица.Количество, | ОбщаяТаблица.ЕдиницаИзмерения, | ОбщаяТаблица.Цена, | ОбщаяТаблица.Сумма, | ОбщаяТаблица.СтавкаНДС, | ОбщаяТаблица.СуммаНДС, | ОбщаяТаблица.НомерСтроки, | ОбщаяТаблица.НомерТабличнойЧасти, | ОбщаяТаблица.ИмяТабличнойЧасти |ИЗ |(ВЫБРАТЬ | Номенклатура КАК Номенклатура, | ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар, | Номенклатура." + ТекстКодАртикул + " КАК КодАртикул, | Количество, | ЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена * &Курс / &Кратность КАК Цена, | Сумма * &Курс / &Кратность КАК Сумма, | СтавкаНДС, | СуммаНДС * &Курс / &Кратность КАК СуммаНДС, | НомерСтроки, | 1 КАК НомерТабличнойЧасти, | ""Товары"" КАК ИмяТабличнойЧасти |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент | И | РеализацияТоваровУслуг.Номенклатура.Услуга = Истина | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Номенклатура, | " + ЧастьЗапросаДляВыбораСодержанияУслуг + ", | Номенклатура." + ТекстКодАртикул + " КАК КодАртикул, | Количество, | Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена * &Курс / &Кратность КАК Цена, | Сумма * &Курс / &Кратность КАК Сумма, | СтавкаНДС, | СуммаНДС * &Курс / &Кратность КАК СуммаНДС, | НомерСтроки, | 2 КАК НомерТабличнойЧасти, | ""Услуги"" КАК ИмяТабличнойЧасти |ИЗ | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Номенклатура, | " + ЧастьЗапросаДляВыбораСодержанияУслуг + ", | Номенклатура." + ТекстКодАртикул + " КАК КодАртикул, | Количество, | Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения, | Цена * &Курс / &Кратность КАК Цена, | Сумма * &Курс / &Кратность КАК Сумма, | СтавкаНДС, | СуммаНДС * &Курс / &Кратность КАК СуммаНДС, | НомерСтроки, | 3 КАК НомерТабличнойЧасти, | ""Агентские услуги"" КАК ИмяТабличнойЧасти |ИЗ | Документ.РеализацияТоваровУслуг.АгентскиеУслуги КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент) КАК ОбщаяТаблица |УПОРЯДОЧИТЬ ПО | НомерТабличнойЧасти, НомерСтроки"; ТабличнаяЧасть = ЗапросУслуги.Выполнить().Выгрузить(); Если СсылкаНаОбъект.Проведен И (Шапка.РасчетыВУсловныхЕдиницах ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета И СсылкаНаОбъект.Дата >= '20090101000000')) Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом); Текст = "ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Регистратор = &Ссылка | И Хозрасчетный.СчетДт = &СчетУчетаРасчетовСКонтрагентом | И Хозрасчетный.СчетКт В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | РеализацияТоваровУслугТовары.СчетДоходов | ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | РеализацияТоваровУслугУслуги.СчетДоходов | ИЗ | Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги | ГДЕ | РеализацияТоваровУслугУслуги.Ссылка = &Ссылка) |"; Запрос.Текст = Текст; СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма; РасчетСуммыНДСПоСтавке = УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.Дата); Если НЕ СуммаВзаиморасчетов = NULL Тогда ТабличнаяЧасть.Колонки.Добавить("СуммаБезНДС"); МассивРаспределения = Новый Массив; Для Каждого СтрокаТовар Из ТабличнаяЧасть Цикл СуммаСНДС = СтрокаТовар.Сумма + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС); СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС; МассивРаспределения.Добавить(СуммаСНДС); СтрокаТовар.СуммаБезНДС = СуммаБезНДС; КонецЦикла; ТабличнаяЧасть.Колонки.Добавить("СуммаРублевая"); УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ТабличнаяЧасть, "СуммаРублевая"); Для Каждого СтрокаТовар Из ТабличнаяЧасть Цикл Если РасчетСуммыНДСПоСтавке Тогда //Выделение суммы НДС, Расчет суммы без НДС ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС); СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2)); СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС; Иначе МассивРаспределения.Очистить(); МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДС); МассивРаспределения.Добавить(СтрокаТовар.СуммаНДС); МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения); Если МассивРаспределенныхСумм <> Неопределено Тогда СтрокаТовар.Сумма = МассивРаспределенныхСумм[0]; СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1]; КонецЕсли; КонецЕсли; Если Шапка.СуммаВключаетНДС Тогда СтрокаТовар.Сумма = СтрокаТовар.Сумма+СтрокаТовар.СуммаНДС; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; ДанныеДляПечати = Новый Структура(); ДанныеДляПечати.Вставить("Шапка", Шапка); ДанныеДляПечати.Вставить("ТабличнаяЧасть", ТабличнаяЧасть); ДанныеДляПечати.Вставить("ВыводитьКоды", ВыводитьКоды); ДанныеДляПечати.Вставить("ТекстКодАртикул", ТекстКодАртикул); Возврат ДанныеДляПечати; КонецФункции Функция СформироватьСтруктуруПодписейДляПечати( Руководители, ВозвращаемаяСтруктура = Неопределено) Если ВозвращаемаяСтруктура = Неопределено Тогда ВозвращаемаяСтруктура = Новый Структура; КонецЕсли; Если ЗначениеЗаполнено(СсылкаНаОбъект.Руководитель) Тогда ФИОРуководителя = ОбщегоНазначения.ФамилияИнициалыФизЛица(СсылкаНаОбъект.Руководитель) + " " + СсылкаНаОбъект.ЗаРуководителяПоПриказу; ВозвращаемаяСтруктура.Вставить("Руководитель", СсылкаНаОбъект.Руководитель); ВозвращаемаяСтруктура.Вставить("ФИОРуководителя", ФИОРуководителя); ВозвращаемаяСтруктура.Вставить("ДолжностьРуководителя", Руководители.РуководительДолжность); Иначе ВозвращаемаяСтруктура.Вставить("Руководитель", Руководители.Руководитель); ВозвращаемаяСтруктура.Вставить("ФИОРуководителя", Руководители.РуководительПредставление); ВозвращаемаяСтруктура.Вставить("ДолжностьРуководителя", Руководители.РуководительДолжность); КонецЕсли; Если ЗначениеЗаполнено(СсылкаНаОбъект.ГлавныйБухгалтер) Тогда ФИОГлавБух = ОбщегоНазначения.ФамилияИнициалыФизЛица(СсылкаНаОбъект.ГлавныйБухгалтер) + " " + СсылкаНаОбъект.ЗаГлавногоБухгалтераПоПриказу; ВозвращаемаяСтруктура.Вставить("ГлавныйБухгалтер", СсылкаНаОбъект.ГлавныйБухгалтер); ВозвращаемаяСтруктура.Вставить("ФИОГлавБухгалтера", ФИОГлавБух); Иначе ВозвращаемаяСтруктура.Вставить("ГлавныйБухгалтер", Руководители.ГлавныйБухгалтер); ВозвращаемаяСтруктура.Вставить("ФИОГлавБухгалтера", Руководители.ГлавныйБухгалтерПредставление); КонецЕсли; Если ЗначениеЗаполнено(СсылкаНаОбъект.ОтпускПроизвел) Тогда ДанныеПодотчетногоЛица = ОбщегоНазначения.ДанныеФизЛица(СсылкаНаОбъект.Организация, СсылкаНаОбъект.ОтпускПроизвел, СсылкаНаОбъект.Дата); ФИОКладовщика = ОбщегоНазначения.ФамилияИнициалыФизЛица(СсылкаНаОбъект.ОтпускПроизвел); ВозвращаемаяСтруктура.Вставить("ФИОКладовщика", ФИОКладовщика); Если ДанныеПодотчетногоЛица.Должность <> Null Тогда ВозвращаемаяСтруктура.Вставить("ДолжностьКладовщика", ДанныеПодотчетногоЛица.Должность.Наименование); Иначе ВозвращаемаяСтруктура.Вставить("ДолжностьКладовщика", ""); КонецЕсли; ВозвращаемаяСтруктура.Вставить("ФИОКладовщика", ФИОКладовщика); Иначе ВозвращаемаяСтруктура.Вставить("ФИОКладовщика", ""); ВозвращаемаяСтруктура.Вставить("ДолжностьКладовщика", ""); КонецЕсли; Возврат ВозвращаемаяСтруктура; КонецФункции Функция ПечатьАктаОбОказанииУслуг() ТабДокумент = Новый ТабличныйДокумент; ДанныеДляПечати = ПодготовитьДанныеДляПечатиАктаОбОказанииУслуг(); Если ДанныеДляПечати = Неопределено Тогда Возврат ТабДокумент; КонецЕсли; Шапка = ДанныеДляПечати.Шапка; ТабличнаяЧасть = ДанныеДляПечати.ТабличнаяЧасть; Если ДанныеДляПечати.ВыводитьКоды Тогда ОбластьШапки = "ШапкаСКодом"; ОбластьСтроки = "СтрокаСКодом"; Иначе ОбластьШапки = "ШапкаТаблицы"; ОбластьСтроки = "Строка"; КонецЕсли; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт"; Макет = ПолучитьМакет("Акт"); ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Акт"); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Поставщик"); СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата); ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,"); ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика; ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Покупатель"); СведенияОКонтрагенте = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата); ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,"); ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя; ОбластьМакета.Параметры.Получатель = Шапка.Получатель; ТабДокумент.Вывести(ОбластьМакета); ЕстьСкидки = Ложь; // Вывести табличную часть ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки); Если ДанныеДляПечати.ВыводитьКоды Тогда ОбластьМакета.Параметры.ИмяКодАртикул = ДанныеДляПечати.ТекстКодАртикул; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки); НомерСтроки = 0; Для Каждого СтрокаТабличнойЧасти Из ТабличнаяЧасть Цикл НомерСтроки = НомерСтроки + 1; ОбластьМакета.Параметры.Заполнить(СтрокаТабличнойЧасти); ОбластьМакета.Параметры.НомерСтроки = НомерСтроки; ОбластьМакета.Параметры.Товар = СокрЛП(СтрокаТабличнойЧасти.Товар); Если Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета Тогда ОбластьМакета.Параметры.Цена = СтрокаТабличнойЧасти.Сумма / ?(СтрокаТабличнойЧасти.Количество = 0, 1, СтрокаТабличнойЧасти.Количество); КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; Если ТабличнаяЧасть <> Неопределено Тогда Сумма = ТабличнаяЧасть.Итог("Сумма"); СуммаНДС = ТабличнаяЧасть.Итог("СуммаНДС"); Иначе Сумма = 0; СуммаНДС = 0; КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма); ТабДокумент.Вывести(ОбластьМакета); Если Шапка.УчитыватьНДС Тогда ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС"); Если СуммаНДС <> 0 Тогда ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС); ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС"); Иначе ОбластьМакета.Параметры.ВсегоНДС = "-"; ОбластьМакета.Параметры.НДС = "Без налога (НДС)"; КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); КонецЕсли; СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС); ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью"); ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг " + НомерСтроки + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, мВалютаРегламентированногоУчета); ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); Если Шапка.ДолжностьРуководителя = "" ИЛИ Шапка.ДолжностьРуководителя = Неопределено Тогда ДолжностьИНазваниеОрганизации = ПредставлениеПоставщика; Иначе ДолжностьИНазваниеОрганизации = Шапка.ДолжностьРуководителя.Наименование + " " + ПредставлениеПоставщика; КонецЕсли; ОбластьМакета.Параметры.ДолжностьИНазваниеОрганизации = ДолжностьИНазваниеОрганизации; ОбластьМакета.Параметры.ЗаместительПоПриказу = Шапка.ФИОРуководителя; ТабДокумент.Вывести(ОбластьМакета); Возврат ТабДокумент; КонецФункции // ПечатьАктаОбОказанииУслуг() Функция Печать() Экспорт ПечатьАктаОбОказанииУслуг(); КонецФункции Теперь выдает ошибку: Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (Ссылка) Не могу найти причину, вроде везде поменяла все ссылки на "СсылкаНаОбъект" |
|||
26
фросия
06.08.13
✎
09:17
|
(24) я просто впф добавляю форму в которой можно выбрать ссылку на док, и отладчиком смотрю.
|
|||
27
dva1c
06.08.13
✎
09:22
|
(26) C формой в ВПФ, прокатит. Я не использую формы в ВПФ, поэтому отлаживаю, через обработку.
|
|||
28
dva1c
06.08.13
✎
09:24
|
+(27) Отладчиком. )
(25) Надо локализовать проблему. Для этого есть отладчик. |
|||
29
nushenka
06.08.13
✎
09:39
|
Не заходит в отладчик. ставлю точку останова в начале функции ПечатьАктаОбОказанииУслуг и все равно программа не заходит туда, когда вызываю печатную форму.
|
|||
30
dva1c
06.08.13
✎
09:42
|
(29) И не будет заходить. Надо или создать форму в ВПФ (описано в (26)) или воспользоваться (24).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |