Помогите разобраться, нужно сделать печатную форму справочника, т.е. разместить кнопку на некотором справочнике, которая будет печатать макет, макет не в виде таблицы, а в виде текста (например Договор), только в этом тексте некоторые строки должны тянуться из базы 1С (например реквизиты, организация, контрагенты), т.е. заполняться сами. Еще ни разу не делал печатные формы и макеты.
Для себя набросал последовательность: Сначала создаю табличный макет (не знаю, как работает текстовый макет) в нужном мне справочнике, туда загоняю необходимый текст, именую области (шапка, текст, подвал) , задаю тип ячеек - параметры, на нужные мне ячейки, туда помещаю строки, которые должны тянуться из базы, остальные строки, которые изменяться не должны, задаю просто текстом в соседней ячейке. На форме справочника создаю кнопку (команда) с процедурой(на сервере или клиенте?) НапечататьТекст, и там пишу код который будет вызывать макет и заполнять его данными. Вот как-то так я себе все это представил, но как реализовать не знаю
(2)
1) да любая, я делаю в учебной, заполнив ее данными.
2) пусть будет справочник Договоры
3) это имеет значение ? я хочу сделать на форме списка )
4) пусть будет текст из 10 строк, среди которых встречается "организация ххх" и "контрагент ууу", и надо что бы именно они тянулись из базы
5) на печать
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать
|ПустьБудетДоговоры.Организация Как Организация,
|ПустьБудетДоговоры.Контрагент Как Контрагент
|Из
|Справочник.Договоры Как ПустьБудетДоговоры";
ТабДок = Новый ТабличныйДокумент;
Результат = Запрос.Выполнить().Выбрать();
Макет = //ПолучамМакет
ОбластьСтрока = Макет .ПолучитьОбласть("Строка");
Пока Результат.Следующий() Цикл
// Заполняем параметры области
ТабДок.ВывестиОбласть(ОбластьСтрока);
КонецЦикла;
ТабДок.Показать();
Показать
Код для примера и не будет работать на УФ - нужно разделение на клиент - сервер? А вообще в (3) Вам подсказали правильно - не нужен Вам макет, Вам нужен отчет :-)
(9) Поставил учебную УТ 11. в справочнике договоры с контрагентами воспользовался конструктором печати и просто создал шаблон без объектов, потом вручную все вбил.
В общем воспользовался Вашим кодом и шаблоном кода Конструктора печати, набросал макет, но почему-то не могу ссылку прикрепить на я.диск.
Вот что получилось:
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Справочники.ДоговорыКонтрагентов.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Номер КАК Номер,
| ДоговорыКонтрагентов.Дата КАК Дата,
| ДоговорыКонтрагентов.Организация КАК Организация,
| ДоговорыКонтрагентов.Контрагент КАК Контрагент,
| ДоговорыКонтрагентов.КонтактноеЛицо КАК КонтактноеЛицо,
| ДоговорыКонтрагентов.БанковскийСчет КАК БанковскийСчет,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДоговорыКонтрагентов.Организация.ЮридическоеФизическоеЛицо КАК ОрганизацияЮридическоеФизическоеЛицо
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов";
//|ГДЕ
//| ДоговорыКонтрагентов.Ссылка = &Ссылка";
//Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
Текст = Макет.ПолучитьОбласть("Текст");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Заголовок.Параметры.Заполнить(Выборка.Номер);
Шапка.Параметры.Заполнить(Выборка.Дата);
Текст.Параметры.Заполнить(Выборка.Организация, Выборка.ОрганизацияЮридическоеФизическоеЛицо, Выборка.Контрагент, Выборка.КонтактноеЛицо);
ТабДок.Вывести(Заголовок);
ТабДок.Вывести(Шапка);
ТабДок.Вывести(Текст);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры
Показать
Но ничего не работает, ошибку пишет:
{Справочник.ДоговорыКонтрагентов.МодульМенеджера(1157)}: Ошибка при вызове метода контекста (Заполнить)
Заголовок.Параметры.Заполнить(Выборка.Номер);
по причине:
Несоответствие типов (параметр номер '1')
(7)
(9) В общем скачал учебную версию УТ 11. Куда поместить Ваш код, я так и не понял, но с помощью конструктора печати таки нашёл куда. Мне нужно распечатать Договор, макет договора набросал: макет
Воспользовался вашим кодом, совместив с шаблоном кода конструктора печати :
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Справочники.ДоговорыКонтрагентов.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорыКонтрагентов.Номер КАК Номер,
| ДоговорыКонтрагентов.Дата КАК Дата,
| ДоговорыКонтрагентов.Организация КАК Организация,
| ДоговорыКонтрагентов.Контрагент КАК Контрагент,
| ДоговорыКонтрагентов.КонтактноеЛицо КАК КонтактноеЛицо,
| ДоговорыКонтрагентов.БанковскийСчет КАК БанковскийСчет,
| ДоговорыКонтрагентов.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ДоговорыКонтрагентов.Организация.ЮридическоеФизическоеЛицо КАК ОрганизацияЮридическоеФизическоеЛицо
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов";
//|ГДЕ
//| ДоговорыКонтрагентов.Ссылка = &Ссылка";
//Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
Текст = Макет.ПолучитьОбласть("Текст");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Заголовок.Параметры.Заполнить(Выборка.Номер);
Шапка.Параметры.Заполнить(Выборка.Дата);
Текст.Параметры.Заполнить(Выборка.Организация, Выборка.ОрганизацияЮридическоеФизическоеЛицо, Выборка.Контрагент, Выборка.КонтактноеЛицо);
ТабДок.Вывести(Заголовок);
ТабДок.Вывести(Шапка);
ТабДок.Вывести(Текст);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры
Показать
Но по итогу, печатать он ничего не хочет, ошибку пишет:
{Справочник.ДоговорыКонтрагентов.МодульМенеджера(1157)}: Ошибка при вызове метода контекста (Заполнить)
Заголовок.Параметры.Заполнить(Выборка.Номер);
по причине:
Несоответствие типов (параметр номер '1')
Самый простой способ, это скачать готовый отчет и изменить его под себя.
Вот например, я написал запрос для конфигурации ЗУП 3.1 и данные вывел в документ.
Вам этот пример подойдет, если у вас конфигурация на управляемых формах (Бух 3.0, ЗУП 3.1, Розница 2.2, УТ 11).
Нужно будет написать свой запрос к объектам 1с и изменить текст макета.