Управление Торговлей 11.1.2.20 Метод объекта не обнаружен (Метаданные)
Здравствуйте, уважаемые форумчане
Имеется конфигурация УТ 11.1.2.20, подключены весы с печатью этикеток Штрих-М. Продажи обмен с подключаемым оборудованием Offline/весы с печатью этикеток/Посмотреть список товаров/Печать/Кодов товаров, выходит ошибка Метод объекта не обнаружен (Метаданные). Ошибка появилась после обновления на 11.1.2.20 и повторяется на релизе 11.1.6.
{ОбщийМодуль.УправлениеПечатью.Модуль(344)}: Метод объекта не обнаружен (Метаданные)
ИсточникВнешнихПечатныхФорм = МассивОбъектов[0].Метаданные().ПолноеИмя();
Имеется конфигурация УТ 11.1.2.20, подключены весы с печатью этикеток Штрих-М. Продажи обмен с подключаемым оборудованием Offline/весы с печатью этикеток/Посмотреть список товаров/Печать/Кодов товаров, выходит ошибка Метод объекта не обнаружен (Метаданные). Ошибка появилась после обновления на 11.1.2.20 и повторяется на релизе 11.1.6.
{ОбщийМодуль.УправлениеПечатью.Модуль(344)}: Метод объекта не обнаружен (Метаданные)
ИсточникВнешнихПечатныхФорм = МассивОбъектов[0].Метаданные().ПолноеИмя();
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) deniseek77,
Процедура СформироватьПечатныеФормы(ИмяМенеджераПечати, Знач ИменаМакетов, МассивОбъектов, ПараметрыПечати,
КоллекцияПечатныхФорм, ОбъектыПечати = Неопределено, ПараметрыВывода) Экспорт
ПараметрыВывода = ПодготовитьСтруктуруПараметровВывода();
Если ОбъектыПечати = Неопределено Тогда
ОбъектыПечати = Новый СписокЗначений;
КонецЕсли;
КоллекцияПечатныхФорм = ПодготовитьКоллекциюПечатныхФорм(Новый Массив);
Если ТипЗнч(ИменаМакетов) = Тип("Строка") Тогда
ИменаМакетов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИменаМакетов);
Иначе // Тип("Массив")
ИменаМакетов = ОбщегоНазначенияКлиентСервер.СкопироватьМассив(ИменаМакетов);
КонецЕсли;
ПрефиксВнешнихПечатныхФорм = "ВнешняяПечатнаяФорма.";
ИсточникВнешнихПечатныхФорм = ИмяМенеджераПечати;
Если ОбщегоНазначения.ЭтоСсылка(ТипЗнч(МассивОбъектов)) Тогда
ИсточникВнешнихПечатныхФорм = МассивОбъектов.Метаданные().ПолноеИмя();
Иначе
//Если МассивОбъектов.Количество() > 0 Тогда
ИсточникВнешнихПечатныхФорм = МассивОбъектов[0].Метаданные().ПолноеИмя();
//КонецЕсли;
КонецЕсли;
ВнешниеПечатныеФормы = СписокПечатныхФормИзВнешнихИсточников(ИсточникВнешнихПечатныхФорм);
// добавление внешних печатных форм в комплект
ДобавленныеВнешниеПечатныеФормы = Новый Массив;
Если ТипЗнч(ПараметрыПечати) = Тип("Структура")
И ПараметрыПечати.Свойство("ДополнитьКомплектВнешнимиПечатнымиФормами")
И ПараметрыПечати.ДополнитьКомплектВнешнимиПечатнымиФормами Тогда
ИдентификаторыВнешнихПечатныхФорм = ВнешниеПечатныеФормы.ВыгрузитьЗначения();
Для Каждого Идентификатор Из ИдентификаторыВнешнихПечатныхФорм Цикл
Если ИменаМакетов.Найти(Идентификатор) = Неопределено Тогда
ИменаМакетов.Добавить(ПрефиксВнешнихПечатныхФорм + Идентификатор);
ДобавленныеВнешниеПечатныеФормы.Добавить(ПрефиксВнешнихПечатныхФорм + Идентификатор);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого ИмяМакета Из ИменаМакетов Цикл
// проверка наличия уже напечатанной формы
НайденнаяПечатнаяФорма = КоллекцияПечатныхФорм.Найти(ИмяМакета, "ИмяМакета");
Если НайденнаяПечатнаяФорма <> Неопределено Тогда
ПоследняяДобавленнаяПечатнаяФорма = КоллекцияПечатныхФорм[КоллекцияПечатныхФорм.Количество()-1];
Если ПоследняяДобавленнаяПечатнаяФорма.ИмяМакета = НайденнаяПечатнаяФорма.ИмяМакета Тогда
ПоследняяДобавленнаяПечатнаяФорма.Экземпляров = ПоследняяДобавленнаяПечатнаяФорма.Экземпляров + 1;
Иначе
КопияПечатнойФормы = КоллекцияПечатныхФорм.Добавить();
ЗаполнитьЗначенияСвойств(КопияПечатнойФормы, НайденнаяПечатнаяФорма);
КопияПечатнойФормы.Экземпляров = 1;
КонецЕсли;
Продолжить;
КонецЕсли;
// поиск указания дополнительного менеджера печати в имени печатной формы
ИмяДополнительногоМенеджераПечати = "";
Идентификатор = ИмяМакета;
ВнешняяПечатнаяФорма = Неопределено;
Если Найти(Идентификатор, ПрефиксВнешнихПечатныхФорм) > 0 Тогда // это внешняя печатная форма
Идентификатор = Сред(Идентификатор, СтрДлина(ПрефиксВнешнихПечатныхФорм) + 1);
ВнешняяПечатнаяФорма = ВнешниеПечатныеФормы.НайтиПоЗначению(Идентификатор);
ИначеЕсли Найти(Идентификатор, ".") > 0 Тогда // указан дополнительный менеджер печати
Позиция = СтроковыеФункцииКлиентСервер.НайтиСимволСКонца(Идентификатор, ".");
ИмяДополнительногоМенеджераПечати = Лев(Идентификатор, Позиция - 1);
Идентификатор = Сред(Идентификатор, Позиция + 1);
КонецЕсли;
// определение внутреннего менеджера печати
ИспользуемыйМенеджерПечати = ИмяДополнительногоМенеджераПечати;
Если ПустаяСтрока(ИспользуемыйМенеджерПечати) Тогда
ИспользуемыйМенеджерПечати = ИмяМенеджераПечати;
КонецЕсли;
// проверка соответствия печатаемых объектов выбранной печатной форме
ОжидаемыйТипОбъекта = Неопределено;
МетаданныеМенеджера = Метаданные.НайтиПоПолномуИмени(ИспользуемыйМенеджерПечати);
Если МетаданныеМенеджера <> Неопределено
И (Метаданные.Документы.Содержит(МетаданныеМенеджера)
Или Метаданные.Справочники.Содержит(МетаданныеМенеджера)
Или Метаданные.БизнесПроцессы.Содержит(МетаданныеМенеджера)
Или Метаданные.Задачи.Содержит(МетаданныеМенеджера)
Или Метаданные.ПланыВидовРасчета.Содержит(МетаданныеМенеджера)
Или Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеМенеджера)
Или Метаданные.ПланыОбмена.Содержит(МетаданныеМенеджера)) Тогда
ОжидаемыйТипОбъекта = Тип(СтрЗаменить(ИспользуемыйМенеджерПечати, ".", "Ссылка."));
КонецЕсли;
ОбъектыСоответствующиеПечатнойФорме = МассивОбъектов;
Если ОжидаемыйТипОбъекта <> Неопределено Тогда
Если ТипЗнч(МассивОбъектов) = Тип("Массив") Тогда
ОбъектыСоответствующиеПечатнойФорме = Новый Массив;
Для Каждого Объект Из МассивОбъектов Цикл
Если ТипЗнч(Объект) <> ОжидаемыйТипОбъекта Тогда
СообщитьПечатнаяФормаНедоступна(Объект);
Иначе
ОбъектыСоответствующиеПечатнойФорме.Добавить(Объект);
КонецЕсли;
КонецЦикла;
Если ОбъектыСоответствующиеПечатнойФорме.Количество() = 0 Тогда
ОбъектыСоответствующиеПечатнойФорме = Неопределено;
КонецЕсли;
ИначеЕсли ОбщегоНазначения.ЗначениеСсылочногоТипа(МассивОбъектов) Тогда
Если ТипЗнч(МассивОбъектов) <> ОжидаемыйТипОбъекта Тогда
СообщитьПечатнаяФормаНедоступна(МассивОбъектов);
ОбъектыСоответствующиеПечатнойФорме = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ВременнаяКоллекцияДляОднойПечатнойФормы = ПодготовитьКоллекциюПечатныхФорм(Идентификатор);
// вызов процедуры Печать из менеджера печати
Если ВнешняяПечатнаяФорма <> Неопределено Тогда
// менеджер печати во внешней печатной форме
МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль("ДополнительныеОтчетыИОбработки");
МодульДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику(
ВнешняяПечатнаяФорма(ВнешняяПечатнаяФорма.Значение, ИсточникВнешнихПечатныхФорм),
Новый Структура("ИдентификаторКоманды, ОбъектыНазначения", ВнешняяПечатнаяФорма.Значение, ОбъектыСоответствующиеПечатнойФорме),
ВременнаяКоллекцияДляОднойПечатнойФормы,
ОбъектыПечати,
ПараметрыВывода);
Иначе
Если Не ПустаяСтрока(ИспользуемыйМенеджерПечати) Тогда
МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИспользуемыйМенеджерПечати);
// печать внутренней печатной формы
Если ОбъектыСоответствующиеПечатнойФорме <> Неопределено Тогда
МенеджерПечати.Печать(ОбъектыСоответствующиеПечатнойФорме, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, ОбъектыПечати, ПараметрыВывода);
Иначе
ВременнаяКоллекцияДляОднойПечатнойФормы[0].ТабличныйДокумент = Новый ТабличныйДокумент;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// проверка корректности заполнения коллекции печатных форм, полученной из менеджера печати
Для Каждого ОписаниеПечатнойФормы Из ВременнаяКоллекцияДляОднойПечатнойФормы Цикл
ОбщегоНазначенияКлиентСервер.Проверить(
ТипЗнч(ОписаниеПечатнойФормы.Экземпляров) = Тип("Число") И ОписаниеПечатнойФормы.Экземпляров > 0,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не задано количество экземпляров для печатной формы ""%1"".'"),
?(ПустаяСтрока(ОписаниеПечатнойФормы.СинонимМакета), ОписаниеПечатнойФормы.ИмяМакета, ОписаниеПечатнойФормы.СинонимМакета)
));
КонецЦикла;
// обновление коллекции
Отказ = ВременнаяКоллекцияДляОднойПечатнойФормы.Количество() = 0;
// предполагается одна печатная форма, но для обратной совместимости принимается вся коллекция
Для Каждого ВременнаяПечатнаяФорма Из ВременнаяКоллекцияДляОднойПечатнойФормы Цикл
Если ВременнаяПечатнаяФорма.ТабличныйДокумент <> Неопределено Тогда
ПечатнаяФорма = КоллекцияПечатныхФорм.Добавить();
ЗаполнитьЗначенияСвойств(ПечатнаяФорма, ВременнаяПечатнаяФорма);
Если ВременнаяКоллекцияДляОднойПечатнойФормы.Количество() = 1 Тогда
ПечатнаяФорма.ИмяМакета = ИмяМакета;
ПечатнаяФорма.ИмяВРЕГ = ВРег(ИмяМакета);
КонецЕсли;
Иначе
// возникла ошибка при формировании печатной формы
Отказ = Истина;
КонецЕсли;
КонецЦикла;
// вызов исключения при возникновении ошибки
Если Отказ Тогда
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'При формировании печатной формы ""%1"" возникла ошибка. Обратитесь к администратору.'"), ИмяМакета);
ВызватьИсключение(ТекстСообщенияОбОшибке);
КонецЕсли;
КонецЦикла;
// установка количества экземпляров табличным документам
Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл
Если ДобавленныеВнешниеПечатныеФормы.Найти(ПечатнаяФорма.ИмяМакета) <> Неопределено Тогда
ПечатнаяФорма.Экземпляров = 0; // для автоматически добавленных форм
КонецЕсли;
Если ПечатнаяФорма.ТабличныйДокумент <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент.КоличествоЭкземпляров = ПечатнаяФорма.Экземпляров;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(8) vertkov2010, вот сдесь у вас должно быть либо Справочникссылка либо документссылка передаваться, а у вас передается структура. Она у вас уже на входе передается, то есть проблема в вашей печатной форме, нужно ее смотреть, что из нее передается...
//Если МассивОбъектов.Количество() > 0 Тогда
ИсточникВнешнихПечатныхФорм = МассивОбъектов[0].Метаданные().ПолноеИмя();
//КонецЕсли;
(9) deniseek77, формирование печатной формы
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КодыТоваров") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "КодыТоваров", "Коды товаров", СформироватьПечатнуюФормуКодыТоваров(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФормуКодыТоваров(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КодыТоваров";
Макет = УправлениеПечатью.ПолучитьМакет("Справочник.ПравилаОбменаСПодключаемымОборудованиемOffline.ПФ_MXL_КодыТоваров");
ПервыйДокумент = Истина;
Для Каждого Объект Из МассивОбъектов Цикл
ПодключаемоеОборудованиеOfflineВызовСервера.ОбновитьКодыТоваров(Объект.ПравилоОбмена);
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = НСтр("ru = 'Коды товаров'");
ОбластьМакета.Параметры.ПравилоОбмена = Объект.ПравилоОбмена;
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьКод = Макет.ПолучитьОбласть("ШапкаТаблицы|Код");
ОбластьТовар = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
ТабличныйДокумент.Вывести(ОбластьКод);
ТабличныйДокумент.Присоединить(ОбластьТовар);
ОбластьКод = Макет.ПолучитьОбласть("Строка|Код");
ОбластьТовар = Макет.ПолучитьОбласть("Строка|Товар");
МаксимальныйКодВесовогоТовара = ПодключаемоеОборудованиеOfflineВызовСервера.МаксимальныйКодВесовогоТовара();
Товары = ПодключаемоеОборудованиеOfflineВызовСервера.ПолучитьТаблицуТоваровДляПравила(Объект.ПравилоОбмена, Справочники.ВидыЦен.ПустаяСсылка());
Для Каждого СтрокаТЧ Из Товары Цикл
ОбластьКод.Параметры.Код = (СтрокаТЧ.Код - (МаксимальныйКодВесовогоТовара));
ТабличныйДокумент.Вывести(ОбластьКод);
Если СтрокаТЧ.Используется Тогда
ОбластьТовар.Параметры.Товар = СтрокаТЧ.Наименование;
Иначе
ОбластьТовар.Параметры.Товар = "";
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
КонецЦикла;
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ТабличныйДокумент.Вывести(ОбластьМакета);
// Вывести подписи.
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.Ответственный = Пользователи.ТекущийПользователь();
ТабличныйДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Объект.ПравилоОбмена);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
#КонецЕсли
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот