Имя: Пароль:
1C
 
При создании внешнего отчета Поле объекта не обнаружено (название отчета)
0 vienya
 
03.04.24
09:15
При создании внешнего отчета АнализПродажМенеджеров.erf из отчета ВаловаяПрибыль в БП Корп выходит ошибка:

Поле объекта не обнаружено (АнализПродажМенеджеров)
{ОбщийМодуль.БухгалтерскиеОтчетыВызовСервера.Модуль(3255)}:МенеджерОтчета = Отчеты[БухгалтерскиеОтчеты.ИмяОтчета(Форма)];
{ОбщийМодуль.БухгалтерскиеОтчетыВызовСервера.Модуль(962)}:ИнициализацияФормыОтчета(Отчет, РеквизитыФормы, Форма);
{ВнешнийОтчет.АнализПродажМенеджеров.Форма.ФормаОтчета.Форма(16)}:БухгалтерскиеОтчетыВызовСервера.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]

При создании внешнего отчета в общем модуле был использован следующий код:

Функция СведенияОВнешнейОбработке() Экспорт

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

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

Почему не видит поле с названием внешнего отчета?
1 vienya
 
03.04.24
10:08
Есть специалист, который подскажет что не так или куда копать в таких случаях?
2 vienya
 
03.04.24
10:20
Исправил код (см. ниже), но ошибка выходит та же. Возможно, дело в чём-то другом.

Функция СведенияОВнешнейОбработке() Экспорт
    ОбъектыНазначенияФормы = Новый Массив;
    //ОбъектыНазначенияФормы.Добавить("Справочник.Сотрудники");      //размещает в Сотрудниках
    ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы, "Распечатать");
    ПараметрыРегистрации.Версия = "1.1";
    ПараметрыРегистрации.Информация = "Распечатать";
    
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд,
    "Анализ Печатных Форм", // Представление команды в пользовательском интерфейсе
    "Анализ_Печатных_Форм", // Уникальный идентификатор команды
    "ОткрытиеФормы", //"ВызовСерверногоМетода", //Использование команды
    Истина, // Показывать оповещение.
    "ПочтаДока" // Дополнительный модификатор команды.
    );
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "Анализ Печатных Форм", Информация = "", Версия = "1.0.0")

Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
КонецЕсли;

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

Если Не ЗначениеЗаполнено(НаименованиеОбработки) Тогда
НаименованиеОбработки = ЭтотОбъект.Метаданные().Представление();
КонецЕсли;
ПараметрыРегистрации.Вставить("Наименование", НаименованиеОбработки);

Если Не ЗначениеЗаполнено(Информация) Тогда
Информация = ЭтотОбъект.Метаданные().Комментарий;
КонецЕсли;
ПараметрыРегистрации.Вставить("Информация", Информация);

ПараметрыРегистрации.Вставить("Версия", Версия);

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

КонецФункции

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

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

КонецФункции

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

КонецПроцедуры
3 vienya
 
03.04.24
10:46
Поговорил сам с собой
4 Волшебник
 
03.04.24
10:48
Все ошибки типа "Поле объекта не обнаружено" исправляются пониманием типов и/или отладчиком.
Просто не обращайтесь к полям, которых нет в объекте.
А уж если наткнулись на такую ошибку, то нечего на форум лезть и демонстрировать собственную "мудрость"
5 Garykom
 
гуру
03.04.24
10:54
(0) Пробовал в код модулей ДополнительныеОтчетыИОбработки.. заглядывать?
Вот нафига ты вручную когда там куча функций есть?

Начиная с
Функция СведенияОВнешнейОбработке(ВерсияБСП = "") Экспорт
6 Garykom
 
гуру
03.04.24
10:57
(5)+ Значения берутся из ДополнительныеОтчетыИОбработкиКлиентСервер
Например
Функция ВидОбработкиОтчет() Экспорт
7 vienya
 
03.04.24
11:03
(4) (5) (6) Спасибо за подсказки. Буду искать.
8 vienya
 
04.04.24
08:22
Решил пойти другим путём создания внешней обработки Анализ Продаж из отчета ВаловаяПродукция. Вместо копирования превращения отчета во внешнюю форму, я вначале создал внешнюю форму, а потом скопировал туда данные СКД.
Однако столкнулся с другой проблемой - при формировании СКД во внешней обработке настройки пустые. Параметры в СКД открыжил, но всё равно ничего не выходит.
9 vienya
 
04.04.24
08:26
10 vienya
 
04.04.24
11:17
Оказывается я ссылался на пустой макет ))
Теперь, когда должно вроде бы грузиться то, что надо, не видит поле ХозрасчетныйОборотыДтКт.СубконтоКт2 https://ltdfoto.ru/image/OIp7PB
Пробовал хотя бы закомментить этот счет в запросе, но жалуется на несовпадение по столбцам. А, главное, я не понимаю откуда он подтягивается...

Свой путь пройдя до половины, я очутился в сумрачном лесу.
11 Мультук
 
гуру
04.04.24
11:21
(10)

Я думаю, вам стоит начать например вот с этого.
Иначе всё будет долго, медленно и очень печально.

https://курсы-по-1с.рф/1c-v8/skd/

P.S.
Ну или поискать free курсы (видео) и т.п.
Их тоже много.
12 Гена
 
гуру
04.04.24
11:30
(10) Дантист?
13 vienya
 
05.04.24
10:10
Первый раз создаю внешний отчет, пробую выгрузить СКД, при нажатии кнопки Сформировать выходит пустой экран.

Код в модуле объекта взят из  модуля объекта, модуля менеджера и модуля команды типового отчета ВаловаяПрибыль. Запрос и настройки СКД идентичны типовому отчету.

Почему ничего не выводится на экран?
14 vienya
 
05.04.24
12:06
(10) (12) Из божественной
15 Гена
 
гуру
05.04.24
12:07
(14) Я поэтому и спросил.
16 vienya
 
06.04.24
16:37
Как же всё просто разрешилось:

БП демо база версии 3.0.148.41. Взял этот отчет и сохранит как внешний, закомментировал в модуле формы «ФормаОтчета» строку 16 ВызовСервера. Отчет запустился и формируется.
Отчет валовая прибыль
Если дорабатывать, можно и в расширении это сделать, тогда не потеряется код из модулей.

https://ltdfoto.ru/image/OJpQni
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший