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