| 
			| 
					
						| ge4r 
								Участник    Offline | 
								|  | «  : 01-08-2011 06:39 »  |  | 
 
 Добрый день. Делал внешнюю печатную форму для документа ОказаниеУслуг. Если правил в самом модуле документа - все работало. Стал переносить во внешнюю обработку, но при попытке ее запустить вылетает ошибка: Значение не является значением объектного типа (ПараметрыПрописиНаРусском) Вот код, косяка не вижу. Выручайте. Добавлено через 4 минуты и 49 секунд:Перем мВалютаРегламентированногоУчета Экспорт;Функция Печать() Экспорт
 
 Запрос = Новый Запрос;
 Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
 Запрос.Текст =
 "ВЫБРАТЬ
 |	ОказаниеУслуг.Ссылка.Номер,
 |	ОказаниеУслуг.Ссылка.Дата,
 |	ОказаниеУслуг.Ссылка.Организация,
 |	ОказаниеУслуг.Ссылка.Организация КАК Поставщик,
 |	ОказаниеУслуг.Ссылка.УчитыватьНДС,
 |	ОказаниеУслуг.Ссылка.СуммаВключаетНДС,
 |	ОказаниеУслуг.Ссылка.СтавкаНДС,
 |	ОказаниеУслуг.Ссылка.Номенклатура,
 |   ОказаниеУслуг.Ссылка.ВидВзаиморасчетов,
 |   ОказаниеУслуг.Ссылка.Исполнитель,
 |   ОказаниеУслуг.Ссылка.Заказчик,
 |	ВЫБОР
 |		КОГДА (НЕ ОказаниеУслуг.Ссылка.Номенклатура.НаименованиеПолное ПОДОБНО """")
 |			ТОГДА ВЫРАЗИТЬ(ОказаниеУслуг.Ссылка.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
 |		ИНАЧЕ ОказаниеУслуг.Ссылка.Номенклатура.Наименование
 |	КОНЕЦ КАК Товар,
 |	ОказаниеУслуг.Количество КАК Количество,
 |	ОказаниеУслуг.Ссылка.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
 |	ОказаниеУслуг.НомерСтроки КАК НомерСтроки,
 |	ОказаниеУслуг.Контрагент КАК Получатель,
 |	ОказаниеУслуг.ДоговорКонтрагента,
 |	ОказаниеУслуг.Цена КАК Цена,
 |	ОказаниеУслуг.Сумма,
 |	ОказаниеУслуг.СуммаНДС
 |ИЗ
 |	Документ.ОказаниеУслуг.Контрагенты КАК ОказаниеУслуг
 |ГДЕ
 |	ОказаниеУслуг.Ссылка = &ТекущийДокумент
 |	И ОказаниеУслуг.Сумма > 0
 |
 |УПОРЯДОЧИТЬ ПО
 |	НомерСтроки";
 Выборка = Запрос.Выполнить().Выбрать();
 
 ТабДокумент = Новый ТабличныйДокумент;
 ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОказаниеУслуг_Акты";
 
 Пока Выборка.Следующий() Цикл
 
 Макет = ПолучитьМакет("Акт");
 ОбластьМакета = Макет.ПолучитьОбласть("Акт");
 
 // Вывод полного названия организации и ее адреса.
 СведенияОбОрганизации   = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата);
 ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ЮридическийАдрес");
 ОбластьМакета.Параметры.АдресПоставщика = ПредставлениеПоставщика;
 СведенияОбОрганизации   = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Получатель, Выборка.Дата);
 ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ЮридическийАдрес");
 ОбластьМакета.Параметры.АдресПолучателя = ПредставлениеПолучателя;
 
 //Вывод заголовка
 ОбластьМакета.Параметры.НомерАкта = "Акт № " + ОбщегоНазначения.ПолучитьНомерНаПечать(Выборка);//"/"+Выборка.НомерСтроки
 ВидВзаиморасчетов = СокрЛП(Выборка.ВидВзаиморасчетов) ;
 ОбластьМакета.Параметры.Услуга ="по "+ СокрЛП(Выборка.Товар) + " за " + Формат(Выборка.Дата, "ДФ=' ММММ гггг'")+ " г.";
 //ОбластьМакета.Параметры.ДатаОказания = "за" + Формат(Выборка.Дата, "ДФ=' ММММ гггг'")+ " г.";
 ОбластьМакета.Параметры.КонецМ = Формат(КонецМесяца(Выборка.Дата), "ДФ='дд ММММ гггг'")+ " г.";
 
 //Вывод представителей и номера договора
 Заказчик = Выборка.Заказчик;
 Исполнитель = Выборка.Исполнитель;
 ДолжностьЗаказчик = Выборка.Заказчик.ТекущаяДолжностьОрганизации;
 ДолжностьИсполнитель = Выборка.Исполнитель.ТекущаяДолжностьОрганизации;
 Поставщик = Выборка.Поставщик;
 Получатель = Выборка.Получатель;
 Договор = Выборка.ДоговорКонтрагента.Номер;
 ДатаДоговора = Выборка.ДоговорКонтрагента.Дата;
 ОбластьМакета.Параметры.Представление = "Мы, нижеподписавшиеся, представитель "  + Поставщик.НаименованиеСокращенное +" "+ Исполнитель.Наименование + " с одной стороны, и представитель " + Получатель.Наименование + " "  + Заказчик.Наименование +" с другой стороны, составили настоящий Акт о том, что Подрядчик сдал, а Заказчик принял выполненые работы в соответствии с договором №" + Договор +" от " + Формат(ДатаДоговора, "ДФ='дд.ММ.гггг'");
 
 // Вывести табличную часть
 ОбластьМакета.Параметры.Заполнить(Выборка);
 //ОбластьМакета.Параметры.НомерСтроки = 1;
 ОбластьМакета.Параметры.Товар = СокрЛП(Выборка.Товар);
 Сумма    = Выборка.Сумма;
 СуммаНДС = Выборка.СуммаНДС;
 Единицы = "(" + Выборка.ЕдиницаИзмерения + ".)";
 ОбластьМакета.Параметры.Единицы = Единицы;
 ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
 Если Выборка.УчитыватьНДС Тогда
 
 Если СуммаНДС <> 0 Тогда
 ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
 СуммаСНДС = Сумма + СуммаНДС;
 //ОбластьМакета.Параметры.НДС      = ?(Выборка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
 ОбластьМакета.Параметры.ВсегоСНДС = ОбщегоНазначения.ФорматСумм(СуммаСНДС);
 Иначе
 ОбластьМакета.Параметры.ВсегоНДС = "-";
 //ОбластьМакета.Параметры.НДС      = "Без налога (НДС)";
 КонецЕсли;
 
 КонецЕсли;
 
 Если Выборка.СуммаВключаетНДС Тогда
 СуммаСНДС=Сумма;
 ОбластьМакета.Параметры.ВсегоСНДС = ОбщегоНазначения.ФорматСумм(СуммаСНДС);
 КонецЕсли;
 
 // Cуммы прописью
 СуммаКПрописи = Сумма + ?(Выборка.СуммаВключаетНДС, 0, СуммаНДС);
 ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг на сумму: " + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета); //+ ОбщегоНазначения.ФорматСумм(СуммаКПрописи, мВалютаРегламентированногоУчета);
 Если Выборка.УчитыватьНДС Тогда
 СуммаКПрописи = СуммаНДС;
 ОбластьМакета.Параметры.ИтоговаяСтрокаНДС =" В т.ч. НДС - " + ОбщегоНазначения.СформироватьСуммуПрописью( СуммаКПрописи, мВалютаРегламентированногоУчета);// ОбщегоНазначения.ФорматСумм(СуммаКПрописи,мВалютаРегламентированногоУчета);
 Иначе
 ОбластьМакета.Параметры.ИтоговаяСтрокаНДС =" Без налога НДС.";
 КонецЕсли;
 
 //Поля для росписи
 ОбластьМакета.Параметры.ДолжностьИсполнителя = ДолжностьИсполнитель;
 ОбластьМакета.Параметры.ДолжностьЗаказчика = ДолжностьЗаказчик;
 ОбластьМакета.Параметры.ПоставщикКр =  Поставщик.НаименованиеСокращенное;
 ОбластьМакета.Параметры.ПолучательКр = Получатель.Наименование;
 ОбластьМакета.Параметры.Заказчик = Заказчик;
 ОбластьМакета.Параметры.Исполнитель = Исполнитель;
 //ОбластьМакета.Параметры.Подрядчик = Поставщик.Префикс + " ' " + Поставщик.НаименованиеСокращенное + " ' ";
 ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
 ТабДокумент.Вывести(ОбластьМакета);
 
 КонецЦикла;
 
 
 Возврат ТабДокумент;
 
 КонецФункции // ПечатьАктовОбОказанииУслуг()
Подозреваю,что косяк где-то в ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг на сумму: " + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета); Добавлено через 3 минуты и 45 секунд: Разобрался, косяк был в мВалютаРегламентированогоУчета вставил в код мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); и все ок заработало. |  
						| 
								|  |  
								| « Последнее редактирование: 01-08-2011 06:47 от ge4r » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Patronus 
								Интересующийся    Offline | 
								|  | « Ответ #1 : 11-02-2012 06:45 »  |  | 
 
 Добрый ден. Такая же беда при попытке запустит вылетает ошибка "Значение не является значением объектного типа (ПараметрыПрописиНаРусском)". Где копать не понятно вот код: Добавлено через 1 час, 25 минут и 39 секунд:Функция Печать() ЭкспортПерем ПодразделениеОтветственныхЛиц;
 
 Запрос = Новый Запрос;
 Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
 Запрос.Текст =
 "ВЫБРАТЬ
 |	ПередачаТоваров.Номер КАК Номер,
 |	ПередачаТоваров.Дата КАК ДатаСоставления,
 |	ПередачаТоваров.Дата КАК ДатаДокумента,
 |	ПередачаТоваров.Организация,
 |	ПередачаТоваров.Организация КАК ЮрФизЛицо,
 |	ПередачаТоваров.Организация КАК Руководители,
 |	ПередачаТоваров.Склад КАК Склад,
 |	ПередачаТоваров.Склад.Наименование КАК СкладНаименование,
 |	ПередачаТоваров.ВалютаДокумента,
 |	ПередачаТоваров.Контрагент.Код КАК КонтрагентКод,
 |	ПередачаТоваров.Контрагент КАК Контрагент
 |ИЗ
 |	Документ.ПередачаТоваров КАК ПередачаТоваров
 |ГДЕ
 |	ПередачаТоваров.Ссылка = &ТекущийДокумент";
 
 Шапка = Запрос.Выполнить().Выбрать();
 Шапка.Следующий();
 
 ЗапросПоТоварам = Новый Запрос();
 ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
 ЗапросПоТоварам.Текст =
 "ВЫБРАТЬ
 |	ВложенныйЗапрос.Номенклатура,
 |	ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(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()
 
Код немного подправил но ошибка осталась: Функция Печать() Экспорт Перем ПодразделениеОтветственныхЛиц;
 
 Запрос = Новый Запрос;
 Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
 Запрос.Текст =
 "ВЫБРАТЬ
 |	РеализацияТоваровУслуг.Номер КАК Номер,
 |	РеализацияТоваровУслуг.Дата КАК ДатаСоставления,
 |	РеализацияТоваровУслуг.Дата КАК ДатаДокумента,
 |	РеализацияТоваровУслуг.Организация,
 |	РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо,
 |	РеализацияТоваровУслуг.Организация КАК Руководители,
 |	РеализацияТоваровУслуг.Склад КАК Склад,
 |	РеализацияТоваровУслуг.Склад.Наименование КАК СкладНаименование,
 |	РеализацияТоваровУслуг.Контрагент.Код КАК КонтрагентКод,
 |	РеализацияТоваровУслуг.Контрагент КАК Контрагент,
 |	РеализацияТоваровУслуг.КурсВзаиморасчетов КАК Курс,
 |	РеализацияТоваровУслуг.КратностьВзаиморасчетов КАК Кратность,
 |	РеализацияТоваровУслуг.ВалютаДокумента,
 |	РеализацияТоваровУслуг.СуммаВключаетНДС,
 |	РеализацияТоваровУслуг.ДоговорКонтрагента.Наименование КАК ДоговорНаименование,
 |	РеализацияТоваровУслуг.ДоговорКонтрагента.ВидДоговора КАК ДоговорВид,
 |	РеализацияТоваровУслуг.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
 |	РеализацияТоваровУслуг.БанковскийСчетОрганизации КАК БанковскийСчет
 |ИЗ
 |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
 |ГДЕ
 |	РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
 
 ВыборкаШапки = Запрос.Выполнить().Выбрать();
 ВыборкаШапки.Следующий();
 
 Запрос = Новый Запрос;
 Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
 Запрос.УстановитьПараметр("Курс",            ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект,      мВалютаРегламентированногоУчета));
 Запрос.УстановитьПараметр("Кратность",       ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект, мВалютаРегламентированногоУчета));
 Запрос.Текст =
 "ВЫБРАТЬ
 |	РеализацияТоваровУслуг.Номенклатура,
 |	ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(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 Кб - загружено 952 раз.)
									 |  
								| « Последнее редактирование: 14-02-2012 07:47 от Patronus » |  Записан | 
 |  |  | 
	|  |