Версия для печати темы (https://pro1c.org.ua/index.php?s=6e692742981f7b79b55c2adb96adbc76&showtopic=67266)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Не видит область на макете
Автор: burza 07.06.23, 11:14
нужно зделать штрихование документов в УНФ. вот что есть. в обработчик не попадает область макета где штрихкод,немогу понять что не так.
Модуль ШтрихкодированиеПечатныхФорм Если Макет.Области.Найти("ОбластьШтрихкода") <> Неопределено Тогда
// Проверить картинку штрихкода в области "Штрихкод"
ОбластьМакетаШтрихкод = Макет.ПолучитьОбласть("ОбластьШтрихкода");
Если ЕстьКартинкаШтрихкодаВОбластиМакета(ОбластьМакетаШтрихкод) Тогда
ОбластьМакета = ОбластьМакетаШтрихкод;
ВыводитьШтрихкодВОтдельнуюОбласть = Истина;
Иначе
Возврат;
КонецЕсли;
Иначе
Возврат;
КонецЕсли;
Ну и модульменеджера из обработки где макет: модульменеджера из обработкиФункция СформироватьПФ(ОписаниеПечатнойФормы, ДанныеОбъектовПечати, ОбъектыПечати) Экспорт
Перем ПервыйДокумент, НомерСтрокиНачало, Ошибки;
Макет = УправлениеПечатью.МакетПечатнойФормы(ОписаниеПечатнойФормы.ПолныйПутьКМакету);
КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм();
Макет.КодЯзыкаМакета = КодЯзыкаПечать;
ТабличныйДокумент = ОписаниеПечатнойФормы.ТабличныйДокумент;
ДанныеПечати = Новый Структура;
ЕстьТЧЗапасы = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаЗапасы") <> Неопределено);
ЕстьТЧМатериалы = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаМатериалы") <> Неопределено);
ЕстьПоложениеСклада = (ДанныеОбъектовПечати.Колонки.Найти("ПоложениеСклада") <> Неопределено);
Для каждого ДанныеОбъекта Из ДанныеОбъектовПечати Цикл
СкладВШапке = (НЕ ЕстьПоложениеСклада ИЛИ ДанныеОбъекта.ПоложениеСклада<>Перечисления.ПоложениеРеквизитаНаФорме.ВТабличнойЧасти);
ПечатьДокументовУНФ.ПередНачаломФормированияДокумента(ТабличныйДокумент, ПервыйДокумент, НомерСтрокиНачало, ДанныеПечати);
МассивОбластейМакета = Новый Массив;
МассивОбластейМакета.Добавить("Заголовок");
//{[+](фрагмент ДОБАВЛЕН), АСВ 08.09.2020 19:16:01
Попытка
СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(ДанныеОбъекта.Контрагент, ДанныеОбъекта.ДатаДокумента, , , КодЯзыкаПечать);
ДолгКлиента = ПолучитьСуммуДолга(ДанныеОбъекта.Контрагент,ДанныеОбъекта.ДатаДокумента,0,КодЯзыкаПечать);
печНакладные = ПолучитьНакладныеТекущегоДня(ДанныеОбъекта.Контрагент,ДанныеОбъекта.ДатаДокумента,ДанныеОбъекта.Склад,ДанныеОбъекта.Ссылка);
МассивОбластейМакета.Добавить("Покупатель");
МассивОбластейМакета.Добавить("НакладныеТекущегоДня");
Исключение
КонецПопытки;
МассивОбластейМакета.Добавить("Комментарий");
//}АСВ 08.09.2020 19:16:01
Если СкладВШапке Тогда
МассивОбластейМакета.Добавить("Склад");
КонецЕсли;
МассивОбластейМакета.Добавить("ВремяПечати");
НомерДокумента = ПечатьДокументовУНФ.ПолучитьНомерНаПечатьСУчетомДатыДокумента(ДанныеОбъекта.ДатаДокумента, ДанныеОбъекта.Номер, ДанныеОбъекта.Префикс);
ТекстЗаголовка = ДанныеОбъекта.ПредставлениеРегистратора + " № " + НомерДокумента + НСтр("ru=' от ';uk=' від '", КодЯзыкаПечать) + Формат(ДанныеОбъекта.ДатаДокумента, "Л="+КодЯзыкаПечать+"; ДЛФ=DD");
ДанныеПечати.Вставить("ТекстЗаголовка", ТекстЗаголовка);
ДанныеПечати.Вставить("ПредставлениеСклада", ДанныеОбъекта.ПредставлениеСклада);
//{[+](фрагмент ДОБАВЛЕН), АСВ 08.09.2020 19:17:47
Попытка
ДанныеПечати.Вставить("печКонтрагент",ДанныеОбъекта.Контрагент.Наименование);
ДанныеПечати.Вставить("печТелефоны",СведенияОбКонтрагенте.Телефоны);
ДанныеПечати.Вставить("печФизАдресКонтрагент",СведенияОбКонтрагенте.ФактическийАдрес);
ДанныеПечати.Вставить("ДолгКлиента",ДолгКлиента);
Исключение
КонецПопытки;
ДанныеПечати.Вставить("тКомментарий",ДанныеОбъекта.Ссылка.Комментарий);
Если печНакладные <> "" Тогда
ДанныеПечати.Вставить("печНакладные",печНакладные);
ДанныеПечати.Вставить("текДень",Формат(ДанныеОбъекта.ДатаДокумента, "ДЛФ=D"));
Иначе
МассивОбластейМакета.Удалить(МассивОбластейМакета.Найти("НакладныеТекущегоДня"));
КонецЕсли;
//}АСВ 08.09.2020 19:17:47
Если СкладВШапке И ПолучитьФункциональнуюОпцию("УчетПоЯчейкам") Тогда
МассивОбластейМакета.Вставить(2, "Ячейка");
ДанныеПечати.Вставить("ПредставлениеЯчейки", ДанныеОбъекта.ПредставлениеЯчейки);
КонецЕсли;
ВремяПечати = НСтр("ru='Дата и время печати: ';uk='Дата і час друку: '", КодЯзыкаПечать) + ТекущаяДатаСеанса() + НСтр("ru='. Пользователь: ';uk='. Користувач: '", КодЯзыкаПечать) + Пользователи.АвторизованныйПользователь();
ДанныеПечати.Вставить("ВремяПечати", ВремяПечати);
Для каждого ИмяОбласти Из МассивОбластейМакета Цикл
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, ИмяОбласти, "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеОбъекта.Ссылка);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
КонецЦикла;
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "Строка", "", Ошибки);
ОбластьМакетаШапка = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "ШапкаТаблицы", "", Ошибки);
Если ОбластьМакета <> Неопределено
И ОбластьМакетаШапка <> Неопределено Тогда
ОбластьМакетаИтого = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "Итого", "", Ошибки);
ТаблицаСерийныеНомера = ДанныеОбъекта.ТаблицаСерийныеНомера;
ПараметрыНоменклатуры = Новый Структура;
Если ЕстьТЧЗапасы Тогда
ДанныеПечати.Вставить("ТипНоменклатурыТаблицы", Нстр("ru='Запасы';uk='Запаси'", КодЯзыкаПечать));
ОбластьМакетаШапка.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакетаШапка);
Для каждого СтрокаТаблицыЗапасы Из ДанныеОбъекта.ТаблицаЗапасы Цикл
Если НЕ СтрокаТаблицыЗапасы.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Запас Тогда
Продолжить;
КонецЕсли;
Если СтрокаТаблицыЗапасы.Количество = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаТаблицыЗапасы, ДанныеПечати, ПараметрыНоменклатуры, ТаблицаСерийныеНомера);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ОбластьМакета.Параметры.ТоварнаяГруппа = СокрЛП(СтрокаТаблицыЗапасы.РодительГруппы)+"; "+СокрЛП(СтрокаТаблицыЗапасы.Группа);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
Если ОбластьМакетаИтого <> Неопределено Тогда
ТабличныйДокумент.Вывести(ОбластьМакетаИтого);
КонецЕсли;
КонецЕсли;
Если ЕстьТЧМатериалы Тогда
ДанныеПечати.Вставить("ТипНоменклатурыТаблицы", Нстр("ru='Материалы';uk='Матеріали'", КодЯзыкаПечать));
ОбластьМакетаШапка.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакетаШапка);
Для каждого СтрокаТаблицыМатериалов Из ДанныеОбъекта.ТаблицаМатериалы Цикл
Если НЕ СтрокаТаблицыМатериалов.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Запас Тогда
Продолжить;
КонецЕсли;
ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаТаблицыМатериалов, ДанныеПечати, ПараметрыНоменклатуры, ТаблицаСерийныеНомера);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
Если ОбластьМакетаИтого <> Неопределено Тогда
ТабличныйДокумент.Вывести(ОбластьМакетаИтого);
КонецЕсли;
КонецЕсли;
КонецЕсли;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеОбъекта.Ссылка);
КонецЦикла;
//{[+](фрагмент ДОБАВЛЕН), АСВ 03.02.2021 22:05:47
ТабличныйДокумент.ТолькоПросмотр = Истина;
ТабличныйДокумент.Защита = Истина;
//}АСВ 03.02.2021 22:05:47
Возврат ТабличныйДокумент;
Автор: alex-l1904 07.06.23, 11:26
burza @ Сегодня, 12:14
,
можна ще код цього ПечатьДокументовУНФ.ПолучитьОбластьБезопасно( ?
burza @ Сегодня, 12:14
,
треба додати ОбластьШтрихкода в МассивОбластейМакета
Автор: burza 07.06.23, 11:36
alex-l1904 @ Сегодня, 12:26
,
Функция ПолучитьОбластьБезопасно(Макет, ИмяОбласти, ПредставлениеОбласти, Ошибки) Экспорт
Перем ОбластьМакета;
Если Макет.Области.Найти(ИмяОбласти) = Неопределено Тогда
ТекстСообщения = НСтр("ru='ВНИМАНИЕ! Не обнаружена область макета %1. Возможно используется пользовательский макет.';uk='УВАГА! Не виявлено ділянку макета %1. Можливо використовується користувацький макет.'");
ТекстСообщения = СтрШаблон(ТекстСообщения, ?(ПустаяСтрока(ПредставлениеОбласти), ИмяОбласти, ПредставлениеОбласти));
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, , ТекстСообщения, Неопределено);
Иначе
ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти);
КонецЕсли;
Возврат ОбластьМакета;
КонецФункции
Добавлял рядом с Заголовком , ничего. Или я не то делаю
МассивОбластейМакета = Новый Массив;
МассивОбластейМакета.Добавить("Заголовок");
МассивОбластейМакета.Добавить("ОбластьШтрихкода");
уже голову сломал, вроде долно работать а нет(
burza @ Сегодня, 12:29
,
Если ставить точкуОстановки то в макете просто области нету. вот найти и не может. а почему ее нету
Макет = УправлениеПечатью.МакетПечатнойФормы(ОписаниеПечатнойФормы.ПолныйПутьКМакету);
* КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм();
Автор: alex-l1904 07.06.23, 12:38
burza @ Сегодня, 12:36
,
перевіряйте який саме макет в
Макет = УправлениеПечатью.МакетПечатнойФормы(ОписаниеПечатнойФормы.ПолныйПутьКМакету)
(схоже що там інший макет...)
Автор: denis84 07.06.23, 14:21
burza,
а сама картинка штрихкода не выходит за границы областиштрихкода? когда-то встречал такой прикол с подписями и печатью в документе
Автор: burza 07.06.23, 15:13
denis84 @ Сегодня, 15:21
,
нет, ругается что нету области штрихкода
Никто ничего не подскажет идеи кончились. Странно оно всё, должно работать а фиг))
Автор: denis84 07.06.23, 15:15
burza @ Сегодня, 15:53
,
уточните это Управление небольшой фирмой для Украины, редакция 1.6 или выше. чтоб я мог у себя глянуть.
Ну вот по тексту модуля не вижу где вы получаете область штрихкода?
Автор: alex-l1904 07.06.23, 15:37
Цитата(burza @ 07.06.23, 12:36)
НСтр("ru='ВНИМАНИЕ! Не обнаружена область макета %1. Возможно используется пользовательский макет.';uk='УВАГА! Не виявлено ділянку макета %1. Можливо використовується користувацький макет.'");
оце у вас ? так ?
Автор: burza 07.06.23, 15:37
denis84 @ Сегодня, 16:15
,
да это Управление небольшой фирмой для Украины, редакция 1.6 но модуль штрихование документов взял в 1.6.24.152
Автор: alex-l1904 07.06.23, 15:47
alex-l1904 @ Сегодня, 16:37
,
в отладчику пошагово перевірте
УправлениеПечатью.МакетПечатнойФормы(
можливо макет из конфігурації заміняється користувацьким
Автор: fly 08.06.23, 9:22
Администрирование -> Макеты печатных форм -> если есть, удаляете
или Регистр сведений
ПользовательскиеМакетыПечати
ищите название макета - удаляете или ставите использование = ЛОжь
УправлениеПечатью
Функция МакетПечатнойФормы(ПолныйПутьКМакету)
сначало ищет пользовательские макеты, потом идет уже к объектам конфигурации...
Автор: burza 08.06.23, 9:37
fly @ Сегодня, 10:22
,
да я вот только что хотел писать, да нашел, всётаки были пользовательский макет) его редактировали
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua