1с скд синтаксическая ошибка как найти

Всё работало хорошо, но вдруг перестало, после того, как я внес изменения в макет СКД:

При формировании отчета появлялась надпись «Синтаксическая ошибка» и всё.

Когда убрал некоторые секции, методом деструктивного исключения обнаружил, что глючит зеленая секция.

Благо, CTRL+Z сработал и вернул изменения назад (каюсь, рабочей версии отчета не было).

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

Экие тонкости в 1С, однако!

Вычисляемое поле в СКД — Синтаксическая ошибка

Я
   Klesk

20.12.22 — 16:02

Что не так?

Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)).Количество()>0 Тогда

УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»))[0].Значение

Конец

   Klesk

1 — 20.12.22 — 16:06

[1C]

   Klesk

2 — 20.12.22 — 16:08

    Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты")).Количество()>0 Тогда
    УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты"))[0].Значение

    Конец
   Klesk

3 — 20.12.22 — 16:11

Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты")).Количество()>0 Тогда
    УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты"))[0].Значение

    Конец

убрал Объект, все равно

   Гипервизор

4 — 20.12.22 — 16:29

(0) Что за ошибка-то? Этот модуль можно использовать в выражениях СКД?

   Klesk

5 — 20.12.22 — 16:36

(4) Синтаксическая ошибка

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

{ОбщаяФорма.ФормаОтчета.Форма(594)}:        СформироватьНепосредственно();

по причине:

Ошибка исполнения отчета

по причине:

Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’

по причине:

Синтаксическая ошибка

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

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

по причине:

Ошибка компоновки макета

по причине:

Ошибка в выражении «(Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)).Количество()>0 Тогда

    УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»))[0].Значение

    Конец)»

по причине:

Синтаксическая ошибка

   Klesk

6 — 20.12.22 — 16:42

Общий модуль конфигурации

Сервер, Внешнее соединение, Клиент (обычное приложение)

Если оставить только УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»))

ошибки нет

   vicof

7 — 20.12.22 — 16:51

УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)) = Неопределено у каких-нибудь записей

   Klesk

8 — 20.12.22 — 17:22

(7) там Возврат Запрос.Выполнить().Выгрузить();

в любом случае таблица

   Kassern

9 — 20.12.22 — 17:25

(8) А зачем это делать в вычисляемом поле? Если речь идет про СКД, что мешает там получить нужную таблицу и привязать ее к основной?

   Klesk

10 — 20.12.22 — 17:27

(9) нет, я могу и функцию запилить в общем модуле, просто интересно, почему так не получается

   Kassern

11 — 20.12.22 — 17:28

(10) Потому что это корявое решение, пытаться получить таблицу в вычисляемое поле.

   Kassern

12 — 20.12.22 — 17:30

Имхо все дело в синтаксисе, которые не проходит ваше выражение из-за точки.

   Kassern

13 — 20.12.22 — 17:30

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

   Klesk

14 — 20.12.22 — 17:30

(11) согласен, просто изначально думал это будет проще типовыми методами

   Renium1963

15 — 20.12.22 — 17:31

А разве так можно «[0].Значение» ?

   Kassern

16 — 20.12.22 — 17:32

(14) вы можете написать еще одну функцию, которая вернет первый элемент таблицы, либо неопределено (к примеру). И вот уже ее использовать, но все равно это корявое решение имхо))

   vicof

17 — 20.12.22 — 17:37

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

   Kassern

18 — 20.12.22 — 17:38

(17) А если у физического лица несколько почтовых ящиков?

   vicof

19 — 20.12.22 — 17:43

(18) Или свою функцию запилить, чтобы возвращали список одной строчкой. Или сделать несколько полей для контактной информации, или брать первый. Для начала можно почитать задачу, а там уже принимать решение.

   Klesk

20 — 20.12.22 — 19:12

(15) да, нельзя

Выражение вычисляемого поля описывается на языке выражений компоновки данных. В выражениях вычисляемого поля есть ограничение — в нем нельзя использовать вычисляемые поля.

https://its.1c.ru/db/metod8dev/content/1810/hdoc

   Klesk

21 — 20.12.22 — 20:23

я «победил»… всё выводится

ОбщегоНазначения.ВыгрузитьКолонку(УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)),»Значение»)

   Klesk

22 — 20.12.22 — 20:23

[1C]ОбщегоНазначения.ВыгрузитьКолонку(УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)),»Значение»)[1C]

   Klesk

23 — 20.12.22 — 20:23

[1С]ОбщегоНазначения.ВыгрузитьКолонку(УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)),»Значение»)[1С]

  

Renium1963

24 — 21.12.22 — 10:43

(21) Ну, вот и все… а сколько бумаги исписали то на комментарии )))

Обновлено: 27.01.2023

Доброго всем дня.
В СКД в запросе использую параметр ТекДата, на вкладке Параметры в поле Выражение пишу ТекущаяДата(). Отчёт даже не открывается, пишет «значение не является значением объектного типа (ДоступныеЗначения)». Что это? 1С сломала выражения для параметров СКД на управляемых формах?

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

какая версия платформы ?
у меня на 8.3.14.1694 работает

«значение не является значением объектного типа ( ДоступныеЗначения )»

(4) Я умею читать. Только в этом поле ничего нет. Поэтому и спрашиваю.

(6) Ну, так ругается на «Доступные значения», поле которых есть не только на вкладке «Параметры», но и на первой вкладке, «Наборы данных», если параметр используется как поле.
Из-за того, что не было предоставлено ни скринов, ни самого отчета, непонятно, что в отчете заполнено правильно, а что нет.
Еще возможно, сломались настройки сохраненного варианта, можно попробовать сбросить на по умолчанию.
Как заметили в (2) указанное выражение работает, в том числе и на 8.3.16.1296 (проверено мной).
Для самостоятельной проверки повторения проблемы достаточно создать пустой отчет с единственным параметром, и проверить его (отчета) открытием.

(3) Я вроде русским языком написал — «пишу в поле Выражение»

ТекущаяДатаСеанса() не подойдёт?
И еще момент — может ДоступныеЗначения поломались? Список с пустыми или битыми значениями, например.

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

(9) Если ошибка возникала в обработчике события ПриОткрытии(), то все там должно быть информативно. Нужно было всего лишь, нажать кнопку «Подробно» и скопировать весь текст от туда сюда в тему при составлении своего вопроса. Там должен был быть и кусок кода, и название модуля, и номер стоки в нем.
А так это ваш вопрос абсолютно не информативен: ни полного текста ошибки, ни скринов, ни отчета.

Преподаватель 1С
Санкт-Петербург
зарплата от 100 000 руб. до 120 000 руб.
Временный (на проект)

На ИТС нашёл упоминание, что ТекущаяДата() работает в СКД (в справке про это ни слова), про другие методы описанные в статье ничего не нашёл.

Как собиралась информация: открыл в СП раздел «Глобальный контекст» и все методы проверял в СКД. Функции, которые помнил, что есть в СКД пропускал как заведомо рабочие. Также пропускал методы заведомо не рабочие, например ПоказатьВопрос. Прошёлся методом перебора по порядку по разделам «Функции работы со значениями типа Строка», «Функции работы со значениями типа Число», «Функции работы со значениями типа Дата» и т.д. до «Процедуры и функции сохранения значений».

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

Проверял в СКД на данных полученные запросом:

Перечень методов глобального контекста работающих в СКД на платформе «8.3.8.1652» «8.3.7.1845», «8.3.6.2390» и «8.2.19.130» в управляемом приложении клиенте:

  1. СтрНайти (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130). Найти на 8.2.19.130 тоже не работает.
  2. СтрСравнить (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
  3. СтрНачинаетсяС (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
  4. СтрЗаканчиваетсяНа (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
  5. СтрРазделить (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
  6. СтрСоединить (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
  7. ТекущаяДата()
  8. СтрШаблон (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
  9. ЧислоПрописью
  10. НСтр
  11. ПредставлениеПериода
  12. ПолучитьОбщийМакет
  13. ПредопределенноеЗначение
  14. ПолучитьПолноеИмяПредопределенногоЗначения
  15. ПолучитьСкоростьКлиентскогоСоединения()
  16. ИмяКомпьютера()
  17. ИмяПользователя()
  18. ПолноеИмяПользователя()
  19. КаталогПрограммы()
  20. КаталогВременныхФайлов()
  21. ПравоДоступа – тут надо разбираться как передать ОбъектМетаданных в параметр
  22. РольДоступна
  23. ТекущийЯзык()
  24. ТекущийКодЛокализации()
  25. СтрокаСоединенияИнформационнойБазы()
  26. ПараметрыДоступа – тут надо разбираться как передать ОбъектМетаданных в параметр
  27. ПредставлениеПриложения
  28. ТекущийЯзыкСистемы()
  29. ТекущийРежимЗапуска()
  30. ЧасовойПоясСеанса()
  31. ТекущаяДатаСеанса()
  32. ПредставлениеПрава
  33. ПолучитьИнформациюЭкрановКлиента() (не работает на 8.2.19.130)
  34. ТекущийВариантОсновногоШрифтаКлиентскогоПриложения() (не работает на 8.2.19.130)
  35. ТекущийВариантИнтерфейсаКлиентскогоПриложения() (не работает на 8.2.19.130)
  36. ЗначениеВСтрокуВнутр
  37. ЗначениеИзСтрокиВнутр
  38. ПолучитьИмяВременногоФайла()
  39. ЗначениеЗаполнено (зачеркнул, т.к. есть в справке)
  40. ТекущаяУниверсальнаяДатаВМиллисекундах()

Среди этих методов есть абсолютно бесполезные, например «ПолучитьИнформациюЭкрановКлиента()» (даже представить не могу где это можно применить в чистом СКД), но есть и очень даже полезные, например «ЧислоПрописью». К сожалению, СокрЛП до сих пор не работает…

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

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

В отчете нет ничего нового относительно данной статьи, но к сожалению, написать бесплатную статью с файлом нельзя по правилам Инфостарта. В отчете все 40 методов тестируются на «чистом» СКД через вычисляемые поля. Результат работы отчета приведен в скриншоте к статье. Если проверять на базе где нет «Перечисление.ВидыИмущества.ОсобенностиОтсутствуют» то методы ПредопределенноеЗначение и ПолучитьПолноеИмяПредопределенногоЗначения работать не будут, поэтому требуется ручная замена на что-нибудь подходящее.

Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка: : Ошибка при вызове метода контекста (Следующий) ЭлементРезультата = ПроцессорКомпановки.Следующий(); по причине: Ошибка компоновки данных по причине: Ошибка получения данных по причине: Ошибка в выражении по причине: Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»

1с 8 скд вывод вычисляемого поля с выражением при программном выводе

1с 8 ошибка при выводе вычисляемого поля с выражением отчета на СКД при программном выводе

Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):

Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>),
где <ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь

Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):

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

Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:

1с 8 скд ошибка вывода вычисляемого поля отчета на СКД использующего выражение с функцией при программном выводе

: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»

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

1с 8 скд использование функции в выражении вычисляемого поля программно выводимого отчета

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

Читайте также:

  • Как задать вопрос аудитору в 1с итс
  • Oc android что это за программа и нужна ли она
  • 1с ерп коммерческое предложение как
  • Драйвера 5850 не обновляются
  • Ch340 драйвер не работает

Синтаксическая ошибка в запросе СКД

Автор Лесной Лес, 28 апр 2015, 16:17

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

Не могу понять в чем ошибка синтаксиса при использовании функции Разностьдат

ВЫБРАТЬ
   Номенклатура.НаименованиеПолное,
   Номенклатура.Сертификат.ДатаОкон,
   Номенклатура.Сертификат.СрокДейст
   РАЗНОСТЬДАТ(Номенклатура.Сертификат.ДатаОкон, Номенклатура.Сертификат.СрокДейст, День)

      ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
       (Номенклатура.Сертификат.СрокДейст < ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, &Дни)
         ИЛИ Номенклатура.Сертификат.ДатаОкон < ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, &Дни))

Параметры вроде все указал



Может дата пустая, поэтому и возникает ошибка.


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


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Синтаксическая ошибка в запросе СКД

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

Рейтинг@Mail.ru

Rambler's Top100

Поиск

КомпоновщикМакета, синтаксическая ошибка при выполнении

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

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

ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«НаборДМС», ТЗ_ДМС);

//Инициализируем процессор компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);

//Очищаем документ результата
ДокументРезультат.Очистить();

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

Ошибка
Синтаксическая ошибка
<ВнешнийОтчет.ПриложениеКДоговору.МодульОбъекта(129)>:
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);

по причине:
Ошибка компоновки макета
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка

Как выцепить эту синтаксическую ошибку? В журнал ничего не пишется. Спасибо

Источник

Ошибка при программном выполнении отчета СКД

Платформа 8.2.19.130.
Хочу получить результат отчета в дерево значений. Выполняю код
[1c]
&НаСервере
Процедура СохранитьРезультатОтчетаСервер()

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

МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ТекОтчет.СхемаКомпоновкиДанных, Отчет.КомпоновщикНастроек.Настройки. Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»));

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

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

ДЗ = Новый ДеревоЗначений;

КонецПроцедуры
[/1c]
Выходит ошибка
[1c]
<ОбщаяФорма.ФормаОтчетаУпрСКД.Форма(101)>: Ошибка при вызове метода контекста (Инициализировать)
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «СервисОтчетов.ПолучитьСсылочноеЗначение»
[/1c]
В схеме один из параметров отчета (справочник ссылка) определяется вызовом функции общего модуля «СервисОтчетов».
У модуля установлены флаги «Клиент», «Сервер», «Вызов сервера».
Если заменить выражение Параметра на предопределенное значение, то все работает.
Неужели при программном выполнении отчета нельзя использовать вызов функций общих модулей?

Источник

Ошибка компоновки макета по причине ошибка в выражении по причине синтаксическая ошибка

Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка: <Форма.ФормаОтчета.Форма(137)>: Ошибка при вызове метода контекста (Следующий) ЭлементРезультата = ПроцессорКомпановки.Следующий(); по причине: Ошибка компоновки данных по причине: Ошибка получения данных по причине: Ошибка в выражении по причине: Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»

skd vich pole 01

skd vich pole 02

Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):

Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):

Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:

skd vich pole 03

<Форма.ФормаОтчета.Форма(137)>: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»

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

skd vich pole 04

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

Источник

Несоответствие типов СхемаКомпоновкиДанных

Здравствуйте! Нужно изменить стандартный отчет Карточка количественно-суммового учета МЦ. Сохранил его во внешний, добился, чтобы запускалась форма. Но вот при формировании отчета постоянно ошибка. Конфигурация БГУ 2.0, платформа 8.3.8.1675. Управляемое приложение. Третий день бьюсь. Помогите пожалуйста!

Ошибка при вызове метода контекста (Выполнить)

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

В данном методе первый параметр должен иметь тип СхемаКомпоновкиДанных, а получается строка

СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(ПараметрыОтчета.Схема);
Вот вся процедура

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

Если ПараметрыОтчета.Свойство(«Схема») тогда
Если ЭтоАдресВременногоХранилища(ПараметрыОтчета.Схема) Тогда
//ОтчетОбъект = РеквизитФормыВЗначение(«Отчет»);
//СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);

СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(ПараметрыОтчета.Схема);
//СхемаКомпоновкиДанных = РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
КонецЕсли;
КонецЕсли;

//Сгенерируем макет компоновки данных при помощи компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

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

ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиОбъект, ПараметрыОтчета.УникальныйИдентификатор);

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

//Обозначим начало вывода
ПроцессорВывода.НачатьВывод();

Массив = Новый Массив;
//ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
Пока Истина Цикл

//ОбработкаПрерыванияПользователя();
//Получим следующий элемент результата компоновки
ЭлементРезультата = ПроцессорКомпоновки.Следующий();

Если ЭлементРезультата.Макет = «Макет3» Тогда
Массив.Добавить(Результат.ВысотаТаблицы);
КонецЕсли;

КонецЕсли;
КонецЦикла;
//вставка разрыва страниц
ЭтоПервый = Истина;
КонечнаяОбласть = Неопределено;
ОбластьСтрок = Неопределено;
Пока Истина Цикл
Если ЭтоПервый Тогда
НайденнаяОбласть = Результат.НайтиТекст(«Карточку заполнил»);
ЭтоПервый = Ложь;
Иначе
НайденнаяОбласть = Результат.НайтиТекст(«Карточку заполнил»,КонечнаяОбласть);
КонецЕсли;
Если НайденнаяОбласть = Неопределено Тогда
Прервать;
КонецЕсли;
КонечнаяОбласть = Результат.НайтиТекст(«Дата»,НайденнаяОбласть);
Если КонечнаяОбласть<>Неопределено Тогда
ОбластьСтрок = Результат.Область(Лев(КонечнаяОбласть.Имя,Найти(КонечнаяОбласть.Имя,»C»)-1));
ОбластьСтрок.КонецСтраницы = Истина;
КонецЕсли;
КонецЦикла;
//убираем последний разрыв страницы
Если НЕ ОбластьСтрок = Неопределено Тогда
ОбластьСтрок.КонецСтраницы = Ложь;
КонецЕсли;

//Исключение
// ИнформацияОбОшибке = ИнформацияОбОшибке();
// Пока ИнформацияОбОшибке.Причина <> Неопределено Цикл
// ИнформацияОбОшибке = ИнформацияОбОшибке.Причина;
// КонецЦикла;
// ТекстСообщения = НСтр(«ru = ‘Отчет не сформирован!’») + Символы.ПС + ИнформацияОбОшибке.Описание;
// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
// Отказ = Истина;
//КонецПопытки;

КонецПроцедуры
Буду благодарен за любые идеи и подсказки.

Источник

СКД, ошибка в вычисляемых полях

(4) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «опМодуль.КореньКвадратный»

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «SQRT»

(8) А это уже странно. Тупо ради интереса запилил себе в первый попавшийся отчет эту функцию, вот этот столбец:

Корень из отрицательного числа
118,82
39,01
79,81

(4) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

В СКД можно использовать функции глобальных и неглобальных общих модулей в вычисляемых полях при условии что функция объявлена как экспортная.

Есть только маленькая тонкость при программном формировании отчета СКД.

Обычно, при инициализации процессора компоновки данных делают так:

ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
При таком формировании отчета вызова функций не произойдет. Что бы эту возможность включить нужно сделать так

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Неверные параметры «*»

Источник

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти школу танца для взрослых
  • Как найти свой майл агент
  • Как найти треугольник по теореме косинусов
  • Как найти стоимость одной акции предприятия
  • Как найти первоначальное давление газа в физике

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии