Вычисляемое поле в СКД — Синтаксическая ошибка |
Я |
20.12.22 — 16:02
Что не так?
Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)).Количество()>0 Тогда
УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»))[0].Значение
Конец
1 — 20.12.22 — 16:06
[1C]
2 — 20.12.22 — 16:08
Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты")).Количество()>0 Тогда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Объект.Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты"))[0].Значение Конец
3 — 20.12.22 — 16:11
Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты")).Количество()>0 Тогда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты"))[0].Значение Конец
убрал Объект, все равно
4 — 20.12.22 — 16:29
(0) Что за ошибка-то? Этот модуль можно использовать в выражениях СКД?
5 — 20.12.22 — 16:36
(4) Синтаксическая ошибка
{ОбщаяФорма.ФормаОтчета.Форма(1148)}: СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
{ОбщаяФорма.ФормаОтчета.Форма(594)}: СформироватьНепосредственно();
по причине:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
по причине:
Синтаксическая ошибка
{ВнешнийОтчет.ВыручкаИСебестоимостьПродажСПочтовымиАдресами.МодульОбъекта(18)}: МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
{ОбщаяФорма.ФормаОтчета.Форма(1148)}: СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто);
по причине:
Ошибка компоновки макета
по причине:
Ошибка в выражении «(Выбор когда УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)).Количество()>0 Тогда
УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»))[0].Значение
Конец)»
по причине:
Синтаксическая ошибка
6 — 20.12.22 — 16:42
Общий модуль конфигурации
Сервер, Внешнее соединение, Клиент (обычное приложение)
Если оставить только УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»))
ошибки нет
7 — 20.12.22 — 16:51
УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)) = Неопределено у каких-нибудь записей
8 — 20.12.22 — 17:22
(7) там Возврат Запрос.Выполнить().Выгрузить();
в любом случае таблица
9 — 20.12.22 — 17:25
(8) А зачем это делать в вычисляемом поле? Если речь идет про СКД, что мешает там получить нужную таблицу и привязать ее к основной?
10 — 20.12.22 — 17:27
(9) нет, я могу и функцию запилить в общем модуле, просто интересно, почему так не получается
11 — 20.12.22 — 17:28
(10) Потому что это корявое решение, пытаться получить таблицу в вычисляемое поле.
12 — 20.12.22 — 17:30
Имхо все дело в синтаксисе, которые не проходит ваше выражение из-за точки.
13 — 20.12.22 — 17:30
К функции вы можете обратиться, а вот через точку получить результат — вряд ли.
14 — 20.12.22 — 17:30
(11) согласен, просто изначально думал это будет проще типовыми методами
15 — 20.12.22 — 17:31
А разве так можно «[0].Значение» ?
16 — 20.12.22 — 17:32
(14) вы можете написать еще одну функцию, которая вернет первый элемент таблицы, либо неопределено (к примеру). И вот уже ее использовать, но все равно это корявое решение имхо))
17 — 20.12.22 — 17:37
Почта = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(ДанныеОСотруднике.ФизическоеЛицо, Справочники.ВидыКонтактнойИнформации.EMailФизическиеЛица, ТекущаяДата, Истина);
18 — 20.12.22 — 17:38
(17) А если у физического лица несколько почтовых ящиков?
19 — 20.12.22 — 17:43
(18) Или свою функцию запилить, чтобы возвращали список одной строчкой. Или сделать несколько полей для контактной информации, или брать первый. Для начала можно почитать задачу, а там уже принимать решение.
20 — 20.12.22 — 19:12
(15) да, нельзя
Выражение вычисляемого поля описывается на языке выражений компоновки данных. В выражениях вычисляемого поля есть ограничение — в нем нельзя использовать вычисляемые поля.
https://its.1c.ru/db/metod8dev/content/1810/hdoc
21 — 20.12.22 — 20:23
я «победил»… всё выводится
ОбщегоНазначения.ВыгрузитьКолонку(УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)),»Значение»)
22 — 20.12.22 — 20:23
[1C]ОбщегоНазначения.ВыгрузитьКолонку(УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(Партнер,ПредопределенноеЗначение(«Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты»)),»Значение»)[1C]
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» в управляемом приложении клиенте:
- СтрНайти (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130). Найти на 8.2.19.130 тоже не работает.
- СтрСравнить (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
- СтрНачинаетсяС (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
- СтрЗаканчиваетсяНа (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
- СтрРазделить (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
- СтрСоединить (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
- ТекущаяДата()
- СтрШаблон (не работает на 8.3.7.1845, 8.3.6.2390 и 8.2.19.130)
- ЧислоПрописью
- НСтр
- ПредставлениеПериода
- ПолучитьОбщийМакет
- ПредопределенноеЗначение
- ПолучитьПолноеИмяПредопределенногоЗначения
- ПолучитьСкоростьКлиентскогоСоединения()
- ИмяКомпьютера()
- ИмяПользователя()
- ПолноеИмяПользователя()
- КаталогПрограммы()
- КаталогВременныхФайлов()
- ПравоДоступа – тут надо разбираться как передать ОбъектМетаданных в параметр
- РольДоступна
- ТекущийЯзык()
- ТекущийКодЛокализации()
- СтрокаСоединенияИнформационнойБазы()
- ПараметрыДоступа – тут надо разбираться как передать ОбъектМетаданных в параметр
- ПредставлениеПриложения
- ТекущийЯзыкСистемы()
- ТекущийРежимЗапуска()
- ЧасовойПоясСеанса()
- ТекущаяДатаСеанса()
- ПредставлениеПрава
- ПолучитьИнформациюЭкрановКлиента() (не работает на 8.2.19.130)
- ТекущийВариантОсновногоШрифтаКлиентскогоПриложения() (не работает на 8.2.19.130)
- ТекущийВариантИнтерфейсаКлиентскогоПриложения() (не работает на 8.2.19.130)
- ЗначениеВСтрокуВнутр
- ЗначениеИзСтрокиВнутр
- ПолучитьИмяВременногоФайла()
ЗначениеЗаполнено (зачеркнул, т.к. есть в справке)- ТекущаяУниверсальнаяДатаВМиллисекундах()
Среди этих методов есть абсолютно бесполезные, например «ПолучитьИнформациюЭкрановКлиента()» (даже представить не могу где это можно применить в чистом СКД), но есть и очень даже полезные, например «ЧислоПрописью». К сожалению, СокрЛП до сих пор не работает…
Получается использовать данные выражения можно только на свой страх и риск, т.к. в справке о них ни слова, значит работоспособность не гарантируется.
Ответ от разработчиков:
В выражениях компоновки данных можно использовать функции общих модулей и функции глобального контекста.
В отчете нет ничего нового относительно данной статьи, но к сожалению, написать бесплатную статью с файлом нельзя по правилам Инфостарта. В отчете все 40 методов тестируются на «чистом» СКД через вычисляемые поля. Результат работы отчета приведен в скриншоте к статье. Если проверять на базе где нет «Перечисление.ВидыИмущества.ОсобенностиОтсутствуют» то методы ПредопределенноеЗначение и ПолучитьПолноеИмяПредопределенногоЗначения работать не будут, поэтому требуется ручная замена на что-нибудь подходящее.
Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка: : Ошибка при вызове метода контекста (Следующий) ЭлементРезультата = ПроцессорКомпановки.Следующий(); по причине: Ошибка компоновки данных по причине: Ошибка получения данных по причине: Ошибка в выражении по причине: Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):
Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>),
где <ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь
Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):
ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных ;
ПроцессорКомпановки . Инициализировать ( МакетКомпоновки , , ДанныеРасшифровки , Истина);
Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:
: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
При этом функция по всем правилам была экспортной и к этому моменту проверок размещена в глобальном модуле. Поэтому название модуля было исключено из значения выражения вычисляемого поля системы компоновки данных и отчет вывелся.
А для случая, если функция для расчета выражения вычисляемого поля скд, размещена не в глобальном модуле, то необходимо указать и имя самого модуля, содержащего используемую функцию (пример рис. 01).
Читайте также:
- Как задать вопрос аудитору в 1с итс
- Oc android что это за программа и нужна ли она
- 1с ерп коммерческое предложение как
- Драйвера 5850 не обновляются
- Ch340 драйвер не работает
1C 8 Система компоновки данных (СКД): вывод вычисляемых полей при программном формировании отчета
Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка:
{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
Найденные решения:
Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):
Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>),
где <ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь
Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):
ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпановки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:
{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
При этом функция по всем правилам была экспортной и к этому моменту проверок размещена в глобальном модуле. Поэтому название модуля было исключено из значения выражения вычисляемого поля системы компоновки данных и отчет вывелся.
А для случая, если функция для расчета выражения вычисляемого поля скд, размещена не в глобальном модуле, то необходимо указать и имя самого модуля, содержащего используемую функцию (пример рис. 01).
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
22-05-2015
Журавлев А.С.
(www.azhur-c.ru)
Всё работало хорошо, но вдруг перестало, после того, как я внес изменения в макет СКД:
При формировании отчета появлялась надпись «Синтаксическая ошибка» и всё.
Когда убрал некоторые секции, методом деструктивного исключения обнаружил, что глючит зеленая секция.
Благо, CTRL+Z сработал и вернул изменения назад (каюсь, рабочей версии отчета не было).
Вздохнул было, но потом опять ошибка возникла. И тут до меня дошло — проблема в пустых ячейках, где указан тип ячейки «Параметр», но не указано, значение какого параметра брать. Поменял тип на Текст — и все заработало.
Экие тонкости в 1С, однако!
bless18 |
|
||
---|---|---|---|
Добрый день! |
Yandex |
|
||
---|---|---|---|
E_Migachev |
|
||
---|---|---|---|
(0) bless18, так этот функционал по умолчанию сам настроен. Правк клавишей мыши, новый элемент. |
bless18 |
|
||
---|---|---|---|
|
В режме предприятие доступны сейчас варианты ВывестиСписок и НастройкаСписка.. |
E_Migachev |
|
||
---|---|---|---|
(2) bless18, на форме это табличное поле, какой его тип? |
bless18 |
|
||
---|---|---|---|
На форме это ПанельОтбора |
bless18 |
|
||
---|---|---|---|
С табличной частью, тип которой КомпоновщикНастроек.Настройки.Отбор |
bless18 |
|
||
---|---|---|---|
Это данные |
E_Migachev |
|
||
---|---|---|---|
|
да вроде все правильно. |
bless18 |
|
||
---|---|---|---|
почему-то нет, если только задать отбор в настройке отчета в режиме Предприятие |
E_Migachev |
|
||
---|---|---|---|
(8) bless18, воттт.. что-то не так *09 |
bless18 |
|
||
---|---|---|---|
Спасибо за совет. |
bless18 |
|
||
---|---|---|---|
а при формировании отчета выдается ошибка:
Ошибка компоновки макета |
E_Migachev |
|
||
---|---|---|---|
(11) bless18, зайди в конструктор запроса в СКД, там увидишь чего за ошибка |
Подсказка: Для редактирования своего ответа щелкните по значку (справа) |
КомпоновщикМакета, синтаксическая ошибка при выполнении
мозг сломал, не понимаю из-за чего появляется ошибка.
Используется набор данных, данные определяются при компоновке через таблицу значений
Концовка процедуры
Схема = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«НаборДМС», ТЗ_ДМС);
//Инициализируем процессор компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
//Очищаем документ результата
ДокументРезультат.Очистить();
//Выводим отчет в документ
ПроцессорВывода = Новый
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Ошибка
Синтаксическая ошибка
<ВнешнийОтчет.ПриложениеКДоговору.МодульОбъекта(129)>:
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);
по причине:
Ошибка компоновки макета
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка
Как выцепить эту синтаксическую ошибку? В журнал ничего не пишется. Спасибо
Источник
Ошибка при программном выполнении отчета СКД
Платформа 8.2.19.130.
Хочу получить результат отчета в дерево значений. Выполняю код
[1c]
&НаСервере
Процедура СохранитьРезультатОтчетаСервер()
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ТекОтчет.СхемаКомпоновкиДанных, Отчет.КомпоновщикНастроек.Настройки. Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДЗ = Новый ДеревоЗначений;
КонецПроцедуры
[/1c]
Выходит ошибка
[1c]
<ОбщаяФорма.ФормаОтчетаУпрСКД.Форма(101)>: Ошибка при вызове метода контекста (Инициализировать)
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «СервисОтчетов.ПолучитьСсылочноеЗначение»
[/1c]
В схеме один из параметров отчета (справочник ссылка) определяется вызовом функции общего модуля «СервисОтчетов».
У модуля установлены флаги «Клиент», «Сервер», «Вызов сервера».
Если заменить выражение Параметра на предопределенное значение, то все работает.
Неужели при программном выполнении отчета нельзя использовать вызов функций общих модулей?
Источник
Ошибка компоновки макета по причине ошибка в выражении по причине синтаксическая ошибка
Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка: <Форма.ФормаОтчета.Форма(137)>: Ошибка при вызове метода контекста (Следующий) ЭлементРезультата = ПроцессорКомпановки.Следующий(); по причине: Ошибка компоновки данных по причине: Ошибка получения данных по причине: Ошибка в выражении по причине: Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):
Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):
Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:
<Форма.ФормаОтчета.Форма(137)>: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
При этом функция по всем правилам была экспортной и к этому моменту проверок размещена в глобальном модуле. Поэтому название модуля было исключено из значения выражения вычисляемого поля системы компоновки данных и отчет вывелся.
А для случая, если функция для расчета выражения вычисляемого поля скд, размещена не в глобальном модуле, то необходимо указать и имя самого модуля, содержащего используемую функцию (пример рис. 01).
Источник
Несоответствие типов СхемаКомпоновкиДанных
Здравствуйте! Нужно изменить стандартный отчет Карточка количественно-суммового учета МЦ. Сохранил его во внешний, добился, чтобы запускалась форма. Но вот при формировании отчета постоянно ошибка. Конфигурация БГУ 2.0, платформа 8.3.8.1675. Управляемое приложение. Третий день бьюсь. Помогите пожалуйста!
Ошибка при вызове метода контекста (Выполнить)
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиДляКомпоновкиМакета, ДанныеРасшифровкиОбъект);
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиДляКомпоновкиМакета, ДанныеРасшифровкиОбъект);
по причине:
Несоответствие типов (параметр номер ‘1’)
В данном методе первый параметр должен иметь тип СхемаКомпоновкиДанных, а получается строка
СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(ПараметрыОтчета.Схема);
Вот вся процедура
Процедура СформироватьОтчет(Знач ПараметрыОтчета, Результат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт
Если ПараметрыОтчета.Свойство(«Схема») тогда
Если ЭтоАдресВременногоХранилища(ПараметрыОтчета.Схема) Тогда
//ОтчетОбъект = РеквизитФормыВЗначение(«Отчет»);
//СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(ПараметрыОтчета.Схема);
//СхемаКомпоновкиДанных = РеквизитФормыВЗначение(«Объект»).ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
КонецЕсли;
КонецЕсли;
//Сгенерируем макет компоновки данных при помощи компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиДляКомпоновкиМакета, ДанныеРасшифровкиОбъект);
//МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиДляКомпоновкиМакета);
ДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиОбъект, ПараметрыОтчета.УникальныйИдентификатор);
//Создадим и инициализируем процессор вывода результата
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
//Обозначим начало вывода
ПроцессорВывода.НачатьВывод();
Массив = Новый Массив;
//ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
Пока Истина Цикл
//ОбработкаПрерыванияПользователя();
//Получим следующий элемент результата компоновки
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата.Макет = «Макет3» Тогда
Массив.Добавить(Результат.ВысотаТаблицы);
КонецЕсли;
КонецЕсли;
КонецЦикла;
//вставка разрыва страниц
ЭтоПервый = Истина;
КонечнаяОбласть = Неопределено;
ОбластьСтрок = Неопределено;
Пока Истина Цикл
Если ЭтоПервый Тогда
НайденнаяОбласть = Результат.НайтиТекст(«Карточку заполнил»);
ЭтоПервый = Ложь;
Иначе
НайденнаяОбласть = Результат.НайтиТекст(«Карточку заполнил»,КонечнаяОбласть);
КонецЕсли;
Если НайденнаяОбласть = Неопределено Тогда
Прервать;
КонецЕсли;
КонечнаяОбласть = Результат.НайтиТекст(«Дата»,НайденнаяОбласть);
Если КонечнаяОбласть<>Неопределено Тогда
ОбластьСтрок = Результат.Область(Лев(КонечнаяОбласть.Имя,Найти(КонечнаяОбласть.Имя,»C»)-1));
ОбластьСтрок.КонецСтраницы = Истина;
КонецЕсли;
КонецЦикла;
//убираем последний разрыв страницы
Если НЕ ОбластьСтрок = Неопределено Тогда
ОбластьСтрок.КонецСтраницы = Ложь;
КонецЕсли;
//Исключение
// ИнформацияОбОшибке = ИнформацияОбОшибке();
// Пока ИнформацияОбОшибке.Причина <> Неопределено Цикл
// ИнформацияОбОшибке = ИнформацияОбОшибке.Причина;
// КонецЦикла;
// ТекстСообщения = НСтр(«ru = ‘Отчет не сформирован!’») + Символы.ПС + ИнформацияОбОшибке.Описание;
// ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
// Отказ = Истина;
//КонецПопытки;
КонецПроцедуры
Буду благодарен за любые идеи и подсказки.
Источник
СКД, ошибка в вычисляемых полях
(4) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «опМодуль.КореньКвадратный»
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «SQRT»
(8) А это уже странно. Тупо ради интереса запилил себе в первый попавшийся отчет эту функцию, вот этот столбец:
Корень из отрицательного числа
118,82
39,01
79,81
(4) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?
В СКД можно использовать функции глобальных и неглобальных общих модулей в вычисляемых полях при условии что функция объявлена как экспортная.
Есть только маленькая тонкость при программном формировании отчета СКД.
Обычно, при инициализации процессора компоновки данных делают так:
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
При таком формировании отчета вызова функций не произойдет. Что бы эту возможность включить нужно сделать так
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Неверные параметры «*»
Источник
Тема: Задача 2.2 (Прочитано 6205 раз)
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 разные схемы устанавливать в зависимости от условий? Параметры заполняются при открытии, а когда вторую устанавливаю, как их скопировать?
Вместо «ОсновнаяСхемаКомпоновкиДанных» ставишь название нужной..
это я итак написала, см.а параметры не заполняются
А ты уверена, что настройки первой схемы не вызовут конфликтов при применении их ко второй? Если да, то вот это Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; для второй схемы делать уже не надо. Но, их надо предварительно получить из первой. Попробуй.
>>А ты уверена, что настройки первой схемы не вызовут конфликтов при применении их ко второй у меня тот же запрос,только групировки по-разному расположены в этих схемах. Это не повод для конфликтов?
Тогда что писать вместо Настройки в:
Может лучше параметры установить программно?
Не поняла. Что такое в твоем листинге Настройки? Откуда они берутся?
для второго случая МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных2, Настройки, ); ей надо использовать тогда Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
так он получит настройки по умолчанию, а не настройки с установленными параметрами?
КомпоновщикНастроекКомпоновкиДанных (DataCompositionSettingsComposer) Свойства: Методы: Конструкторы: Описание: Описывает связь настроек компоновки данных и схемы компоновки данных. См. также: ОтчетОбъект, свойство КомпоновщикНастроек ВнешнийОтчет, свойство КомпоновщикНастроек
Тэги:
Комментарии доступны только авторизированным пользователям
1 2 3 4 5 6 7 8 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
ВЫБРАТЬ МашинноеВремяДокументыПроизводства.Ссылка.Дата КАК Дата, МашинноеВремяДокументыПроизводства.Ссылка, МашинноеВремяДокументыПроизводства.Ссылка.Смена, МашинноеВремяДокументыПроизводства.Ссылка.СчетчикНач, МашинноеВремяДокументыПроизводства.Ссылка.СчетчикКон, МашинноеВремяДокументыПроизводства.Ссылка.ПечатнаяМашина, МашинноеВремяДокументыПроизводства.Ссылка.Номер КАК НомерДокумента, МашинноеВремяДокументыПроизводства.Документ, МашинноеВремяДокументыПроизводства.Документ.Номер Как НомерНаряда, МашинноеВремяДокументыПроизводства.НачалоПриладки, МашинноеВремяДокументыПроизводства.КонецПриладки, МашинноеВремяДокументыПроизводства.КонецПечати, МашинноеВремяДокументыПроизводства.НомерВысечки, СУММА(МашинноеВремяДокументыПроизводства.Тираж) КАК Тираж, СУММА(МашинноеВремяДокументыПроизводства.Чистый) КАК Чистый, СУММА(МашинноеВремяДокументыПроизводства.ПланЧистый) КАК ПланЧистый, СУММА(МашинноеВремяДокументыПроизводства.Грязный) КАК Грязный, СУММА(МашинноеВремяДокументыПроизводства.ПланГрязный) КАК ПланГрязный, СУММА(МашинноеВремяДокументыПроизводства.СкоростьПеч) КАК СкоростьПеч, СУММА(МашинноеВремяДокументыПроизводства.Экономия) КАК Экономия, СУММА(МашинноеВремяДокументыПроизводства.ЭкономияКв) КАК ЭкономияКв, МашинноеВремяДокументыПроизводства.ТиражСнят, МашинноеВремяДокументыПроизводства.Заказчик, МашинноеВремяДокументыПроизводства.Продукция, МашинноеВремяДокументыПроизводства.Ссылка.Печатник, МашинноеВремяДокументыПроизводства.Ссылка.Помощник, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РезервМатериала.Материал) КАК МатериалРезерв, СУММА(РезервМатериала.Кво) КАК КоличествоРезерв, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ МатериалыПоКалькуляции.Материал) КАК МатериалФакт, СУММА(МатериалыПоКалькуляции.Количество) КАК КоличествоФакт, МашинноеВремяДокументыПроизводства.ВидРаботы, МашинноеВремяДокументыПроизводства.Секции ИЗ Документ.МашинноеВремя.ДокументыПроизводства КАК МашинноеВремяДокументыПроизводства ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РезервМатериала КАК РезервМатериала ПО МашинноеВремяДокументыПроизводства.Документ = РезервМатериала.Регистратор ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.МатериалыПоКалькуляции КАК МатериалыПоКалькуляции ПО МашинноеВремяДокументыПроизводства.Документ = МатериалыПоКалькуляции.Калькуляция И (МатериалыПоКалькуляции.Материал.Ролевый = ИСТИНА) {ГДЕ (МашинноеВремяДокументыПроизводства.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон)} СГРУППИРОВАТЬ ПО МашинноеВремяДокументыПроизводства.Ссылка.Дата, МашинноеВремяДокументыПроизводства.Ссылка.Смена, МашинноеВремяДокументыПроизводства.Ссылка.ПечатнаяМашина, МашинноеВремяДокументыПроизводства.Документ, МашинноеВремяДокументыПроизводства.Документ.Номер, МашинноеВремяДокументыПроизводства.НомерВысечки, МашинноеВремяДокументыПроизводства.ТиражСнят, МашинноеВремяДокументыПроизводства.Заказчик, МашинноеВремяДокументыПроизводства.Продукция, МашинноеВремяДокументыПроизводства.Ссылка.Печатник, МашинноеВремяДокументыПроизводства.Ссылка.Помощник, МашинноеВремяДокументыПроизводства.ВидРаботы, МашинноеВремяДокументыПроизводства.Секции, МашинноеВремяДокументыПроизводства.Ссылка, МашинноеВремяДокументыПроизводства.Ссылка.СчетчикНач, МашинноеВремяДокументыПроизводства.Ссылка.СчетчикКон, МашинноеВремяДокументыПроизводства.Ссылка.Номер, МашинноеВремяДокументыПроизводства.НачалоПриладки, МашинноеВремяДокументыПроизводства.КонецПриладки, МашинноеВремяДокументыПроизводства.КонецПечати УПОРЯДОЧИТЬ ПО Дата |