Ошибка при вызове метода контекста получитьобщиймакет

8.1  УТ после обновления перестала печататься внешняя печатная форма ..

ошибка такая

Не удалось сформировать внешнюю печатную форму!

Поле объекта не обнаружено (Ссылка) , печатную форму переподключал после обновления , код посмотрел вроде все нормально , что могло поменяться ?

Функция Печать()Экспорт

   
   Тип = «Счет»;

   
   ПараметрыПечати =ПолучитьПараметрыПечатиСчетаЗаказа(Тип);

   

   ТабДокумент = Новый ТабличныйДокумент;

   ТабДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ»;

   Макет = ПолучитьОбщийМакет(«СчетЗаказ1»);

   // Выводим шапку накладной

   Если Тип = «Счет» Тогда

       ОбластьМакета       = Макет.ПолучитьОбласть(«ЗаголовокСчета»);

       ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Вывести(ОбластьМакета);

   КонецЕсли;

   ОбластьМакета = Макет.ПолучитьОбласть(«Заголовок»);

   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);

   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть(«Поставщик»);

   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);

   ТабДокумент.Вывести(ОбластьМакета);

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

   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);

   ТабДокумент.Вывести(ОбластьМакета);

   

   ОбластьНомера = Макет.ПолучитьОбласть(«ШапкаТаблицы|НомерСтроки»);

   ОбластьКодов  = Макет.ПолучитьОбласть(«ШапкаТаблицы|КолонкаКодов»);

   ОбластьДанных = Макет.ПолучитьОбласть(«ШапкаТаблицы|Данные»);

   ОбластьСкидок = Макет.ПолучитьОбласть(«ШапкаТаблицы|Скидка»);

   ОбластьСуммы  = Макет.ПолучитьОбласть(«ШапкаТаблицы|Сумма»);

   ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|Товар»);

   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|ТоварБезКодов»);

   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|ТоварБезСкидок»);

   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«ШапкаТаблицы|ТоварБезКодовИСкидок»);

   КонецЕсли;

   ТабДокумент.Вывести(ОбластьНомера);

   Если ПараметрыПечати.ВыводитьКоды Тогда

       ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;

       ТабДокумент.Присоединить(ОбластьКодов);

   КонецЕсли;

   ОбластьТовар.Параметры.Товар = «Товары (работы, услуги)»;

   ТабДокумент.Присоединить(ОбластьТовар);

   ТабДокумент.Присоединить(ОбластьДанных);

   Если ПараметрыПечати.ЕстьСкидки Тогда

       ТабДокумент.Присоединить(ОбластьСкидок);

   КонецЕсли;

   ТабДокумент.Присоединить(ОбластьСуммы);

   ОбластьНомера = Макет.ПолучитьОбласть(«Строка|НомерСтроки»);

   ОбластьКодов  = Макет.ПолучитьОбласть(«Строка|КолонкаКодов»);

   ОбластьДанных = Макет.ПолучитьОбласть(«Строка|Данные»);

   ОбластьСкидок = Макет.ПолучитьОбласть(«Строка|Скидка»);

   ОбластьСуммы  = Макет.ПолучитьОбласть(«Строка|Сумма»);

   ОбластьТовар = Макет.ПолучитьОбласть(«Строка|Товар»);

   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«Строка|ТоварБезКодов»);

   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«Строка|ТоварБезСкидок»);

   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«Строка|ТоварБезКодовИСкидок»);

   КонецЕсли;

   Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл

       Если не ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда

           Сообщить(«В одной из строк не заполнено значение номенклатуры — строка при печати пропущена.», СтатусСообщения.Важное);

           Продолжить;

       КонецЕсли;

       ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);

       ТабДокумент.Вывести(ОбластьНомера);

       Если ПараметрыПечати.ВыводитьКоды Тогда

           ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);

           ТабДокумент.Присоединить(ОбластьКодов);

       КонецЕсли;

       ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);

       ТабДокумент.Присоединить(ОбластьТовар);

       ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);

       ТабДокумент.Присоединить(ОбластьДанных);

       Если ПараметрыПечати.ЕстьСкидки Тогда

           ОбластьСкидок.Параметры.Заполнить(ПараметрыПозиции);

           ТабДокумент.Присоединить(ОбластьСкидок);

       КонецЕсли;

       ОбластьСуммы.Параметры.Заполнить(ПараметрыПозиции);

       ТабДокумент.Присоединить(ОбластьСуммы);

       
   КонецЦикла;

   // Вывести Итого

   ОбластьНомера = Макет.ПолучитьОбласть(«Итого|НомерСтроки»);

   ОбластьКодов  = Макет.ПолучитьОбласть(«Итого|КолонкаКодов»);

   ОбластьДанных = Макет.ПолучитьОбласть(«Итого|Данные»);

   ОбластьСкидок = Макет.ПолучитьОбласть(«Итого|Скидка»);

   ОбластьСуммы  = Макет.ПолучитьОбласть(«Итого|Сумма»);

   ОбластьТовар = Макет.ПолучитьОбласть(«Итого|Товар»);

   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«Итого|ТоварБезКодов»);

   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«Итого|ТоварБезСкидок»);

   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда

       ОбластьТовар = Макет.ПолучитьОбласть(«Итого|ТоварБезКодовИСкидок»);

   КонецЕсли;

   ТабДокумент.Вывести(ОбластьНомера);

   Если ПараметрыПечати.ВыводитьКоды Тогда

       ТабДокумент.Присоединить(ОбластьКодов);

   КонецЕсли;

   ТабДокумент.Присоединить(ОбластьТовар);

   ТабДокумент.Присоединить(ОбластьДанных);

   Если ПараметрыПечати.ЕстьСкидки Тогда

       ОбластьСкидок.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Присоединить(ОбластьСкидок);

   КонецЕсли;

   ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);

   ТабДокумент.Присоединить(ОбластьСуммы);

   // Вывести ИтогоНДС

   Если ПараметрыПечати.УчитыватьНДС Тогда

       ОбластьНомера = Макет.ПолучитьОбласть(«ИтогоНДС|НомерСтроки»);

       ОбластьКодов  = Макет.ПолучитьОбласть(«ИтогоНДС|КолонкаКодов»);

       ОбластьДанных = Макет.ПолучитьОбласть(«ИтогоНДС|Данные»);

       ОбластьСкидок = Макет.ПолучитьОбласть(«ИтогоНДС|Скидка»);

       ОбластьСуммы  = Макет.ПолучитьОбласть(«ИтогоНДС|Сумма»);

       ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|Товар»);

       Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда

           ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|ТоварБезКодов»);

       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда

           ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|ТоварБезСкидок»);

       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда

           ОбластьТовар = Макет.ПолучитьОбласть(«ИтогоНДС|ТоварБезКодовИСкидок»);

       КонецЕсли;

       ТабДокумент.Вывести(ОбластьНомера);

       Если ПараметрыПечати.ВыводитьКоды Тогда

           ТабДокумент.Присоединить(ОбластьКодов);

       КонецЕсли;

       ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Присоединить(ОбластьТовар);

       ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Присоединить(ОбластьДанных);

       Если ПараметрыПечати.ЕстьСкидки Тогда

           ТабДокумент.Присоединить(ОбластьСкидок);

       КонецЕсли;

       ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Присоединить(ОбластьСуммы);

       

       ОбластьНомера = Макет.ПолучитьОбласть(«ВсегоКОплате|НомерСтроки»);

       ОбластьКодов  = Макет.ПолучитьОбласть(«ВсегоКОплате|КолонкаКодов»);

       ОбластьДанных = Макет.ПолучитьОбласть(«ВсегоКОплате|Данные»);

       ОбластьСкидок = Макет.ПолучитьОбласть(«ВсегоКОплате|Скидка»);

       ОбластьСуммы  = Макет.ПолучитьОбласть(«ВсегоКОплате|Сумма»);

       ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|Товар»);

       Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда

           ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|ТоварБезКодов»);

       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда

           ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|ТоварБезСкидок»);

       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда

           ОбластьТовар = Макет.ПолучитьОбласть(«ВсегоКОплате|ТоварБезКодовИСкидок»);

       КонецЕсли;

       ТабДокумент.Вывести(ОбластьНомера);

       Если ПараметрыПечати.ВыводитьКоды Тогда

           ТабДокумент.Присоединить(ОбластьКодов);

       КонецЕсли;

       ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Присоединить(ОбластьТовар);

       ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Присоединить(ОбластьДанных);

       Если ПараметрыПечати.ЕстьСкидки Тогда

           ТабДокумент.Присоединить(ОбластьСкидок);

       КонецЕсли;

       ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);

       ТабДокумент.Присоединить(ОбластьСуммы);

       
   КонецЕсли;

   // Вывести Сумму прописью

   ОбластьМакета = Макет.ПолучитьОбласть(«СуммаПрописью»);

   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);

   ТабДокумент.Вывести(ОбластьМакета);

   // Вывести подписи

   Если Тип = «Счет» Тогда

       ОбластьМакета = Макет.ПолучитьОбласть(«ПодвалСчета»);

   Иначе

       ОбластьМакета = Макет.ПолучитьОбласть(«ПодвалЗаказа»);

   КонецЕсли;

   
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);

   
   ТабДокумент.Вывести(ОбластьМакета);

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

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

// Функция помещает в структуру все данные, отображаемые при печати документа.

// Вызывается из функции ПечатьСчетаЗаказа и из веб-приложения

//

// Параметры:

//  Тип — строка, содержит тип печатаемого документа (счет или заказ)

//

// Возвращаемое значение:

//  Структура

//

Функция ПолучитьПараметрыПечатиСчетаЗаказа(Тип)    

   

   ПараметрыПечати = Новый Структура;

   Позиции = Новый Массив;

   Запрос = Новый Запрос;

   Запрос.УстановитьПараметр(«ТекущийДокумент», ЭтотОбъект.Ссылка);

   Запрос.УстановитьПараметр(«ПустойКонтрагент», Справочники.Контрагенты.ПустаяСсылка());

   Запрос.Текст =»

   |ВЫБРАТЬ

   |    Номер,

   |    Дата,

   |    ДоговорКонтрагента,

   |    Организация,

   |    Контрагент КАК Получатель,

   |    ДоговорКонтрагента КАК ДоговорКонтрагента,

   |    ВЫБОР КОГДА Грузоотправитель = &ПустойКонтрагент

   |          ТОГДА Организация

   |          ИНАЧЕ Грузоотправитель КОНЕЦ КАК Грузоотправитель,

   |    ВЫБОР КОГДА Грузополучатель = &ПустойКонтрагент

   |          ТОГДА Контрагент

   |          ИНАЧЕ Грузополучатель КОНЕЦ КАК Грузополучатель,

   |    Организация КАК Руководители,

   |    Организация КАК Поставщик,

   |    СуммаДокумента,

   |    ВалютаДокумента,

   |    УчитыватьНДС,

   |    СуммаВключаетНДС

   |ИЗ

   |    Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю

   |

   |ГДЕ

   |    СчетНаОплатуПокупателю.Ссылка = &ТекущийДокумент»;

   Шапка = Запрос.Выполнить().Выбрать();

   Шапка.Следующий();

   СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания(«СчетНаОплату»);

   

   Запрос = Новый Запрос;

   Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект);

   Запрос.Текст = «ВЫБРАТЬ

   |    ВложенныйЗапрос.Номенклатура,

   |    ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК НаименованиеПолное,

   |    ВложенныйЗапрос.Номенклатура.Код                КАК Код,

   |    ВложенныйЗапрос.Номенклатура.Артикул            КАК Артикул,

   |    ВложенныйЗапрос.Количество,

   |    ВложенныйЗапрос.ЕдиницаИзмерения.Представление  КАК ЕдиницаИзмерения,

   |    ВложенныйЗапрос.ПроцентСкидкиНаценки

   |    + ВложенныйЗапрос.ПроцентАвтоматическихСкидок   КАК Скидка,

   |    ВложенныйЗапрос.Цена,

   |    ВложенныйЗапрос.Сумма,

   |    ВложенныйЗапрос.СуммаНДС,

   |    ВложенныйЗапрос.Характеристика,

   |    NULL                           КАК Серия,

   |    ВложенныйЗапрос.НомерСтроки    КАК НомерСтроки,

   |    ВложенныйЗапрос.Метка          КАК Метка

   |ИЗ

   |    (ВЫБРАТЬ

   |        СчетНаОплату.Номенклатура               КАК Номенклатура,

   |        СчетНаОплату.ЕдиницаИзмерения           КАК ЕдиницаИзмерения,

   |        СчетНаОплату.ПроцентСкидкиНаценки       КАК ПроцентСкидкиНаценки,

   |        СчетНаОплату.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,

   |        СчетНаОплату.Цена КАК Цена,

   |        СУММА(СчетНаОплату.Количество)          КАК Количество,

   |        СУММА(СчетНаОплату.Сумма)               КАК Сумма,

   |        СУММА(СчетНаОплату.СуммаНДС)            КАК СуммаНДС,

   |        СчетНаОплату.ХарактеристикаНоменклатуры КАК Характеристика,

   |        МИНИМУМ(СчетНаОплату.НомерСтроки)       КАК НомерСтроки,

   |        0 КАК Метка

   |    ИЗ

   |        Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплату

   |    

   |    ГДЕ

   |        СчетНаОплату.Ссылка = &ТекущийДокумент

   |    

   |    СГРУППИРОВАТЬ ПО

   |        СчетНаОплату.Номенклатура,

   |        СчетНаОплату.ЕдиницаИзмерения,

   |        СчетНаОплату.ПроцентСкидкиНаценки,

   |        СчетНаОплату.ПроцентАвтоматическихСкидок,

   |        СчетНаОплату.Цена,

   |        СчетНаОплату.ХарактеристикаНоменклатуры

   |        ) КАК ВложенныйЗапрос

   |

   |ОБЪЕДИНИТЬ ВСЕ

   |

   |ВЫБРАТЬ

   |    СчетНаОплату.Номенклатура,

   |    Минимум(» + СтрокаВыборкиПоляСодержания + «) КАК Товар,

   |    СчетНаОплату.Номенклатура.Код     КАК Код,

   |    СчетНаОплату.Номенклатура.Артикул КАК Артикул,

   |    Сумма(СчетНаОплату.Количество),

   |    СчетНаОплату.Номенклатура.ЕдиницаХраненияОстатков,

   |    СчетНаОплату.ПроцентСкидкиНаценки + СчетНаОплату.ПроцентАвтоматическихСкидок,

   |    СчетНаОплату.Цена,

   |    Сумма(СчетНаОплату.Сумма),

   |    Сумма(СчетНаОплату.СуммаНДС),

   |    NULL,

   |    NULL,

   |    Минимум(СчетНаОплату.НомерСтроки),

   |    1

   |ИЗ

   |    Документ.СчетНаОплатуПокупателю.Услуги КАК СчетНаОплату

   |

   |ГДЕ

   |    СчетНаОплату.Ссылка = &ТекущийДокумент

   |    СГРУППИРОВАТЬ ПО

   |        СчетНаОплату.Номенклатура,

   |        СчетНаОплату.ПроцентСкидкиНаценки,

   |        СчетНаОплату.ПроцентАвтоматическихСкидок,

   |        СчетНаОплату.Цена

   |

   |УПОРЯДОЧИТЬ ПО

   |    Метка,

   |    НомерСтроки»;

   ЗапросТовары = Запрос.Выполнить().Выгрузить();

   // Выводим шапку накладной

   ПараметрыПечати.Вставить(«УчитыватьНДС», Шапка.УчитыватьНДС);

   ПараметрыПечати.Вставить(«ДоговорКонтрагента», Шапка.ДоговорКонтрагента);

   СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата);

   Если Тип = «Счет» Тогда

       ПараметрыПечати.Вставить(«ИНН», СведенияОПоставщике.ИНН);

       ПараметрыПечати.Вставить(«КПП», СведенияОПоставщике.КПП);

       ПредставлениеПоставщикаДляПлатПоручения = «»;

       Если ТипЗнч(СсылкаНаОбъект.СтруктурнаяЕдиница) = Тип(«СправочникСсылка.БанковскиеСчета») Тогда

           Банк       = ?(не ЗначениеЗаполнено(СсылкаНаОбъект.СтруктурнаяЕдиница.БанкДляРасчетов), СсылкаНаОбъект.СтруктурнаяЕдиница.Банк, СсылкаНаОбъект.СтруктурнаяЕдиница.БанкДляРасчетов);

           БИК        = Банк.Код;

           КоррСчет   = Банк.КоррСчет;

           ГородБанка = Банк.Город;

           НомерСчета = СсылкаНаОбъект.СтруктурнаяЕдиница.НомерСчета;

           ПараметрыПечати.Вставить(«БИКБанкаПолучателя», БИК);

           ПараметрыПечати.Вставить(«БанкПолучателя», Банк);

           ПараметрыПечати.Вставить(«БанкПолучателяПредставление», СокрЛП(Банк) + » » + ГородБанка);

           ПараметрыПечати.Вставить(«СчетБанкаПолучателя», КоррСчет);

           ПараметрыПечати.Вставить(«СчетБанкаПолучателяПредставление», КоррСчет);

           ПараметрыПечати.Вставить(«СчетПолучателяПредставление», НомерСчета);

           ПараметрыПечати.Вставить(«СчетПолучателя», НомерСчета);

           ПредставлениеПоставщикаДляПлатПоручения = СсылкаНаОбъект.СтруктурнаяЕдиница.ТекстКорреспондента;

       КонецЕсли;

       Если ПустаяСтрока(ПредставлениеПоставщикаДляПлатПоручения) Тогда

           ПредставлениеПоставщикаДляПлатПоручения = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, «ПолноеНаименование,»);

       КонецЕсли;

       ПараметрыПечати.Вставить(«ПредставлениеПоставщикаДляПлатПоручения», ПредставлениеПоставщикаДляПлатПоручения);

   КонецЕсли;

   ПараметрыПечати.Вставить(«ТекстЗаголовка», ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, «Счет на оплату»));

   ПараметрыПечати.Вставить(«ТекстПоставщик», ?(Тип = «Счет», «Поставщик:», «Исполнитель:»));

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

   Если Шапка.Организация = Шапка.Грузоотправитель Тогда

       ПараметрыПечати.Вставить(«ПредставлениеГрузоотправителя», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,»));

   Иначе

       ПараметрыПечати.Вставить(«ПредставлениеГрузоотправителя», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ФактическийАдрес,Телефоны,»));

   КонецЕсли;

   СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);

   ПараметрыПечати.Вставить(«ТекстПокупатель», ?(Тип = «Счет», «Покупатель:», «Заказчик:»));

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

   ПараметрыПечати.Вставить(«ПредставлениеГрузополучателя», ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.Дата), «ПолноеНаименование,ИНН,КПП,ФактическийАдрес,Телефоны,»));

   ПараметрыПечати.Вставить(«ЕстьСкидки», Ложь);

   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда

           ПараметрыПечати.ЕстьСкидки = Истина;

           Прервать;

       КонецЕсли;

   КонецЦикла;

   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();

   ПараметрыПечати.Вставить(«ВыводитьКоды», Ложь);

   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда

       ПараметрыПечати.ВыводитьКоды = Истина;

       Колонка = «Артикул»;

   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда

       ПараметрыПечати.ВыводитьКоды = Истина;

       Колонка = «Код»;

   КонецЕсли;

   

   Если ПараметрыПечати.ВыводитьКоды Тогда

       ПараметрыПечати.Вставить(«ИмяКолонкиКодов», Колонка);

   КонецЕсли;

   Сумма    = 0;

   СуммаНДС = 0;

   ВсегоСкидок    = 0;

   ВсегоБезСкидок = 0;

   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

       
       ПараметрыПозиции = Новый Структура;

       ПараметрыПозиции.Вставить(«Номенклатура», ВыборкаСтрокТовары.Номенклатура);

       ПараметрыПозиции.Вставить(«НомерСтроки», ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1);

       Если ПараметрыПечати.ВыводитьКоды Тогда

           Если Колонка = «Артикул» Тогда

               ПараметрыПозиции.Вставить(«Артикул», ВыборкаСтрокТовары.Артикул);

           Иначе

               ПараметрыПозиции.Вставить(«Артикул», ВыборкаСтрокТовары.Код);

           КонецЕсли;

       КонецЕсли;

       ПараметрыПозиции.Вставить(«Количество», ВыборкаСтрокТовары.Количество);

       ПараметрыПозиции.Вставить(«ЕдиницаИзмерения», ВыборкаСтрокТовары.ЕдиницаИзмерения);

       ПараметрыПозиции.Вставить(«Цена», ВыборкаСтрокТовары.Цена);

       ПараметрыПозиции.Вставить(«Товар», СокрП(ВыборкаСтрокТовары.НаименованиеПолное)

                                                   + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары));

       Скидка = Ценообразование.ПолучитьСуммуСкидки(ВыборкаСтрокТовары.Сумма, ВыборкаСтрокТовары.Скидка);

       Если ПараметрыПечати.ЕстьСкидки Тогда

           ПараметрыПозиции.Вставить(«Скидка», Скидка);

           ПараметрыПозиции.Вставить(«СуммаБезСкидки», ВыборкаСтрокТовары.Сумма + Скидка);

       КонецЕсли;

       ПараметрыПозиции.Вставить(«Сумма», ВыборкаСтрокТовары.Сумма);

       

       Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;

       СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;

       ВсегоСкидок    = ВсегоСкидок + Скидка;

       ВсегоБезСкидок = Сумма       + ВсегоСкидок;

       #Если ВнешнееСоединение Тогда

       WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПозиции);

       #КонецЕсли

       Позиции.Добавить(ПараметрыПозиции);

   КонецЦикла;

   
   ПараметрыПечати.Вставить(«Позиции», Позиции);

   // Вывести Итого

   Если ПараметрыПечати.ЕстьСкидки Тогда

       ПараметрыПечати.Вставить(«ВсегоСкидок», ВсегоСкидок);

       ПараметрыПечати.Вставить(«ВсегоБезСкидок», ВсегоБезСкидок);

   КонецЕсли;

   ПараметрыПечати.Вставить(«Всего», ОбщегоНазначения.ФорматСумм(Сумма));

   // Вывести ИтогоНДС

   Если ПараметрыПечати.УчитыватьНДС Тогда

       ПараметрыПечати.Вставить(«НДС», ?(Шапка.СуммаВключаетНДС, «В том числе НДС:», «Сумма НДС:»));

       ПараметрыПечати.Вставить(«ВсегоНДС», ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог(«СуммаНДС»)));

       ПараметрыПечати.Вставить(«ВсегоКОплате», ОбщегоНазначения.ФорматСумм(Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС)));

   КонецЕсли;

   // Вывести Сумму прописью

   СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);

   ПараметрыПечати.Вставить(«ИтоговаяСтрока», «Всего наименований » + ЗапросТовары.Количество()

   + «, на сумму » + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента));

   ПараметрыПечати.Вставить(«СуммаПрописью», ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента));

   // Вывести подписи

   Если Тип = «Счет» Тогда

       Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации(Шапка.Руководители, Шапка.Дата,);

       Руководитель = Руководители.Руководитель;

       ДолжностьРуководителя = Руководители.РуководительДолжность;

       Бухгалтер    = Руководители.ГлавныйБухгалтер;

       

       ПараметрыПечати.Вставить(«ФИОРуководителя»,        Руководитель);

       ПараметрыПечати.Вставить(«ДолжностьРуководителя»,    ДолжностьРуководителя);

       ПараметрыПечати.Вставить(«ФИОБухгалтера»,            Бухгалтер);

       ПараметрыПечати.Вставить(«ФИОИсполнителя»,            СсылкаНаОбъект.Ответственный);

       

       Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект.Ответственный.ФизЛицо) Тогда

           ФИООтветственный = СокрЛП(СсылкаНаОбъект.Ответственный);  

       Иначе

           ФамилияИмяОтчествоФизЛица           = ФормированиеПечатныхФорм.ФамилияИмяОтчество(СсылкаНаОбъект.Ответственный.ФизЛицо, Шапка.Дата);

           ФамилияИмяОтчествоОтветственного = ФамилияИмяОтчествоФизЛица.Фамилия + » » + ФамилияИмяОтчествоФизЛица.Имя + » » + ФамилияИмяОтчествоФизЛица.Отчество;

           ФИООтветственный                 = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтветственного);

       КонецЕсли;

       ПараметрыПечати.Вставить(«ФИООтветственный», ФИООтветственный);

   КонецЕсли;

   #Если ВнешнееСоединение Тогда

   WEBПриложения.ПодготовитьСтруктуруДляВнешнегоСоединения(ПараметрыПечати);

   #КонецЕсли

   Возврат ПараметрыПечати;

КонецФункции //ПолучитьПараметрыПечатиСчетаЗаказа()

1C. «Недопустимое значение параметра» при вызове макета в расширении

Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения «&Вместо») и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме «1С:Предприятие» возникала ошибка при получении макета:

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

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

Варианты решения:

1. Добавить функцию, выполняемую на сервере, которая вызовет добавленный макет из документа:

&НаСервере

Функция ПолучитьМакетЗаявленияИзРасширения()

    Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);

    Возврат Макет;

КонецФункции

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

(как оказалось этот способ не нужен. Причину читайте ниже)

2. Другой вариант — перенести макеты в общие и следующей командой вызвать (получить) макет из «Общие макеты»:

Макет = ПолучитьОбщийМакет («Расш1_МакетЗаявлениеПоступающего»);

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

При этом, если в расширении добавлено несколько макетов к документу, то «заглушки» достаточно только одной.

Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

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

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

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


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

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

Рис.3 Синтакс-помощник
Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

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

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

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


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

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

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


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

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

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

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

При нажитии на кнопку в форме документа вылетает ошибка, — {Документ.РасчетПремииМенеджера.Форма.ФормаДокумента}: Ошибка при вызове метода контекста (ПолучитьМакет)     Макет = ПолучитьМакет(«Макет»); по причине: Недопустимое значение параметра (параметр номер ‘1’) У документа есть Макет, — «Макет» , почему ругается на него? Процедура РасчетПремииНажатие(Элемент)     // Вставить содержимое обработчика.

попробуй полное имя указать «Документы.ТвойДокумент.Макеты.ТвойМакет»

ругается что нет поля объекта «Макет»

только так??? спасибо, сейчас попробую, думал проще….

Скопируй старый макет в новый. Попробуй изменить наименование.

Процедура или функция с указанным именем не определена (РеквизитФормыВЗначение)

Хотите сказать что так должно работать это глюки?

ну так откуда в обычных формах РеквизитФормыВЗначение??

Понял! Значит это не подойдет!!! Как в обычных формах это работает, получение доступа к макету документа.

Макет = ЭтотОбъект.ПолучитьМакет(«Накладная»);

Это выполняется в форме документа

Вот поэтому и ЭтотОбъект.

Если бы был в модуле объекта мог бы просто вызвать: ПолучитьМакет(«Накладная»)

в тестовой базе смотрю, на эту строку не ругается, стало ругаться в рабочей (((

Вот в тестовой базе в модуле формы документа, прошло и не сругалось!!!

А это еще что за хр-нь ? мен = ЭтаФорма.ЭлементыФормы.Менеджер.Значение; Элемент формы связан по данным с реквизитом объекта/ТЧ объекта, либо с реквизитом формы. Так, что, надо сразу к ним и обращаться. А через ЭлементыФормы — это для несмышленых

Ошибка при вызове метода контекста (ПолучитьМакет)     Макет = ЭтотОбъект.ПолучитьМакет(«Макет»);

Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально Сейчас в тестовой базе работает, а в рабочей стал ругаться на макет А почему нужно его переименовывать, в тестовой работает все без изменений, а тут что случилось?

Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально

это называется «танцы с бубном». отсекаются проблемы разной раскладки

Видимо действительно этот случай. И не более.

в этом документе точно есть Макет «Макет»?

я тебе еще в предложил переименовать макет. Тяжело сделать?

Да конечно, говорю в копии базы все работает, в рабочей что то слетело. Изменил название макета на «РасчетПМ» стало работать…выполняется…Ошибки уже на макете не выдает!

То есть это к примеру залез админ в 1с, исправил букву в другой раскладке в названии макета «Макет» и сохранил? Или это реально глюк такой 1с есть???

наверно у формы слетело свойство «Данные». А потом кто-то кофе пил на твоем рабочем месте, махнул рукавом, зацепил клавиатуру, свойство и заполнилось как надо.

ОбработкаОбъект.ПолучитьМакет(

Непонятно как это бы так было, саботаж если только говорю!!! Макет документа, при чем тут обработка??? пробовал и так: не получалось….пока не изменил название макета…

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

  • Ошибка при вызове метода контекста прочитать ошибка доступа к файлу
  • Ошибка при вызове метода контекста получитьмакет недопустимое значение параметра параметр номер 1
  • Ошибка при вызове метода контекста прочитать метод недоступен на тонком клиенте
  • Ошибка при вызове метода контекста получитьизвременногохранилища 1с
  • Ошибка при вызове метода контекста просклонять ошибка внешней компоненты