Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 11:41

Создание печатной формы Товарный Чек

Автор 064madman, 17 апр 2012, 21:05

0 Пользователей и 1 гость просматривают эту тему.

064madman

Уважаемые ГУРУ подскажте пожалуйста пытаюсь создать печатную форму ТоварныйЧек сделал как внешнюю форму
написал следующее:
Функция Печать() Экспорт
   Перем Запрос, ВыборкаШапки, ВыборкаТоваров; // Определяем переменные, используемые
   Перем ТабДокумент, Макет, ОбластьМакета;    // в нашей обработке
//ООО "Альтернатива"
   Запрос = Новый Запрос
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
   Запрос.Текст = "
      |ВЫБРАТЬ
      |   Док.Номер,
      |   Док.Дата,
      |   Док.Организация,
      |   Док.ВалютаДокумента КАК Валюта,
      |   Док.Контрагент КАК Получатель,
      |   Док.Организация КАК Поставщик,
      |   Док.СуммаДокумента
      |
      |ИЗ
      |   Документ.РеализацияТоваровУслуг КАК Док
      |ГДЕ
      |   Док.Ссылка = &ТекущийДокумент";
   ВыборкаШапки = Запрос.Выполнить().Выбрать();   // Собираем данные пол шапке документа
   ВыборкаШапки.Следующий();
   
   Запрос.Текст = "
      |ВЫБРАТЬ
      |   Док.НомерСтроки,
      |   Док.Номенклатура.Код КАК Код,
       |   Док.Номенклатура.Представление КАК Номеклатура,
       |   Док.Количество,
       |   Док.Цена,
       |   Док.Сумма
       |ИЗ
       |   Документ.РеализацияТоваровУслуг.Товары КАК Док
       |ГДЕ
       |   Док.Ссылка = &ТекущийДокумент";
   ВыборкаТоваров = Запрос.Выполнить().Выбрать();   // Собираем данные по товарам документа
   
   ТабДокумент = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");         // Получаем оригинальный макет который
                                                                           // храниться в нашей обработке
                                 
   // Выводим заголовок документа
   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.ТекстЗаголовка =
                               ОбщегоНазначения.СформироватьЗаголовокДокумента(ВыборкаШапки, "Расходная накладная");
   ТабДокумент.Вывести(ОбластьМакета);         
   
   // Выводим секцию с поставщиком
   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ПредставлениеПоставщика =
                          ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(
                           ВыборкаШапки.Организация, ВыборкаШапки.Дата),
                           "ПолноеНаименование,");
   ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
   ОбластьМакета.Параметры.Поставщик = ВыборкаШапки.Поставщик;
   ТабДокумент.Вывести(ОбластьМакета);
   
   // Выводим секцию с покупателем
   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ПредставлениеПолучателя =
                          ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(
                           ВыборкаШапки.Получатель, ВыборкаШапки.Дата),
                           "ПолноеНаименование,");
   ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
   ОбластьМакета.Параметры.Получатель = ВыборкаШапки.Получатель;
   ТабДокумент.Вывести(ОбластьМакета);
   
   // Выводим шапку таблицы
   ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ТабДокумент.Вывести(ОбластьМакета);
   
   // Выводим строки таблицы
   ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицы");
   Пока ВыборкаТоваров.Следующий() Цикл
      ОбластьМакета.Параметры.НомерСтроки = ВыборкаТоваров.НомерСтроки;
      ОбластьМакета.Параметры.Код = ВыборкаТоваров.Код;
      ОбластьМакета.Параметры.Номенклатура = ВыборкаТоваров.Номеклатура;
      ОбластьМакета.Параметры.Количество = ВыборкаТоваров.Количество;
      ОбластьМакета.Параметры.Цена = ВыборкаТоваров.Цена;
      ОбластьМакета.Параметры.Сумма = ВыборкаТоваров.Сумма;
      ТабДокумент.Вывести(ОбластьМакета);
   КонецЦикла;
   
   // Выводим секцию с итоговой суммой
   ОбластьМакета = Макет.ПолучитьОбласть("Итого");
   ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(ВыборкаШапки.СуммаДокумента,
                                      ВыборкаШапки.Валюта);
   ТабДокумент.Вывести(ОбластьМакета);
   
   // Выводим секцию для подписей сторон
   ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
   ТабДокумент.Вывести(ОбластьМакета);
         
   Возврат ТабДокумент;
КонецФункции // Печать()

И выдается вот такая ошибка:(см. приложение)

МаксимВікторович

так постав ";" где указано в ошыбке!

064madman

А теперь пишет при подключении в Предприятии:
Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (ПолучитьОбласть): Область не найдена: СтрокаТаблицы

МаксимВікторович

Ошибка при вызове метода контекста (ПолучитьОбласть): Область не найдена: СтрокаТаблицы

Значит нет у Вас етой области у печатной форме (именно макете).

064madman


МаксимВікторович

Я не спецыалист, потому не много знаю...
Вот, может поможет Вам:

http://howknow1c.ru/programmirovanie-1c/pechatnaja-forma-1s.html

Печатная форма 1С

Печатная форма 1С

Как известно - без бумажки ты.. не может обойтись ни один серьезный бизнес. И когда мы говорим, что в 1С есть какие-то там электронные документы, то сразу же возникает вопрос как их распечатать в бумажном виде.

Процесс печати электронного документа 1С называется печатная форма 1С.

У каждого документа может быть несколько печатных форм 1С. Например, документ Реализация товаров и услуг (т.е. продажа) печатается в печатные формы 1С: ТОРГ-12, Накладная, Товарно-транспортная накладная, Акт оказанных услуг и так далее.

1.pechatnaja-forma-1s.png

Суть печатной формы 1С - это шаблон (типа документа Excel), в котором заданы переменные. При процессе печати вместо переменных подставляется текст из электронного документа. Шаблон обычно хранится в конфигурации.

Проблема изменения типовой печатной формы 1С в том, что обычно типовую конфигурацию не желательно изменять, иначе будет сложнее обновляться. Поэтому появились начали изобретать велосипед различные методики использования внешних печатных форм 1С.

Внешняя печатная форма 1С - это шаблон печати, который хранится как то отдельно от самой конфигурации.

Однако это все теория. А как создать самому печатную форму? А еще лучше - как внести изменения в существующую?

Кому интересен ответ - читайте дальше.

Как печатается документ 1С

Чтобы распечатать любой документ 1С (который может быть распечатан) - нужно в документе нажать кнопку Печать. 1С предложит выбрать печатную форму 1С для этого документа из списка.

2.pechat-dokumenta-1s.png

Слева от кнопки Печать обычно находится кнопка быстрого доступа к последней выбранной печатной форме 1С.

Результат печати выглядит вот так. Чтобы распечатать его на принтер, нужно поставить курсор в печатную форму 1С, нажать Ctrl+P или кнопку с принтером на панели кнопок или в меню Файл/Печать.

1.pechatnaja-forma-1s.png

Настройки печати (поля, ориентация листа и т.п.) расположены в меню Файл/Параметры страницы. Также в настройках пользователя можно сделать, чтобы печать производилась сразу на принтер.

Откуда берется эта печатная форма?

Где находится печатная форма 1С

Зайдем в конфигуратор. Найдем в окне конфигурации нужный документ. Раскроем его ветку Макеты. Именно они и превращаются в печатную форму 1С при печати.

3.pechatnaja-forma-1s.png

Однако маловато будет - нам предлагали выбрать гораздо больше вариантов при печати. Дело в том, что множество макетов печатных форм 1С спрятано в другом месте.

Вернемся вверх окна конфигурации 1С. Откроем ветку Общие, а потом ветку Общие макеты. Именно здесь и находится большинство макетов. Особенно это касается регламентированных государством печатных форм 1С - ТОРГ 12, Счет фактура и т.п.

Кстати не сложно заметить, что макетов ТОРГ12 или СчетФактуры Вы увидите несколько. Почему? Это легко объяснить. Законы и требования периодически меняются. Но мы не можем просто изменить один и тот же макет - а если придется распечатать документ от даты, которая находится ранее даты изменения. Поэтому делается несколько макетов и в зависимости от даты документа используется правильный.

4.pechatnaja-forma-1s.png

Но и это не все! Есть же еще внешние макеты. Где же хранятся они?

Вернемся в режим 1С Предприятие. Через меню пользователя с административными правами Операции/Справочники, выберем справочник Внешние обработки.

5.pechatnaja-forma-1s.png

Строки этого справочника, которые имеют вид Печатная форма, добавляют варианты печати для документа, указанного в таблице Принадлежность печатной формы (на картинке это Реализация товаров услуг).

Для того, чтобы это заработало - Вы должны сделать внешнюю обработку, которая имеет в своем модуле объекта процедуру Печать() с пометкой Экспорт, которая организует процесс печати.
Но мы забегаем вперед. Давайте сначала посмотрим как организован макет печатной формы 1С.

Макет печатной формы 1С

Макет печатной формы 1С выглядит следующим образом.

6.pechatnaja-forma-1s.png

Как Вы видите - он поделен на блоки. Блоки могут быть горизонтальные (имя слева) и вертикальные (имя вверху).

Сам макет в том виде какой он есть - не печатается. Печатаются отдельные блоки. Программист в процедуре обработки печати указывает порядок блоков и количество повторений каждого блока. В результате складывается печатная форма.

Для того, чтобы назначить область - выделите несколько строк (или несколько колонок) и выберите в меню Таблица/Имена/Назначить имя. Чтобы убрать - там же есть команда Убрать имя.

7.pechatnaja-forma-1s.png

Название нужно для того, чтобы к области можно было обращаться из программного кода. Название можно назначить не только строкам или колонкам, но и просто нескольким ячейкам. Для этого выделите ячейки и выберите то же меню.

Однако по умолчанию названия произвольных ячеек не отображаются. Чтобы увидеть их - выберите пункт меню Таблица/Имена/Отображать именованные ячейки.

Итоги

Итак, сегодня мы узнали, что печатная форма 1С формируется с помощью макета. Макет состоит из блоков - по умному - именуемых областей.

Типовые (обычно используемые) блоки для печатной формы:

  • Шапка - выводится заголовок документа
  • Строка - выводится одна строка таблицы, этот блок повторяют столько раз, сколько нужно распечатать строк
  • Подвал - выводится окончание документа.

Теперь нам нужно разобраться с тем, как происходит печать макета 1С?


Проголосовать за этот пост:

loading.gif Загрузка...

Posted in Программирование 1С Tagged Печать 1С


has

Цитата: 064madman от 18 апр 2012, 22:01
но макет есть  :dfbsdfbsdf:
Говорят то про область. Скрин макета в студию.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск