ge4r
Участник
Offline
|
|
« : 01-08-2011 06:39 » |
|
Добрый день. Делал внешнюю печатную форму для документа ОказаниеУслуг. Если правил в самом модуле документа - все работало. Стал переносить во внешнюю обработку, но при попытке ее запустить вылетает ошибка: Значение не является значением объектного типа (ПараметрыПрописиНаРусском) Вот код, косяка не вижу. Выручайте. Перем мВалютаРегламентированногоУчета Экспорт; Функция Печать() Экспорт Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | ОказаниеУслуг.Ссылка.Номер, | ОказаниеУслуг.Ссылка.Дата, | ОказаниеУслуг.Ссылка.Организация, | ОказаниеУслуг.Ссылка.Организация КАК Поставщик, | ОказаниеУслуг.Ссылка.УчитыватьНДС, | ОказаниеУслуг.Ссылка.СуммаВключаетНДС, | ОказаниеУслуг.Ссылка.СтавкаНДС, | ОказаниеУслуг.Ссылка.Номенклатура, | ОказаниеУслуг.Ссылка.ВидВзаиморасчетов, | ОказаниеУслуг.Ссылка.Исполнитель, | ОказаниеУслуг.Ссылка.Заказчик, | ВЫБОР | КОГДА (НЕ ОказаниеУслуг.Ссылка.Номенклатура.НаименованиеПолное ПОДОБНО """") | ТОГДА ВЫРАЗИТЬ(ОказаниеУслуг.Ссылка.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) | ИНАЧЕ ОказаниеУслуг.Ссылка.Номенклатура.Наименование | КОНЕЦ КАК Товар, | ОказаниеУслуг.Количество КАК Количество, | ОказаниеУслуг.Ссылка.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения, | ОказаниеУслуг.НомерСтроки КАК НомерСтроки, | ОказаниеУслуг.Контрагент КАК Получатель, | ОказаниеУслуг.ДоговорКонтрагента, | ОказаниеУслуг.Цена КАК Цена, | ОказаниеУслуг.Сумма, | ОказаниеУслуг.СуммаНДС |ИЗ | Документ.ОказаниеУслуг.Контрагенты КАК ОказаниеУслуг |ГДЕ | ОказаниеУслуг.Ссылка = &ТекущийДокумент | И ОказаниеУслуг.Сумма > 0 | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Выборка = Запрос.Выполнить().Выбрать();
ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОказаниеУслуг_Акты";
Пока Выборка.Следующий() Цикл Макет = ПолучитьМакет("Акт"); ОбластьМакета = Макет.ПолучитьОбласть("Акт"); // Вывод полного названия организации и ее адреса. СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата); ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ЮридическийАдрес"); ОбластьМакета.Параметры.АдресПоставщика = ПредставлениеПоставщика; СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Получатель, Выборка.Дата); ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ЮридическийАдрес"); ОбластьМакета.Параметры.АдресПолучателя = ПредставлениеПолучателя;
//Вывод заголовка ОбластьМакета.Параметры.НомерАкта = "Акт № " + ОбщегоНазначения.ПолучитьНомерНаПечать(Выборка);//"/"+Выборка.НомерСтроки ВидВзаиморасчетов = СокрЛП(Выборка.ВидВзаиморасчетов) ; ОбластьМакета.Параметры.Услуга ="по "+ СокрЛП(Выборка.Товар) + " за " + Формат(Выборка.Дата, "ДФ=' ММММ гггг'")+ " г."; //ОбластьМакета.Параметры.ДатаОказания = "за" + Формат(Выборка.Дата, "ДФ=' ММММ гггг'")+ " г."; ОбластьМакета.Параметры.КонецМ = Формат(КонецМесяца(Выборка.Дата), "ДФ='дд ММММ гггг'")+ " г."; //Вывод представителей и номера договора Заказчик = Выборка.Заказчик; Исполнитель = Выборка.Исполнитель; ДолжностьЗаказчик = Выборка.Заказчик.ТекущаяДолжностьОрганизации; ДолжностьИсполнитель = Выборка.Исполнитель.ТекущаяДолжностьОрганизации; Поставщик = Выборка.Поставщик; Получатель = Выборка.Получатель; Договор = Выборка.ДоговорКонтрагента.Номер; ДатаДоговора = Выборка.ДоговорКонтрагента.Дата; ОбластьМакета.Параметры.Представление = "Мы, нижеподписавшиеся, представитель " + Поставщик.НаименованиеСокращенное +" "+ Исполнитель.Наименование + " с одной стороны, и представитель " + Получатель.Наименование + " " + Заказчик.Наименование +" с другой стороны, составили настоящий Акт о том, что Подрядчик сдал, а Заказчик принял выполненые работы в соответствии с договором №" + Договор +" от " + Формат(ДатаДоговора, "ДФ='дд.ММ.гггг'");
// Вывести табличную часть ОбластьМакета.Параметры.Заполнить(Выборка); //ОбластьМакета.Параметры.НомерСтроки = 1; ОбластьМакета.Параметры.Товар = СокрЛП(Выборка.Товар); Сумма = Выборка.Сумма; СуммаНДС = Выборка.СуммаНДС; Единицы = "(" + Выборка.ЕдиницаИзмерения + ".)"; ОбластьМакета.Параметры.Единицы = Единицы; ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма); Если Выборка.УчитыватьНДС Тогда
Если СуммаНДС <> 0 Тогда ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС); СуммаСНДС = Сумма + СуммаНДС; //ОбластьМакета.Параметры.НДС = ?(Выборка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС"); ОбластьМакета.Параметры.ВсегоСНДС = ОбщегоНазначения.ФорматСумм(СуммаСНДС); Иначе ОбластьМакета.Параметры.ВсегоНДС = "-"; //ОбластьМакета.Параметры.НДС = "Без налога (НДС)"; КонецЕсли;
КонецЕсли; Если Выборка.СуммаВключаетНДС Тогда СуммаСНДС=Сумма; ОбластьМакета.Параметры.ВсегоСНДС = ОбщегоНазначения.ФорматСумм(СуммаСНДС); КонецЕсли; // Cуммы прописью СуммаКПрописи = Сумма + ?(Выборка.СуммаВключаетНДС, 0, СуммаНДС); ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг на сумму: " + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета); //+ ОбщегоНазначения.ФорматСумм(СуммаКПрописи, мВалютаРегламентированногоУчета); Если Выборка.УчитыватьНДС Тогда СуммаКПрописи = СуммаНДС; ОбластьМакета.Параметры.ИтоговаяСтрокаНДС =" В т.ч. НДС - " + ОбщегоНазначения.СформироватьСуммуПрописью( СуммаКПрописи, мВалютаРегламентированногоУчета);// ОбщегоНазначения.ФорматСумм(СуммаКПрописи,мВалютаРегламентированногоУчета); Иначе ОбластьМакета.Параметры.ИтоговаяСтрокаНДС =" Без налога НДС."; КонецЕсли; //Поля для росписи ОбластьМакета.Параметры.ДолжностьИсполнителя = ДолжностьИсполнитель; ОбластьМакета.Параметры.ДолжностьЗаказчика = ДолжностьЗаказчик; ОбластьМакета.Параметры.ПоставщикКр = Поставщик.НаименованиеСокращенное; ОбластьМакета.Параметры.ПолучательКр = Получатель.Наименование; ОбластьМакета.Параметры.Заказчик = Заказчик; ОбластьМакета.Параметры.Исполнитель = Исполнитель; //ОбластьМакета.Параметры.Подрядчик = Поставщик.Префикс + " ' " + Поставщик.НаименованиеСокращенное + " ' "; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести(ОбластьМакета); КонецЦикла;
Возврат ТабДокумент;
КонецФункции // ПечатьАктовОбОказанииУслуг() Добавлено через 4 минуты и 49 секунд:Подозреваю,что косяк где-то в ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг на сумму: " + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета); Добавлено через 3 минуты и 45 секунд:Разобрался, косяк был в мВалютаРегламентированогоУчета вставил в код мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); и все ок заработало.
|
|
« Последнее редактирование: 01-08-2011 06:47 от ge4r »
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #1 : 11-02-2012 06:45 » |
|
Добрый ден. Такая же беда при попытке запустит вылетает ошибка "Значение не является значением объектного типа (ПараметрыПрописиНаРусском)". Где копать не понятно вот код: Функция Печать() Экспорт Перем ПодразделениеОтветственныхЛиц;
Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | ПередачаТоваров.Номер КАК Номер, | ПередачаТоваров.Дата КАК ДатаСоставления, | ПередачаТоваров.Дата КАК ДатаДокумента, | ПередачаТоваров.Организация, | ПередачаТоваров.Организация КАК ЮрФизЛицо, | ПередачаТоваров.Организация КАК Руководители, | ПередачаТоваров.Склад КАК Склад, | ПередачаТоваров.Склад.Наименование КАК СкладНаименование, | ПередачаТоваров.ВалютаДокумента, | ПередачаТоваров.Контрагент.Код КАК КонтрагентКод, | ПередачаТоваров.Контрагент КАК Контрагент |ИЗ | Документ.ПередачаТоваров КАК ПередачаТоваров |ГДЕ | ПередачаТоваров.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий();
ЗапросПоТоварам = Новый Запрос(); ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросПоТоварам.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Номенклатура, | ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование, | ВложенныйЗапрос.Номенклатура.Код КАК ТоварКод, | ВложенныйЗапрос.Номенклатура.БазоваяЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияНаименование, | ВложенныйЗапрос.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод, | ВложенныйЗапрос.КоличествоПринято, | ВложенныйЗапрос.СчетУчета |ИЗ | (ВЫБРАТЬ | ПередачаТоваров.Номенклатура КАК Номенклатура, | ПередачаТоваров.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения, | СУММА(ПередачаТоваров.Количество) КАК КоличествоПринято, | ПередачаТоваров.СчетУчета.Представление КАК СчетУчета | ИЗ | Документ.ПередачаТоваров.Товары КАК ПередачаТоваров | ГДЕ | ПередачаТоваров.Ссылка = &ТекущийДокумент | | СГРУППИРОВАТЬ ПО | ПередачаТоваров.Номенклатура, | ПередачаТоваров.Номенклатура.БазоваяЕдиницаИзмерения, | ПередачаТоваров.СчетУчета.Представление) КАК ВложенныйЗапрос"; Если Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить() = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ЗапросПоТоварам.Текст = СтрЗаменить(ЗапросПоТоварам.Текст, "Номенклатура.Код", "Номенклатура.Артикул"); КонецЕсли; ВыборкаСтрокТовары = ЗапросПоТоварам.Выполнить().Выбрать();
Макет = ПолучитьМакет("Макет");
ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПередачаТоваров_М15";
// Выводим общие реквизиты шапки СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаСоставления);
ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.Заполнить(Шапка); ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации); ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО; ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка); СведенияОКонтрагенте = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Контрагент, Шапка.ДатаСоставления); ПредставлениеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,"); ОбластьМакета.Параметры.КонтрагентНаименование = "" + ПредставлениеКонтрагента; ОбластьМакета.Параметры.Получатель = ПредставлениеКонтрагента; ОбластьМакета.Параметры.Основание = "Договор " + СсылкаНаОбъект.ДоговорКонтрагента.Наименование + " № " + СсылкаНаОбъект.ДоговорКонтрагента.Номер + " от " + Формат(СсылкаНаОбъект.ДоговорКонтрагента.Дата, "ДЛФ=D"); ТабДокумент.Вывести(ОбластьМакета);
// Выводим заголовок таблицы ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ТабДокумент.Вывести(ЗаголовокТаблицы);
СтрокНаСтранице = 24; СтрокШапки = 9; СтрокПодвала = 3; НомерСтраницы = 1;
КоличествоСтрок = ВыборкаСтрокТовары.Количество(); Если КоличествоСтрок = 1 Тогда ПереноситьПоследнююСтроку = 0; Иначе ЦелыхСтраницСПодвалом = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице); ЦелыхСтраницБезПодвала = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице); ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала; КонецЕсли;
// Инициализация итогов в документе ИтогоКоличествоПринято = 0; ИтогоСуммаБезНДС = 0; ИтогоСуммаНДС = 0; ИтогоВсегоСНДС = 0; Ном = 0; ТаблицаСуммСписания = БухгалтерскийУчет.ПолучитьСуммуСписанияАктивов(СсылкаНаОбъект); ТаблицаСуммСписания.Индексы.Добавить("Номенклатура"); // Выводим многострочную часть документа ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Пока ВыборкаСтрокТовары.Следующий() Цикл
Ном = Ном + 1; //Начинаем новую страницу, если предыдущая строка была последней на странице //или пора переносить последнюю строку на последнюю страницу с подвалом. ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;
Если (ЦелаяСтраница = Цел(ЦелаяСтраница)) или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда
НомерСтраницы = НомерСтраницы + 1; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы; ТабДокумент.Вывести(ЗаголовокТаблицы); КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
Кратность = 1; СтрокаСуммСписания = ТаблицаСуммСписания.Найти(ВыборкаСтрокТовары.Номенклатура, "Номенклатура"); Если СтрокаСуммСписания = Неопределено Тогда ВсегоСНДС = 0; Цена = 0; Иначе Цена = ?(СтрокаСуммСписания.Количество = 0, 0, СтрокаСуммСписания.Сумма / СтрокаСуммСписания.Количество); ВсегоСНДС = Цена * ВыборкаСтрокТовары.КоличествоПринято; КонецЕсли;
Количество = ВыборкаСтрокТовары.КоличествоПринято;
ОбластьМакета.Параметры.Количество = Количество; ОбластьМакета.Параметры.СуммаСНДС = ВсегоСНДС; ОбластьМакета.Параметры.СуммаБезНДС = ВсегоСНДС; ОбластьМакета.Параметры.СуммаНДС = 0; ОбластьМакета.Параметры.Цена = Цена; ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрокТовары.ТоварНаименование); ОбластьМакета.Параметры.КоррСчет = СокрЛП(ВыборкаСтрокТовары.СчетУчета); ОбластьМакета.Параметры.НоменклатурныйНомер = ВыборкаСтрокТовары.ТоварКод;
ТабДокумент.Вывести(ОбластьМакета);
ИтогоКоличествоПринято = ИтогоКоличествоПринято + Количество; ИтогоСуммаБезНДС = ИтогоСуммаБезНДС + ВсегоСНДС; ИтогоВсегоСНДС = ИтогоВсегоСНДС + ВсегоСНДС;
КонецЦикла;
// Выводим итоги по документу ОбластьМакета = Макет.ПолучитьОбласть("Подвал"); ОбластьМакета.Параметры.Заполнить(Шапка); Руководители = ОбщегоНазначения.ОтветственныеЛица(Шапка.Руководители, Шапка.ДатаДокумента, ПодразделениеОтветственныхЛиц); Руководитель = Руководители.РуководительПредставление; Бухгалтер = Руководители.ГлавныйБухгалтерПредставление; ОбластьМакета.Параметры.ФИОРуководителя = Руководитель; ОбластьМакета.Параметры.ДолжностьРуководителя = Руководители.РуководительДолжность; ОбластьМакета.Параметры.ФИОГлавБухгалтера = Бухгалтер; ОбластьМакета.Параметры.ОтпустилДолжность = ОтпустилДолжность; ОбластьМакета.Параметры.ОтпустилФИО = ОбщегоНазначения.ФамилияИнициалыФизЛица(ОтпустилФИО); ОбластьМакета.Параметры.ПолучилДолжность = ПолучилДолжность; ОбластьМакета.Параметры.ПолучилФИО = ОбщегоНазначения.ФамилияИнициалыФизЛица(ПолучилФИО); ОбластьМакета.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(КоличествоСтрок, ,",,,,,,,,0"); ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ИтогоВсегоСНДС, Шапка.ВалютаДокумента); ОбластьМакета.Параметры.ИтогНДС = ОбщегоНазначения.СформироватьСуммуПрописью(0, Шапка.ВалютаДокумента); ТабДокумент.Вывести(ОбластьМакета);
// Зададим параметры макета ТабДокумент.ПолеСверху = 0; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Возврат ТабДокумент;
КонецФункции // ПечатьМ4()
Добавлено через 1 час, 25 минут и 39 секунд:Код немного подправил но ошибка осталась: Функция Печать() Экспорт Перем ПодразделениеОтветственныхЛиц;
Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Номер КАК Номер, | РеализацияТоваровУслуг.Дата КАК ДатаСоставления, | РеализацияТоваровУслуг.Дата КАК ДатаДокумента, | РеализацияТоваровУслуг.Организация, | РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо, | РеализацияТоваровУслуг.Организация КАК Руководители, | РеализацияТоваровУслуг.Склад КАК Склад, | РеализацияТоваровУслуг.Склад.Наименование КАК СкладНаименование, | РеализацияТоваровУслуг.Контрагент.Код КАК КонтрагентКод, | РеализацияТоваровУслуг.Контрагент КАК Контрагент, | РеализацияТоваровУслуг.КурсВзаиморасчетов КАК Курс, | РеализацияТоваровУслуг.КратностьВзаиморасчетов КАК Кратность, | РеализацияТоваровУслуг.ВалютаДокумента, | РеализацияТоваровУслуг.СуммаВключаетНДС, | РеализацияТоваровУслуг.ДоговорКонтрагента.Наименование КАК ДоговорНаименование, | РеализацияТоваровУслуг.ДоговорКонтрагента.ВидДоговора КАК ДоговорВид, | РеализацияТоваровУслуг.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах, | РеализацияТоваровУслуг.БанковскийСчетОрганизации КАК БанковскийСчет |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
ВыборкаШапки = Запрос.Выполнить().Выбрать(); ВыборкаШапки.Следующий();
Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.УстановитьПараметр("Курс", ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета)); Запрос.УстановитьПараметр("Кратность", ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета)); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Номенклатура, | ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование, | РеализацияТоваровУслуг.Номенклатура.Код КАК ТоварКод, | РеализацияТоваровУслуг.СчетУчета.Код КАК СчетУчетаКод, | РеализацияТоваровУслуг.ПереданныеСчетУчета.Код КАК ПереданныеСчетУчетаКод, | РеализацияТоваровУслуг.СчетРасходов.Код, | РеализацияТоваровУслуг.Количество, | РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмеренияНаименование, | РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод, | РеализацияТоваровУслуг.Цена * &Курс / &Кратность КАК Цена, | РеализацияТоваровУслуг.Сумма * &Курс / &Кратность КАК Сумма, | РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность КАК СуммаНДС, | РеализацияТоваровУслуг.Сумма КАК СуммаВВалютеДокумента, | РеализацияТоваровУслуг.СуммаНДС КАК СуммаНДСВВалютеДокумента, | РеализацияТоваровУслуг.СтавкаНДС |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент"; Если Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить() = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "Номенклатура.Код","Номенклатура.Артикул"); КонецЕсли; ВыборкаСтрок = Запрос.Выполнить().Выгрузить(); Если СсылкаНаОбъект.Проведен И ВыборкаШапки.РасчетыВУсловныхЕдиницах Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект.СчетУчетаРасчетовСКонтрагентом); Запрос.Текст = "ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Регистратор = &Ссылка | И Хозрасчетный.СчетДт = &СчетУчетаРасчетовСКонтрагентом | И Хозрасчетный.СчетКт В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | РеализацияТоваровУслугТовары.СчетДоходов | ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка) |"; СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма; Если НЕ СуммаВзаиморасчетов = NULL Тогда ВыборкаСтрок.Колонки.Добавить("СуммаБезНДСВВалютеДокумента"); МассивРаспределения = Новый Массив; Для Каждого СтрокаТовар Из ВыборкаСтрок Цикл СуммаСНДСВВалютеДокумента = СтрокаТовар.СуммаВВалютеДокумента + ?(ВыборкаШапки.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДСВВалютеДокумента); Если (СтрокаТовар.СтавкаНДС = Перечисления.СтавкиНДС.НДС20_120) ИЛИ (СтрокаТовар.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118) ИЛИ (СтрокаТовар.СтавкаНДС = Перечисления.СтавкиНДС.НДС10_110) Тогда СуммаБезНДСВВалютеДокумента = СуммаСНДСВВалютеДокумента; Иначе СуммаБезНДСВВалютеДокумента = СуммаСНДСВВалютеДокумента - СтрокаТовар.СуммаНДСВВалютеДокумента; КонецЕсли; МассивРаспределения.Добавить(СуммаСНДСВВалютеДокумента); СтрокаТовар.СуммаБезНДСВВалютеДокумента = СуммаБезНДСВВалютеДокумента; КонецЦикла; УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ВыборкаСтрок, "Сумма"); Для Каждого СтрокаТовар Из ВыборкаСтрок Цикл МассивРаспределения.Очистить(); МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДСВВалютеДокумента); МассивРаспределения.Добавить(СтрокаТовар.СуммаНДСВВалютеДокумента); МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.Сумма, МассивРаспределения); Если НЕ (МассивРаспределенныхСумм = Неопределено) Тогда СтрокаТовар.Сумма = МассивРаспределенныхСумм[0] + ?(ВыборкаШапки.СуммаВключаетНДС, МассивРаспределенныхСумм[1], 0); СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1]; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; Макет = ПолучитьОбщийМакет("М15"); // Получаем области макета для вывода в табличный документ Шапка = Макет.ПолучитьОбласть("Шапка"); ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); СтрокаТаблицы = Макет.ПолучитьОбласть("Строка"); Подвал = Макет.ПолучитьОбласть("Подвал"); ТабДокумент = Новый ТабличныйДокумент; // Зададим параметры макета по умолчанию ТабДокумент.ПолеСверху = 0; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; // Загрузим настройки пользователя ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_М15";
// Выведем шапку документа Шапка.Параметры.Заполнить(ВыборкаШапки); СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ВыборкаШапки.ЮрФизЛицо, ВыборкаШапки.ДатаСоставления , , ВыборкаШапки.БанковскийСчет); СведенияОКонтрагенте = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ВыборкаШапки.Контрагент, ВыборкаШапки.ДатаСоставления); Шапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации); Шапка.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО; Шапка.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(ВыборкаШапки); Шапка.Параметры.КонтрагентНаименование = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОКонтрагенте, "НаименованиеДляПечатныхФорм,"); Шапка.Параметры.Основание = "Договор " + СокрЛП(ВыборкаШапки.ДоговорНаименование); ТабДокумент.Вывести(Шапка); // Подготовим к выводу выборку строк ВыборкаСтрок.Колонки.Добавить("КоррСчет"); ВыборкаСтрок.Колонки.Добавить("КоррКод"); ВыборкаСтрок.Колонки.Добавить("СуммаСНДС"); ВыборкаСтрок.Колонки.Добавить("СуммаБезНДС"); Для Каждого СтрокаВыборки Из ВыборкаСтрок Цикл
СуммаНДС = СтрокаВыборки.СуммаНДС; Количество = СтрокаВыборки.Количество; СуммаСНДС = (СтрокаВыборки.Сумма + ?(ВыборкаШапки.СуммаВключаетНДС, 0, СтрокаВыборки.СуммаНДС)); СуммаБезНДС = СуммаСНДС - СуммаНДС; СтрокаВыборки.КоррСчет = ?((ВыборкаШапки.ДоговорВид = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером ИЛИ СсылкаНаОбъект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ОтгрузкаБезПереходаПраваСобственности), СтрокаВыборки.ПереданныеСчетУчетаКод, СтрокаВыборки.СчетРасходовКод); СтрокаВыборки.КоррКод = СтрокаВыборки.ТоварКод; СтрокаВыборки.ТоварНаименование = СокрЛП(СтрокаВыборки.ТоварНаименование); СтрокаВыборки.СуммаСНДС = СуммаСНДС; СтрокаВыборки.СуммаБезНДС = СуммаБезНДС; СтрокаВыборки.Цена = СуммаБезНДС / ?(Количество = 0, 1, Количество); КонецЦикла; // Заполним подвал документа
Подвал.Параметры.Заполнить(ВыборкаШапки); Руководители = ОбщегоНазначения.ОтветственныеЛица(ВыборкаШапки.Руководители, ВыборкаШапки.ДатаДокумента, ПодразделениеОтветственныхЛиц); Руководитель = Руководители.Руководитель; Бухгалтер = Руководители.ГлавныйБухгалтер; ИтогНДС = ВыборкаСтрок.Итог("СуммаНДС"); Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(ВыборкаСтрок.Количество(), ,",,,с,,,,,0"); Подвал.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ВыборкаСтрок.Итог("СуммаСНДС"), мВалютаРегламентированногоУчета); Подвал.Параметры.ИтогНДС = ?(ЗначениеЗаполнено(ИтогНДС), Формат(Цел(ИтогНДС), "ЧДЦ=0") + " руб. " + Формат((ИтогНДС - Цел(ИтогНДС)) * 100, "ЧЦ=2; ЧВН=") + " коп. ", "______ руб. ______ коп."); Подвал.Параметры.ФИОРуководителя = Руководитель; Подвал.Параметры.ФИОГлавБухгалтера = Бухгалтер; // Инициализируем счетчик страниц НомерСтраницы = 1; // Выведем заголовок табличной части ТабДокумент.Вывести(ЗаголовокТаблицы); // Выведем выборку строк Для Каждого СтрокаВыборки Из ВыборкаСтрок Цикл
СтрокаТаблицы.Параметры.Заполнить(СтрокаВыборки); СтрокаТаблицы.Параметры.НоменклатурныйНомер = СтрокаВыборки.ТоварКод; СтрокаСПодвалом = Новый Массив; СтрокаСПодвалом.Добавить(СтрокаТаблицы); //СтрокаСПодвалом.Добавить(ПодвалТаблицы); // Если обрабатываемая строка - последняя, будем проверять, помещается ли подвал документа Если ВыборкаСтрок.Индекс(СтрокаВыборки) = ВыборкаСтрок.Количество() - 1 Тогда СтрокаСПодвалом.Добавить(Подвал); КонецЕсли;
Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда //ТабДокумент.Вывести(ПодвалТаблицы); ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); НомерСтраницы = НомерСтраницы + 1; ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы; ТабДокумент.Вывести(ЗаголовокТаблицы); КонецЕсли; ТабДокумент.Вывести(СтрокаТаблицы);
КонецЦикла; // Выведем все подвалы //ТабДокумент.Вывести(ПодвалТаблицы); ТабДокумент.Вывести(Подвал);
Возврат ТабДокумент;
КонецФункции // ПечатьМ15()
|
|
« Последнее редактирование: 11-02-2012 08:11 от Patronus »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #2 : 11-02-2012 08:54 » |
|
Если убрать эту строку Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(ВыборкаСтрок.Количество(), ,",,,с,,,,,0");
то все заработает?
Далее Если
Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(20, ,",,,с,,,,,0"); то все заработает?
тогда
ВыборкаСтрок.Количество() - что возвращает?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #3 : 11-02-2012 09:04 » |
|
Если убрать эту строку Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(ВыборкаСтрок.Количество(), ,",,,с,,,,,0");
то все заработает?
Далее Если
Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(20, ,",,,с,,,,,0"); то все заработает?
тогда
ВыборкаСтрок.Количество() - что возвращает?
Ошибка остается, я прикрепил файл внешней печатной формы может так сможете посмотреть
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #4 : 11-02-2012 09:09 » |
|
Patronus, я в 1С - полный ноль (правда с палочкой ) Поэтому, просто пытаюсь показать путь к решению.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Kivals
|
|
« Ответ #5 : 11-02-2012 09:50 » |
|
Patronus, в какой строке ошибка - проверять весь код желания нет
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #6 : 13-02-2012 04:21 » |
|
Patronus, в какой строке ошибка - проверять весь код желания нет
Чисто из логики думаю ему что то здесь не нравиться: Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(ВыборкаСтрок.Количество(), ,",,,с,,,,,0"); Подвал.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ВыборкаСтрок.Итог("СуммаСНДС"), мВалютаРегламентированногоУчета);
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #7 : 13-02-2012 06:27 » |
|
Patronus, я имел в виду, какую строку в ошибке выдает платформа 1C
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #8 : 13-02-2012 07:01 » |
|
Patronus, я имел в виду, какую строку в ошибке выдает платформа 1C
На конкретную строку он не ругается вот что пишет при формировании печатной формы: "Не удалось сформировать внешнюю печатную форму! Значение не является значением объектного типа (ПараметрыПрописиНаРусском)"
|
|
|
Записан
|
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #10 : 13-02-2012 08:32 » |
|
Не могли вы вы это обработку прикрепить на форум, а то я не могу скачать ее.
|
|
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #11 : 13-02-2012 11:18 » |
|
Вот. Только не смотря на имя файла - она уже сконвертирована для 8.2
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #12 : 14-02-2012 02:40 » |
|
Вот какую ошибку пишет: {ОбщийМодуль.ОбщегоНазначения.Модуль(4193)}: Значение не является значением объектного типа (ПараметрыПрописиНаРусском) Если Валюта.ПараметрыПрописиНаРусском = "" Тогда Добавлено через 2 часа, 36 минут и 39 секунд:Нашел строку на что он ругается: Функция СформироватьСуммуПрописью(Сумма, Валюта) Экспорт
Если Валюта.ПараметрыПрописиНаРусском = "" Тогда Возврат ОбщегоНазначения.ФорматСумм(Сумма); Иначе Возврат ЧислоПрописью(Сумма, ,Валюта.ПараметрыПрописиНаРусском); КонецЕсли;
КонецФункции // СформироватьСуммуПрописью()
|
|
« Последнее редактирование: 14-02-2012 05:17 от Patronus »
|
Записан
|
|
|
|
Kivals
|
|
« Ответ #13 : 14-02-2012 07:02 » |
|
1. Посмотри в Табло какое значение (тип) параметра Валюта 2. Посмотри в Стеке вызова откуда (из какой строки) твоего модуля вызывается эта функция и почему в нее попадает неверное значение Валюты
|
|
|
Записан
|
|
|
|
Patronus
Интересующийся
Offline
|
|
« Ответ #14 : 14-02-2012 07:38 » |
|
Нашел в чем была проблема: было Подвал.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ВыборкаСтрок.Итог("СуммаСНДС"), мВалютаРегламентированногоУчета); поменял на Подвал.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ВыборкаСтрок.Итог("СуммаСНДС"), СсылкаНаОбъект.ВалютаДокумента); и все заработало Огромное спасибо Kivals очень помогли! P.S. Если кому надо прикрепил печатную форму М-15.
|
M15.epf (11.39 Кб - загружено 864 раз.)
|
« Последнее редактирование: 14-02-2012 07:47 от Patronus »
|
Записан
|
|
|
|
|