Имя: Пароль:
1C
1С v8
1c БУХ 3.0 Как добавить внешний отчет? (глобальный)
0 evorle145
 
10.01.14
15:29
Сделал копию отчета: оборотно-сальдовая ведомость по счеу. Добавил в модуль функции регистрации:
Функция СведенияОВнешнейОбработке() Экспорт
    // Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные
    ПараметрыРегистрации = Новый Структура;
    
    // Объявим еще одну переменную, которая нам потребуется ниже
    МассивНазначений = Новый Массив;
    
    // Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
    // Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
    ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет");
    
    // Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
    // Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
    // которые поддерживают механизм ВПФ
    //МассивНазначений.Добавить("Документ.ОперацияБух");
    //ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    
    // Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
    ПараметрыРегистрации.Вставить("Наименование", "ОборотноСальдоваяВедомостьПоСчету со Временем");
    
    // Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    
    // Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "ОборотноСальдоваяВедомостьПоСчету со Временем");
    
    // Создадим таблицу команд (подробнее смотрим ниже)
    ТаблицаКоманд = Получить Таблицу Команд();
    
    // Добавим команду в таблицу
    ДобавитьКоманду(ТаблицаКоманд, "ОборотноСальдоваяВедомостьПоСчету со Временем", "ОборотноСальдоваяВедомостьПоСчету со Временем", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
    
    // Сохраним таблицу команд в параметры регистрации обработки
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
     //Теперь вернем системе наши параметры
    Возврат ПараметрыРегистрации;
КонецФункции

Функция Получить Таблицу Команд()

// Создадим пустую таблицу команд и колонки в ней
Команды = Новый ТаблицаЗначений;

// Как будет выглядеть описание печатной формы для пользователя
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));

// Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

// Тут задается, как должна вызваться команда обработки
// Возможные варианты:
// - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
// - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
// - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

// Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

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

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

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

Зарегистрировал, указал раздел размещения: администрирование, указал всех пользователей для быстрого доступа... Но отчет в администрировании не появился! вообще нигде не появился! Подскажите, что может быть не так...
1 vqwy
 
10.01.14
15:29
еще один
2 vqwy
 
10.01.14
15:31
3 evorle145
 
10.01.14
15:32
(2) там к сожалению нет ответа
4 vqwy
 
10.01.14
15:34
(3) ответ есть у Поручика.
5 evorle145
 
10.01.14
16:03
(4), ясно.
6 evorle145
 
10.01.14
16:51
ну вообщем-то проблему решил...
7 Trainee
 
10.01.14
17:10
(4) Кривой копипаст есть у Поручика)
8 vqwy
 
10.01.14
18:02
(6), (7) очень интересуюсь, как решили проблему
9 vqwy
 
10.01.14
18:02
(7) откуда копипаст??? поделитесь
10 evorle145
 
13.01.14
09:29
(8), Поручику заплатили =)
11 Поpyчик-4
 
13.01.14
09:54
12 evorle145
 
13.01.14
10:18
(11), спасибо! но это уже получилось... Отчет появился, но вот с запуском пока не все ясно...
при подключении указывается команда:

ДобавитьКоманду(ТаблицаКоманд, "Оборотно-сальдовая ведомость по счету со временем", "Оборотно123", "ВызовКлиентскогоМетода", Истина, "ПечатьMXL");

где если писать ВызовКлиентскогоМетода или ОткрытиеФормы ,
то выдает ошибку Объект метаданных не найден по полному имени:
"ВнешнийОтчет.ОборотноСальдоваяВедомостьПоСчету"

при попытке

ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", ПараметрыОбработки, ВладелецФормы);

если писать ВызовСерверногоМетода, то выдает ошибку

{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(1760)}: Метод объекта не обнаружен (ВыполнитьКоманду)
13 Поpyчик-4
 
13.01.14
10:24
(12) 500 рублей. Готовый шаблон отчета получите сразу же.
14 Поpyчик-4
 
13.01.14
10:29
Вот он, внешний отчет в БП 3.0, открытый из дополнительных отчетов
http://savepic.su/4050017.png
15 evorle145
 
13.01.14
10:31
(13), спасибо, но время у меня еще есть, пока сам буду пытаться разобраться.
16 evorle145
 
13.01.14
13:05
Получилось=) Использовал способ  "ОткрытиеФормы" и некоторые процедуры пришлось перетащить из общего модуля в обработку, чтобы не было ошибки на ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", ПараметрыОбработки, ВладелецФормы);

Решение, наверное, не самое правильное, но работает=)
17 Поpyчик-4
 
13.01.14
16:07
(16) Правильное решение кроется в нормальной организации вызываемых процедур, а 1сэсники с селезнёвки как всегда сделали через joppy или не подумали, что отчёт может быть внешним.
18 fmrlex
 
13.01.14
16:10
(17) Мне кажется они подумали.
И сделали выбор в пользу тонкого и вэб-клиента + безопасности.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.