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

Запуск отчета при старте программы

Автор keramik, 02 июн 2016, 22:22

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

keramik

Привет, 1С 8.3.6, "Бухгалтерия предприятия", редакция 3.0 (3.0.42.89).
Как запустить отчёт автоматом при старте программы.
Создал внешнюю обработку, в ней при помощи СКД собрал отчёт по клиентам фирмы. В модуле отчета прописал процедуры "инициации":
Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");

    ПараметрыРегистрации.Вставить("Наименование", "ПакетОтчетов");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", "ПакетОтчетов");
    ПараметрыРегистрации.Вставить("ВерсияБСП", "2.0.7.6");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд,
    "ПакетОтчетов",
    "1",
    "ОткрытиеФормы",
    Истина,""

    );
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()
    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Больше ничего не добавлял, ни формы отчёта, ни макетов. Если запускать этот отчёт через Администрирование --> Печатные формы, отчеты и обработки --> Доп.отчеты и обработки, то отображаются данные нормально, но если запускать эту же обработку при старте программы, прописав в дополнительных параметрах запуска следующее: "C:\Program Files (x86)\1cv8\common\1cestart.exe"  ENTERPRISE /F "C:\Users\User\Documents\TESTAvtoOtchet" /N "User" /Execute "C:\Users\User\Desktop\Fortests\Klienti.epf" то при старте программы выводится малюсенькое пустое белое окошко.
Почему так? Я сейчас вот начал подозревать, что может надо создать либо макет для отчёта, либо форму.

keramik

Прошло некоторое время, вернулся я к вопросу о том, как запустить отчёт автоматом при старте системы. Мне всё еще требуется ваш совет, как это сделать.
Я собрал внешний отчёт, создал простую форму для вывода данных и макет, по которому эта форма заполняется.
В модуле формы прописал процедуры:
&НаСервере
Процедура СформироватьОтчетНаСервере()
ТабДок = Новый ТабличныйДокумент;
ТабДок.Очистить();
Об = РеквизитФормыВЗначение("Отчет");
Макет = Об.ПолучитьМакет("Макет");
ОблЗаголовок = Макет.ПолучитьОбласть("ОблЗаголовок");
ТабДок.Вывести(ОблЗаголовок);

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование,
| Контрагенты.Код,
| Контрагенты.ИНН
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ОблДок = Макет.ПолучитьОбласть("ОблДок");
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОблДок.Параметры.Наименование = ВыборкаДетальныеЗаписи.Наименование;
ОблДок.Параметры.Код = ВыборкаДетальныеЗаписи.Код;
ОблДок.Параметры.ИНН = ВыборкаДетальныеЗаписи.ИНН;
ТабДок.Вывести(ОблДок);
КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура СформироватьОтчет(Команда)
СформироватьОтчетНаСервере();
КонецПроцедуры

Если вручную запускать отчёт, то всё отрабатывает как надо и данные по контрагентам выводятся в таблицу. Но если прописать в ярлыке программы условие:
"C:\Program Files (x86)\1cv8\common\1cestart.exe"  ENTERPRISE /F "C:\Users\MyUser\Documents\TestOtchet" /N "MyUser" /Execute "C:\Users\MyUser\Desktop\ForTests\ObrabotkiSAvtozapuskom\Klienti_Avtozapusk2.erf"
то вместо формы отчёта запускается пустая белая форма.

vitasw

Внешний отчет надо создавать и подключать.
ВнешниеОтчетыМенеджер (ExternalReportsManager)
Подключить (Connect)
Синтаксис:

Подключить(<Путь>, <Имя>, <БезопасныйРежим>)
Параметры:

<Путь> (обязательный)

Тип: Строка.
Путь к внешнему отчету.
<Имя> (необязательный)

Тип: Строка.
Имя внешнего отчета, с которым он будет зарегистрирован в системе.
Наличие одинаковых имен в процессе работы сеанса не допускается. Если имя не указано, будет использовано имя, содержащееся в самом отчете.
<БезопасныйРежим> (необязательный)

Тип: Булево; Строка.
Признак подключения внешнего отчета в безопасном режиме. Если параметр не указан, подключение будет осуществлено в безопасном режиме.
Если указана строка, то внешняя обработка будет исполняться в безопасном режиме под управлением профиля безопасности с этим именем. Профиль безопасности должен иметь SafeModeProfile=Истина.
Значение по умолчанию: Истина.
Возвращаемое значение:

Тип: Строка.

Описание:

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

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

Рейтинг@Mail.ru

Поиск