Уже сыпятся все печатные формы с подписью и печатью, начиная с релиза БП 3.0.148. Осторожно обновляйтесь, ребята.
Внимание! Порядок вывода факсимиле в печатные формы
Изменен порядок вывода факсимиле в печатные формы. Начиная с 01.01.2025 не будет поддерживаться совместимость для внешних форм, которые используют процедуру УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью (). Если в конфигурации есть доработанные печатные формы или внешние печатные формы, которые используют эту процедуру, то эти печатные формы необходимо переделать. Требуется удалить вызов этой процедуры.
Оригинал: https://v8.1c.ru/news/vyshla-novaya-versiya-3-0-148-7-tipovoy-konfiguratsii-bukhgalteriya-nekommercheskoy-organizatsii-bazovaya.htm
Ты уже во всех темах со своим нытьем отметился или ещё нет?
А ведь как раньше хорошо было! Сидишь, ничего не делаешь, зарплату получаешь. А тут раз, и что-то делать надо. 1С изменения вносят, за которым следить необходимо. Клиенты оборзели, сроки какие-то выставляют...
Мне было достаточно просто убрать строчку УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью() из своей внешней печатной формы. При этом факсимиле и печать продолжают выводится, их вывод в табличный документ просто перенесли.
При этом факсимиле и печать продолжают выводится, их вывод в табличный документ просто перенесли
Правда?
Ну если просто выводить на экран через общую форму "ПечатьДокументов", то да (и то не всегда)
А если у людей была обработка по массовой рассылке, печати, сохранении печатных форм?
Эти люди сейчас который раз уже достали желто-красную куклу вуду и колят в неё иголками.
Ну черт возьми, был какой-никакой API, который работал. Все просто -- вот макет, вот ссылка на документ, поставьте пожалуйста подписи и печати.
Нет, давайте его похерим, а вместо него дадим другой, который работает не скажу как.
И во всех макетах давайте переименуем картинки, чтобы люди заново рыли, как теперь подписи называются.
А сделаем мы это не скажем зачем, нам же захотелось.
Сидите и разбирайтесь сами, нешто вы не специалисты?
Первую процедуру надо вызывать, ОбъектыПечати -- список значений
Процедура ДобавитьПодписьИПечать(ТабДокумент, ОбъектыПечати) Экспорт
ПараметрыВывода = Новый Структура;
ПараметрыВывода.Вставить("ДоступнаПечатьПоКомплектно", Ложь);
ПараметрыВывода.Вставить("ЗаголовокФормы", "");
ПараметрыВывода.Вставить("ИмяФайлаПоВходящимНомерам", Истина);
ПараметрыВывода.Вставить("КодЯзыка", "ru");
ПараметрыВывода.Вставить("ПараметрыОтправки", Новый Структура("Получатель, Текст, Тема", Неопределено, "", ""));
ПодписиИПечати = ПодписиИПечатиТабличногоДокумента(ТабДокумент);
ПодписиИПечатиОбластей = УправлениеПечатью.ПодписиИПечатиОбластей(ОбъектыПечати);
ОбработанныеТабличныеДокументы = Новый Соответствие;
РисункиТабличногоДокумента = ПодписиИПечати;
Для Каждого СохраненныйРисунок Из РисункиТабличногоДокумента Цикл
НовыйРисунок = ТабДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
ЗаполнитьЗначенияСвойств(НовыйРисунок, СохраненныйРисунок);
НовыйРисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
КонецЦикла;
ДанныеПечатиРисунковТабличногоДокумента = УправлениеПечатью.ПодписиИПечатиТабличногоДокумента(ОбъектыПечати, ТабДокумент, "ru");
Для Каждого ПодписиИПечатиОбласти Из ПодписиИПечатиОбластей Цикл
ИмяОбласти = ПодписиИПечатиОбласти.Ключ;
Если ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Неопределено Тогда
ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Новый Соответствие();
КонецЕсли;
Для Каждого Элемент Из ПодписиИПечатиОбласти.Значение Цикл
ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти][Элемент.Ключ] = Элемент.Значение;
КонецЦикла;
КонецЦикла;
УправлениеПечатью.ДобавитьПодписьИПечать(ТабДокумент, ДанныеПечатиРисунковТабличногоДокумента);
КонецПроцедуры
Функция ПодписиИПечатиТабличногоДокумента(ТабличныйДокумент) Экспорт
РисункиТабличногоДокумента = Новый Массив;
Для Каждого Рисунок Из ТабличныйДокумент.Рисунки Цикл
Если УправлениеПечатью.ЭтоПодписьИлиПечать(Рисунок) Тогда
ОписаниеРисунка = Новый Структура("Лево,Верх,Ширина,Высота,Картинка,Владелец,ЦветФона,Имя,Линия,
|РазмерКартинки,ВертикальноеПоложение,ГоризонтальноеПоложение");
ЗаполнитьЗначенияСвойств(ОписаниеРисунка, Рисунок);
РисункиТабличногоДокумента.Добавить(ОписаниеРисунка);
КонецЕсли;
КонецЦикла;
Возврат РисункиТабличногоДокумента;
КонецФункции
(14) все равно спотыкается :-(... даже Рисунки у табличного документа ПУСТЫ.... видимо Объекты печати некоректно сформированы.... НО без подписей АКТ выводится :(((
Для Каждого Элемент Из ПодписиИПечатиОбласти.Значение Цикл
ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти][Элемент.Ключ] = Элемент.Значение;
КонецЦикла;
(14)благодарю за наводку, завелось, делала новый список значений, который заполняла так - СписокЗначенийОбъектов.Добавить(Выборка.Ссылка,"Документ_1");
ну и затем скармливала в ДобавитьПодписьИПечать(ТабличныйДокумент,СписокЗначенийОбъектов);
Ну это я насобирал в типовой форме ПечатьДокументов
Они из общих модулей взяли и туда все засунули, чтобы никто не мог снаружи вызвать.
А у нас в начале месяца биллинг, рассылка, все дела. Все были просто счастливы. Вариантов два: захардкодить подпись и печать прямо в макеты, потом разбираться, или в авральном режиме костылить обертку.
Вот накостылил.
(18)короче.... ето что-то с чем то.... получился костыль путем перетаскивания и вызова процедуры
Процедура УправлениеКартинкойФаксимиле(РабочаяПечатнаяФорма, МассивИменПоказателей, Добавить = Истина)
МассивИменОбластей = Новый Массив;
Для Каждого ОбластьМакета ИЗ РабочаяПечатнаяФорма.Области Цикл
Если СтрНайти(ОбластьМакета.Имя, "РасшифровкаФаксимилеМакета") <> 0 Тогда
МассивИменОбластей.Добавить(ОбластьМакета.Имя);
КонецЕсли;
КонецЦикла;
ЦветФонаБелый = Новый Цвет(255,255,255);
ЦветФонаАвто = Новый Цвет();
Для Каждого ИмяОбластиМакета ИЗ МассивИменОбластей Цикл
ОбластьМакета = РабочаяПечатнаяФорма.Области[ИмяОбластиМакета];
Если НЕ ЭтоАдресВременногоХранилища(ОбластьМакета.Расшифровка) Тогда
Продолжить;
КонецЕсли;
ДанныеФаксимиле = ПолучитьИзВременногоХранилища(ОбластьМакета.Расшифровка);
Если ТипЗнч(ДанныеФаксимиле) <> Тип("Структура") Тогда
Продолжить;
КонецЕсли;
Для Каждого ЗначениеПоказателя ИЗ МассивИменПоказателей Цикл
Если НЕ ДанныеФаксимиле.Свойство(ЗначениеПоказателя) Тогда
Продолжить;
КонецЕсли;
СтруктураЗначений = ДанныеФаксимиле[ЗначениеПоказателя];
ИмяОбластиФаксимиле = ЗначениеПоказателя + "_" + СтруктураЗначений.ОбластьВладелец;
АдресКартинки = СтруктураЗначений.ДанныеКартинки;
Если Добавить И ЗначениеЗаполнено(АдресКартинки) Тогда
ОбластьКартинки = РабочаяПечатнаяФорма.Области[СтруктураЗначений.ОбластьВладелец];
РисунокТабличногоДокумента = РабочаяПечатнаяФорма.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
РисунокТабличногоДокумента.Имя = ИмяОбластиФаксимиле;
РисунокТабличногоДокумента.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
РисунокТабличногоДокумента.РазмерКартинки = РазмерКартинки.Пропорционально;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Картинка = ПолучитьИзВременногоХранилища(АдресКартинки);
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Расположить(ОбластьКартинки);
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Верх = СтруктураЗначений.Верх;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Лево = СтруктураЗначений.Лево;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Высота = СтруктураЗначений.Высота;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Ширина = СтруктураЗначений.Ширина;
Если СтрНайти(РисунокТабличногоДокумента.Имя, "ФаксимильнаяПечать") > 0 Тогда
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].ЦветФона = ЦветФонаБелый;
Иначе
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].ЦветФона = ЦветФонаАвто;
КонецЕсли;
Иначе
Если РабочаяПечатнаяФорма.Области.Найти(ИмяОбластиФаксимиле) <> Неопределено Тогда
РабочаяПечатнаяФорма.Рисунки.Удалить(ИмяОбластиФаксимиле);
КонецЕсли;
КонецЕсли;
КонецЦикла
КонецЦикла;
КонецПроцедуры
МассивИменОбластей = Новый Массив;
Для Каждого ОбластьМакета ИЗ РабочаяПечатнаяФорма.Области Цикл
Если СтрНайти(ОбластьМакета.Имя, "РасшифровкаФаксимилеМакета") <> 0 Тогда
МассивИменОбластей.Добавить(ОбластьМакета.Имя);
КонецЕсли;
КонецЦикла;
ЦветФонаБелый = Новый Цвет(255,255,255);
ЦветФонаАвто = Новый Цвет();
Для Каждого ИмяОбластиМакета ИЗ МассивИменОбластей Цикл
ОбластьМакета = РабочаяПечатнаяФорма.Области[ИмяОбластиМакета];
Если НЕ ЭтоАдресВременногоХранилища(ОбластьМакета.Расшифровка) Тогда
Продолжить;
КонецЕсли;
ДанныеФаксимиле = ПолучитьИзВременногоХранилища(ОбластьМакета.Расшифровка);
Если ТипЗнч(ДанныеФаксимиле) <> Тип("Структура") Тогда
Продолжить;
КонецЕсли;
Для Каждого ЗначениеПоказателя ИЗ МассивИменПоказателей Цикл
Если НЕ ДанныеФаксимиле.Свойство(ЗначениеПоказателя) Тогда
Продолжить;
КонецЕсли;
РисунокТабличногоДокумента = РабочаяПечатнаяФорма.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
РисунокТабличногоДокумента.Имя = ИмяОбластиФаксимиле;
РисунокТабличногоДокумента.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
РисунокТабличногоДокумента.РазмерКартинки = РазмерКартинки.Пропорционально;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Картинка = ПолучитьИзВременногоХранилища(АдресКартинки);
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Расположить(ОбластьКартинки);
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Верх = СтруктураЗначений.Верх;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Лево = СтруктураЗначений.Лево;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Высота = СтруктураЗначений.Высота;
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].Ширина = СтруктураЗначений.Ширина;
Если СтрНайти(РисунокТабличногоДокумента.Имя, "ФаксимильнаяПечать") > 0 Тогда
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].ЦветФона = ЦветФонаБелый;
Иначе
РабочаяПечатнаяФорма.Рисунки[РисунокТабличногоДокумента.Имя].ЦветФона = ЦветФонаАвто;
КонецЕсли;
Иначе
Если РабочаяПечатнаяФорма.Области.Найти(ИмяОбластиФаксимиле) <> Неопределено Тогда
РабочаяПечатнаяФорма.Рисунки.Удалить(ИмяОбластиФаксимиле);
КонецЕсли;
КонецЕсли;
КонецЦикла
КонецЦикла;
КонецПроцедуры
Показать
Гхм, а в чем ее смысл? у меня в областях макета нет имен РасшифровкаФаксимилеМакета, соответственно и все остальное не отрабатывает
20.
VladimirMezentsev
02.05.24 04:40 Сейчас в теме
Для БП 3.0 добавил следующее
ПодписиИПечатиОбластей = УправлениеПечатью.ПодписиИПечатиОбластей(ОбъектыПечати);
ДанныеПечатиРисунковТабличногоДокумента = УправлениеПечатью.ПодписиИПечатиТабличногоДокумента(ОбъектыПечати, ТабДок, );
Для Каждого ПодписиИПечатиОбласти Из ПодписиИПечатиОбластей Цикл
ИмяОбласти = ПодписиИПечатиОбласти.Ключ;
Если ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Неопределено Тогда
ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти] = Новый Соответствие();
КонецЕсли;
Для Каждого Элемент Из ПодписиИПечатиОбласти.Значение Цикл
ДанныеПечатиРисунковТабличногоДокумента[ИмяОбласти][Элемент.Ключ] = Элемент.Значение;
КонецЦикла;
КонецЦикла;
УправлениеПечатью.ДобавитьПодписьИПечать(ТабДок, ДанныеПечатиРисунковТабличногоДокумента);