Как сделать при сохранении файла макета в 1с определённое имя?
Доброго времени суток!
Создал печатную форму для бухгалтерии (дополнительное соглашение и спецификация). Нужно их сохранить на компьютер из 1с или отправить по почте. Но имя файла он берёт, как имя обработки. А как сделать так, чтобы имя он взял из данных макеты? А именно имя контрагента и название файла. Что-то типа: Спецификация ООО Организация.pdf
Создал печатную форму для бухгалтерии (дополнительное соглашение и спецификация). Нужно их сохранить на компьютер из 1с или отправить по почте. Но имя файла он берёт, как имя обработки. А как сделать так, чтобы имя он взял из данных макеты? А именно имя контрагента и название файла. Что-то типа: Спецификация ООО Организация.pdf
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если у вас в дополнительной печатной форме используется такая процедура Печати (см. код)
то попробуйте такой способ
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СборочныйЛистОмск") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СборочныйЛист",
НСтр("ru = 'Сборочный лист'"),
СформироватьПечатнуюФормуСборочногоЛиста(СтруктураТипов, ОбъектыПечати));
лкДок = МассивОбъектов[0];
//ИмяФайла - можно сформировать по нужным правилам
ИмяФайла = лкДок.Метаданные().Синоним + " № " + лкДок.Номер + " от " + Лев(лкДок.Дата,10);
КоллекцияПечатныхФорм[КоллекцияПечатныхФорм.Количество()-1].ИмяФайлаПечатнойФормы = ИмяФайла;
КонецЕсли;
КонецПроцедуры // Печать()
Показать
то попробуйте такой способ
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
СтруктураТипов = ОбщегоНазначенияУТ.СоответствиеМассивовПоТипамОбъектов(МассивОбъектов);
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СборочныйЛистОмск") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СборочныйЛист",
НСтр("ru = 'Сборочный лист'"),
СформироватьПечатнуюФормуСборочногоЛиста(СтруктураТипов, ОбъектыПечати));
лкДок = МассивОбъектов[0];
//ИмяФайла - можно сформировать по нужным правилам
ИмяФайла = лкДок.Метаданные().Синоним + " № " + лкДок.Номер + " от " + Лев(лкДок.Дата,10);
КоллекцияПечатныхФорм[КоллекцияПечатныхФорм.Количество()-1].ИмяФайлаПечатнойФормы = ИмяФайла;
КонецЕсли;
КонецПроцедуры // Печать()
для одного документа легко:
ИмяСохранения = Строка(МассивОбъектов[0].Контрагент.НаименованиеПолное)+" "+ НСтр("ru = 'Акт сверки взаиморасчетов'");
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктСверки", ИмяСохранения,
ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати, ПараметрыПечати), , "Документ.АктСверкиВзаиморасчетов.ПФ_MXL_АктСверки");
но вот что делать если пользователь выделит несколько документов и сохранит их в каталог? тогда при таком коде они лягут с наименованием первого клиента...
ИмяСохранения = Строка(МассивОбъектов[0].Контрагент.НаименованиеПолное)+" "+ НСтр("ru = 'Акт сверки взаиморасчетов'");
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктСверки", ИмяСохранения,
ПечатьАктаСверки(МассивОбъектов, ОбъектыПечати, ПараметрыПечати), , "Документ.АктСверкиВзаиморасчетов.ПФ_MXL_АктСверки");
но вот что делать если пользователь выделит несколько документов и сохранит их в каталог? тогда при таком коде они лягут с наименованием первого клиента...
// Процедура формирует имя сохраняемого файла путем формирования представления документа и удаления из него символов "точка"
Процедура УстановитьИмяСохраняемогоФайла(ОбъектыПечати, КоллекцияПечатныхФорм, ИмяФайлаПоВходящимНомерам)
Если НЕ КоллекцияПечатныхФорм.Количество() = 1 Тогда
Возврат;
КонецЕсли;
ПечатнаяФорма = КоллекцияПечатныхФорм[0];
Если ЗначениеЗаполнено(ПечатнаяФорма.ИмяФайлаПечатнойФормы) Тогда
// Имя файла уже задано ранее, не меняем его.
Возврат;
КонецЕсли;
ИмяФайлаПечатнойФормы = Новый Соответствие;
Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
ПредставлениеДокументаДляПечатнойФормы = СформироватьЗаголовокПервичногоДокумента(
ОбъектПечати.Значение, ПечатнаяФорма.СинонимМакета, ИмяФайлаПоВходящимНомерам);
ПредставлениеДокументаДляПечатнойФормы = СтрЗаменить(ПредставлениеДокументаДляПечатнойФормы, ".", "");
//*** ШО 2023-11-23
Если ОбъектПечати.Значение.Ссылка.Метаданные().Имя = "АктСверкиВзаиморасчетов" Тогда
ПредставлениеДокументаДляПечатнойФормы = ОбъектПечати.Значение.Контрагент.Наименование + " " + ПредставлениеДокументаДляПечатнойФормы;
КонецЕсли;
//*** шо 2023-11-23
ИмяФайлаПечатнойФормы.Вставить(ОбъектПечати.Значение, ПредставлениеДокументаДляПечатнойФормы);
КонецЦикла;
ПечатнаяФорма.ИмяФайлаПечатнойФормы = ИмяФайлаПечатнойФормы;
КонецПроцедуры
В БП 83 общий модуль общегоназначенияБП
Процедура УстановитьИмяСохраняемогоФайла(ОбъектыПечати, КоллекцияПечатныхФорм, ИмяФайлаПоВходящимНомерам)
Если НЕ КоллекцияПечатныхФорм.Количество() = 1 Тогда
Возврат;
КонецЕсли;
ПечатнаяФорма = КоллекцияПечатныхФорм[0];
Если ЗначениеЗаполнено(ПечатнаяФорма.ИмяФайлаПечатнойФормы) Тогда
// Имя файла уже задано ранее, не меняем его.
Возврат;
КонецЕсли;
ИмяФайлаПечатнойФормы = Новый Соответствие;
Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
ПредставлениеДокументаДляПечатнойФормы = СформироватьЗаголовокПервичногоДокумента(
ОбъектПечати.Значение, ПечатнаяФорма.СинонимМакета, ИмяФайлаПоВходящимНомерам);
ПредставлениеДокументаДляПечатнойФормы = СтрЗаменить(ПредставлениеДокументаДляПечатнойФормы, ".", "");
//*** ШО 2023-11-23
Если ОбъектПечати.Значение.Ссылка.Метаданные().Имя = "АктСверкиВзаиморасчетов" Тогда
ПредставлениеДокументаДляПечатнойФормы = ОбъектПечати.Значение.Контрагент.Наименование + " " + ПредставлениеДокументаДляПечатнойФормы;
КонецЕсли;
//*** шо 2023-11-23
ИмяФайлаПечатнойФормы.Вставить(ОбъектПечати.Значение, ПредставлениеДокументаДляПечатнойФормы);
КонецЦикла;
ПечатнаяФорма.ИмяФайлаПечатнойФормы = ИмяФайлаПечатнойФормы;
КонецПроцедуры
В БП 83 общий модуль общегоназначенияБП
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот