![]() |
![]() |
|
Внешняя печ. форма | ☑ | ||
---|---|---|---|---|
0
Gorro-1789
15.05.12
✎
16:29
|
приветсвую вас, помогите пож-то, выводит такое сообщение:
{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(23,1)}: Определения процедур и функций должны размещаться перед операторами тела модуля <<?>>Функция Печать() ЭКСПОРТ //ПечатьСчетаФактуры(ДанныеДляПечати) (Проверка: Толстый клиент (обычное приложение)) Перем мУдалятьДвижения; Перем мВалютаРегламентированногоУчета Экспорт; Перем мОбновлятьРеквизитыПриЗаписи Экспорт; Перем мДокументЗаполнен Экспорт; ДанныеДляПечати = Новый Структура(); ДанныеДляПечати.Вставить("Организация", Шапка.Организация); ДанныеДляПечати.Вставить("Номер", Шапка.Номер); ДанныеДляПечати.Вставить("Дата", Шапка.Дата); ДанныеДляПечати.Вставить("Поставщик", Шапка.Поставщик); ДанныеДляПечати.Вставить("Грузоотправитель", ); ДанныеДляПечати.Вставить("Покупатель", Шапка.Покупатель); ДанныеДляПечати.Вставить("Грузополучатель", ); ДанныеДляПечати.Вставить("Сумма", Шапка.Сумма); ДанныеДляПечати.Вставить("Валюта", Шапка.Валюта); ДанныеДляПечати.Вставить("УчитыватьНДС", Истина); ДанныеДляПечати.Вставить("СуммаВключаетНДС", Истина); Функция Печать() ЭКСПОРТ //ПечатьСчетаФактуры(ДанныеДляПечати) ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.ПолеСверху = 13; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.АвтоМасштаб = Истина; Дата = Дата; Если Дата < '20040216' Тогда ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура575"; Макет = ПолучитьОбщийМакет("СчетФактура575"); ИначеЕсли Дата < '20060530' Тогда ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура84"; Макет = ПолучитьОбщийМакет("СчетФактура84"); ИначеЕсли Дата < '20090609' Тогда ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура283"; Макет = ПолучитьОбщийМакет("СчетФактура283"); Иначе ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СчетФактураВыданный_СчетФактура451"; Макет = ПолучитьОбщийМакет("СчетФактура451"); КонецЕсли; СведенияОбПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Покупатель, Дата); СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Поставщик, Дата); СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(?(ДанныеДляПечати.Грузоотправитель = "он же", Неопределено, ДанныеДляПечати.Грузоотправитель), Дата); СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ДанныеДляПечати.Грузополучатель, Дата); ВыборкаПоТоварам = ДанныеДляПечати.ТабличнаяЧасть.Скопировать(); ВыборкаПоТоварам.Свернуть("Товар"); Если ВыборкаПоТоварам.Количество() > 0 Тогда ТолькоУслуги = Истина; Для Каждого СтрокаТовар Из ВыборкаПоТоварам Цикл Если (ТипЗнч(СтрокаТовар.Товар) = Тип("СправочникСсылка.Номенклатура") И Не СтрокаТовар.Товар.Услуга) Тогда ТолькоУслуги = Ложь; Прервать; КонецЕсли; КонецЦикла; Иначе ТолькоУслуги = Ложь; КонецЕсли; // Выводим шапку накладной ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати); ЗаголовокДляПечати = ОбщегоНазначения.СформироватьЗаголовокДокумента(ДанныеДляПечати, "Счет-фактура"); ОбластьМакета.Параметры.Номер = ЗаголовокДляПечати; Если Дата < '20040216' Тогда ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,"); ОбластьМакета.Параметры.АдресПоставщика = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,"); ОбластьМакета.Параметры.ИННпоставщика = "Идентификационный номер продавца (ИНН): " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь); ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузоотправитель), "", ?(ДанныеДляПечати.Грузоотправитель = "он же", ДанныеДляПечати.Грузоотправитель, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес,"))); ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель), "", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ФактическийАдрес,")); Строка_ПоДокументу = ""; Для каждого ПараметрыДокуентаОплаты Из ДанныеДляПечати.ТаблицаДатОплат Цикл Строка_ПоДокументу = Строка_ПоДокументу+ ?(ПустаяСтрока(Строка_ПоДокументу), "К платежно-расчетному документу № ",", ") +ПараметрыДокуентаОплаты.НомерПлатежноРасчетногоДокумента + " от " + Формат(ПараметрыДокуентаОплаты.ДатаПлатежноРасчетногоДокумента, "ДФ=dd.MM.yyyy"); КонецЦикла; Если ПустаяСтрока(Строка_ПоДокументу) Тогда Строка_ПоДокументу = "К платежно-расчетному документу № -- от --" КонецЕсли; ОбластьМакета.Параметры.ПоДокументу = Строка_ПоДокументу; ОбластьМакета.Параметры.ПредставлениеПокупателя = "Покупатель: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ПолноеНаименование,"); ОбластьМакета.Параметры.АдресПокупателя = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ЮридическийАдрес,"); ОбластьМакета.Параметры.ИННПокупателя = "Идентификационный номер покупателя (ИНН): " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ИНН,", Ложь); Иначе ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре = Константы.ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре.Получить(); Если ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре <> '00010101' И ДатаНачалаУказанияСокращенногоНаименованияПродавцаВСчетеФактуре <= Дата Тогда ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,") + " (" + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "Представление,") + ")"; Иначе ОбластьМакета.Параметры.ПредставлениеПоставщика = "Продавец: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,"); КонецЕсли; ОбластьМакета.Параметры.АдресПоставщика = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ЮридическийАдрес,"); КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "КПП,", Ложь); Если ЗначениеЗаполнено(КПП) Тогда КПП = "/" + КПП; КонецЕсли; ОбластьМакета.Параметры.ИННпоставщика = "ИНН/КПП продавца: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ИНН,", Ложь) + КПП; Если ТолькоУслуги Тогда ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + "-"; ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + "-"; Иначе ОбластьМакета.Параметры.ПредставлениеГрузоотправителя = "Грузоотправитель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузоотправитель), "", ?(ДанныеДляПечати.Грузоотправитель = "он же", ДанныеДляПечати.Грузоотправитель, ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправителе, "ПолноеНаименование,ФактическийАдрес,"))); ОбластьМакета.Параметры.ПредставлениеГрузополучателя = "Грузополучатель и его адрес: " + ?(Не ЗначениеЗаполнено(ДанныеДляПечати.Грузополучатель), "", ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ФактическийАдрес,")); КонецЕсли; Строка_ПоДокументу = ""; Для каждого ПараметрыДокуентаОплаты Из ДанныеДляПечати.ТаблицаДатОплат Цикл Строка_ПоДокументу = Строка_ПоДокументу+ ?(ПустаяСтрока(Строка_ПоДокументу), "К платежно-расчетному документу № ",", ") +ПараметрыДокуентаОплаты.НомерПлатежноРасчетногоДокумента + " от " + Формат(ПараметрыДокуентаОплаты.ДатаПлатежноРасчетногоДокумента, "ДФ=dd.MM.yyyy"); КонецЦикла; Если ПустаяСтрока(Строка_ПоДокументу) Тогда Строка_ПоДокументу = "К платежно-расчетному документу № -- от --" КонецЕсли; ОбластьМакета.Параметры.ПоДокументу = Строка_ПоДокументу; ОбластьМакета.Параметры.ПредставлениеПокупателя = "Покупатель: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ПолноеНаименование,"); ОбластьМакета.Параметры.АдресПокупателя = "Адрес: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ЮридическийАдрес,"); КПП = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "КПП,", Ложь); Если ЗначениеЗаполнено(КПП) Тогда КПП = "/" + КПП; КонецЕсли; ОбластьМакета.Параметры.ИННПокупателя = "ИНН/КПП покупателя: " + ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбПокупателе, "ИНН,", Ложь) + КПП; КонецЕсли; ПроставитьПрочеркиВПустыеПоля(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати); ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ПовторятьПриПечатиСтроки = ТабДокумент.Область("ЗаголовокТаблицы"); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ИтогоСуммаНДС = 0; ИтогоВсего = 0; ВыборкаСтрокТовары = ДанныеДляПечати.ТабличнаяЧасть; ВыборкаСтрокТовары.Колонки.Добавить("СуммаБезНДС"); ВыборкаСтрокТовары.Колонки.Добавить("СуммаСНДС"); Для Каждого Строчка Из ВыборкаСтрокТовары Цикл Строчка.СуммаСНДС = Строчка.Сумма + ?(Строчка.СуммаВключаетНДС, 0, Строчка.СуммаНДС); Если (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120) Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118) Или (Строчка.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110) Тогда Строчка.СуммаБезНДС = Строчка.СуммаСНДС; Если Не Строчка.СуммаВключаетНДС тогда Строчка.Цена = 0; КонецЕсли; Иначе Строчка.СуммаБезНДС = Строчка.СуммаСНДС - Строчка.СуммаНДС; Если Строчка.СуммаВключаетНДС тогда Строчка.Цена = 0; КонецЕсли; КонецЕсли; ВидСчетаФактуры = СсылкаНаОбъект.ВидСчетаФактуры; Если ВидСчетаФактуры <> Перечисления.ВидСчетаФактурыВыставленного.НаАванс И ВидСчетаФактуры <> Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента И Строчка.Цена = 0 Тогда Строчка.Цена = Окр(?(Строчка.Количество = 0, 0, Строчка.СуммаБезНДС / Строчка.Количество), 2); КонецЕсли; КонецЦикла; ВыборкаСтрокТовары.Свернуть("Товар, ТоварНаименование, СтранаПроисхождения, ПредставлениеСтраны, НомерГТД, ПредставлениеГТД, ЕдиницаИзмерения, Цена, СтавкаНДС", "Количество, Сумма, СуммаНДС, СуммаСНДС, СуммаБезНДС"); Для Каждого Строчка Из ВыборкаСтрокТовары Цикл ОбластьМакета.Параметры.Заполнить(Строчка); Если Строчка.СтранаПроисхождения = Справочники.КлассификаторСтранМира.Россия Тогда ОбластьМакета.Параметры.ПредставлениеСтраны = "--"; ОбластьМакета.Параметры.ПредставлениеГТД = "--"; КонецЕсли; Количество = Строчка.Количество; Если ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАванс ИЛИ ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаАвансКомитента Тогда // В счетах-фактурах на аванс колонка 3, 4, 5 не выводится ОбластьМакета.Параметры.Стоимость = 0; ОбластьМакета.Параметры.Количество = 0; ОбластьМакета.Параметры.Цена = 0; Иначе ОбластьМакета.Параметры.Количество = Количество; ОбластьМакета.Параметры.Цена = Строчка.Цена; ОбластьМакета.Параметры.Стоимость = Строчка.СуммаБезНДС; КонецЕсли; ОбластьМакета.Параметры.Всего = Строчка.СуммаСНДС; ОбластьМакета.Параметры.СтавкаНДС = Строчка.СтавкаНДС; ИтогоСуммаНДС = ИтогоСуммаНДС + Строчка.СуммаНДС; ИтогоВсего = ИтогоВсего + Строчка.СуммаСНДС; ПроставитьПрочеркиВПустыеПоля(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; Если ВыборкаСтрокТовары.Количество()>0 Тогда ТабДокумент.Область(ТабДокумент.ВысотаТаблицы,,ТабДокумент.ВысотаТаблицы,).ВместеСоСледующим = Истина; КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.ИтогоСуммаНДС = ИтогоСуммаНДС; ОбластьМакета.Параметры.ИтогоВсего = ИтогоВСего; ПроставитьПрочеркиВПустыеПоля(ОбластьМакета); ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати); Если не Дата < '20040216' Тогда ОбластьМакета.Параметры.Свидетельство = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "Свидетельство,"); КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ВерхнийКолонтитул.Выводить = Истина; ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2; ТабДокумент.ВерхнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Низ; ТабДокумент.ВерхнийКолонтитул.ТекстСлева = ЗаголовокДляПечати; ТабДокумент.ВерхнийКолонтитул.ТекстСправа = "Лист [&НомерСтраницы]"; Возврат ТабДокумент; КонецФункции // ПечатьСчетаФактуры() |
|||
1
mikecool
15.05.12
✎
16:31
|
сначала
перем потом процы и функции потом - все остальное |
|||
2
Wobland
15.05.12
✎
16:32
|
(0) прокомментируй первую строку
|
|||
3
salvator
15.05.12
✎
16:32
|
Функцию Печать перемести после объявления переменных
|
|||
4
andrewks
15.05.12
✎
16:33
|
и правильно. два раза одну и ту же функцию определяешь
|
|||
5
Wobland
15.05.12
✎
16:33
|
(2) не так посмотрел. читать (1)
|
|||
6
andrewks
15.05.12
✎
16:34
|
+(4) сторно, это спойлер так собрал
|
|||
7
Лоботряс
15.05.12
✎
16:35
|
(5) Да все правильно ты понял
вот это ДанныеДляПечати = Новый Структура(); ДанныеДляПечати.Вставить("Организация", Шапка.Организация); ДанныеДляПечати.Вставить("Номер", Шапка.Номер); ДанныеДляПечати.Вставить("Дата", Шапка.Дата); ДанныеДляПечати.Вставить("Поставщик", Шапка.Поставщик); ДанныеДляПечати.Вставить("Грузоотправитель", ); ДанныеДляПечати.Вставить("Покупатель", Шапка.Покупатель); ДанныеДляПечати.Вставить("Грузополучатель", ); ДанныеДляПечати.Вставить("Сумма", Шапка.Сумма); ДанныеДляПечати.Вставить("Валюта", Шапка.Валюта); ДанныеДляПечати.Вставить("УчитыватьНДС", Истина); ДанныеДляПечати.Вставить("СуммаВключаетНДС", Истина); нужно в самый низ опустить |
|||
8
Gorro-1789
15.05.12
✎
16:45
|
конечно опускал, выводит милион ошибок..
|
|||
9
Wobland
15.05.12
✎
16:50
|
(8) красавец, что сказать. разбирайся теперь персонально с каждой
|
|||
10
John83
15.05.12
✎
16:54
|
(8) что-то мне подсказывает, что у тебя переменная Шапка не определена
|
|||
11
Gorro-1789
16.05.12
✎
11:41
|
Если эти "коллекции" опускаю вниз, то у меня ругается на то что не определены переменные "Данные для печати" и "Шапка" ...когда ж коллекции распологаются НАД функцией, то покранимерии ошибки "не определена переменная ДАННЫЕ ДЛЯ ПЕЧАТИ" не выводит... сылается тока на Шапку.... истина где-то рядом:)
|
|||
12
Wobland
16.05.12
✎
11:43
|
(11) а что за ДанныеДляПечати и Шапка? почему вдруг они вне всяких процедур взялись?
|
|||
13
Gorro-1789
16.05.12
✎
11:47
|
незнаю... я стажер..)
|
|||
14
Wobland
16.05.12
✎
11:50
|
(13) ну дык задумайся. с чего вдруг кусок кода, который по логике вещей должен бы в какой-то процедуре быть, оказался сиротой
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |