(ЗУП 3.1.18) Поле объекта не обнаружено ДоступенВыводНаДругихЯзыках в печатке
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
У меня такая же ошибка во внешнем отчёте. Нашёл в коде формирование коллекции печатных форм и добавил это свойство:
Правда, вылезла другая ошибка, но это другая история.
КоллекцияПечатныхФорм = Новый Массив;
СтрокаКоллекции = Новый Структура("СинонимМакета,ИмяМакета,Экземпляров,ТабличныйДокумент,ПолныйПутьКМакету,ИмяФайлаПечатнойФормы,ОфисныеДокументы,ДоступенВыводНаДругихЯзыках");
СтрокаКоллекции.СинонимМакета = "Справка";
СтрокаКоллекции.ИмяМакета = "Справка";
СтрокаКоллекции.Экземпляров = 1;
СтрокаКоллекции.ТабличныйДокумент = ДокументРезультат;
СтрокаКоллекции.ПолныйПутьКМакету = "ВнешнийОтчет.Макеты.Справка";
СтрокаКоллекции.ИмяФайлаПечатнойФормы = "";
СтрокаКоллекции.ОфисныеДокументы = "";
СтрокаКоллекции.ДоступенВыводНаДругихЯзыках = Ложь;
КоллекцияПечатныхФорм.Добавить(СтрокаКоллекции);
ПоказатьПравда, вылезла другая ошибка, но это другая история.
(5) Хотя нет, это та же история. Вынес в расширение такой костыль:
Думаю, в следующих патчах-релизах 1С сделает как правильно и универсально.
Сама функция сидит в УправлениеПечатьюМультиязычность
&Вместо("ЯзыкиМакета")
Функция Расширение_ЗУП_ЯзыкиМакета(ПутьКМакету)
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету);
ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина);
Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()];
ЧастиПути.Удалить(ЧастиПути.ВГраница());
ИмяОбъекта = СтрСоединить(ЧастиПути, ".");
ЯзыкиПечатныхФорм = ДоступныеЯзыки();
Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл
Если СтрЗаканчиваетсяНа(ИмяМакета, "_" + КодЯзыка) Тогда
ИмяМакета = Лев(ИмяМакета, СтрДлина(ИмяМакета) - СтрДлина(КодЯзыка) - 1);
Прервать;
КонецЕсли;
КонецЦикла;
ТекстЗапроса =
"ВЫБРАТЬ
| ПользовательскиеМакетыПечати.ИмяМакета КАК ИмяМакета
|ИЗ
| РегистрСведений.ПользовательскиеМакетыПечати КАК ПользовательскиеМакетыПечати
|ГДЕ
| ПользовательскиеМакетыПечати.Объект = &Объект
| И ПользовательскиеМакетыПечати.ИмяМакета ПОДОБНО &ШаблонИмениМакета
| И ПользовательскиеМакетыПечати.Использование";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.Параметры.Вставить("Объект", ИмяОбъекта);
Запрос.Параметры.Вставить("ШаблонИмениМакета", ИмяМакета + "_%");
Выборка = Запрос.Выполнить().Выбрать();
НайденныеЯзыки = Новый Соответствие;
Пока Выборка.Следующий() Цикл
Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл
КодЛокализации = КодЯзыка;
Если СтрЗаканчиваетсяНа(Выборка.ИмяМакета, "_" + КодЛокализации) Тогда
НайденныеЯзыки.Вставить(КодЛокализации, Истина);
Продолжить;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ИменаПоиска = Новый Соответствие;
Для Каждого КодЯзыка Из ДополнительныеЯзыкиПечатныхФорм() Цикл
ИменаПоиска.Вставить(КодЯзыка, ИмяМакета + "_" + КодЯзыка);
КонецЦикла;
ЭтоОбщийМакет = СтрРазделить(ИмяОбъекта, ".").Количество() = 1;
КоллекцияМакетов = Метаданные.ОбщиеМакеты;
Если Не ЭтоОбщийМакет Тогда
//И.Ю. Парфёнов. 18.10.2021 Начало.
Если ЧастиПути[0] = "ВнешнийОтчет" Тогда
ИменаПоиска.Очистить();
Иначе
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
Если ОбъектМетаданных = Неопределено Тогда
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КоллекцияМакетов = ОбъектМетаданных.Макеты;
КонецЕсли;
//ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
//Если ОбъектМетаданных = Неопределено Тогда
// ВызватьИсключение ТекстОшибки;
//КонецЕсли;
//КоллекцияМакетов = ОбъектМетаданных.Макеты;
//И.Ю. Парфёнов. 18.10.2021 Завершение.
КонецЕсли;
Для Каждого Элемент Из ИменаПоиска Цикл
ИмяПоиска = Элемент.Значение;
КодЯзыка = Элемент.Ключ;
Если КоллекцияМакетов.Найти(ИмяПоиска) <> Неопределено Тогда
НайденныеЯзыки.Вставить(КодЯзыка, Истина);
КонецЕсли;
КонецЦикла;
Для Каждого КодЯзыка Из СтандартныеПодсистемыСервер.ЯзыкиКонфигурации() Цикл
НайденныеЯзыки.Вставить(КодЯзыка, Истина);
КонецЦикла;
Результат = Новый Массив;
Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл
Если НайденныеЯзыки[КодЯзыка] <> Неопределено Тогда
Результат.Добавить(КодЯзыка);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
ПоказатьДумаю, в следующих патчах-релизах 1С сделает как правильно и универсально.
Сама функция сидит в УправлениеПечатьюМультиязычность
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот