Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[1С:Бухгалтерия 8]

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

Zebraaa
читатель
офлайн
Дата регистрации: 16.03.2012
Сообщений: 23
Пост №1
 
22.11.2012 13:36

"Для выписки квитанций есть печатная форма. Мне нужно её немного изменить. Делаю это через внешнюю обработку. Захожу в конфигуратор, выбираю Файл-Новый- Внешняя обработка. Добавляю туда ревизит "Ссылка на объект", создаю форму, копирую из исходного документа шаблон печатной формы, правлю название ревизитов(собственного говоря из-за чего создаю отдельную форму) . В модуль объекта обработки копирую Функцию Печать() с пометкой Экспорт. Везде меняю ОбъектСсылка на СсылкаНаОбъект. Заменяю название печатной формы на новую. После открываю обработку. Файл-открыть. Выбираю Выписку Квитанций (это все работает). Когда нажимаю на кнопку выполнить выдается сообщение: <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>КонецФункции"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №2
 
22.11.2012 13:41

Вы думаете в этом неформатированном коде можно что-то понять?

ZhAmAn
читатель
офлайн
Дата регистрации: 23.12.2010
Сообщений: 1333
Пост №3
 
22.11.2012 13:55

Отладчиком нужно посмотреть что в переменной "Дата".

Zebraaa
читатель
офлайн
Дата регистрации: 16.03.2012
Сообщений: 23
Пост №4
 
22.11.2012 15:04

Можно подробнее

ZhAmAn
читатель
офлайн
Дата регистрации: 23.12.2010
Сообщений: 1333
Пост №5
 
22.11.2012 15:42

Если не умеете пользоваться отладчиком, то не стоит пока заниматься этим гиблым делом.

Zebraaa
читатель
офлайн
Дата регистрации: 16.03.2012
Сообщений: 23
Пост №6
 
22.11.2012 16:22

Отлично, спасибо. Прекрасный ответ, он мне очень помог)

ZhAmAn
читатель
офлайн
Дата регистрации: 23.12.2010
Сообщений: 1333
Пост №7
 
22.11.2012 16:48

Всегда пожалуйста.

Рисовод
читатель
офлайн
Дата регистрации: 26.12.2007
Сообщений: 25775
Пост №8
 
22.11.2012 16:55

зря обижаешься. Ценность совета поймешь позже, если продолжишь<br>> заниматься этим гиблым делом

Вьюн
читатель
офлайн
Дата регистрации: 14.01.2007
Сообщений: 657
Пост №9
 
23.11.2012 00:39

"МоментДокумента       =Новый МоментВремени(СсылкаНаОбъект.Дата, СсылкаНаОбъект);"

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №10
 
23.11.2012 09:28

Зачем Вы передаете в параметр запроса момент времени?

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация