(ЗУП 3.1.18) Поле объекта не обнаружено ДоступенВыводНаДругихЯзыках в печатке

1. vechiy 35 07.10.21 16:30 Сейчас в теме
что нужно добавить во внешнюю печатную форму, чтобы избежать ошибки? На 3.1.14 работало
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user1278383 3 07.10.21 16:40 Сейчас в теме
Скорее всего "КоллекцияПечатныхФорм" заполняется не методом БСП, а вручную
3. user1079872 07.10.21 16:42 Сейчас в теме
реквизит называется ДоступенВыводНаДругихЯзыках. Применяется при выводе печатных форм на других языках.
4. dka80 20 07.10.21 17:23 Сейчас в теме
УправлениеПечатьюКлиентСервер.ИменаПолейКоллекцииПечатныхФорм()
5. Innuil 18.10.21 11:21 Сейчас в теме
У меня такая же ошибка во внешнем отчёте. Нашёл в коде формирование коллекции печатных форм и добавил это свойство:

	КоллекцияПечатныхФорм = Новый Массив;
	СтрокаКоллекции = Новый Структура("СинонимМакета,ИмяМакета,Экземпляров,ТабличныйДокумент,ПолныйПутьКМакету,ИмяФайлаПечатнойФормы,ОфисныеДокументы,ДоступенВыводНаДругихЯзыках");
	СтрокаКоллекции.СинонимМакета     = "Справка";
	СтрокаКоллекции.ИмяМакета         = "Справка";
	СтрокаКоллекции.Экземпляров       = 1;
	СтрокаКоллекции.ТабличныйДокумент = ДокументРезультат;
	СтрокаКоллекции.ПолныйПутьКМакету = "ВнешнийОтчет.Макеты.Справка";
	СтрокаКоллекции.ИмяФайлаПечатнойФормы = "";
	СтрокаКоллекции.ОфисныеДокументы = "";
	СтрокаКоллекции.ДоступенВыводНаДругихЯзыках = Ложь;
	КоллекцияПечатныхФорм.Добавить(СтрокаКоллекции);
Показать


Правда, вылезла другая ошибка, но это другая история.
rabota.v8.1c; +1 Ответить
6. Innuil 18.10.21 13:47 Сейчас в теме
(5) Хотя нет, это та же история. Вынес в расширение такой костыль:
&Вместо("ЯзыкиМакета")
Функция Расширение_ЗУП_ЯзыкиМакета(ПутьКМакету)

	ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
	НСтр("ru = 'Макет ""%1"" не существует. Операция прервана.'"), ПутьКМакету);
	ЧастиПути = СтрРазделить(ПутьКМакету, ".", Истина);
	Если ЧастиПути.Количество() <> 2 И ЧастиПути.Количество() <> 3 Тогда
		ВызватьИсключение ТекстОшибки;
	КонецЕсли;

	ИмяМакета = ЧастиПути[ЧастиПути.ВГраница()];
	ЧастиПути.Удалить(ЧастиПути.ВГраница());
	ИмяОбъекта = СтрСоединить(ЧастиПути, ".");

	ЯзыкиПечатныхФорм = ДоступныеЯзыки();
	Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл
		Если СтрЗаканчиваетсяНа(ИмяМакета, "_" + КодЯзыка) Тогда
			ИмяМакета = Лев(ИмяМакета, СтрДлина(ИмяМакета) - СтрДлина(КодЯзыка) - 1);
			Прервать;
		КонецЕсли;
	КонецЦикла;

	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	ПользовательскиеМакетыПечати.ИмяМакета КАК ИмяМакета
	|ИЗ
	|	РегистрСведений.ПользовательскиеМакетыПечати КАК ПользовательскиеМакетыПечати
	|ГДЕ
	|	ПользовательскиеМакетыПечати.Объект = &Объект
	|	И ПользовательскиеМакетыПечати.ИмяМакета ПОДОБНО &ШаблонИмениМакета
	|	И ПользовательскиеМакетыПечати.Использование";

	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.Параметры.Вставить("Объект", ИмяОбъекта);
	Запрос.Параметры.Вставить("ШаблонИмениМакета", ИмяМакета + "_%");

	Выборка = Запрос.Выполнить().Выбрать();
	НайденныеЯзыки = Новый Соответствие;

	Пока Выборка.Следующий() Цикл
		Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл
			КодЛокализации = КодЯзыка;
			Если СтрЗаканчиваетсяНа(Выборка.ИмяМакета, "_" + КодЛокализации) Тогда
				НайденныеЯзыки.Вставить(КодЛокализации, Истина);
				Продолжить;
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;

	ИменаПоиска = Новый Соответствие;
	Для Каждого КодЯзыка Из ДополнительныеЯзыкиПечатныхФорм() Цикл
		ИменаПоиска.Вставить(КодЯзыка, ИмяМакета + "_" + КодЯзыка);
	КонецЦикла;

	ЭтоОбщийМакет = СтрРазделить(ИмяОбъекта, ".").Количество() = 1;

	КоллекцияМакетов = Метаданные.ОбщиеМакеты;
	Если Не ЭтоОбщийМакет Тогда
		//И.Ю. Парфёнов. 18.10.2021 Начало.
		Если ЧастиПути[0] = "ВнешнийОтчет" Тогда
			ИменаПоиска.Очистить();
		Иначе
			ОбъектМетаданных	= Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
			Если ОбъектМетаданных = Неопределено Тогда
				ВызватьИсключение ТекстОшибки;
			КонецЕсли;
			КоллекцияМакетов = ОбъектМетаданных.Макеты;
		КонецЕсли; 
		//ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяОбъекта);
		//Если ОбъектМетаданных = Неопределено Тогда
		//	ВызватьИсключение ТекстОшибки;
		//КонецЕсли;
		//КоллекцияМакетов = ОбъектМетаданных.Макеты;
		//И.Ю. Парфёнов. 18.10.2021 Завершение. 
	КонецЕсли;

	Для Каждого Элемент Из ИменаПоиска Цикл
		ИмяПоиска = Элемент.Значение;
		КодЯзыка = Элемент.Ключ;
		Если КоллекцияМакетов.Найти(ИмяПоиска) <> Неопределено Тогда
			НайденныеЯзыки.Вставить(КодЯзыка, Истина);
		КонецЕсли;
	КонецЦикла;

	Для Каждого КодЯзыка Из СтандартныеПодсистемыСервер.ЯзыкиКонфигурации() Цикл
		НайденныеЯзыки.Вставить(КодЯзыка, Истина);
	КонецЦикла;

	Результат = Новый Массив;
	Для Каждого КодЯзыка Из ЯзыкиПечатныхФорм Цикл
		Если НайденныеЯзыки[КодЯзыка] <> Неопределено Тогда
			Результат.Добавить(КодЯзыка);
		КонецЕсли;
	КонецЦикла;

	Возврат Результат;

КонецФункции
Показать


Думаю, в следующих патчах-релизах 1С сделает как правильно и универсально.

Сама функция сидит в УправлениеПечатьюМультиязычность
7. MikeStav 27 26.04.22 22:58 Сейчас в теме
ДОброго времени столкнулся с аналогичной проблемой решилось все очень просто

В процедуре Печать внешней печатной формы добавил колонку в коллекцию печатных форм, все заработало.

КоллекцияПечатныхФорм.Колонки.Добавить("ДоступенВыводНаДругихЯзыках", Новый ОписаниеТипов("Булево"));
user951430; +1 Ответить
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день