Как сделать при сохранении файла макета в 1с определённое имя?

1. j.r.r 67 15.12.22 09:29 Сейчас в теме
Доброго времени суток!

Создал печатную форму для бухгалтерии (дополнительное соглашение и спецификация). Нужно их сохранить на компьютер из 1с или отправить по почте. Но имя файла он берёт, как имя обработки. А как сделать так, чтобы имя он взял из данных макеты? А именно имя контрагента и название файла. Что-то типа: Спецификация ООО Организация.pdf
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. glek 119 15.12.22 09:56 Сейчас в теме
(1) Попробуйте поиграться с Табличный документ.ИспользуемоеИмяФайла
4. starik-2005 3166 15.12.22 10:17 Сейчас в теме
(3) Там не раскрыт сам механизм. Я как-то пробовал, но используемое имя файла не работает.
Но если все обыграть "вручную", то "табличныйдокумент.записать(типпдф, имяпдф)" даст нужный эффект.
5. soft_wind 15.12.22 12:15 Сейчас в теме
Если у вас в дополнительной печатной форме используется такая процедура Печати (см. код)
то попробуйте такой способ

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СборочныйЛистОмск") Тогда

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СборочныйЛист",
НСтр("ru = 'Сборочный лист'"),
СформироватьПечатнуюФормуСборочногоЛиста(СтруктураТипов, ОбъектыПечати));

лкДок = МассивОбъектов[0];
//ИмяФайла - можно сформировать по нужным правилам
ИмяФайла = лкДок.Метаданные().Синоним + " № " + лкДок.Номер + " от " + Лев(лкДок.Дата,10);

КоллекцияПечатныхФорм[КоллекцияПечатныхФорм.Количество()-1].ИмяФайлаПечатнойФормы = ИмяФайла;

КонецЕсли;

КонецПроцедуры // Печать()

Показать
6. NatalyaVP 15.12.22 13:43 Сейчас в теме
ТабДок.Показать("Сотрудники_"+текст1+"_" +формат(дата1,"ДФ=dd.MM.yyyy") + "");
7. zavsom 109 23.11.23 17:38 Сейчас в теме
для одного документа легко:

ИмяСохранения = Строка(МассивОбъектов[0].Контрагент.НаименованиеПолное)+" "+ НСтр("ru = 'Акт сверки взаиморасчетов'");

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктСверки", ИмяСохранения,
ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати, ПараметрыПечати), , "Документ.АктСверкиВзаиморасчетов.ПФ_MXL_АктСверки");

но вот что делать если пользователь выделит несколько документов и сохранит их в каталог? тогда при таком коде они лягут с наименованием первого клиента...
8. zavsom 109 24.11.23 09:32 Сейчас в теме
// Процедура формирует имя сохраняемого файла путем формирования представления документа и удаления из него символов "точка"
Процедура УстановитьИмяСохраняемогоФайла(ОбъектыПечати, КоллекцияПечатныхФорм, ИмяФайлаПоВходящимНомерам)

Если НЕ КоллекцияПечатныхФорм.Количество() = 1 Тогда
Возврат;
КонецЕсли;

ПечатнаяФорма = КоллекцияПечатныхФорм[0];
Если ЗначениеЗаполнено(ПечатнаяФорма.ИмяФайлаПечатнойФормы) Тогда
// Имя файла уже задано ранее, не меняем его.
Возврат;
КонецЕсли;

ИмяФайлаПечатнойФормы = Новый Соответствие;

Для Каждого ОбъектПечати Из ОбъектыПечати Цикл

ПредставлениеДокументаДляПечатнойФормы = СформироватьЗаголовокПервичногоДокумента(
ОбъектПечати.Значение, ПечатнаяФорма.СинонимМакета, ИмяФайлаПоВходящимНомерам);

ПредставлениеДокументаДляПечатнойФормы = СтрЗаменить(ПредставлениеДокументаДляПечатнойФормы, ".", "");

//*** ШО 2023-11-23
Если ОбъектПечати.Значение.Ссылка.Метаданные().Имя = "АктСверкиВзаиморасчетов" Тогда
ПредставлениеДокументаДляПечатнойФормы = ОбъектПечати.Значение.Контрагент.Наименование + " " + ПредставлениеДокументаДляПечатнойФормы;
КонецЕсли;
//*** шо 2023-11-23

ИмяФайлаПечатнойФормы.Вставить(ОбъектПечати.Значение, ПредставлениеДокументаДляПечатнойФормы);

КонецЦикла;

ПечатнаяФорма.ИмяФайлаПечатнойФормы = ИмяФайлаПечатнойФормы;

КонецПроцедуры


В БП 83 общий модуль общегоназначенияБП
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот