1С:Предприятие(8.1.15.14)Бухгалтерия(2.0.17)Ошибка при вызове метода контекста (Выполнить)
Показывать по
10
20
40
сообщений
- 1
- 2
15.02.2011
14:30
#11
"Нет. Дело в том что при отладки ВПФ. Ругается на параметр Оргонозация, который находится в общем модуле конфы.
Вот.
// Процедура предназначена для преобразования номера документа.
//
// Параметры:
// Документ - (ДокументСсылка), документ, чей номер надо получить для печати.
//
// Возвращаемое значение.
// Строка - номер документа для печати
//
Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено) Экспорт
Если Документ = Неопределено Тогда
Возврат 0;
КонецЕсли;
Номер = СокрЛП(Документ.Номер);
Префикс = """";
Если МассивПрефиксов = Неопределено Тогда
Организация = Неопределено;
ПодразделениеОрганизации = Неопределено;
Если ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса")
ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда
ВОТ ЗДЕСЬ> Организация = Документ.Организация;
Иначе
МетаданныеДокумента = Документ.Метаданные();
Если ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Тогда
Организация = Документ.Организация;
КонецЕсли;
КонецЕсли;
МассивПрефиксовДляОбхода = СформироватьМассивПрефиксовДляРИБИОрганизации(Организация);
Иначе
МассивПрефиксовДляОбхода = МассивПрефиксов;
КонецЕсли;
Для Каждого ТекущийПрефикс ИЗ МассивПрефиксовДляОбхода Цикл
// удаление префикса из номера документа
Если Найти(Номер, ТекущийПрефикс)=1 Тогда
Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1);
КонецЕсли;
// так же, может остаться "минус" впереди
Если Лев(Номер, 1) = "-" Тогда
Номер = Сред(Номер, 2);
КонецЕсли;
// удаление ведущих нулей
Пока Лев(Номер, 1)="0" Цикл
Номер = Сред(Номер, 2);
КонецЦикла;
КонецЦикла;
Возврат Номер;
КонецФункции // ПолучитьНомерНаПечать()"
Вот.
// Процедура предназначена для преобразования номера документа.
//
// Параметры:
// Документ - (ДокументСсылка), документ, чей номер надо получить для печати.
//
// Возвращаемое значение.
// Строка - номер документа для печати
//
Функция ПолучитьНомерНаПечать(Документ, МассивПрефиксов = Неопределено) Экспорт
Если Документ = Неопределено Тогда
Возврат 0;
КонецЕсли;
Номер = СокрЛП(Документ.Номер);
Префикс = """";
Если МассивПрефиксов = Неопределено Тогда
Организация = Неопределено;
ПодразделениеОрганизации = Неопределено;
Если ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса")
ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда
ВОТ ЗДЕСЬ> Организация = Документ.Организация;
Иначе
МетаданныеДокумента = Документ.Метаданные();
Если ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Тогда
Организация = Документ.Организация;
КонецЕсли;
КонецЕсли;
МассивПрефиксовДляОбхода = СформироватьМассивПрефиксовДляРИБИОрганизации(Организация);
Иначе
МассивПрефиксовДляОбхода = МассивПрефиксов;
КонецЕсли;
Для Каждого ТекущийПрефикс ИЗ МассивПрефиксовДляОбхода Цикл
// удаление префикса из номера документа
Если Найти(Номер, ТекущийПрефикс)=1 Тогда
Номер = Сред(Номер, СтрДлина(ТекущийПрефикс)+1);
КонецЕсли;
// так же, может остаться "минус" впереди
Если Лев(Номер, 1) = "-" Тогда
Номер = Сред(Номер, 2);
КонецЕсли;
// удаление ведущих нулей
Пока Лев(Номер, 1)="0" Цикл
Номер = Сред(Номер, 2);
КонецЦикла;
КонецЦикла;
Возврат Номер;
КонецФункции // ПолучитьНомерНаПечать()"
15.02.2011
14:31
#12
верно подмечено,и должен быть реквизит с названием СсылкаНаОбъект и типом нужного объекта
15.02.2011
14:42
#13
"> Если ТипЗнч(Документ) = Тип("ВыборкаИзРезультатаЗапроса")
> ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда
>
> ВОТ ЗДЕСЬ> Организация = Документ.Организация;
Т.е. вы передали либо результат запрос либо структуру. Если это структура создайте там ключ Организация. Если результат запроса, то в Выбрать надо еще и Организацию добавить."
> ИЛИ ТипЗнч(Документ) = Тип("Структура") Тогда
>
> ВОТ ЗДЕСЬ> Организация = Документ.Организация;
Т.е. вы передали либо результат запрос либо структуру. Если это структура создайте там ключ Организация. Если результат запроса, то в Выбрать надо еще и Организацию добавить."
15.02.2011
15:31
#14
"вот модуль ВПФ
Функция Печать () Экспорт
//ЕдиницаИзмеренияВеса = Константы.ЕдиницаИзмеренияВеса.Получить();
//ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
//Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
//ТоварКод = "Артикул";
//Иначе
ТоварКод = "Код";
//КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаСреза", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("СтруктурнаяЕдиница", СсылкаНаОбъект.Склад);
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());
Запрос.Текст ="ВЫБРАТЬ
| РеализацияТоваровУслуг.Номер,
| РеализацияТоваровУслуг.Дата КАК ДатаДокумента,
| РеализацияТоваровУслуг.Организация КАК Контрагент,
| РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо,
| РеализацияТоваровУслуг.Организация КАК Поставщик,
| РеализацияТоваровУслуг.Организация КАК Организация3,
| РеализацияТоваровУслуг.Организация КАК Руководители,
| РеализацияТоваровУслуг.Контрагент КАК Грузополучатель,
| РеализацияТоваровУслуг.Организация КАК Грузоотправитель,
| РеализацияТоваровУслуг.Контрагент КАК Покупатель,
| РеализацияТоваровУслуг.Контрагент КАК Плательщик,
| РеализацияТоваровУслуг.Ответственный КАК ОтветственноеЛицо,
| РеализацияТоваровУслуг.АдресДоставки,
| РеализацияТоваровУслуг.СуммаДокумента
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК ТоварНаименование,
| ВложенныйЗапрос.Номенклатура КАК ТоварКод,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК БазоваяЕдиницаНаименование,
| ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена КАК Цена,
| ВЫБОР
| КОГДА Выразить(ВложенныйЗапрос.Цена*ВложенныйЗапрос.Количество Как Число (15,2)) = ВложенныйЗапрос.Сумма
| ТОГДА ЛОЖЬ
| ИНАЧЕ Истина
| КОНЕЦ КАК ЕстьСкидкиПоСтроке,
| ВложенныйЗапрос.Количество КАК Количество,
| ВложенныйЗапрос.Сумма КАК Сумма,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки
|ИЗ
|
|
| (ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена КАК Цена,
| СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
| СУММА(РеализацияТоваровУслуг.Сумма ) КАК Сумма,
| МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена)КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО НомерСтроки ВОЗР";
ЗапросТовары = Запрос.Выполнить().Выгрузить();
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_АктНаПередачуПрав";
Макет = ПолучитьМакет("АктНаПередачуПрав");
// Выводим общие реквизиты шапки
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаДокумента);
СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(СсылкаНаОбъект.Контрагент, Шапка.ДатаДокумента);
СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.ДатаДокумента);
СведенияОГрузоотправитель = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента);
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
ОбластьМакета.Параметры.ДатаДокумента = Шапка.ДатаДокумента;
Если Шапка.ЮрФизЛицо = Шапка.Грузоотправитель Тогда
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
Иначе
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
КонецЕсли;
Если СокрЛП(Шапка.АдресДоставки) <> """" Тогда
ПредставлениеГрузополучателяДоАдреса = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
ПредставлениеГрузополучателяПослеАдреса = """";
//ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ?(СокрЛП(ПредставлениеГрузополучателяДоАдреса) = """", """", ПредставлениеГрузополучателяДоАдреса+", ") + Шапка.АдресДоставки+?(СокрЛП(ПредставлениеГрузополучателяПослеАдреса)="""", """", ", "+ПредставлениеГрузополучателяПослеАдреса);
Иначе
//ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,БанковскиеРеквизиты");
КонецЕсли;
//ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
ОбластьМакета.Параметры.ПредставлениеПлательщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты,КПП,");
//ОбластьМакета.Параметры.Основание = СтрокаОснованияДоговор + Шапка.Основание;
ОбластьМакета.Параметры.франПолноеНаименованиеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование");
ОбластьМакета.Параметры.франПолноеНаименованиеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование");
ТабДокумент.Вывести(ОбластьМакета);
НомерСтраницы = 1;
// Выводим заголовок таблицы
ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаб");
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
КоличествоСтрок = ЗапросТовары.Количество();
// инициализация итогов по странице
ИтогоМассаБруттоНаСтранице = 0;
ИтогоМестНаСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоСуммаНаСтранице = 0;
ИтогоНДСНаСтранице = 0;
//ИтогоСуммаСНДСНаСтранице = 0;
// инициализация итогов по документу
ИтогоМассаБрутто = 0;
ИтогоМест = 0;
ИтогоКоличество = 0;
//ИтогоСуммаСНДС = 0;
ИтогоСумма = 0;
ИтогоНДС = 0;
Ном = 0;
// Создаем массив для проверки вывода
МассивВыводимыхОбластей = Новый Массив;
// Выводим многострочную часть докмента
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ОбластьИтоговПоСтранице = Макет.ПолучитьОбласть("ИтогоПоСтранице");
ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");
ОбластьВсего = Макет.ПолучитьОбласть("Всего");
Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
Если Не ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
Ном = Ном + 1;
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрок);
ОбластьМакета.Параметры.Номер = ЗапросТовары.Индекс(ВыборкаСтрок) + 1;
ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование)
+ УниверсальныеМеханизмы.ПредставлениеХарактеристик(ВыборкаСтрок);
Мест = 0;
Количество = ВыборкаСтрок.Количество;
СуммаСНДС = Окр((ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)), 2);
СуммаНДС = Окр(ВыборкаСтрок.СуммаНДС, 2);
СуммаБезНДС = СуммаСНДС - СуммаНДС;
//ОбластьМакета.Параметры.МассаБрутто = МассаБрутто;
//ОбластьМакета.Параметры.СуммаСНДС = СуммаСНДС;
ОбластьМакета.Параметры.СуммаНДС = СуммаНДС;
//ОбластьМакета.Параметры.СтавкаНДС = ВыборкаСтрок.СтавкаНДС;
ОбластьМакета.Параметры.СуммаБезНДС = СуммаБезНДС;
Если Шапка.СуммаВключаетНДС
Или ВыборкаСтрок.ЕстьСкидкиПоСтроке Тогда
ОбластьМакета.Параметры.Цена = ?(Количество = 0, 0, СуммаБезНДС / Количество);
Иначе
ОбластьМакета.Параметры.Цена = ВыборкаСтрок.Цена;
КонецЕсли;
МассивВыводимыхОбластей.Очистить();
МассивВыводимыхОбластей.Добавить(ОбластьМакета);
МассивВыводимыхОбластей.Добавить(ОбластьИтоговПоСтранице);
Если Ном = КоличествоСтрок Тогда
МассивВыводимыхОбластей.Добавить(ОбластьВсего);
МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
КонецЕсли;
Если НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
ТабДокумент.Вывести(ОбластьИтоговПоСтранице);
// очистим итоги по странице
ИтогоМассаБруттоНаСтранице = 0;
ИтогоМестНаСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоСуммаНаСтранице = 0;
ИтогоНДСНаСтранице = 0;
//ИтогоСуммаСНДСНаСтранице = 0;
НомерСтраницы = НомерСтраницы + 1;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
// увеличим итоги по странице
//ИтогоМассаБруттоНаСтранице = ИтогоМассаБруттоНаСтранице + МассаБрутто;
ИтогоМестНаСтранице = ИтогоМестНаСтранице + Мест;
ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Количество;
ИтогоСуммаНаСтранице = ИтогоСуммаНаСтранице + СуммаБезНДС;
ИтогоНДСНаСтранице = ИтогоНДСНаСтранице + СуммаНДС;
//ИтогоСуммаСНДСНаСтранице = ИтогоСуммаСНДСНаСтранице + СуммаСНДС;
// увеличим итоги по дукументу
//ИтогоМассаБрутто = ИтогоМассаБрутто + МассаБрутто;
ИтогоМест = ИтогоМест + Мест;
ИтогоКоличество = ИтогоКоличество + Количество;
ИтогоСумма = ИтогоСумма + СуммаБезНДС;
ИтогоНДС = ИтогоНДС + СуммаНДС;
//ИтогоСуммаСНДС = ИтогоСуммаСНДС + СуммаСНДС;
КонецЦикла;
// Выводим подвал документа
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ПолнаяДатаДокумента = Формат(Шапка.ДатаДокумента, "ДФ=""""дд ММММ гггг """"года""""""""");
ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента);
ПервыйРазделитель = Найти(ПолнаяДатаДокумента," ");
ВторойРазделитель = Найти(Прав(ПолнаяДатаДокумента,ДлинаСтроки-ПервыйРазделитель)," ")+ПервыйРазделитель;
ОбластьМакета.Параметры.ДатаДокументаДень = """"+Лев(ПолнаяДатаДокумента,ПервыйРазделитель-1)+"""";
ОбластьМакета.Параметры.ДатаДокументаМесяц = Сред(ПолнаяДатаДокумента,ПервыйРазделитель+1,ВторойРазделитель-ПервыйРазделитель-1);
ОбластьМакета.Параметры.ДатаДокументаГод = Прав(ПолнаяДатаДокумента,ДлинаСтроки-ВторойРазделитель);
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФорм.ФамилияИмяОтчество(Шапка.ОтветственноеЛицо, Шапка.ДатаДокумента);
ФамилияИмяОтчествоОтпускПроизвел = ФамилияИмяОтчествоФизЛица.Фамилия + " " + ФамилияИмяОтчествоФизЛица.Имя + " " + ФамилияИмяОтчествоФизЛица.Отчество;
ФИООтпускПроизвел = ФормированиеПечатныхФорм.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускПроизвел);
//ОбластьМакета.Параметры.ФИОКладовщика = ФИООтпускПроизвел;
// Доверенность
ОбластьМакета.Параметры.ДоверенностьНомер = Шапка.ДоверенностьНомер;
ОбластьМакета.Параметры.ДоверенностьДата = Формат(Шапка.ДоверенностьДата, "ДФ='дд ММММ гггг'");
ОбластьМакета.Параметры.ДоверенностьВыдана = Шапка.ДоверенностьВыдана;
ОбластьМакета.Параметры.ДоверенностьЧерезКого = Шапка.ДоверенностьЧерезКого;
Если ИтогоМест > 0 Тогда
ОбластьМакета.Параметры.ВсегоМестПрописью = ЧислоПрописью(ИтогоМест, ,",,,,,,,,0");
КонецЕсли;
ОбластьМакета.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(КоличествоСтрок, ,",,,,,,,,0");
//ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ИтогоСуммаСНДС);
ТабДокумент.Вывести(ОбластьМакета);
// Зададим параметры макета
ТабДокумент.ПолеСверху = 0;
ТабДокумент.ПолеСлева = 0;
ТабДокумент.ПолеСнизу = 0;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Возврат ТабДокумент;
КонецФункции"
Функция Печать () Экспорт
//ЕдиницаИзмеренияВеса = Константы.ЕдиницаИзмеренияВеса.Получить();
//ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
//Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
//ТоварКод = "Артикул";
//Иначе
ТоварКод = "Код";
//КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаСреза", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("СтруктурнаяЕдиница", СсылкаНаОбъект.Склад);
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка());
Запрос.Текст ="ВЫБРАТЬ
| РеализацияТоваровУслуг.Номер,
| РеализацияТоваровУслуг.Дата КАК ДатаДокумента,
| РеализацияТоваровУслуг.Организация КАК Контрагент,
| РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо,
| РеализацияТоваровУслуг.Организация КАК Поставщик,
| РеализацияТоваровУслуг.Организация КАК Организация3,
| РеализацияТоваровУслуг.Организация КАК Руководители,
| РеализацияТоваровУслуг.Контрагент КАК Грузополучатель,
| РеализацияТоваровУслуг.Организация КАК Грузоотправитель,
| РеализацияТоваровУслуг.Контрагент КАК Покупатель,
| РеализацияТоваровУслуг.Контрагент КАК Плательщик,
| РеализацияТоваровУслуг.Ответственный КАК ОтветственноеЛицо,
| РеализацияТоваровУслуг.АдресДоставки,
| РеализацияТоваровУслуг.СуммаДокумента
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК ТоварНаименование,
| ВложенныйЗапрос.Номенклатура КАК ТоварКод,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК БазоваяЕдиницаНаименование,
| ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Цена КАК Цена,
| ВЫБОР
| КОГДА Выразить(ВложенныйЗапрос.Цена*ВложенныйЗапрос.Количество Как Число (15,2)) = ВложенныйЗапрос.Сумма
| ТОГДА ЛОЖЬ
| ИНАЧЕ Истина
| КОНЕЦ КАК ЕстьСкидкиПоСтроке,
| ВложенныйЗапрос.Количество КАК Количество,
| ВложенныйЗапрос.Сумма КАК Сумма,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки
|ИЗ
|
|
| (ВЫБРАТЬ
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена КАК Цена,
| СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
| СУММА(РеализацияТоваровУслуг.Сумма ) КАК Сумма,
| МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки
| ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслуг.Номенклатура,
| РеализацияТоваровУслуг.Коэффициент,
| РеализацияТоваровУслуг.ЕдиницаИзмерения,
| РеализацияТоваровУслуг.Цена)КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО НомерСтроки ВОЗР";
ЗапросТовары = Запрос.Выполнить().Выгрузить();
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_АктНаПередачуПрав";
Макет = ПолучитьМакет("АктНаПередачуПрав");
// Выводим общие реквизиты шапки
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаДокумента);
СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(СсылкаНаОбъект.Контрагент, Шапка.ДатаДокумента);
СведенияОГрузополучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.ДатаДокумента);
СведенияОГрузоотправитель = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента);
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка);
ОбластьМакета.Параметры.ДатаДокумента = Шапка.ДатаДокумента;
Если Шапка.ЮрФизЛицо = Шапка.Грузоотправитель Тогда
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
Иначе
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
КонецЕсли;
Если СокрЛП(Шапка.АдресДоставки) <> """" Тогда
ПредставлениеГрузополучателяДоАдреса = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
ПредставлениеГрузополучателяПослеАдреса = """";
//ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ?(СокрЛП(ПредставлениеГрузополучателяДоАдреса) = """", """", ПредставлениеГрузополучателяДоАдреса+", ") + Шапка.АдресДоставки+?(СокрЛП(ПредставлениеГрузополучателяПослеАдреса)="""", """", ", "+ПредставлениеГрузополучателяПослеАдреса);
Иначе
//ОбластьМакета.Параметры.ПредставлениеГрузополучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,БанковскиеРеквизиты");
КонецЕсли;
//ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты");
ОбластьМакета.Параметры.ПредставлениеПлательщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,ИНН,ЮридическийАдрес,Телефоны,БанковскиеРеквизиты,КПП,");
//ОбластьМакета.Параметры.Основание = СтрокаОснованияДоговор + Шапка.Основание;
ОбластьМакета.Параметры.франПолноеНаименованиеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование");
ОбластьМакета.Параметры.франПолноеНаименованиеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование");
ТабДокумент.Вывести(ОбластьМакета);
НомерСтраницы = 1;
// Выводим заголовок таблицы
ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаб");
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
КоличествоСтрок = ЗапросТовары.Количество();
// инициализация итогов по странице
ИтогоМассаБруттоНаСтранице = 0;
ИтогоМестНаСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоСуммаНаСтранице = 0;
ИтогоНДСНаСтранице = 0;
//ИтогоСуммаСНДСНаСтранице = 0;
// инициализация итогов по документу
ИтогоМассаБрутто = 0;
ИтогоМест = 0;
ИтогоКоличество = 0;
//ИтогоСуммаСНДС = 0;
ИтогоСумма = 0;
ИтогоНДС = 0;
Ном = 0;
// Создаем массив для проверки вывода
МассивВыводимыхОбластей = Новый Массив;
// Выводим многострочную часть докмента
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ОбластьИтоговПоСтранице = Макет.ПолучитьОбласть("ИтогоПоСтранице");
ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");
ОбластьВсего = Макет.ПолучитьОбласть("Всего");
Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
Если Не ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
Ном = Ном + 1;
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрок);
ОбластьМакета.Параметры.Номер = ЗапросТовары.Индекс(ВыборкаСтрок) + 1;
ОбластьМакета.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование)
+ УниверсальныеМеханизмы.ПредставлениеХарактеристик(ВыборкаСтрок);
Мест = 0;
Количество = ВыборкаСтрок.Количество;
СуммаСНДС = Окр((ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)), 2);
СуммаНДС = Окр(ВыборкаСтрок.СуммаНДС, 2);
СуммаБезНДС = СуммаСНДС - СуммаНДС;
//ОбластьМакета.Параметры.МассаБрутто = МассаБрутто;
//ОбластьМакета.Параметры.СуммаСНДС = СуммаСНДС;
ОбластьМакета.Параметры.СуммаНДС = СуммаНДС;
//ОбластьМакета.Параметры.СтавкаНДС = ВыборкаСтрок.СтавкаНДС;
ОбластьМакета.Параметры.СуммаБезНДС = СуммаБезНДС;
Если Шапка.СуммаВключаетНДС
Или ВыборкаСтрок.ЕстьСкидкиПоСтроке Тогда
ОбластьМакета.Параметры.Цена = ?(Количество = 0, 0, СуммаБезНДС / Количество);
Иначе
ОбластьМакета.Параметры.Цена = ВыборкаСтрок.Цена;
КонецЕсли;
МассивВыводимыхОбластей.Очистить();
МассивВыводимыхОбластей.Добавить(ОбластьМакета);
МассивВыводимыхОбластей.Добавить(ОбластьИтоговПоСтранице);
Если Ном = КоличествоСтрок Тогда
МассивВыводимыхОбластей.Добавить(ОбластьВсего);
МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
КонецЕсли;
Если НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
ТабДокумент.Вывести(ОбластьИтоговПоСтранице);
// очистим итоги по странице
ИтогоМассаБруттоНаСтранице = 0;
ИтогоМестНаСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоСуммаНаСтранице = 0;
ИтогоНДСНаСтранице = 0;
//ИтогоСуммаСНДСНаСтранице = 0;
НомерСтраницы = НомерСтраницы + 1;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
ТабДокумент.Вывести(ЗаголовокТаблицы);
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
// увеличим итоги по странице
//ИтогоМассаБруттоНаСтранице = ИтогоМассаБруттоНаСтранице + МассаБрутто;
ИтогоМестНаСтранице = ИтогоМестНаСтранице + Мест;
ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Количество;
ИтогоСуммаНаСтранице = ИтогоСуммаНаСтранице + СуммаБезНДС;
ИтогоНДСНаСтранице = ИтогоНДСНаСтранице + СуммаНДС;
//ИтогоСуммаСНДСНаСтранице = ИтогоСуммаСНДСНаСтранице + СуммаСНДС;
// увеличим итоги по дукументу
//ИтогоМассаБрутто = ИтогоМассаБрутто + МассаБрутто;
ИтогоМест = ИтогоМест + Мест;
ИтогоКоличество = ИтогоКоличество + Количество;
ИтогоСумма = ИтогоСумма + СуммаБезНДС;
ИтогоНДС = ИтогоНДС + СуммаНДС;
//ИтогоСуммаСНДС = ИтогоСуммаСНДС + СуммаСНДС;
КонецЦикла;
// Выводим подвал документа
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ПолнаяДатаДокумента = Формат(Шапка.ДатаДокумента, "ДФ=""""дд ММММ гггг """"года""""""""");
ДлинаСтроки = СтрДлина(ПолнаяДатаДокумента);
ПервыйРазделитель = Найти(ПолнаяДатаДокумента," ");
ВторойРазделитель = Найти(Прав(ПолнаяДатаДокумента,ДлинаСтроки-ПервыйРазделитель)," ")+ПервыйРазделитель;
ОбластьМакета.Параметры.ДатаДокументаДень = """"+Лев(ПолнаяДатаДокумента,ПервыйРазделитель-1)+"""";
ОбластьМакета.Параметры.ДатаДокументаМесяц = Сред(ПолнаяДатаДокумента,ПервыйРазделитель+1,ВторойРазделитель-ПервыйРазделитель-1);
ОбластьМакета.Параметры.ДатаДокументаГод = Прав(ПолнаяДатаДокумента,ДлинаСтроки-ВторойРазделитель);
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФорм.ФамилияИмяОтчество(Шапка.ОтветственноеЛицо, Шапка.ДатаДокумента);
ФамилияИмяОтчествоОтпускПроизвел = ФамилияИмяОтчествоФизЛица.Фамилия + " " + ФамилияИмяОтчествоФизЛица.Имя + " " + ФамилияИмяОтчествоФизЛица.Отчество;
ФИООтпускПроизвел = ФормированиеПечатныхФорм.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускПроизвел);
//ОбластьМакета.Параметры.ФИОКладовщика = ФИООтпускПроизвел;
// Доверенность
ОбластьМакета.Параметры.ДоверенностьНомер = Шапка.ДоверенностьНомер;
ОбластьМакета.Параметры.ДоверенностьДата = Формат(Шапка.ДоверенностьДата, "ДФ='дд ММММ гггг'");
ОбластьМакета.Параметры.ДоверенностьВыдана = Шапка.ДоверенностьВыдана;
ОбластьМакета.Параметры.ДоверенностьЧерезКого = Шапка.ДоверенностьЧерезКого;
Если ИтогоМест > 0 Тогда
ОбластьМакета.Параметры.ВсегоМестПрописью = ЧислоПрописью(ИтогоМест, ,",,,,,,,,0");
КонецЕсли;
ОбластьМакета.Параметры.КоличествоПорядковыхНомеровЗаписейПрописью = ЧислоПрописью(КоличествоСтрок, ,",,,,,,,,0");
//ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ИтогоСуммаСНДС);
ТабДокумент.Вывести(ОбластьМакета);
// Зададим параметры макета
ТабДокумент.ПолеСверху = 0;
ТабДокумент.ПолеСлева = 0;
ТабДокумент.ПолеСнизу = 0;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Возврат ТабДокумент;
КонецФункции"
15.02.2011
15:38
#16
> Запрос.Текст ="ВЫБРАТЬ
> | РеализацияТоваровУслуг.Номер,
> | РеализацияТоваровУслуг.Дата КАК ДатаДокумента,
> | РеализацияТоваровУслуг.Организация КАК Контрагент,
> | РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо,
> | РеализацияТоваровУслуг.Организация КАК Поставщик,
> | РеализацияТоваровУслуг.Организация КАК Организация3,
> | РеализацияТоваровУслуг.Организация КАК Руководители,
Прикольно выглядит. А добавить туда еще строку
| РеализацияТоваровУслуг.Организация КАК Организация,
не пробовали?
> | РеализацияТоваровУслуг.Номер,
> | РеализацияТоваровУслуг.Дата КАК ДатаДокумента,
> | РеализацияТоваровУслуг.Организация КАК Контрагент,
> | РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо,
> | РеализацияТоваровУслуг.Организация КАК Поставщик,
> | РеализацияТоваровУслуг.Организация КАК Организация3,
> | РеализацияТоваровУслуг.Организация КАК Руководители,
Прикольно выглядит. А добавить туда еще строку
| РеализацияТоваровУслуг.Организация КАК Организация,
не пробовали?
- 1
- 2
Читают тему
(гостей: 1)