К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Экспорт печатной формы акта и счета-фактуры в файл

Гость
0 - 26.10.2012 - 13:36
Есть внешняя обработка, которая формирует на основании счетов акты и счета-фактуры, а затем печатает их.

Стоит задача помимо печати акта и СЧФ, еще и сохранять их в файлы в любом виде (в указанную директорию), пригодном для печати или отправки электронной почтой.

Это реально? Если да, то буду благодарен за примерный код или любые ссылки и наводки.



Гость
1 - 26.10.2012 - 13:49
ТабДок.Записать("C:\My Documents\Таблица2.mxl");

Либо я чего то не понимаю?
Гость
2 - 26.10.2012 - 13:52
Раз обработка печатает табличные документы самостоятельно, пусть и сохраняет их ... в чем проблема?
Метод Записать() Табличного документа...
Гость
3 - 26.10.2012 - 13:56
Спасибо, Друзья! Похоже, да, нужен метод Записать().

Я просто с 1С встречаюсь пару раз в полгода, поэтому плаваю.

Доброго вам здоровьичка!
4 - 26.10.2012 - 16:11
готовое решение
http://infostart.ru/public/14180/
.
совершенно аналогичное - для сохранения в папку.
Гость
5 - 29.10.2012 - 10:35
Нет, видимо, я еще глуп и чего-то не понимаю.
Вот кусок кода, который печатает акт:

Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка РТУ
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Ссыл ка = &Счет";
Запрос.УстановитьПараметр("Счет", Счет.Ссылка);

Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Сообщить("Из данного счета уже делали реализацию");
Сообщить(Результат.РТУ);
РТУ=Результат.РТУ;
РТУ=РТУ.ПолучитьОбъект();
Иначе
Сообщить("Создаём новую реализацию");
РТУ = Документы.РеализацияТоваровУслуг.СоздатьДокумент() ;
РТУ.Заполнить(Счет.Ссылка);
НаименованиеДоговора= "Счет" + " № " + ОбщегоНазначения.ПолучитьНомерНаПечать(Счет) + " от " + Формат(Счет.Дата, "ДФ='дд ММ гггг'")+ " г.";
НайтиДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоНаименован ию(НаименованиеДоговора,,,Счет.Контрагент);
Если Не НайтиДоговор.Пустая() Тогда
РТУ.ДоговорКонтрагента=НайтиДоговор.Ссылка;
КонецЕсли;
РТУ.Дата = ТекущаяДата();
РТУ.ВидОперации=Перечисления.ВидыОперацийРеализаци яТоваров.ПродажаКомиссия;
РТУ.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли; //Если реализации нет

// ТУТ ИДЕТ ПЕЧАТЬ ДОКУМЕНТА, ПЫТАЕМСЯ ЕГО СОХРАНИТЬ
РТУ.Печать("Акт", 2, ИСТИНА, ИСТИНА);
РТУ.Записать("C:\акт-1.mxl");

И на последней строке при выполнении этого участка кода получаю ошибку:

Ошибка при вызове метода контекста (Записать) РТУ.Записать("C:\Акт-1.mxl");
по причине: Несоответствие типов (параметр номер '1')

Что я делаю не так?
Гость
6 - 29.10.2012 - 10:36
Использую 1С:Предприятие 8.2 (8.2.16.368)
Гость
7 - 29.10.2012 - 11:10
Цитата:
Сообщение от Nikitz Посмотреть сообщение
Что я делаю не так?
Метод Записать() Табличного документа пытаешься применить к объекту совсем другого типа
Гость
8 - 29.10.2012 - 12:40
А как же добраться до табличного документа и есть ли он здесь вообще?
Гость
9 - 29.10.2012 - 12:58
8-Nikitz > он вот здесь внутри спрятан
РТУ.Печать("Акт", 2, ИСТИНА, ИСТИНА)
Гость
10 - 29.10.2012 - 15:05
(5) самое простое, процедуру Печать переделать на функцию и возвращать макет. но это, конечно, уже изменение конфигурации.
без изменения конфигурации - вынести и переделать процедуру печати в обработку.
Гость
11 - 29.10.2012 - 15:34
9-roma n > ругается:

Обращение к процедуре объекта как к функции (Печать)
ТабДок = РТУ.Печать("Акт", 2, ИСТИНА, ИСТИНА);
Гость
12 - 29.10.2012 - 15:45
11-Nikitz > я бы тоже ругался. Кури (10) вдумчиво...
Гость
13 - 29.10.2012 - 17:07
Может я чего-то не понимаю, но если есть печатающийся файл, и нужен файл любого формата для e-mail и печати, то прямой путь к виртуальному PDF принтеру, и ничего курить не придется.
Гость
14 - 29.10.2012 - 17:13
13-i555 > то есть выбирать принтер каждый раз? тогда можно и через "Сохранить как..." ручками сохранять в нужную папку.

11-Nikitz > а можно отправлять по почте прямо из 1С, в 1С:"Управление торговлей", например, такое есть.
Гость
15 - 29.10.2012 - 17:14
13-i555 > +100500. Только вот как задать ИмяПринтера (а точнее двух принтеров - для реальной печати и для печати в PDF) при условии использования экспортной процедуры модуля объекта без её переделки?
Гость
16 - 29.10.2012 - 17:14
13-i555 > в обработке файла нет, нет макета. его в любом случае надо как-то сначала получить в обработку.
Гость
17 - 29.10.2012 - 17:39
14, 16> Одно из двух: или файла нет, или Сохранить как... Как работает обработка: печатает сама, или юзер нажимает кнопочку Печать - не знаю, но, думаю, нажимает.
15> Да, на два принтера печатать проблемно, вернее много курить надо. Но, если сначала напечатать на PDF принтер, то, что получится, можно потом печатать, как угодно. Недостаток - придется кнопочку Печать нажать два раза. Если это пересилит обкуривание, то да, согласен, надо курить дальше.
18 - 29.10.2012 - 20:14
нужен вменяемый 1с-ник, там на пол-часа-час делов максимум
Гость
19 - 30.10.2012 - 08:30
17-i555> Обработка работает без нажатия каких-либо кнопочек, участие человека недопустимо (вообще, бред — привлекать человека к задачам, которые должна делать машина).

18-lalex23> Слишком просто и неинтересно.
Гость
20 - 30.10.2012 - 09:04
19-Nikitz > Ну тогда у тебя 2 варианта
- мало-мало изменить конфигурацию в части формирования печатной формы (чтоб можно было ТабДок заиметь). Я бы вносил изменения не (10), а одну строку в УниверсальныеМеханизмы.НапечататьДокумент (если используется типовая) - пригодится.
- организовать формирование ТабДок непосредственно в своей обработке, без использования РТУ.Печать(...


К списку вопросов






Copyright ©, Все права защищены