Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка (ПараметрыПрописиНаРусском)  (Прочитано 25784 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ge4r
Участник

ru
Offline Offline

« : 01-08-2011 06:39 » 

Добрый день.
Делал внешнюю печатную форму для документа ОказаниеУслуг.

Если правил в самом модуле документа - все работало. Стал переносить во внешнюю обработку, но при попытке ее запустить вылетает ошибка: Значение не является значением объектного типа (ПараметрыПрописиНаРусском)
Вот код, косяка не вижу. Выручайте.
Код:
Перем мВалютаРегламентированногоУчета Экспорт;
Функция Печать() Экспорт

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
    Запрос.Текст =
"ВЫБРАТЬ
| ОказаниеУслуг.Ссылка.Номер,
| ОказаниеУслуг.Ссылка.Дата,
| ОказаниеУслуг.Ссылка.Организация,
| ОказаниеУслуг.Ссылка.Организация КАК Поставщик,
| ОказаниеУслуг.Ссылка.УчитыватьНДС,
| ОказаниеУслуг.Ссылка.СуммаВключаетНДС,
| ОказаниеУслуг.Ссылка.СтавкаНДС,
| ОказаниеУслуг.Ссылка.Номенклатура,
    |   ОказаниеУслуг.Ссылка.ВидВзаиморасчетов,
|   ОказаниеУслуг.Ссылка.Исполнитель,
|   ОказаниеУслуг.Ссылка.Заказчик,
| ВЫБОР
| КОГДА (НЕ ОказаниеУслуг.Ссылка.Номенклатура.НаименованиеПолное ПОДОБНО """")
| ТОГДА ВЫРАЗИТЬ(ОказаниеУслуг.Ссылка.Номенклатура.НаименованиеПолное КАК СТРОКА(1000))
| ИНАЧЕ ОказаниеУслуг.Ссылка.Номенклатура.Наименование
| КОНЕЦ КАК Товар,
| ОказаниеУслуг.Количество КАК Количество,
| ОказаниеУслуг.Ссылка.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ОказаниеУслуг.НомерСтроки КАК НомерСтроки,
| ОказаниеУслуг.Контрагент КАК Получатель,
| ОказаниеУслуг.ДоговорКонтрагента,
| ОказаниеУслуг.Цена КАК Цена,
| ОказаниеУслуг.Сумма,
| ОказаниеУслуг.СуммаНДС
|ИЗ
| Документ.ОказаниеУслуг.Контрагенты КАК ОказаниеУслуг
|ГДЕ
| ОказаниеУслуг.Ссылка = &ТекущийДокумент
| И ОказаниеУслуг.Сумма > 0
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Выборка = Запрос.Выполнить().Выбрать();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОказаниеУслуг_Акты";

Пока Выборка.Следующий() Цикл

Макет = ПолучитьМакет("Акт");
ОбластьМакета = Макет.ПолучитьОбласть("Акт");

// Вывод полного названия организации и ее адреса.
СведенияОбОрганизации   = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата);
ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ЮридическийАдрес");
ОбластьМакета.Параметры.АдресПоставщика = ПредставлениеПоставщика;
СведенияОбОрганизации   = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Получатель, Выборка.Дата);
ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ЮридическийАдрес");
ОбластьМакета.Параметры.АдресПолучателя = ПредставлениеПолучателя;

//Вывод заголовка
ОбластьМакета.Параметры.НомерАкта = "Акт № " + ОбщегоНазначения.ПолучитьНомерНаПечать(Выборка);//"/"+Выборка.НомерСтроки
ВидВзаиморасчетов = СокрЛП(Выборка.ВидВзаиморасчетов) ;   
ОбластьМакета.Параметры.Услуга ="по "+ СокрЛП(Выборка.Товар) + " за " + Формат(Выборка.Дата, "ДФ=' ММММ гггг'")+ " г.";
//ОбластьМакета.Параметры.ДатаОказания = "за" + Формат(Выборка.Дата, "ДФ=' ММММ гггг'")+ " г.";
        ОбластьМакета.Параметры.КонецМ = Формат(КонецМесяца(Выборка.Дата), "ДФ='дд ММММ гггг'")+ " г.";

//Вывод представителей и номера договора
Заказчик = Выборка.Заказчик;
Исполнитель = Выборка.Исполнитель;
        ДолжностьЗаказчик = Выборка.Заказчик.ТекущаяДолжностьОрганизации;
ДолжностьИсполнитель = Выборка.Исполнитель.ТекущаяДолжностьОрганизации;
Поставщик = Выборка.Поставщик;
    Получатель = Выборка.Получатель;
Договор = Выборка.ДоговорКонтрагента.Номер;
ДатаДоговора = Выборка.ДоговорКонтрагента.Дата;
ОбластьМакета.Параметры.Представление = "Мы, нижеподписавшиеся, представитель "  + Поставщик.НаименованиеСокращенное +" "+ Исполнитель.Наименование + " с одной стороны, и представитель " + Получатель.Наименование + " "  + Заказчик.Наименование +" с другой стороны, составили настоящий Акт о том, что Подрядчик сдал, а Заказчик принял выполненые работы в соответствии с договором №" + Договор +" от " + Формат(ДатаДоговора, "ДФ='дд.ММ.гггг'");

// Вывести табличную часть
ОбластьМакета.Параметры.Заполнить(Выборка);
//ОбластьМакета.Параметры.НомерСтроки = 1;
ОбластьМакета.Параметры.Товар = СокрЛП(Выборка.Товар);
Сумма    = Выборка.Сумма;
СуммаНДС = Выборка.СуммаНДС;
Единицы = "(" + Выборка.ЕдиницаИзмерения + ".)";
ОбластьМакета.Параметры.Единицы = Единицы;
ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
        Если Выборка.УчитыватьНДС Тогда

Если СуммаНДС <> 0 Тогда
ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
СуммаСНДС = Сумма + СуммаНДС;
//ОбластьМакета.Параметры.НДС      = ?(Выборка.СуммаВключаетНДС, "В том числе НДС", " Сумма НДС");
ОбластьМакета.Параметры.ВсегоСНДС = ОбщегоНазначения.ФорматСумм(СуммаСНДС);
Иначе
ОбластьМакета.Параметры.ВсегоНДС = "-";
//ОбластьМакета.Параметры.НДС      = "Без налога (НДС)";
КонецЕсли;

КонецЕсли;

Если Выборка.СуммаВключаетНДС Тогда
СуммаСНДС=Сумма;
ОбластьМакета.Параметры.ВсегоСНДС = ОбщегоНазначения.ФорматСумм(СуммаСНДС);
КонецЕсли;

// Cуммы прописью
СуммаКПрописи = Сумма + ?(Выборка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг на сумму: " + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета); //+ ОбщегоНазначения.ФорматСумм(СуммаКПрописи, мВалютаРегламентированногоУчета);
Если Выборка.УчитыватьНДС Тогда
СуммаКПрописи = СуммаНДС;
ОбластьМакета.Параметры.ИтоговаяСтрокаНДС =" В т.ч. НДС - " + ОбщегоНазначения.СформироватьСуммуПрописью( СуммаКПрописи, мВалютаРегламентированногоУчета);// ОбщегоНазначения.ФорматСумм(СуммаКПрописи,мВалютаРегламентированногоУчета);
Иначе
ОбластьМакета.Параметры.ИтоговаяСтрокаНДС =" Без налога НДС.";
КонецЕсли;

//Поля для росписи
ОбластьМакета.Параметры.ДолжностьИсполнителя = ДолжностьИсполнитель;
ОбластьМакета.Параметры.ДолжностьЗаказчика = ДолжностьЗаказчик;
ОбластьМакета.Параметры.ПоставщикКр =  Поставщик.НаименованиеСокращенное;
ОбластьМакета.Параметры.ПолучательКр = Получатель.Наименование;
ОбластьМакета.Параметры.Заказчик = Заказчик;
ОбластьМакета.Параметры.Исполнитель = Исполнитель;
        //ОбластьМакета.Параметры.Подрядчик = Поставщик.Префикс + " ' " + Поставщик.НаименованиеСокращенное + " ' ";
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакета);

КонецЦикла;


Возврат ТабДокумент;

КонецФункции // ПечатьАктовОбОказанииУслуг()

Добавлено через 4 минуты и 49 секунд:
Подозреваю,что косяк где-то в

ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего оказано услуг на сумму: " + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета);



Добавлено через 3 минуты и 45 секунд:
Разобрался, косяк был в мВалютаРегламентированогоУчета

вставил в код

мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();

и все ок заработало.
« Последнее редактирование: 01-08-2011 06:47 от ge4r » Записан
Patronus
Интересующийся

ru
Offline 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
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 11-02-2012 08:54 » 

Если убрать эту строку
Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(ВыборкаСтрок.Количество(), ,",,,с,,,,,0");

то все заработает?

Далее
Если

Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(20, ,",,,с,,,,,0");
то все заработает?

тогда

ВыборкаСтрок.Количество() - что возвращает?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Patronus
Интересующийся

ru
Offline Offline

« Ответ #3 : 11-02-2012 09:04 » 

Если убрать эту строку
Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(ВыборкаСтрок.Количество(), ,",,,с,,,,,0");

то все заработает?

Далее
Если

Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(20, ,",,,с,,,,,0");
то все заработает?

тогда

ВыборкаСтрок.Количество() - что возвращает?
Ошибка остается, я прикрепил файл внешней печатной формы может так сможете посмотреть

* Копия М15.epf (11.4 Кб - загружено 790 раз.)
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 11-02-2012 09:09 » 

Patronus, я в 1С - полный ноль (правда с палочкой  Улыбаюсь )

Поэтому, просто пытаюсь показать путь к решению.

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 11-02-2012 09:50 » 

Patronus, в какой строке ошибка - проверять весь код желания нет
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #6 : 13-02-2012 04:21 » 

Patronus, в какой строке ошибка - проверять весь код желания нет
Чисто из логики думаю ему что то здесь не нравиться:
Код:
Подвал.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(ВыборкаСтрок.Количество(), ,",,,с,,,,,0");
Подвал.Параметры.СуммаПрописью                              = ОбщегоНазначения.СформироватьСуммуПрописью(ВыборкаСтрок.Итог("СуммаСНДС"), мВалютаРегламентированногоУчета);
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 13-02-2012 06:27 » 

Patronus, я имел в виду, какую строку в ошибке выдает платформа 1C
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #8 : 13-02-2012 07:01 » 

Patronus, я имел в виду, какую строку в ошибке выдает платформа 1C
На конкретную строку он не ругается вот что пишет при формировании печатной формы:
"Не удалось сформировать внешнюю печатную форму!
Значение не является значением объектного типа (ПараметрыПрописиНаРусском)"
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 13-02-2012 07:34 » 

Возьми обработку Тестирование внешних печатных форм - и пройдись отладчиком по модулю своей обработки
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #10 : 13-02-2012 08:32 » 

Возьми обработку Тестирование внешних печатных форм - и пройдись отладчиком по модулю своей обработки
Не могли вы вы это обработку прикрепить на форум, а то я не могу скачать ее.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 13-02-2012 11:18 » new

Вот. Только не смотря на имя файла - она уже сконвертирована для 8.2

* ОтладкаВнешнейПечатнойФормы.81.epf (20.25 Кб - загружено 979 раз.)
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #12 : 14-02-2012 02:40 » 

Вот какую ошибку пишет:
{ОбщийМодуль.ОбщегоНазначения.Модуль(4193)}: Значение не является значением объектного типа (ПараметрыПрописиНаРусском)
   Если Валюта.ПараметрыПрописиНаРусском = "" Тогда

Добавлено через 2 часа, 36 минут и 39 секунд:
Нашел строку на что он ругается:
Код:
Функция СформироватьСуммуПрописью(Сумма, Валюта) Экспорт

Если Валюта.ПараметрыПрописиНаРусском = "" Тогда
Возврат ОбщегоНазначения.ФорматСумм(Сумма);
Иначе
Возврат ЧислоПрописью(Сумма, ,Валюта.ПараметрыПрописиНаРусском);
КонецЕсли;

КонецФункции // СформироватьСуммуПрописью()
« Последнее редактирование: 14-02-2012 05:17 от Patronus » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 14-02-2012 07:02 » 

1. Посмотри в Табло какое значение (тип) параметра Валюта
2. Посмотри в Стеке вызова откуда (из какой строки) твоего модуля вызывается эта функция и почему в нее попадает неверное значение Валюты
Записан
Patronus
Интересующийся

ru
Offline Offline

« Ответ #14 : 14-02-2012 07:38 » 

Нашел в чем была проблема:
было
Код:
Подвал.Параметры.СуммаПрописью                              = ОбщегоНазначения.СформироватьСуммуПрописью(ВыборкаСтрок.Итог("СуммаСНДС"), мВалютаРегламентированногоУчета);
поменял на
Код:
Подвал.Параметры.СуммаПрописью                              = ОбщегоНазначения.СформироватьСуммуПрописью(ВыборкаСтрок.Итог("СуммаСНДС"), СсылкаНаОбъект.ВалютаДокумента);
и все заработало
Огромное спасибо Kivals очень помогли!

P.S. Если кому надо прикрепил печатную форму М-15.

* M15.epf (11.39 Кб - загружено 818 раз.)
« Последнее редактирование: 14-02-2012 07:47 от Patronus » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines