1с ошибка при выполнении обработчика прикомпоновкерезультата

кусок модуля, если кому интересно

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

    
#Область СлужебныеПроцедурыИФункции

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

    
    Перем ПараметрыРегистрации;

    
    Если ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки») Тогда

        
        МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль(«ДополнительныеОтчетыИОбработки»);

        МодульДополнительныеОтчетыИОбработкиКлиентСервер = ОбщегоНазначения.ОбщийМодуль(«ДополнительныеОтчетыИОбработкиКлиентСервер»);

        ПараметрыРегистрации = МодульДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(«2.1.3.1»);

        
        ПараметрыРегистрации.Вид = МодульДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();

        ПараметрыРегистрации.Версия = «2017.08.17»;

        ПараметрыРегистрации.БезопасныйРежим = Ложь;

        
        НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();

        НоваяКоманда.Представление = ЭтотОбъект.Метаданные().Представление();

        НоваяКоманда.Идентификатор = «ОткрытьОтчет»;

        НоваяКоманда.Использование = МодульДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();

        НоваяКоманда.ПоказыватьОповещение = Ложь;

        //Команды — ТаблицаЗначений — Необязательный для отчетов. Настройки команд, поставляемых внешним объектом.

        
       //** Идентификатор — Строка — Внутреннее имя команды.

       //    Для внешних печатных форм (когда Вид = «ПечатнаяФорма»):

       //      Идентификатор может содержать имена одной или нескольких команд печати,

       //      разделенных запятыми. Подробнее см. описание колонки Идентификатор

       //      в функции СоздатьКоллекциюКомандПечати() общего модуля УправлениеПечатью.

       //

       //** Представление — Строка — Пользовательское представление команды.

       //

       //** Использование — Строка — Тип команды.

       //    Для определения рекомендуется использовать функции

       //    ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<ИмяТипа>().

       //    Шаблоны процедур — обработчиков команд описаны в комментариях к этим функциям.

       //    

       //    Также Использование можно определить явно:

       //    *** «ВызовКлиентскогоМетода»

       //    *** «ВызовСерверногоМетода»

       //    *** «ЗаполнениеФормы»

       //    *** «ОткрытиеФормы»

       //    *** «СценарийВБезопасномРежиме».

       //

       //** ПоказыватьОповещение — Булево — Истина = при запуске команды будет показано стандартное оповещение.

       //    Не работает для команд по открытию формы (когда Использование = «ОткрытиеФормы»).

       //

       //** Модификатор — Строка — Дополнительная классификация команды.

       //    Для внешних печатных форм (когда Вид = «ПечатнаяФорма»):

       //      *** «ПечатьMXL» — для печатных форм на основе табличных макетов.

       //    Для загрузки данных из файла (когда Вид = «ПечатнаяФорма» и Использование = «ЗагрузкаДанныхИзФайла»):

       //      Модификатор является обязательным для заполнения

       //      и должен содержать полное имя объекта метаданных (справочника),

       //      для которого выполняется загрузка данных.

       //

       //** Скрыть — Булево — Необязательный. Признак того, что это служебная команда.

       //    Если установить в значение Истина, то команда скрывается в карточке дополнительного объекта.

    КонецЕсли;

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

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

#КонецОбласти

#Область ОбработчикиСобытий

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    
    СтандартнаяОбработка = Ложь;

    ПользовательскиеНастройкиМодифицированы = Ложь;

    УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы);

    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;

    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    // Сообщим форме отчета, что настройки модифицированы

    Если ПользовательскиеНастройкиМодифицированы Тогда

        
        КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить(«ПользовательскиеНастройкиМодифицированы», Истина);

        
    КонецЕсли;

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

#КонецОбласти

#КонецЕсли

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

#1



0


27.02.2014 13:36:25

При попытке сформировать отчет по истории звонков — появляется вот такая ошибка:

Цитата
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
по причине:
{Отчет.сфпИсторияЗвонков.МодульОбъекта(39)}: Ошибка при вызове метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42S02
Номер ошибки: 208
Описание: [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя объекта «dbo.Calls»

Подключение к БД, в которой хранится история по звонкам происходит.
Но вот отчет не формируется…
Релиз ААА5 — 5.0.10.02

P.S. Константу «сфпСтрокаПодключенияИстории» в релиз добавили, а возможность ее заполнения не добавили )) Учтите это пожалуйста в новых релизах  :)

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

Разобрался почему такая ошибка появляется.
В SQL-базе, где хранит СофтФон историю звонков, таблица называется — dbo.CallsHistory. В конфигурации внешний источник настроен на таблицу dbo.Calls, которой нет в принципе… Вопрос решается путем создания нового внешнего источника со ссылкой на нужную таблицу.

Но тут возникает вопрос: в таблице истории звонков СофтФона нет полей: AnswerTime и DropTime… а без них отчет не работает…

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

Ну и? Мой вопрос оставили без внимания??  :!:

 

Добрый день!

Нужно проверить, что в менеджере сервера СофтФона 2.0 на странице «Настройка сервера» не установлен флажок «Вести историю звонков в старом формате (для совместимости с предыдущими версиями)».
Если установлен данный флажок, то история звонков пишется в другую таблицу, с которой отчет работать не может.

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

Юрий Башкирцев,
Хм…. Что-то я не нашел этого флага в менеджере СофтФона…

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

И еще вопрос — если мы ранее приобретали отдельно продукт СофтФон, версия 1 + пакет лицензий в количестве 5 штук — нужно ли для версии сервера 2.0 снова приобретать ключ защиты и пакет лицензий? Или к версии 2 подойдут ключ и лицензии от первой версии?

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

 

Добрый день, Андрей!

У Вас установлена первая редакция СофтФона, а отчёт по истории звонков доступен только для СофтФона редакции 2.0.

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

Юрий Башкирцев,
А что по поводу моего второго вопроса?

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

#10



0


13.03.2014 10:35:13

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

#11



0


14.03.2014 11:22:05

И все же.. я жду ответа…

 

#12



0


14.03.2014 15:53:41

Софтфон ред.2 не будет работать с ключом и лицензиями Софтфона ред.1.
Но Софтфон ред.2 и лицензии можно приобрести на условиях апгрейда со скидкой 50%

 

Андрей Д

Заглянувший

Сообщений: 121
Авторитет:

5

Регистрация: 07.10.2013

#13



0


17.03.2014 14:15:12

Ну офигенно.. что тут скажешь… заплатили за первую версию… теперь придется еще платить и за вторую….

кусок модуля, если кому интересно

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

    
#Область СлужебныеПроцедурыИФункции

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

    
    Перем ПараметрыРегистрации;

    
    Если ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки») Тогда

        

        МодульДополнительныеОтчетыИОбработки = ОбщегоНазначения.ОбщийМодуль(«ДополнительныеОтчетыИОбработки»);

        МодульДополнительныеОтчетыИОбработкиКлиентСервер = ОбщегоНазначения.ОбщийМодуль(«ДополнительныеОтчетыИОбработкиКлиентСервер»);

        ПараметрыРегистрации = МодульДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(«2.1.3.1»);

        

        ПараметрыРегистрации.Вид = МодульДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();

        ПараметрыРегистрации.Версия = «2017.08.17»;

        ПараметрыРегистрации.БезопасныйРежим = Ложь;

        

        НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();

        НоваяКоманда.Представление = ЭтотОбъект.Метаданные().Представление();

        НоваяКоманда.Идентификатор = «ОткрытьОтчет»;

        НоваяКоманда.Использование = МодульДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();

        НоваяКоманда.ПоказыватьОповещение = Ложь;

        //Команды — ТаблицаЗначений — Необязательный для отчетов. Настройки команд, поставляемых внешним объектом.

        

       //** Идентификатор — Строка — Внутреннее имя команды.

       //    Для внешних печатных форм (когда Вид = «ПечатнаяФорма»):

       //      Идентификатор может содержать имена одной или нескольких команд печати,

       //      разделенных запятыми. Подробнее см. описание колонки Идентификатор

       //      в функции СоздатьКоллекциюКомандПечати() общего модуля УправлениеПечатью.

       //

       //** Представление — Строка — Пользовательское представление команды.

       //

       //** Использование — Строка — Тип команды.

       //    Для определения рекомендуется использовать функции

       //    ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<ИмяТипа>().

       //    Шаблоны процедур — обработчиков команд описаны в комментариях к этим функциям.

       //    

       //    Также Использование можно определить явно:

       //    *** «ВызовКлиентскогоМетода»

       //    *** «ВызовСерверногоМетода»

       //    *** «ЗаполнениеФормы»

       //    *** «ОткрытиеФормы»

       //    *** «СценарийВБезопасномРежиме».

       //

       //** ПоказыватьОповещение — Булево — Истина = при запуске команды будет показано стандартное оповещение.

       //    Не работает для команд по открытию формы (когда Использование = «ОткрытиеФормы»).

       //

       //** Модификатор — Строка — Дополнительная классификация команды.

       //    Для внешних печатных форм (когда Вид = «ПечатнаяФорма»):

       //      *** «ПечатьMXL» — для печатных форм на основе табличных макетов.

       //    Для загрузки данных из файла (когда Вид = «ПечатнаяФорма» и Использование = «ЗагрузкаДанныхИзФайла»):

       //      Модификатор является обязательным для заполнения

       //      и должен содержать полное имя объекта метаданных (справочника),

       //      для которого выполняется загрузка данных.

       //

       //** Скрыть — Булево — Необязательный. Признак того, что это служебная команда.

       //    Если установить в значение Истина, то команда скрывается в карточке дополнительного объекта.

    КонецЕсли;

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

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

#КонецОбласти

#Область ОбработчикиСобытий

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    

    СтандартнаяОбработка = Ложь;

    ПользовательскиеНастройкиМодифицированы = Ложь;

    УстановитьОбязательныеНастройки(ПользовательскиеНастройкиМодифицированы);

    НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();

    

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;

    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

    ПроцессорВывода.Вывести(ПроцессорКомпоновки);

    // Сообщим форме отчета, что настройки модифицированы

    Если ПользовательскиеНастройкиМодифицированы Тогда

        
        КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить(«ПользовательскиеНастройкиМодифицированы», Истина);

        
    КонецЕсли;

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

#КонецОбласти

#КонецЕсли

Войти или зарегистрироваться

8.х Невозможно осуществить вывод результата

Тема в разделе «Система компоновки данных (СКД)», создана пользователем tarantool, 1 апр 2014.

  1. TopicStarter Overlay

    Offline

    tarantool
    Опытный в 1С

    Регистрация:
    6 сен 2011
    Сообщения:
    110
    Симпатии:
    1
    Баллы:
    29

    Добрый день!
    Платформа 8.3.4.389
    Конфигурация нетиповая.
    Отчет создан на СКД. Открывается из документа. В отчете в коде ничего не прописано, кроме как
    в процедуре формы отчета указана процедура СкомпоноватьРезультат()(чтобы автоматом сформировать отчет при вызове из документа). При открытии отчета все валится в ошибку:

    Ошибка при вызове метода контекста (СкомпоноватьРезультат)
    по причине:
    Невозможно осуществить вывод результата

    Хотелось бы услышать ваши предположения по поводу данной ошибки, с чем может быть связано, в каких ситуациях возникает и т.п. Заранее всем благодарен.

  2. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    СкомпоноватьРезультат() где вызывается ? На клиенте, на сервере ?

  3. TopicStarter Overlay

    Offline

    tarantool
    Опытный в 1С

    Регистрация:
    6 сен 2011
    Сообщения:
    110
    Симпатии:
    1
    Баллы:
    29
  4. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204
  5. TopicStarter Overlay

    Offline

    tarantool
    Опытный в 1С

    Регистрация:
    6 сен 2011
    Сообщения:
    110
    Симпатии:
    1
    Баллы:
    29

    не совсем понял что такое СП…Поясните, пожалуйста

  6. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204
  7. TopicStarter Overlay

    Offline

    tarantool
    Опытный в 1С

    Регистрация:
    6 сен 2011
    Сообщения:
    110
    Симпатии:
    1
    Баллы:
    29

    написано, что доступен только из модуля формы. Пробовал вызывать и на сервере и на клиенте. Результат один и тот же.

  8. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Про модуль формы я ни строчки не увидел:


    tarantool нравится это.

  9. TopicStarter Overlay

    Offline

    tarantool
    Опытный в 1С

    Регистрация:
    6 сен 2011
    Сообщения:
    110
    Симпатии:
    1
    Баллы:
    29

    а, мы значит про разные вещи говорим. Есть просто СкомпоноватьРезультат(), есть ОтчетОбъект.СкомпоноватьРезультат(). Сейчас попробую тогда через объект. Во всяком случае спасибо.

  10. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Пока еще не за что :)

(Вы должны войти или зарегистрироваться, чтобы ответить.)

Показать игнорируемое содержимое

Похожие темы

  1. rina

    8.х
    Вывод результата

    rina,
    6 мар 2008
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»

    Ответов:
    22
    Просмотров:
    4.044

  2. koshak

    8.х
    Вывод результата запроса в двухуровневое дерево

    koshak,
    22 июн 2010
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»

    Ответов:
    3
    Просмотров:
    1.656

  3. Zeta

    8.х
    Вывод результата работы СКД в табличный документ

    Zeta,
    6 сен 2010
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»

    Ответов:
    4
    Просмотров:
    13.522

  4. notaSS

    8.х
    вывод результата запроса

    notaSS,
    23 янв 2015
    , в разделе: Конфигурирование на платформе «1С:Предприятие 8»

    Ответов:
    5
    Просмотров:
    1.485
Ваше имя или e-mail:
У Вас уже есть учётная запись?
  • Нет, зарегистрироваться сейчас.
  • Да, мой пароль:
  • Забыли пароль?

Запомнить меня

Поиск

  • Искать только в заголовках
Сообщения пользователя:

Имена участников (разделяйте запятой).

Новее чем:
  • Искать только в этой теме
  • Искать только в этом разделе
    • Отображать результаты в виде тем

Быстрый поиск

  • Последние сообщения

Больше…

Доброго времени суток, уважаемые воены 1С и светочи мудрости. Сделал внешний отчет для УТ 11.3, в некоторых случаях не заполняются параметры отчета, при нажатии на кнопку «Сформировать», формы отчета, настроек и т д — общие, типовые. При формировании отчета вызывается фоновое задание, которое в конечном итоге компонует полученный отчет функцией «СкомпоноватьРезультат». Но вот беда, событие ПриКомпоновкеРезультата не срабатывает в отладчике (автоматическое подключение фоновых заданий подключено в конфигураторе). Вопрос к собравшимся — что я делаю не так? Заранее благодарю за ответы.

кусок модуля, если кому интересно #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда      #Область СлужебныеПроцедурыИФункции #КонецОбласти #КонецОбласти #КонецЕсли

переименовал внешний отчет, отчет находит параметры, но не заходит в процедуру. что за чертовщина, КАРЛ??!!

а вообще на сервер заход в отладке?

до переименования видимо заходило каким-то образом в процедуру ПриКомпоновке, но место ошибки не совпадало с реальной строкой в измененном модуле, переименовал отчет, заработало. но в процедуру все равно не заходит. кэш?

только Вывести вызывается не в 91-ой, а в 93-й строке обработчика ПриКомпоновкеРезультата, сей косяк был исправлен вызовом установки параметра «ИспользуетсяОтборПоСегментуПартнеров» в общем модуле СегментыСервер из журнала регистрации: {ОбщийМодуль.ВариантыОтчетов.Модуль(2075)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат) по причине: по причине: Ошибка исполнения отчета по причине: Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’ по причине: {ВнешнийОтчет.КрутойОтчет.МодульОбъекта}: Ошибка при вызове метода контекста (Вывести) по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка создания набора данных «ДанныеОтчета» по причине: Ошибка при исполнении запроса набора данных по причине: {(79, 69)}: Не задано значение параметра «ИспользуетсяОтборПоСегментуПартнеров» ОтборПоСегментуПартнеров.ИспользуетсяОтборПоСегментуПартнеров = <<?>>&ИспользуетсяОтборПоСегментуПартнеров)) = &П4

соответственно, после переименования отчета все становится хорошо. поэтому и была мысль на кэш.

У тебя кнопка «Сформировать» своя нарисована?

цитирую себя же: «формы отчета, настроек и т д — общие, типовые»

Может все таки дело в отладчике — не ловит фоновое задание. Я в таких случаях чтобы точно убедиться в модуле пишу матерное слово — если все таки зашел, то программа сругнется)

Тэги:

Комментарии доступны только авторизированным пользователям

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

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

Злой самаритянин

182 / 182 / 94

Регистрация: 24.04.2014

Сообщений: 686

1

1C 8.x

Макеты в СКД — Нужно вывести итоги по некоторым полям

28.07.2014, 16:40. Показов 31764. Ответов 27


8.3. Делаю внешний отчет с макетом в СКД. Нужно вывести итоги по некоторым полям. Все, кроме итогов выводится нормально. Как только не пытался сделать: Через макет с типом «Общий итог …», группировки в настройках разные делал, с именем тоже.

Кучу уроков нашел по этому вопросу, но так ничего и не сработало. Что делать?

0

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.07.2014, 16:48

21

SHIFT_969, сработало?
Можно вместо описания событий повесить на форму свою кнопку Сформировать, где прописать ЭтаФорма.СкомпоноватьРезультат(…) и далее — удаление лишних областей.

1

SHIFT_969

Злой самаритянин

182 / 182 / 94

Регистрация: 24.04.2014

Сообщений: 686

29.07.2014, 17:20

 [ТС]

22

GreenkO,

{Форма.ФормаОтчета.Форма(6)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
ЭтаФорма.СкомпоноватьРезультат(Таб);
по причине:
Несоответствие типов (параметр номер ‘1’)

Добавлено через 15 минут
Вот с таким текстом и значением «Итоги» белого цвета на белом фоне под пустой строкой, оно работает! Только по специальной кнопке. Не самый изящный вариант, но хоть что-то. Как прописать автоматическое формирование отчета?

1C
1
2
3
ОбластьЯчеекКУдалению = Результат.НайтиТекст("Итоги");
Область = Результат.Область(ОбластьЯчеекКУдалению.Верх-1, , ОбластьЯчеекКУдалению.Верх-1);
Результат.УдалитьОбласть(Область, ТипСмещенияТабличногоДокумента.ПоВертикали);

0

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.07.2014, 17:22

23

SHIFT_969, см. синтакс-помощник
в случае ЭтаФорма: СкомпоноватьРезультат(<РежимКомпоновки>) (параметр необязательный)
в случае ОтчетОбъект: СкомпоноватьРезультат(<Результат>, <ИнформацияРасшифровки>)

1

Злой самаритянин

182 / 182 / 94

Регистрация: 24.04.2014

Сообщений: 686

29.07.2014, 17:26

 [ТС]

24

Сделал кнопку, но заменить ее, если выбирать всое действие, нельзя, появляется стандартная.

0

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

29.07.2014, 17:32

25

Лучший ответ Сообщение было отмечено SHIFT_969 как решение

Решение

SHIFT_969, создайте свою командную панель (стандартную уберите), в нее добавьте вашу кнопку и все необходимые команды формы.

1

2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

29.07.2014, 19:31

26

Цитата
Сообщение от SHIFT_969
Посмотреть сообщение

duk337, Объясните словами пожалуйста, зачем в моем отчете, где не считается никакая скидка, нет цен, прайсов и уценок, а ресурс, которому нужно вывести итог и так имеет выражение «Сумма()» вычислять какую-то скидку?

Виноват! Посмотрел по ссылке, и решил, что проблема в расчете % в итогах. Типовая проблема. И удивился, к чему макет Издержки диагонального просмотра.

0

Dethmontt

29.07.2014, 23:07

Не по теме:

duk337,читай темы вертикально! =))) :)

0

duk337

30.07.2014, 10:17


    1C 8.x Макеты в СКД — Нужно вывести итоги по некоторым полям

Не по теме:

Dethmontt, скажи ещё, начиная с первого поста :о)

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.07.2014, 10:17

28

Тема: Задача 2.2  (Прочитано 5953 раз)

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

Решение выполнено в конструкторе СКД без программирования.


Вложения:
2_2.zip


Записан


добрый день!изменяю, как по примеру, типовой,при выполнении вылезает ошибка:
 {ОбщаяФорма.ФормаОтчета.Форма(1148)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
 СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
 по причине:
 Ошибка исполнения отчета
 по причине:
 Ошибка в выражении
 по причине:
 Синтаксическая ошибка

 что не так?

 разобрался)

« Последнее редактирование: Июнь 18, 2013, 11:42:29 am от ru »


Записан



такая же ошибка. пока не нашла в каком именно месте. у вас где была?

« Последнее редактирование: Июнь 19, 2013, 02:24:28 pm от Анастасия »


Записан


во вкладке макет СКД, там где вывод параметром, есть имя параметра «Номенклатура» в разных областях, я его переименовал(ну например, номенклатура1 и номенклатура2)


Записан


Gray, не обязательно добавлять в макет «валюту отчета», можно в скд на закладке другие настройки поставить галку «отображать параметры»—«выводить». Думаю так правильнее будет. Остальное все ОК.


Записан


А дата курса валюты должна выбираться в диалоге отчета, судя по заданию…


Записан


Цитата Gray ()

Решение выполнено в конструкторе СКД без программирования. Прикрепления: 2_2.zip(262Kb)

В задании поставлена задача вывести несколько видов цен и каждый вид цен должен выводиться в валюте вида цены и выбранной валюте. Я так понял задание. А в данном решении просто пересчитывается одна валюта в другую. Выкладываю своё решение. Если будут замечания пишите


Вложения:
03.erf


Записан


Актуализирую, под новую версию конфигурации. Решал на 11.1.10.172.

Изначально я понял задачу что руководству компании нужно выводить отчёт В валюте выбранной цены и В валюте выбранной пользоватлем. т.е. у меня 2-е колонки: валюта цены и валюта формы. Постановка задачи не точна. Если у нас три разных понимания того что хочет заказчик.


Записан


Актуализирую, под новую версию конфигурации. Решал на 11.1.10.172.

Изначально я понял задачу что руководству компании нужно выводить отчёт В валюте выбранной цены и В валюте выбранной пользоватлем. т.е. у меня 2-е колонки: валюта цены и валюта формы. Постановка задачи не точна. Если у нас три разных понимания того что хочет заказчик.

Хоть бы пометил свои изменения в отчете, не учили такому? ))


Записан



Тема: Задача 2.6  (Прочитано 12500 раз)

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

Делаю задачу 2.6 по аналогии с задачей 2.4 из предыдущего сборника задачек.
 Все время выдает ошибку «Значение не является значением объектного типа (Значение)».
 Если не сложно, посмотрите пожалуйста, в чем там дело, всю голову уже сломала… wacko


Вложения:
_2.6.erf


Записан


В схеме СКД отсутствует параметры ИспользуетсяОтборПоСегментуНоменклатуры и ИспользуетсяОтборПоСегментуПартнеров, а в модуле объекта данные параметры обрабатываются. Посмотрите оригинальный отчёт ВыручкаИСебестоимостьПродаж в конфигурации.


Записан



Решил задачу модификацией штатного отчёта ВыручкаИСебестоимостьПродаж. В запросе подтягивается плановая стоимость (плановая цена номенклатуры * количество) и в вычисляемых полях определяем разницу между планом и факту. Видимо по данной задаче проверяется владеет ли кандидат вычисляемыми полями СКД. Новые поля внесены во все варианты отчёта.


Вложения:
_2_6.erf


Записан


а у кого нить такая ошибка возникала:

 {ОбщаяФорма.ФормаОтчета.Форма(1148)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
 СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
 по причине:
 Ошибка исполнения отчета
 по причине:
 Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
 по причине:
 {Отчет.ВыручкаИСебестоимостьПродаж.МодульОбъекта(18)}: Ошибка при вызове метода контекста (Выполнить)
 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
 по причине:
 Ошибка компоновки макета
 по причине:
 Не установлено значение параметра «ДанныеПоПродажам»

 что за параметр???


Записан


Gray, спасибо, пойду исправлять!)


Записан


Задания не сложное, но у меня один вопрос, не могу понять почему, в прикрепленном файле 2_6_ запрос в СКД по таблице цен номенклатуры имеет параметры виртуальной таблицы

Код

ВидЦены = &ВидЦены
    И (Номенклатура, Характеристика) В
       (ВЫБРАТЬ
          врПодготовленнаяОтбор.Номенклатура,
          врПодготовленнаяОтбор.Характеристика
       ИЗ
          врПодготовленная КАК врПодготовленнаяОтбор)

 так вот ругается на поле характеристики:

Цитата

{Форма.ФормаОтчета.Форма(1148)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
 СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
 по причине:
 Ошибка исполнения отчета
 по причине:
 Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
 по причине:
 {ВнешнийОтчет.ВыручкаИСебестоимостьПродаж.МодульОбъекта(26)}: Ошибка при вызове метода контекста (Инициализировать)
 ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
 по причине:
 Ошибка компоновки данных
 по причине:
 Ошибка инициализации
 по причине:
 Ошибка создания набора данных «ВыручкаИСебестоимостьПродаж»
 по причине:
 Ошибка при исполнении запроса набора данных
 по причине:
 {(171, 30)}: Поле не найдено «врПодготовленнаяОтбор.Характеристика»
 врПодготовленнаяОтбор.<<?>>Характеристика

 Не могу понять почему, можно конечно не ограничивать параметры виртуальной таблицы по характеристикам, но как то неприятно


Вложения:
2_6.erf
2_6_.erf


Записан


Glime, варианты не рабочие, у меня выдаёт ошибку:

 Поле не найдено «врПодготовленнаяОтбор.Номенклатура»
 врПодготовленнаяОтбор.<<?>>Номенклатура,

 Соответственно и характеристика будет тоже не найдена….


Записан


Nechipury, ты скачал 2_6_(как раз описана эта проблема выше), попробуй 2_6.


Записан


Gray,ток вопрос у меня!
 в задаче написано разница продажной стоимости и плановой стоимости, а в своём отчете ты отнимаешь СебестоимостьИтоги — ПлановаяСтоимость,
 может надо отнимать от Выручки?


Записан


здравствуйте, а подскажите пожалуйста по задаче, пользователь должен сам выбирать Вид цены, или же нужно жестко прикручивать к виду цены Плановая себестоимость?


Записан


Задачка казалась элементарной, попалась на экзамене, но в итоге поставили 2 за: 
 «Задача на конфигурирование: не учитывается валюта, не учитываются единицы измерения,использование условия в запросе вместо отбора в параметрах ВТ». Так что к задаче стоит подойти гораздо щепетильнее. Конечно, про параметры ВТ знала, просто на экзамене не взлетело с ними сделать, поэтому пришлось сделать через условие. Ну по крайней мере опыт,что оценивают строго. Всем удачи, друзья!


Записан


Выкладываю с учтенной валютой, параметрами виртуальных таблиц и упаковкой. Прошу критики.


Вложения:
9828193.erf


Записан


gugenotka, у меня то же самое

Цитата

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

 нужно проверять заполненность и корректность вводимых данных?
 какое еще описание должно быть?
 зачем учитывать упаковки и валюты, если в задании не сказано, что учет ведется по нескольким валютами и используются упаковки.(((
 В описании требований к экзамену на сайте 1c.ru об этом не сказано.

« Последнее редактирование: Ноябрь 18, 2013, 02:40:50 pm от Nathalie »


Записан


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


Вложения:
7409900.erf

« Последнее редактирование: Январь 29, 2014, 07:14:09 pm от Сергей »


Записан


Попалась на экзамене, сделал ну примерно как Nylander, делил на коэффициент упаковки, 2 таблицы с курсами валют для вида цены и для валюты учета. Вид цены завел предопределенный, поле разница сделал вычисляемым, чтобы не дублировать в запросе. В примере завел плановую себестоимость в долларах, на одну из позиций указал цену за упаковку. Отчет зарегистрировал как внешнюю обработку. Оценка 5.

« Последнее редактирование: Апрель 12, 2014, 09:47:35 am от Александр »


Записан



Студворк — интернет-сервис помощи студентам

В зарплатной 3.1 такая вот проблема:

Кликните здесь для просмотра всего текста

У пользователя недостаточно прав на исполнение операции над базой данных.
{ОбщийМодуль.ВариантыОтчетов.Модуль(1717)}: ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
{ОбщийМодуль.ВариантыОтчетов.Модуль(2709)}: Формирование = СформироватьОтчет(Параметры, Ложь, Ложь);
{(1)}:ВариантыОтчетов.СформироватьОтчетВФоне(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5264)}: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
{ОбщийМодуль.ДлительныеОперации.Модуль(1109)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1099)}: ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
{Отчет.СправкаПоОтпускам.МодульОбъекта(30)}: ПроцессорВыводаВКоллекциюЗначений.Вывести(ПроцессорКомпоновки);
{ОбщийМодуль.ВариантыОтчетов.Модуль(1717)}: ОтчетОбъект.СкомпоноватьРезультат(Результат.ТабличныйДокумент, Результат.Расшифровка);
{ОбщийМодуль.ВариантыОтчетов.Модуль(2709)}: Формирование = СформироватьОтчет(Параметры, Ложь, Ложь);
{(1)}:ВариантыОтчетов.СформироватьОтчетВФоне(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5264)}: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
{ОбщийМодуль.ДлительныеОперации.Модуль(1109)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1099)}: ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.

Метаданные: Отчёт. Справка по отпускам.
Данные: Справка об остатках отпусков.

у пользователя есть права на:
Чтение Отпусков и Добавление Изменение Отпусков, но всё-равно вот такая вот проблемка…

Событие ПриКомпоновкеРезультата

1С:Предприяятие 8.3

Событие ПриКомпоновкеРезультата вызывается при выполнении метода объекта отчета  СкомпоноватьРезультат. Обработчик события находится в модуле объекта.

ПриКомпоновкеРезультата(<ДокументРезультат>, <ДанныеРасшифровки>, <СтандартнаяОбработка>)

Параметры:

  • <ДокументРезультат> – Документ, в который выводится результат.
  • <ДанныеРасшифровки> – Переменная, в которую необходимо поместить данные расшифровки. Если данный параметр имеет значение Null, то данные расшифровки создавать не нужно.
  • <СтандартнаяОбработка>Тип: Булево.  В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.Значение по умолчанию: Истина.

Замечание:Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.

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

Пример №1. Установка значения параметров при компоновке результата

Следующий фрагмент кода показывает как установить значение параметра основание , которое является документом основания друговог параметра – регистратор

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

Отметим, что если параметр Основание не найден, будет вызвано исключение в методе УстановитьЗначениеПараметра.

Пример №2 Передача Внешних Наборов Данных при компоновке результата

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

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

Пример №3 Изменение запрос набора данных

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

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

Пример № 4 Изменение в табличном документе до его вывода

В данном примере тревуется делать изменения в документе, в который выводится результат.

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

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

Пример №5 Вывода результата компоновки в дерево значений.

 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений 

пример фрагмента кода в модуле объекта отчета:

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

1С:Предприяятие 8.3

Событие ПриКомпоновкеРезультата вызывается при выполнении метода объекта отчета  СкомпоноватьРезультат. Обработчик события находится в модуле объекта.

ПриКомпоновкеРезультата(<ДокументРезультат>, <ДанныеРасшифровки>, <СтандартнаяОбработка>)

Параметры:

  • <ДокументРезультат> – Документ, в который выводится результат.
  • <ДанныеРасшифровки> – Переменная, в которую необходимо поместить данные расшифровки. Если данный параметр имеет значение Null, то данные расшифровки создавать не нужно.
  • <СтандартнаяОбработка>Тип: Булево.  В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.Значение по умолчанию: Истина.

Замечание:Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.

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

Пример №1. Установка значения параметров при компоновке результата

Следующий фрагмент кода показывает как установить значение параметра основание , которое является документом основания друговог параметра – регистратор

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

Отметим, что если параметр Основание не найден, будет вызвано исключение в методе УстановитьЗначениеПараметра.

Пример №2 Передача Внешних Наборов Данных при компоновке результата

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

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

Пример №3 Изменение запрос набора данных

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

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

Пример № 4 Изменение в табличном документе до его вывода

В данном примере тревуется делать изменения в документе, в который выводится результат.

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

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

Пример №5 Вывода результата компоновки в дерево значений.

 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений 

пример фрагмента кода в модуле объекта отчета:

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

HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. Read more…

closed

Исправлена ошибка выполнения отчета с получением функциональных опций при наличии опций с параметрами

Category:

Анализ прав доступа


Description

{ИнструментыРазработчикаTormozit Отчет.ирАнализПравДоступа.Форма.ФормаОтчета.Форма(288)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
    СкомпоноватьРезультат(ЭлементыФормы.ТабличныйДокумент, ДанныеРасшифровки);
по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ИнструментыРазработчикаTormozit Отчет.ирАнализПравДоступа.МодульОбъекта(111)}: Ошибка при вызове метода контекста (ПолучитьФункциональнуюОпцию)
            СтрокаТаблицы.ФункциональнаяОпцияВключена = ПолучитьФункциональнуюОпцию(ФункциональнаяОпция.Имя);
по причине:
Не указаны все необходимые параметры функциональных опций

  • Description updated (diff)
  • Sprint/Milestone changed from Разработка to 5.73

Also available in: Atom
PDF

Понравилась статья? Поделить с друзьями:
  • 1с ошибка при вызове метода контекста рольдоступна
  • 1с ошибка при вызове метода контекста размер
  • 1с ошибка при вызове метода контекста предопределенноезначение
  • 1с ошибка при вызове метода контекста получитьфайлы
  • 1с ошибка при вызове метода контекста получитьобъект