Создание внешней обработки для 1С: Бухгалтерия государственного учреждения

Новая тема
"Для выписки квитанций есть печатная форма. Мне нужно её немного изменить. Делаю это через внешнюю обработку. Захожу в конфигуратор, выбираю Файл-Новый- Внешняя обработка. Добавляю туда ревизит "Ссылка на объект", создаю форму, копирую из исходного документа шаблон печатной формы,  правлю название ревизитов(собственного говоря из-за чего создаю отдельную форму) . В модуль объекта обработки копирую Функцию Печать() с пометкой Экспорт. Везде меняю ОбъектСсылка на СсылкаНаОбъект. Заменяю название печатной формы на новую. После открываю обработку. Файл-открыть. Выбираю Выписку Квитанций (это все работает). Когда нажимаю на кнопку выполнить выдается сообщение: <br>{ВнешняяОбработка.ВыпискаКвитанций.МодульОбъекта(35)}: Ошибка при вызове конструктора (МоментВремени) МоментДокумента          =Новый МоментВремени(Дата, СсылкаНаОбъект);по причине:Несоответствие типов (параметр номер '1')<br> <br>Не понимаю с чем это связано. Помогите пожалуиста, что не так. Вот модуль:<br>           Перем Дата;<br>Функция Печать() Экспорт Запрос= Новый Запрос;     <br>Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.Текст =  <br>"ВЫБРАТЬ | ВыпискаКвитанций.Номер, | ВыпискаКвитанций.Дата, | ВыпискаКвитанций.Учреждение КАК УчреждениеСсылка, | ВыпискаКвитанций.Учреждение.НаименованиеПолное КАК НаименованиеОрганизации, | ВыпискаКвитанций.Учреждение.ИНН КАК ИННПолучателя, | ВыпискаКвитанций.Учреждение.КПП КАК КПППолучателя, | ВыпискаКвитанций.ЛицевойСчет КАК ЛицевойСчетПолучателя, | ВыпискаКвитанций.РеквизитыЛицевогоСчета КАК РеквизитыЛицевогоСчетаПолучателя, | ВыпискаКвитанций.КБКСчетУчетаРП.Представление КАК КБК, | ВыпискаКвитанций.КОСГУСчетУчетаРП.Представление КАК КОСГУ, | ВыпискаКвитанций.НаправлениеДеятельности, | ВыпискаКвитанций.КвитанцииВЦелыхРублях, | ВыпискаКвитанций.ОплатаВКассу |ИЗ | Документ.РП_ВыпискаКвитанций КАК ВыпискаКвитанций |ГДЕ | ВыпискаКвитанций.Ссылка = &ТекущийДокумент";<br> Шапка = Запрос.Выполнить().Выбрать();<br> Шапка.Следующий();<br>НаименованиеОрганизации  = Шапка.НаименованиеОрганизации; ИННПолучателя            = Шапка.ИННПолучателя; КПППолучателя            = Шапка.КПППолучателя; ЛицевойСчетПолучателя    = Шапка.ЛицевойСчетПолучателя; РеквизитыЛицевогоСчетаПолучателя = Шапка.РеквизитыЛицевогоСчетаПолучателя; КБК                      = Шапка.КБК; КОСГУ                    = Шапка.КОСГУ;<br>МоментДокумента          =Новый МоментВремени(Дата, СсылкаНаОбъект);<br>Запрос = Новый Запрос;<br>Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);<br>Запрос.УстановитьПараметр("Период"         ,МоментДокумента);<br>Запрос.Текст =<br>"ВЫБРАТЬ | ВыпискаКвитанцийКвитанции.Ребенок, | ВыпискаКвитанцийКвитанции.Контрагент, | ВыпискаКвитанцийКвитанции.НомерЛицевогоСчета, | ВыпискаКвитанцийКвитанции.Договор, | ВыпискаКвитанцийКвитанции.Сумма КАК Сумма, | ПараметрыКомпенсацииРодительскойПлатыСрезПоследних.Плательщик, | ПараметрыКомпенсацииРодительскойПлатыСрезПоследних.Плательщик.Представление КАК ПлательщикИмя, | ПараметрыКомпенсацииРодительскойПлатыСрезПоследних.Плательщик.ВидКонтрагента КАК ВидКонтрагента |ИЗ | Документ.РП_ВыпискаКвитанций.Квитанции КАК ВыпискаКвитанцийКвитанции | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметрыКомпенсацииРодительскойПлаты.СрезПоследних(&Период, ) КАК ПараметрыКомпенсацииРодительскойПлатыСрезПоследних | ПО ВыпискаКвитанцийКвитанции.Ребенок = ПараметрыКомпенсацииРодительскойПлатыСрезПоследних.Ребенок |ГДЕ | ВыпискаКвитанцийКвитанции.Ссылка = &ТекущийДокумент | И ВыпискаКвитанцийКвитанции.Сумма > 0 | |УПОРЯДОЧИТЬ ПО | ВыпискаКвитанцийКвитанции.НомерСтроки"; ТаблицаКвитанций = Запрос.Выполнить().Выгрузить(); ТабДокумент = Новый ТабличныйДокумент;<br> Макет = ПолучитьМакет("Макет");<br>Если НЕ Шапка.ОплатаВКассу Тогда РеквизитыПолучателя = Новый Структура("ИННПолучателя, КПППолучателя, ТекстПолучателя, НомерРасчетногоСчета, НазваниеБанка, БИК, КоррСчет", "ИНН", "КПП", "Корреспондент", "СчетНомер", "Банк", "БИК", "КоррСчет");<br>РаботаСДиалогами.ПолучитьПлатежныеРеквизитыПоТребованиюБанка(ЛицевойСчетПолучателя, РеквизитыЛицевогоСчетаПолучателя, РеквизитыПолучателя, Истина);<br>НомерРасчетногоСчета     = РеквизитыПолучателя.НомерРасчетногоСчета; НазваниеБанка            = РеквизитыПолучателя.НазваниеБанка; БИК                      = РеквизитыПолучателя.БИК; КоррСчет                 = РеквизитыПолучателя.КоррСчет; ПредставлениеОрганизации = "ИНН "+РеквизитыПолучателя.ИННПолучателя+" КПП "+РеквизитыПолучателя.КПППолучателя+" "+РеквизитыПолучателя.ТекстПолучателя; Иначе НомерРасчетногоСчета     = """"; НазваниеБанка            = """"; БИК                      = """"; КоррСчет                 = """"; ПредставлениеОрганизации = "ИНН "+ИННПолучателя+" КПП "+КПППолучателя+" "+НаименованиеОрганизации; КонецЕсли;<br> // Выводим квитанции Для Каждого Строка Из ТаблицаКвитанций Цикл Если Строка.Сумма=0 Тогда Продолжить; КонецЕсли; ОбластьМакета = Макет.ПолучитьОбласть("Квитанция"); ОбластьМакета.Параметры.ПредставлениеОрганизации = ПредставлениеОрганизации; ОбластьМакета.Параметры.НомерРасчетногоСчета     = НомерРасчетногоСчета; ОбластьМакета.Параметры.НазваниеБанка            = НазваниеБанка; ОбластьМакета.Параметры.БИК                      = БИК; ОбластьМакета.Параметры.КоррСчет                 = КоррСчет; ОбластьМакета.Параметры.КБК                      = КБК; ОбластьМакета.Параметры.КОСГУ                    = КОСГУ; ПредставлениеПериода = РаботаСДиалогами.ПолучитьПредставлениеПериодаРегистрации(КонецМесяца(Шапка.Дата))+" г."; НазначениеПлатежа = СокрЛП(Шапка.НаправлениеДеятельности); НазваниеДоговора = СокрЛП(Строка.Договор); ПредставлениеРебенка = Строка(Строка.Ребенок) + "," + " л/с "+Строка.НомерЛицевогоСчета + ?(ПустаяСтрока(НазваниеДоговора) ИЛИ НазваниеДоговора=НазначениеПлатежа, """", ", " + НазваниеДоговора); ПлательщикИмяАдрес = """"; Плательщик         = Строка.Плательщик; Если ЗначениеЗаполнено(Плательщик) Тогда ПлательщикИмяАдрес  = Строка.ПлательщикИмя; СтруктураРеквизитов = Новый Структура; СтруктураРеквизитов.Вставить("КИКонтрагента", Новый Структура); Если Строка.ВидКонтрагента = Перечисления.ВидыКонтрагентов.Организация Тогда СтруктураРеквизитов.КИКонтрагента.Вставить("ЮрАдресКонтрагента"); ИначеЕсли Строка.ВидКонтрагента = Перечисления.ВидыКонтрагентов.ФизЛицо Тогда СтруктураРеквизитов.КИКонтрагента.Вставить("ЮрАдресФизЛица"); КонецЕсли; ПолучениеНСИ.ПолучитьДанные(Плательщик, Дата, СтруктураРеквизитов); Если Строка.ВидКонтрагента = Перечисления.ВидыКонтрагентов.Организация Тогда ПлательщикИмяАдрес = ПлательщикИмяАдрес+" "+СтруктураРеквизитов.ЮрАдресКонтрагента; ИначеЕсли Строка.ВидКонтрагента = Перечисления.ВидыКонтрагентов.ФизЛицо Тогда ПлательщикИмяАдрес = ПлательщикИмяАдрес+" "+СтруктураРеквизитов.ЮрАдресФизЛица; КонецЕсли; КонецЕсли; ОбластьМакета.Параметры.ПлательщикИмяАдрес = ПлательщикИмяАдрес; СуммаКОплате    = ?(Шапка.КвитанцииВЦелыхРублях, Окр(Строка.Сумма), Строка.Сумма); Рублей          = Цел(СуммаКОплате); Копеек          = (СуммаКОплате-Рублей)*100; СуммаЦифрами    = """"+Рублей+" руб."+Цел(Копеек/10)+(Копеек-10*Цел(Копеек/10))+"коп."; ОбластьМакета.Параметры.НазначениеПлатежа    = НазначениеПлатежа; ОбластьМакета.Параметры.ПредставлениеПериода = ПредставлениеПериода; ОбластьМакета.Параметры.ПредставлениеРебенка = ПредставлениеРебенка; ОбластьМакета.Параметры.СуммаЦифрами         = СуммаЦифрами; Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ОбластьМакета) Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; //Параметры документа ТабДокумент.ПолеСлева           = 0; ТабДокумент.ПолеСправа          = 0; ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВыпискаКвитанций_Квитанции";<br>ТабДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Портрет;<br>Возврат ТабДокумент;<br>КонецФункции"
Вы думаете в этом неформатированном коде можно что-то понять?
Отладчиком нужно посмотреть что в переменной "Дата".
Можно подробнее
Если не умеете пользоваться отладчиком, то не стоит пока заниматься этим гиблым делом.
Отлично, спасибо. Прекрасный ответ, он мне очень помог)
Всегда пожалуйста.
зря обижаешься. Ценность совета поймешь позже, если продолжишь<br>> заниматься этим гиблым делом
"МоментДокумента          =Новый МоментВремени(СсылкаНаОбъект.Дата, СсылкаНаОбъект);"
Зачем Вы передаете в параметр запроса момент времени?

Читают тему

(гостей: 1)

Быстрый переход