Афина. О конструировании отчетов если их нужно печатать не выходя из формы ввода.

 

 

Кнопка "Печать" на форме выполняет две функции: заканчивает ввод, записывая изменения, сделанные пользователем и, если в справочнике есть отчет или отчеты дает команду на формирование этих отчетов.
Если нужно сделать так чтобы можно было печатать отчеты не выходя из формы, то от кнопки "Печать" придется отказаться.

Для этого делается отдельный отчет как справочник (что это такое см. справочную систему Афины).
На форму, из которой вы собираетесь печатать (не выходя из нее) вставляется произвольная кнопка, надпись на которой делается для пользователя информативной ("Печать", "Печать накладной" и пр.).
К этой кнопке привязывается (создается) функция, в которой и происходит обработка данных для отправки их на печать.

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

Пример.

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

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

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

функция НажатаКнопкаДляПечати
переменные
  справочник([Для печати]) ДП;
начало
  !так как в этом примере мы печатаем готовые данные из таблицы, то подготавливать данные
  !нет нужды. Но если есть необходимость, то именно в этом месте и должны происходить
  !подготовительные работы. А далее печатаем отчет, передавая в него данные из таблицы.
  НапечататьОтчет(Отчет := ДП, НомерОтчета := 1,
                  Т.Кол1 := Т.Кол1, Т.Кол2 := Т.Кол2, ... Т.КолN := Т.КолN);
конец

Т.Кол1 := Т.Кол1 так как таблицы и колонки в справочнике Справочник1 и отчете как справочник
"Для печати" называются одинаково, то такая конструкции корректна. Естественно, что колонки в одной таблице и другой могут называться по разному.
Если вы попытаетесь присвоить колонке одного типа колонку другого типа, то еще на этапе компиляции эта ошибка выявится. Т.е. если Т.Кол1 в Справочнике1 будет типа строка, а Т.Кол1 в справочнике
"Для печати" будет типа число, то на эту ошибку и укажет компилятор.

Когда пользователь нажимает кнопку, запускается функция, которая вызовет формирование печатной формы из справочника "Для печати". Этот отчет и появиться для предпросмотра.

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


А что делать, если отчет в справочнике Справочник1 уже есть.
Тогда его можно перетащить во вновь созданный отчет как справочник через файл.
- Запускаете настройку справочника Справочник1;
- Переключаетесь в нужный для транспортировки отчет (печатную форму);
- На свободном от объектов месте отчета нажимаете правую кнопку мыши и выбираете последний пункт меню "Записать в файл...", записываете;
- Выходите из настройки и запускаете настройку отчета как справочник Для печати;
- Находите вверху кнопку с хинтом "Вставить новый отчет из файла", нажимаете;
- Из диалога выбираете файл, который только что сохранили, форма печати вставиться;
- После этого надо проверить вставленный вновь отчет чтобы его структура соответствовала той, на которую рассчитана печатная форма. Достаточно зайти на закладку "Функции" как компилятор тут же подскажет, если будут какие-нибудь несоответствия. Если несоответствий нет, то можно сохранять настройку отчета как справочник с новой вставленной формой печати.

 

 

К содержанию