Ошибка при вызове метода «ПолучитьОбщийМакет»
Автор skif3005, 27 сен 2015, 14:00
0 Пользователей и 1 гость просматривают эту тему.
Добрый день.
Не могу понять почему вылезает ошибка:
{Форма.Форма.Форма(4)}: Ошибка при вызове метода контекста (ПолучитьОбщийМакет)
Макет = ПолучитьОбщийМакет(Метаданные.ОбщиеМакеты);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
Код:
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьОбщийМакет(«Реквизит»);
ОбластьМакета = Макет.ПолучитьОбласть(«Шапка»);
ОбластьМакета.Параметры.НаимКонтр = Объект.Контрагент.ПолноеНаименование();
ТабДокумент.Вывести(ОбластьМакета);
ТабДокумент.ТолькоПросмотр = Истина;
ТабДокумент.ОтображатьСетку = Ложь;
ТабДокумент.Показать();
НУ вы бы хоть логически думали бы. Вы таким способом получаете ВСЕ макеты, а не конкретный
ПолучитьОбщийМакет("ТОРГ12");
Помог? Нажми — Спасибо
skype: Soprov1C
ошибка — в одном коде
а потом пример — совсем другой код…
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
1C. «Недопустимое значение параметра» при вызове макета в расширении
Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения «&Вместо») и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме «1С:Предприятие» возникала ошибка при получении макета:
{ЗаявлениеПоступающегоРасширение Документ.ЗаявлениеПоступающего.МодульМенеджера(176)}: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)


Код, вызывающий ошибку:

Варианты решения:
1. Добавить функцию, выполняемую на сервере, которая вызовет добавленный макет из документа:
&НаСервере
Функция ПолучитьМакетЗаявленияИзРасширения()
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
Возврат Макет;
КонецФункции

А затем из заменяемой процедуры вызвать эту функцию:

(как оказалось этот способ не нужен. Причину читайте ниже)
2. Другой вариант — перенести макеты в общие и следующей командой вызвать (получить) макет из «Общие макеты»:
Макет = ПолучитьОбщийМакет («Расш1_МакетЗаявлениеПоступающего»);

——
Видимо это всё-таки какой-то глюк платформы (протестировано на 8.3.10.2252 и 8.3.10.2299), но если просто добавить пустой макет в общие макеты в расширении, то команда, ранее вызывавшая ошибку (ПолучитьМакет из макета документа без допфункций на сервере), начинает нормально работать. При удалении пустого общего макета, команда вызова макета из документа снова вызывает ошибку (даже если вынесена в функцию на сервере, как показано в способе 1).
Т.е. если всё-таки хочется сделать макеты нормально в документе (ожидая, что когда-нибудь этот глюк исправят), то нужно сделать макет-заглушку в общих макетах. Например:

При этом, если в расширении добавлено несколько макетов к документу, то «заглушки» достаточно только одной.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.
07.07.11 — 21:29
8.1 УТ после обновления перестала печататься внешняя печатная форма ..
ошибка такая
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (Ссылка) , печатную форму переподключал после обновления , код посмотрел вроде все нормально , что могло поменяться ?
Функция Печать()Экспорт
Тип = «Счет»;
ПараметрыПечати =ПолучитьПараметрыПечатиСчетаЗаказа(Тип);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ»;
Макет = ПолучитьОбщийМакет(«СчетЗаказ1»);
// Выводим шапку накладной
Если Тип = «Счет» Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«ЗаголовокСчета»);
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(«Заголовок»);
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Поставщик»);
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(«Покупатель»);
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьНомера = Макет.ПолучитьОбласть(«ШапкаТаблицы|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ШапкаТаблицы|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«ШапкаТаблицы|Данные»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ШапкаТаблицы|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ШапкаТаблицы|Сумма»);
ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|Товар»);
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|ТоварБезКодов»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|ТоварБезСкидок»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|ТоварБезКодовИСкидок»);
КонецЕсли;
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Товар = «Товары (работы, услуги)»;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьСуммы);
ОбластьНомера = Макет.ПолучитьОбласть(«Строка|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Строка|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«Строка|Данные»);
ОбластьСкидок = Макет.ПолучитьОбласть(«Строка|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«Строка|Сумма»);
ОбластьТовар = Макет.ПолучитьОбласть(«Строка|Товар»);
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«Строка|ТоварБезКодов»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«Строка|ТоварБезСкидок»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«Строка|ТоварБезКодовИСкидок»);
КонецЕсли;
Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл
Если не ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
Сообщить(«В одной из строк не заполнено значение номенклатуры — строка при печати пропущена.», СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьСуммы);
КонецЦикла;
// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть(«Итого|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«Итого|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«Итого|Данные»);
ОбластьСкидок = Макет.ПолучитьОбласть(«Итого|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«Итого|Сумма»);
ОбластьТовар = Макет.ПолучитьОбласть(«Итого|Товар»);
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«Итого|ТоварБезКодов»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«Итого|ТоварБезСкидок»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«Итого|ТоварБезКодовИСкидок»);
КонецЕсли;
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ОбластьСкидок.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьСуммы);
// Вывести ИтогоНДС
Если ПараметрыПечати.УчитыватьНДС Тогда
ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоНДС|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ИтогоНДС|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоНДС|Данные»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ИтогоНДС|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ИтогоНДС|Сумма»);
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|Товар»);
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|ТоварБезКодов»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|ТоварБезСкидок»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|ТоварБезКодовИСкидок»);
КонецЕсли;
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьСуммы);
ОбластьНомера = Макет.ПолучитьОбласть(«ВсегоКОплате|НомерСтроки»);
ОбластьКодов = Макет.ПолучитьОбласть(«ВсегоКОплате|КолонкаКодов»);
ОбластьДанных = Макет.ПолучитьОбласть(«ВсегоКОплате|Данные»);
ОбластьСкидок = Макет.ПолучитьОбласть(«ВсегоКОплате|Скидка»);
ОбластьСуммы = Макет.ПолучитьОбласть(«ВсегоКОплате|Сумма»);
ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|Товар»);
Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|ТоварБезКодов»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|ТоварБезСкидок»);
ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|ТоварБезКодовИСкидок»);
КонецЕсли;
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьДанных);
Если ПараметрыПечати.ЕстьСкидки Тогда
ТабДокумент.Присоединить(ОбластьСкидок);
КонецЕсли;
ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьСуммы);
КонецЕсли;
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть(«СуммаПрописью»);
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
Если Тип = «Счет» Тогда
ОбластьМакета = Макет.ПолучитьОбласть(«ПодвалСчета»);
Иначе
ОбластьМакета = Макет.ПолучитьОбласть(«ПодвалЗаказа»);
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьАктаОбОказанииУслуг()
// Функция помещает в структуру все данные, отображаемые при печати документа.
// Вызывается из функции ПечатьСчетаЗаказа и из веб-приложения
//
// Параметры:
// Тип — строка, содержит тип печатаемого документа (счет или заказ)
//
// Возвращаемое значение:
// Структура
//
Функция ПолучитьПараметрыПечатиСчетаЗаказа(Тип)
ПараметрыПечати = Новый Структура;
Позиции = Новый Массив;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», ЭтотОбъект.Ссылка);
Запрос.УстановитьПараметр(«ПустойКонтрагент», Справочники.Контрагенты.ПустаяСсылка());
Запрос.Текст =»
|ВЫБРАТЬ
| Номер,
| Дата,
| ДоговорКонтрагента,
| Организация,
| Контрагент КАК Получатель,
| ДоговорКонтрагента КАК ДоговорКонтрагента,
| ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент
| ТОГДА Организация
| ИНАЧЕ Грузоотправитель КОНЕЦ КАК Грузоотправитель,
| ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент
| ТОГДА Контрагент
| ИНАЧЕ Грузополучатель КОНЕЦ КАК Грузополучатель,
| Организация КАК Руководители,
| Организация КАК Поставщик,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
|
|ГДЕ
| СчетНаОплатуПокупателю.Ссылка = &ТекущийДокумент»;
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания(«СчетНаОплату»);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);
Запрос.Текст = «ВЫБРАТЬ
| ВложенныйЗапрос.Номенклатура,
| ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,
| ВложенныйЗапрос.Номенклатура.Код КАК Код,
| ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапрос.Количество,
| ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.ПроцентСкидкиНаценки
| + ВложенныйЗапрос.ПроцентАвтоматическихСкидок КАК Скидка,
| ВложенныйЗапрос.Цена,
| ВложенныйЗапрос.Сумма,
| ВложенныйЗапрос.СуммаНДС,
| ВложенныйЗапрос.Характеристика,
| NULL КАК Серия,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапрос.Метка КАК Метка
|ИЗ
| (ВЫБРАТЬ
| СчетНаОплату.Номенклатура КАК Номенклатура,
| СчетНаОплату.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| СчетНаОплату.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| СчетНаОплату.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
| СчетНаОплату.Цена КАК Цена,
| СУММА(СчетНаОплату.Количество) КАК Количество,
| СУММА(СчетНаОплату.Сумма) КАК Сумма,
| СУММА(СчетНаОплату.СуммаНДС) КАК СуммаНДС,
| СчетНаОплату.ХарактеристикаНоменклатуры КАК Характеристика,
| МИНИМУМ(СчетНаОплату.НомерСтроки) КАК НомерСтроки,
| 0 КАК Метка
| ИЗ
| Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплату
|
| ГДЕ
| СчетНаОплату.Ссылка = &ТекущийДокумент
|
| СГРУППИРОВАТЬ ПО
| СчетНаОплату.Номенклатура,
| СчетНаОплату.ЕдиницаИзмерения,
| СчетНаОплату.ПроцентСкидкиНаценки,
| СчетНаОплату.ПроцентАвтоматическихСкидок,
| СчетНаОплату.Цена,
| СчетНаОплату.ХарактеристикаНоменклатуры
| ) КАК ВложенныйЗапрос
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СчетНаОплату.Номенклатура,
| Минимум(» + СтрокаВыборкиПоляСодержания + «) КАК Товар,
| СчетНаОплату.Номенклатура.Код КАК Код,
| СчетНаОплату.Номенклатура.Артикул КАК Артикул,
| Сумма(СчетНаОплату.Количество),
| СчетНаОплату.Номенклатура.ЕдиницаХраненияОстатков,
| СчетНаОплату.ПроцентСкидкиНаценки + СчетНаОплату.ПроцентАвтоматическихСкидок,
| СчетНаОплату.Цена,
| Сумма(СчетНаОплату.Сумма),
| Сумма(СчетНаОплату.СуммаНДС),
| NULL,
| NULL,
| Минимум(СчетНаОплату.НомерСтроки),
| 1
|ИЗ
| Документ.СчетНаОплатуПокупателю.Услуги КАК СчетНаОплату
|
|ГДЕ
| СчетНаОплату.Ссылка = &ТекущийДокумент
| СГРУППИРОВАТЬ ПО
| СчетНаОплату.Номенклатура,
| СчетНаОплату.ПроцентСкидкиНаценки,
| СчетНаОплату.ПроцентАвтоматическихСкидок,
| СчетНаОплату.Цена
|
|УПОРЯДОЧИТЬ ПО
| Метка,
| НомерСтроки»;
ЗапросТовары = Запрос.Выполнить().Выгрузить();
// Выводим шапку накладной
ПараметрыПечати.Вставить(«УчитыватьНДС», Шапка.УчитыватьНДС);
ПараметрыПечати.Вставить(«ДоговорКонтрагента», Шапка.ДоговорКонтрагента);
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата);
Если Тип = «Счет» Тогда
ПараметрыПечати.Вставить(«ИНН», СведенияОПоставщике.ИНН);
ПараметрыПечати.Вставить(«КПП», СведенияОПоставщике.КПП);
ПредставлениеПоставщикаДляПлатПоручения = «»;
Если ТипЗнч(СсылкаНаОбъект.СтруктурнаяЕдиница) = Тип(«СправочникСсылка.БанковскиеСчета») Тогда
Банк = ?(не ЗначениеЗаполнено(СсылкаНаОбъект.СтруктурнаяЕдиница.БанкДляРасчетов), СсылкаНаОбъект.СтруктурнаяЕдиница.Банк, СсылкаНаОбъект.СтруктурнаяЕдиница.БанкДляРасчетов);
БИК = Банк.Код;
КоррСчет = Банк.КоррСчет;
ГородБанка = Банк.Город;
НомерСчета = СсылкаНаОбъект.СтруктурнаяЕдиница.НомерСчета;
ПараметрыПечати.Вставить(«БИКБанкаПолучателя», БИК);
ПараметрыПечати.Вставить(«БанкПолучателя», Банк);
ПараметрыПечати.Вставить(«БанкПолучателяПредставление», СокрЛП(Банк) + » » + ГородБанка);
ПараметрыПечати.Вставить(«СчетБанкаПолучателя», КоррСчет);
ПараметрыПечати.Вставить(«СчетБанкаПолучателяПредставление», КоррСчет);
ПараметрыПечати.Вставить(«СчетПолучателяПредставление», НомерСчета);
ПараметрыПечати.Вставить(«СчетПолучателя», НомерСчета);
ПредставлениеПоставщикаДляПлатПоручения = СсылкаНаОбъект.СтруктурнаяЕдиница.ТекстКорреспондента;
КонецЕсли;
Если ПустаяСтрока(ПредставлениеПоставщикаДляПлатПоручения) Тогда
ПредставлениеПоставщикаДляПлатПоручения = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, «ПолноеНаименование,»);
КонецЕсли;
ПараметрыПечати.Вставить(«ПредставлениеПоставщикаДляПлатПоручения», ПредставлениеПоставщикаДляПлатПоручения);
КонецЕсли;
ПараметрыПечати.Вставить(«ТекстЗаголовка», ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, «Счет на оплату»));
ПараметрыПечати.Вставить(«ТекстПоставщик», ?(Тип = «Счет», «Поставщик:», «Исполнитель:»));
ПараметрыПечати.Вставить(«ПредставлениеПоставщика», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,»));
Если Шапка.Организация = Шапка.Грузоотправитель Тогда
ПараметрыПечати.Вставить(«ПредставлениеГрузоотправителя», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,»));
Иначе
ПараметрыПечати.Вставить(«ПредставлениеГрузоотправителя», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ФактическийАдрес,Телефоны,»));
КонецЕсли;
СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
ПараметрыПечати.Вставить(«ТекстПокупатель», ?(Тип = «Счет», «Покупатель:», «Заказчик:»));
ПараметрыПечати.Вставить(«ПредставлениеПолучателя», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,»));
ПараметрыПечати.Вставить(«ПредставлениеГрузополучателя», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ФактическийАдрес,Телефоны,»));
ПараметрыПечати.Вставить(«ЕстьСкидки», Ложь);
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
ПараметрыПечати.ЕстьСкидки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
ПараметрыПечати.Вставить(«ВыводитьКоды», Ложь);
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ПараметрыПечати.ВыводитьКоды = Истина;
Колонка = «Артикул»;
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ПараметрыПечати.ВыводитьКоды = Истина;
Колонка = «Код»;
КонецЕсли;
Если ПараметрыПечати.ВыводитьКоды Тогда
ПараметрыПечати.Вставить(«ИмяКолонкиКодов», Колонка);
КонецЕсли;
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
ПараметрыПозиции = Новый Структура;
ПараметрыПозиции.Вставить(«Номенклатура», ВыборкаСтрокТовары.Номенклатура);
ПараметрыПозиции.Вставить(«НомерСтроки», ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1);
Если ПараметрыПечати.ВыводитьКоды Тогда
Если Колонка = «Артикул» Тогда
ПараметрыПозиции.Вставить(«Артикул», ВыборкаСтрокТовары.Артикул);
Иначе
ПараметрыПозиции.Вставить(«Артикул», ВыборкаСтрокТовары.Код);
КонецЕсли;
КонецЕсли;
ПараметрыПозиции.Вставить(«Количество», ВыборкаСтрокТовары.Количество);
ПараметрыПозиции.Вставить(«ЕдиницаИзмерения», ВыборкаСтрокТовары.ЕдиницаИзмерения);
ПараметрыПозиции.Вставить(«Цена», ВыборкаСтрокТовары.Цена);
ПараметрыПозиции.Вставить(«Товар», СокрП(ВыборкаСтрокТовары.НаименованиеПолное)
+ ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары));
Скидка = Ценообразование.ПолучитьСуммуСкидки(ВыборкаСтрокТовары.Сумма, ВыборкаСтрокТовары.Скидка);
Если ПараметрыПечати.ЕстьСкидки Тогда
ПараметрыПозиции.Вставить(«Скидка», Скидка);
ПараметрыПозиции.Вставить(«СуммаБезСкидки», ВыборкаСтрокТовары.Сумма + Скидка);
КонецЕсли;
ПараметрыПозиции.Вставить(«Сумма», ВыборкаСтрокТовары.Сумма);
Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;
ВсегоСкидок = ВсегоСкидок + Скидка;
ВсегоБезСкидок = Сумма + ВсегоСкидок;
#Если ВнешнееСоединение Тогда
WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);
#КонецЕсли
Позиции.Добавить(ПараметрыПозиции);
КонецЦикла;
ПараметрыПечати.Вставить(«Позиции», Позиции);
// Вывести Итого
Если ПараметрыПечати.ЕстьСкидки Тогда
ПараметрыПечати.Вставить(«ВсегоСкидок», ВсегоСкидок);
ПараметрыПечати.Вставить(«ВсегоБезСкидок», ВсегоБезСкидок);
КонецЕсли;
ПараметрыПечати.Вставить(«Всего», ОбщегоНазначения.ФорматСумм(Сумма));
// Вывести ИтогоНДС
Если ПараметрыПечати.УчитыватьНДС Тогда
ПараметрыПечати.Вставить(«НДС», ?(Шапка.СуммаВключаетНДС, «В том числе НДС:», «Сумма НДС:»));
ПараметрыПечати.Вставить(«ВсегоНДС», ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог(«СуммаНДС»)));
ПараметрыПечати.Вставить(«ВсегоКОплате», ОбщегоНазначения.ФорматСумм(Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС)));
КонецЕсли;
// Вывести Сумму прописью
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ПараметрыПечати.Вставить(«ИтоговаяСтрока», «Всего наименований » + ЗапросТовары.Количество()
+ «, на сумму » + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента));
ПараметрыПечати.Вставить(«СуммаПрописью», ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента));
// Вывести подписи
Если Тип = «Счет» Тогда
Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации(Шапка.Руководители, Шапка.Дата,);
Руководитель = Руководители.Руководитель;
ДолжностьРуководителя = Руководители.РуководительДолжность;
Бухгалтер = Руководители.ГлавныйБухгалтер;
ПараметрыПечати.Вставить(«ФИОРуководителя», Руководитель);
ПараметрыПечати.Вставить(«ДолжностьРуководителя», ДолжностьРуководителя);
ПараметрыПечати.Вставить(«ФИОБухгалтера», Бухгалтер);
ПараметрыПечати.Вставить(«ФИОИсполнителя», СсылкаНаОбъект.Ответственный);
Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект.Ответственный.ФизЛицо) Тогда
ФИООтветственный = СокрЛП(СсылкаНаОбъект.Ответственный);
Иначе
ФамилияИмяОтчествоФизЛица = ФормированиеПечатныхФорм.ФамилияИмяОтчество(СсылкаНаОбъект.Ответственный.ФизЛицо, Шапка.Дата);
ФамилияИмяОтчествоОтветственного = ФамилияИмяОтчествоФизЛица.Фамилия + » » + ФамилияИмяОтчествоФизЛица.Имя + » » + ФамилияИмяОтчествоФизЛица.Отчество;
ФИООтветственный = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтветственного);
КонецЕсли;
ПараметрыПечати.Вставить(«ФИООтветственный», ФИООтветственный);
КонецЕсли;
#Если ВнешнееСоединение Тогда
WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПечати);
#КонецЕсли
Возврат ПараметрыПечати;
КонецФункции //ПолучитьПараметрыПечатиСчетаЗаказа()
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
1
2
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Лянка
Дата регистрации: 05.08.2010
Сообщений: 124
«Добрый день! Создаю внешнюю печатную форму Заявка на расходование средств.<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>Что я не так делаю?»
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
А Функция Печать () все-таки присутствует?
Лянка
Дата регистрации: 05.08.2010
Сообщений: 124
«Да!<br>Функция Печать() Экспорт<br> <br>ТабДокумент = ПечатьЗаявка();<br> <br>Возврат ТабДокумент;<br> <br>КонецФункции»
Thorvardr
Дата регистрации: 25.02.2005
Сообщений: 3082
«А я так делал, в этом случае оно вписывается в задуманную концепцию внешних печатных форм типовой конфигурации (в моем случае было Управление торговлей, редакция 11.0 (11.0.5.4)):<br> <br><pre>Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; ПараметрыРегистрации.Вставить(«Вид», «ПечатнаяФорма»); МассивНазначений.Добавить(«Документ.ЗаказКлиента»); ПараметрыРегистрации.Вставить(«Назначение», МассивНазначений); ПараметрыРегистрации.Вставить(«Наименование», «Заказ клиента с выводом итога по таблице товаров с учетом НДС при ситуации ‘Цена без НДС'»); ПараметрыРегистрации.Вставить(«Версия», «1.0»); ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина); ПараметрыРегистрации.Вставить(«Информация», «Версия от 11.02.2011 г.»); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, «Заказ клиента с итогом по таблице при ‘Цена без НДС'», «СчетЗаказ», «ВызовСерверногоМетода», Истина, «ПечатьMXL»); ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд); Возврат ПараметрыРегистрации;КонецФункции<br>Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить(«Представление», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«Идентификатор», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«Использование», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«ПоказыватьОповещение», Новый ОписаниеТипов(«Булево»)); Команды.Колонки.Добавить(«Модификатор», Новый ОписаниеТипов(«Строка»)); Возврат Команды;КонецФункции<br>Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = «»»») НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор;КонецПроцедуры// Сформировать печатные формы объектов//// ВХОДЯЩИЕ:// ИменаМакетов — Строка — Имена макетов, перечисленные через запятую// МассивОбъектов — Массив — Массив ссылок на объекты которые нужно распечатать// ПараметрыПечати — Структура — Структура дополнительных параметров печати//// ИСХОДЯЩИЕ:// КоллекцияПечатныхФорм — Таблица значений — Сформированные табличные документы// ПараметрыВывода — Структура — Параметры сформированных табличных документов//Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, «СчетЗаказ») Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, «СчетЗаказ», «Заказ клиента», СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати)); КонецЕсли; КонецПроцедуры // Печать() Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати) УстановитьПривилегированныйРежим(Истина); ТабличныйДокумент = Новый ТабличныйДокумент;…. ТабличныйДокумент.АвтоМасштаб = Истина; Если ПривилегированныйРежим() Тогда УстановитьПривилегированныйРежим(Ложь); КонецЕсли; Возврат ТабличныйДокумент; КонецФункции // ПечатнаяФорма() </pre>»
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
А что подразумевалось под<br>> но когда тестирую<br>Вы подключили в сервис-дополнительные внешние отчеты…-Печатные формы, а потом из документа нажали печать и получили ошибку?
Лянка
Дата регистрации: 05.08.2010
Сообщений: 124
но у меня не типовая
У меня УПП проф 1.2. (.1.2.36.1).<br>Думайте подойдет?
Лянка
Дата регистрации: 05.08.2010
Сообщений: 124
> А что подразумевалось под<br>> > но когда тестирую<br>> Вы подключили в сервис-дополнительные внешние отчеты…-Печатные формы, а потом из документа нажали печать и получили ошибку?<br>Да!
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
Приведите полный текст ошибки — там еще должна быть ссылка на строку, где произошла ошибка.<br>У вас Клиент-Серверный вариант?<br>Включите в конфигураторе (в режиме отладки) остановку по ошибке и посмотрите что за строка вызывает ошибку, и что за параметр передается.
BelikovS
Дата регистрации: 05.03.2007
Сообщений: 1701
Ничего себе не типовая
<br>С изменениями наверно, но внешние формы работают на ура.
Лянка
Дата регистрации: 05.08.2010
Сообщений: 124
> Приведите полный текст ошибки — там еще должна быть ссылка на строку, где произошла ошибка.<br>> У вас Клиент-Серверный вариант?<br>> Включите в конфигураторе (в режиме отладки) остановку по ошибке и посмотрите что за строка вызывает ошибку, и что за параметр передается.<br> <br> Вот именно нет не какой строки. Если была бы можно было понять что я не так делаю. А он только и пишет<br>»Не удалось сформировать внешнюю печатную форму<br>Ошибка при вызове метода контекста (ПолучитьФорму): Недопустимое значение параметра (параметр номер ‘1’)»
Делаю внешнюю печатную форму. Добавила область «Приказ». Но вылезает ошибка: «Ошибка при вызове метода контекста (ПолучитьОбласть): Область не найдена: » Вывожу ее кодом: ОбластьМакета = Макет.ПолучитьОбласть(«Приказ»); ТабДокумент.Вывести(ОбластьМакета);
Наверное, нет такой области…
ОбластьМакета = ПолучитьМакет(«ИмяТвоегоМакета»).ПолучитьОбласть(«Приказ»);
Кстати, область, надеюсь, которая красными линиями выделяется (Ctrl+Shift+N), а не именованая область ячеек в табличном документе?
Есть =) Красными-красными =)
Без фото в профиле метод ПолучитьОбласть работать не будет
Не верю (с) Скриншоты в студию
Ерундистика какая-то. Может, макет не тот правишь.. А может прав… 🙂
А все остальные область нормально получаются?
а нафига в отдельную область выносить константу? моар кода?
а по делу — может не тот макет? 🙂 например, пытаешься получить общий макет ТОРГ-12, в котором нет этой области?
Все исправила!) Дошло в чем дело =) Надо было заменить сточку: Макет = ПолучитьОбщийМакет(«ТОРГ12»); На: И по этому, как бы я не меняла макет, который был добавлен в обработку, на печать выводился общий, в котором нет моих изменений) Блин)))
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям