Внешний отчет в положении Используется выдает пустой результат

1. Дон Кихот 31.03.22 12:11 Сейчас в теме
Внешний отчет прикрепленный в "Дополнительные отчеты и обработки" в положении "Используется" выдает пустой результат, при переведении в положение "Отключена" отчет заполняется. Почему это происходит, подскажите пожалуйста.
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. WWWWW 9 31.03.22 13:25 Сейчас в теме
(1)
в положении "Используется" выдает пустой результат, при переведении в положение "Отключена" отчет заполняется
В модуле какие фукции для регистрации внешней обработки?
Функция СведенияОВнешнейОбработке() Экспорт
    
    ИмяОтчета = ЭтотОбъект.Метаданные().Имя; 
    Синоним = ЭтотОбъект.Метаданные().Синоним; 
    Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета);         
    РегистрационныеДанные = Новый Структура;
    РегистрационныеДанные.Вставить("Вид","ДополнительныйОтчет"); //может быть – ПечатнаяФорма, ЗаполнениеОбъекта (для вн.обработки), ДополнительныйОтчет, СозданиеСвязанныхОбъектов… 
    РегистрационныеДанные.Вставить("Наименование", Синоним); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
    РегистрационныеДанные.Вставить("Версия", "1.0");
    РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
    РегистрационныеДанные.Вставить("Информация", "Отчет " + Синоним); //так будет выглядеть описание вн.отчета для пользователя
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    
    // Добавим команду в таблицу
    ДобавитьКоманду(ТаблицаКоманд, Синоним, "СформироватьОтчет" , "ОткрытиеФормы", Истина, );
        
    // Сохраним таблицу команд в параметры регистрации обработки
    РегистрационныеДанные.Вставить("Команды", ТаблицаКоманд);
    
    Возврат РегистрационныеДанные;
                                       
КонецФункции

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

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

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

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

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

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

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

КонецПроцедуры
Показать

Примерно вот так должно быть
3. Дон Кихот 31.03.22 13:37 Сейчас в теме
(2)В отчете функция выглядит так:

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    ПараметрыРегистрации.Вид				= ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
    ПараметрыРегистрации.Наименование		= Метаданные().Синоним;
    ПараметрыРегистрации.Версия				= "1.0";
    ПараметрыРегистрации.БезопасныйРежим	= Ложь;
	//ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина;
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление 			= Метаданные().Синоним;
    НоваяКоманда.Идентификатор 			= Метаданные().Имя;
    НоваяКоманда.Использование 			= ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    НоваяКоманда.ПоказыватьОповещение 	= Истина;
    	
    Возврат ПараметрыРегистрации;
	
КонецФункции
Показать
4. Дон Кихот 31.03.22 13:46 Сейчас в теме
(2) Полностью заменил функцию СведенияОВнешнейОбработке() на ваш код,
результат тот же. При установке в положение используется выходит пустой отчет
5. user621724_Dimav1979 404 31.03.22 13:59 Сейчас в теме
Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

МассивНазначений = Новый Массив;

ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет"); //возможны варианты - ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов, 
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Отчет по ..."); //имя под kt обработка зарегистрирована будет в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Версия", "1.1");
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Информация", "Отчет по п...");

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

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

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

Возврат ПараметрыРегистрации;

КонецФункции
Показать
6. Дон Кихот 31.03.22 14:24 Сейчас в теме
(5) Заменил функцию на вашу, результат тот же, при установке в положение используется отчет выходит пустым, при переводе в положение отключена отчет работает. Видимо дело не в функции СведенияОВнешнейОбработке()
7. user621724_Dimav1979 404 31.03.22 14:29 Сейчас в теме
(6) может у вас версия пустого отчета открывается, который вы залили ранее...попробуйте имя отчета поменять в скд, например единичку добавьте в конце
Прикрепленные файлы:
8. Дон Кихот 31.03.22 14:37 Сейчас в теме
(7) Поменял имя отчета в СКД, до этого пометил на удаление отчет и добавил его как новый, изменил также имя и синоним отчета. Пока ничего не помогает.
9. user621724_Dimav1979 404 31.03.22 14:47 Сейчас в теме
(8) а в журнале регистраций что нибудь есть,
10. Дон Кихот 31.03.22 15:11 Сейчас в теме
(9)Прикрепил скрин, такая запись в журнале регистрации
Прикрепленные файлы:
11. user621724_Dimav1979 404 31.03.22 16:23 Сейчас в теме
(10) странно....а ели отчет открыть через Файл->Открыть тоже пустой?
12. Дон Кихот 01.04.22 06:26 Сейчас в теме
(11)Когда открываешь через Файл->Открыть отчет заполняется
13. Дон Кихот 01.04.22 08:35 Сейчас в теме
(11) На форме был такой код:
Результат = РезультатФормированияОтчета(ФормированиеПриОткрытии, НастройкиОтчета.Внешний Или НастройкиОтчета.Безопасный);
В итоге он ставил настройку ФормированиеПриОткрытии в значение ложь. Поменял код на такой:
Результат = РезультатФормированияОтчета(ФормированиеПриОткрытии, Истина);
14. WWWWW 9 01.04.22 10:47 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот