Синтаксическая ошибка представление периода

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ошибка
Синтаксическая ошибка
<ВнешнийОтчет.ПриложениеКДоговору.МодульОбъекта(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) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

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

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

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

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

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

Источник

Конфигурация Управление сервисным центром от Рарус

До обновления работало все ок.
Сейчас если под пользователем зайти в Документы -> Учет времени, то ошибка при отображении списка документов

Ошибка при выполнении запроса.
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.
объект: 'Документ.УчетВремени', поле: 'Проведен'; право: 'Чтение'
{(38, 18)}: Синтаксическая ошибка ":"
НеверноеПраво<<?>>: Добавление
по причине:
{(38, 18)}: Синтаксическая ошибка ":"
НеверноеПраво<<?>>: Добавление

Если попытаться создать этот документ, то ошибка такая

Ошибка в ограничении доступа к данным.
объект: 'Документ.УчетВремени'; право: 'Чтение'
{(38, 18)}: Синтаксическая ошибка ":"
НеверноеПраво<<?>>: Добавление
по причине:
{(38, 18)}: Синтаксическая ошибка ":"
НеверноеПраво<<?>>: Добавление

Хотя если зайти под Администратором, то все документы видны и даже те которые попытался создать пользователь (но у него вышла ошибка).

В конфигураторе смотрел права на Документ.УчетВремени. В нем у роли ДобавлениеИзменениеСобытийИЗаданий проставлены все галочки (чтение, добавление, изменение и т.д.). У пользователей эта роль включена. Я даже пробовал все роли включить которые присутствуют в правах. Ничего не помогает если у пользователя не праставлена галочка ПолныеПрава. А полные права как известно нельзя давать.

Прошу дать совет куда копать, чтоб побороть эту ошибку…

СКД: Ошибка в СКД!

Я

Викуся

13.08.09 — 07:42

Ошибка получения данных

по причине:

Ошибка в выражении

по причине:

Синтаксическая ошибка «ОбщегоНазначения.ФамилияИнициалыФизЛица»

Возникает при программном формировании отчета:

СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);

Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

ЭлементыФормы.Результат.Очистить();

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

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

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

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

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

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

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

Викуся

1 — 13.08.09 — 07:43

+ при формировании по умолчанию ошибка не возникает!

Викуся

2 — 13.08.09 — 07:47

+ выражение ОбщегоНазначения.ФамилияИнициалыФизЛица(Контрагент.Наименование) используется в вычисляемых полях

Bugmenot

3 — 13.08.09 — 08:09

(0) хех! )
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ,Истина);

Викуся

4 — 13.08.09 — 09:55

(3)Ура! Заработало))

Викуся

5 — 13.08.09 — 10:08

(3)А напиши еще как 2 разные схемы устанавливать в зависимости от условий? Параметры заполняются при открытии, а когда вторую устанавливаю, как их скопировать?

lxs

6 — 13.08.09 — 10:12

(5)

СхемаКомпоновкиДанных = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);

Вместо «ОсновнаяСхемаКомпоновкиДанных» ставишь название нужной..

Викуся

7 — 13.08.09 — 10:27

(6)это я итак написала, см(0).а параметры не заполняются

lxs

8 — 13.08.09 — 11:24

А ты уверена, что настройки первой схемы не вызовут конфликтов при применении их ко второй?

Если да, то вот это

Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

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

Викуся

9 — 13.08.09 — 11:42

(8)>>А ты уверена, что настройки первой схемы не вызовут конфликтов при применении их ко второй

у меня тот же запрос,только групировки по-разному расположены в этих схемах. Это не повод для конфликтов?

Викуся

10 — 13.08.09 — 11:44

(8)Тогда что писать вместо Настройки в:

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

IronDemon

11 — 13.08.09 — 11:47

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

Викуся

12 — 13.08.09 — 11:53

(11)Не поняла. Что такое в твоем листинге Настройки? Откуда они берутся?

IronDemon

13 — 13.08.09 — 11:55

Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
Настройки = СхемаКомпоновкиДанных2.НастройкиПоУмолчанию;

Я думал ты догадаешься.

lxs

14 — 13.08.09 — 11:58

(13) для второго случая

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

ей надо использовать тогда

Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

Викуся

15 — 13.08.09 — 12:04

(14)так он получит настройки по умолчанию, а не настройки с установленными параметрами?

КомпоновщикНастроекКомпоновкиДанных (DataCompositionSettingsComposer)
Свойства:
Настройки (Settings)

Методы:
Восстановить (Refresh)
ЗагрузитьНастройки (LoadSettings)
Инициализировать (Initialize)
ПолучитьНастройки (GetSettings)
РазвернутьАвтоПоля (ExpandAutoFields)

Конструкторы:
По умолчанию

Описание:
Описывает связь настроек компоновки данных и схемы компоновки данных.
См. также:
ОтчетОбъект, свойство КомпоновщикНастроек
ВнешнийОтчет, свойство КомпоновщикНастроек

Содержание

  1. КомпоновщикМакета, синтаксическая ошибка при выполнении
  2. Ошибка при программном выполнении отчета СКД
  3. Ошибка компоновки макета по причине ошибка в выражении по причине синтаксическая ошибка
  4. Несоответствие типов СхемаКомпоновкиДанных
  5. СКД, ошибка в вычисляемых полях

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

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

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

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

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

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

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

Ошибка
Синтаксическая ошибка
<ВнешнийОтчет.ПриложениеКДоговору.МодульОбъекта(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) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

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

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

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

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

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

Источник

1C 8 Система компоновки данных (СКД): вывод вычисляемых полей при программном формировании отчета

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

Найденные решения:

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

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

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

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

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

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

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

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

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

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

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

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

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

22-05-2015

Журавлев А.С.
(www.azhur-c.ru)

Добрый день подскажите пожалуйста что значит «Синтаксическая ошибка» при формировании материального отчета (МХ-20). Заранее спасибо.
1С:Предприятие 8.3 (8.3.6.2100)
Бухгалтерия предприятия, редакция 3.0 (3.0.41.49) (http://v8.1c.ru/buhv8/)
Copyright (С) ООО «1C», 2009 — 2015. Все права защищены
(http://www.1c.ru)

Добрый день!

Приведите точный текст ошибки либо приложите скриншот ошибки.

Заполнить и подать уведомление об исчисленных суммах налогов и взносов

Добрый день!
Попробуйте сделать так:
при запуске программы удалите вашу базу из общего списка баз (предварительно запомнив путь к этой базе, он всегда прописан внизу). Потом по кнопке «Добавить» добавьте базу обратно в список. Таким образом кэш почистится и может быть проблема уйдет. Если не уйдет — ждем скриншот с описанием ошибки, и какой отчет формируете (типовой, или внешний, дописанный кем-то)

Добрый день!

Цитата (Бэлла КСК):формировании материального отчета (МХ-20).

В типовой конфигурации нет такой печатной формы, свяжитесь с тем кто ее для вас писал.

Цитата (Jilt):Добрый день!
Попробуйте сделать так:
при запуске программы удалите вашу базу из общего списка баз (предварительно запомнив путь к этой базе, он всегда прописан внизу). Потом по кнопке «Добавить» добавьте базу обратно в список. Таким образом кэш почистится и может быть проблема уйдет

Так и не понял, как очистка кэша скажется на внешнем отчете?🤦‍♀️
p.s. Кстати, кэш так не чистится, а уничтожается привязка его к данной базе. А в виде мусора на диске он остался.

Цитата (Культурный):Кстати, кэш так не чистится, а уничтожается привязка его к данной базе

Я очень даже часто так чищу, другое дело в этом случае это не поможет. При этом у базы теряется связь со старым «мусором» и появляется новый кэш. 😉
При работе с клиентом по телефону/в эл.письме как вы еще сможете ему подсказать? Ведь очень часто задача стоит не навести порядок на диске клиента, а запустить базу.

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

Добрый день, скриншот почему то не могу прикрепить, а вообще так и пишет «синтаксическая ошибка»

Цитата (Культурный):Так и не понял, как очистка кэша скажется на внешнем отчете?
p.s. Кстати, кэш так не чистится, а уничтожается привязка его к данной базе. А в виде мусора на диске он остался.

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

Бэлла КСК, между последним положительным формированием этого отчета и сегодняшним днем какие-то действия с базой выполнялись? Обновление ставили в этот период, права и роли для пользователей добавляли/меняли? Просто это может действительно сменилось наименование какого-то из реквизитов в коде, а во внешнем отчете идет привязка к старому наименованию. Тогда лучше обратиться к разработчикам отчета.

Цитата (Jilt):Вы когда решите в следующий раз чей-то вариант решения поправлять или критиковать, не забудьте предложить свой вариант действий

Так я не критикую, а говорю, что этот «вариант решения» никакого отношения к поставленной проблеме не имеет!
Вариант решения был прописан перед моим сообщением — внешний отчет должен исправлять его автор.

Цитата (Культурный):Так я не критикую, а говорю, что этот «вариант решения» никакого отношения к поставленной проблеме не имеет!
Вариант решения был прописан перед моим сообщением — внешний отчет должен исправлять его автор.

Я в таких случаях, когда в теме присутствуют и ответы по существу и не имеющие отношения к проблеме, просто «прохожу мимо». А Вы, видя, что ответ по существу уже был дан, не написали «последуйте совету Татьяны и обратитесь к автору внешнего отчета, очистка кэша не поможет в этом случае».
Вы написали

Цитата (Культурный): Так и не понял, как очистка кэша скажется на внешнем отчете?

Вопрос «как скажется?» это не одно и то же с утверждением «чистка кэша отношения не имеет».

Вести помарочный учет по новым правилам и отправлять данные в ЕГАИС

Цитата (Jilt):Бэлла КСК, между последним положительным формированием этого отчета и сегодняшним днем какие-то действия с базой выполнялись? Обновление ставили в этот период, права и роли для пользователей добавляли/меняли? Просто это может действительно сменилось наименование какого-то из реквизитов в коде, а во внешнем отчете идет привязка к старому наименованию. Тогда лучше обратиться к разработчикам отчета.

Добрый день, да обновления производили, представители 1С с которыми мы работаем каждый месяц это делают, хотела попробовать , не вызывая их решить эту проблему, спасибо,обращусь к ним.

СКД. Выражение представления — функция. Выдает ошибку ☑ 0

SerGa

04.02.11

12:26

В общем модуле Доработки объявил экспортную функцию

Функция СокрПроб(Стр) Экспорт

   Возврат СокрЛП(Стр);

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

В выражении представления для строкового поля Комментарий написал:

Доработки.СокрПроб(Комментарий)

но при формировании СКД выдает ошибку  

Ошибка получения данных

по причине:

Ошибка в выражении

по причине:

Синтаксическая ошибка «Доработки.СокрПроб»

и закрывает программу

что я делаю не так?

1

kinsm

04.02.11

12:34

Галка «Клиент» стоит?

2

SerGa

04.02.11

12:34

стоит

3

SerGa

04.02.11

12:45

ир

4

kinsm

04.02.11

12:47

Программно отчет выводишь?

5

SerGa

04.02.11

13:01

ДА

6

Point

04.02.11

13:08

(0)
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки,ВОТ ЗДЕСЬ НУЖНО ПОСТАВИТЬ «ИСТИНА»);

7

SerGa

04.02.11

13:48

(6) вот спасибо!  никогда бы сам не догадался!

Dakka

0 / 0 / 0

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

Сообщений: 4

1

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

27.02.2023, 07:29. Показов 714. Ответов 9

Метки нет (Все метки)


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

Не программист никак, сделал отчёт через консоль отчётов , и не могу ограничить параметрами.
Есть 2 параметра(даты) задаваемые пользователем: Период1 и Период2. Нужно ограничить отчёт этими парметрыми по Период. Пробовал разные варианты, но чаще всего возникает :»Синтаксическая ошибка» . В данном варианте: «{ВнешнийОтчет.ОтчетФН.Форма.ФормаОтчета.Форма(62)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(22, 2)}: Синтаксическая ошибка «Период2»
<<?>>Период2 = &Период2 «

1C
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
68
69
70
71
72
73
74
75
76
77
78
79
Процедура КнопкаСформироватьНажатие(Кнопка)
    
    ТабДок = Новый ТабличныйДокумент; 
    
    Макет = ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    
    Запрос.УстановитьПараметр("Период2",Период2);
      
    Запрос.Текст = 
        "ВЫБРАТЬ
    |  ИзделияКонтрагентов.Владелец.Наименование КАК ВладелецНаименование,
    |  ИзделияКонтрагентов.Модель.Наименование КАК МодельНаименование,
    |  ККТКонтрагентов.Номер КАК Номер,
    |  ККТКонтрагентов.ЭКЛЗЗаводской КАК ЭКЛЗЗаводской,
    |  ККТКонтрагентов.ДатаАктивации КАК ДатаАктивации,
    |  ККТКонтрагентов.ДатаОкончания КАК ДатаОкончания,
    |  ИзменениеРеквизитовДокументов.Период КАК Период,
    |  ИзменениеРеквизитовДокументов.Объект.Номер КАК ОбъектНомер,
    |  ИзменениеРеквизитовДокументов.Значение КАК Значение,
    |  ПРЕДСТАВЛЕНИЕ(ИзменениеРеквизитовДокументов.Значение),
    |  Период2,
    |  ИзменениеРеквизитовДокументов.Объект.Дата
|  ИЗ
    |  РегистрСведений.ИзменениеРеквизитовДокументов КАК ИзменениеРеквизитовДокументов
        |  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ККТКонтрагентов КАК ККТКонтрагентов
            |  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ИзделияКонтрагентов КАК ИзделияКонтрагентов
            |  ПО ККТКонтрагентов.ИзделиеКонтрагента = ИзделияКонтрагентов.Ссылка
        |  ПО ИзменениеРеквизитовДокументов.Объект = ККТКонтрагентов.Ссылка
|  ГДЕ
    |  ККТКонтрагентов.ЭКЛЗЗаводской = ИзменениеРеквизитовДокументов.Значение
    | Период2 = &Период2
 
   
|  УПОРЯДОЧИТЬ ПО
    |  ВладелецНаименование,
    |  МодельНаименование,
    |  Номер,
    |  ЭКЛЗЗаводской,
    |  ДатаАктивации,
    |  ДатаОкончания,
    |  Период,
    |  Значение,
    |  ИзменениеРеквизитовДокументов.ПричинаИзменения,
    |  ИзменениеРеквизитовДокументов.Объект.Дата";
    
    РезультатЗапроса = Запрос.Выполнить();
        
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьЗаголовок.Параметры.Период1 = Период1;
    ОбластьЗаголовок.Параметры.Период2 = Период2;
 
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
        
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
        
   КонецЦикла;
 
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    ТабДок.Показать("Отчёт ""Отчёт по ФН""");
    
КонецПроцедуры



0



27 / 18 / 9

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

Сообщений: 62

27.02.2023, 07:40

2

Ошибка синтаксиса возникает из-за того, что в запросе не указан параметр «Период1», который был задан пользователем. Для того, чтобы исправить ошибку, необходимо добавить параметр в запрос, установить его значение и использовать в условии.



0



Dakka

0 / 0 / 0

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

Сообщений: 4

27.02.2023, 07:54

 [ТС]

3

Видимо что то не так делаю: «{ВнешнийОтчет.ОтчетФН.Форма.ФормаОтчета.Форма(50)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(23, 2)}: Синтаксическая ошибка «Период»
<<?>>Период МЕЖДУ &Период1 И &Период2
«

1C
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Процедура КнопкаСформироватьНажатие(Кнопка)
    
    ТабДок = Новый ТабличныйДокумент; 
    
    Макет = ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    
    Запрос.УстановитьПараметр("Период2",Период2);
      
    Запрос.Текст = 
        "ВЫБРАТЬ
    |  ИзделияКонтрагентов.Владелец.Наименование КАК ВладелецНаименование,
    |  ИзделияКонтрагентов.Модель.Наименование КАК МодельНаименование,
    |  ККТКонтрагентов.Номер КАК Номер,
    |  ККТКонтрагентов.ЭКЛЗЗаводской КАК ЭКЛЗЗаводской,
    |  ККТКонтрагентов.ДатаАктивации КАК ДатаАктивации,
    |  ККТКонтрагентов.ДатаОкончания КАК ДатаОкончания,
    |  ИзменениеРеквизитовДокументов.Период КАК Период,
    |  ИзменениеРеквизитовДокументов.Объект.Номер КАК ОбъектНомер,
    |  ИзменениеРеквизитовДокументов.Значение КАК Значение,
    |  ПРЕДСТАВЛЕНИЕ(ИзменениеРеквизитовДокументов.Значение),
    |  Период1,
    |  Период2,
    |  ИзменениеРеквизитовДокументов.Объект.Дата
|  ИЗ
    |  РегистрСведений.ИзменениеРеквизитовДокументов КАК ИзменениеРеквизитовДокументов
        |  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ККТКонтрагентов КАК ККТКонтрагентов
            |  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ИзделияКонтрагентов КАК ИзделияКонтрагентов
            |  ПО ККТКонтрагентов.ИзделиеКонтрагента = ИзделияКонтрагентов.Ссылка
        |  ПО ИзменениеРеквизитовДокументов.Объект = ККТКонтрагентов.Ссылка
|  ГДЕ
    |  ККТКонтрагентов.ЭКЛЗЗаводской = ИзменениеРеквизитовДокументов.Значение
    
    | Период МЕЖДУ &Период1 И &Период2
 
   
|  УПОРЯДОЧИТЬ ПО
    |  ВладелецНаименование,
    |  МодельНаименование,
    |  Номер,
    |  ЭКЛЗЗаводской,
    |  ДатаАктивации,
    |  ДатаОкончания,
    |  Период,
    |  Значение,
    |  ИзменениеРеквизитовДокументов.ПричинаИзменения,
    |  ИзменениеРеквизитовДокументов.Объект.Дата";
    
    РезультатЗапроса = Запрос.Выполнить();
        
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьЗаголовок.Параметры.Период1 = Период1;
    ОбластьЗаголовок.Параметры.Период2 = Период2;
 
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
        
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
        
   КонецЦикла;
 
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    ТабДок.Показать("Отчёт ""Отчёт по ФН""");
    
КонецПроцедуры



0



27 / 18 / 9

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

Сообщений: 62

27.02.2023, 08:02

4

Ошибка возникает из-за неправильного использования оператора МЕЖДУ в запросе.

В строке «| Период МЕЖДУ &Период1 И &Период2» оператор МЕЖДУ используется для проверки значения поля «Период» находится между значениями параметров «&Период1» и «&Период2».

Однако в данном случае параметры «&Период1» и «&Период2» не были определены в коде перед запросом, что приводит к ошибке «Синтаксическая ошибка ‘Период'».

Для исправления ошибки необходимо определить параметры «&Период1» и «&Период2» перед выполнением запроса.



0



1603 / 1022 / 389

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

Сообщений: 3,603

27.02.2023, 08:03

5

соедини условие на период с предыдущим условием, с помощью И например. что в 1-ом, что во 2-ом запросе



0



120 / 98 / 28

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

Сообщений: 757

27.02.2023, 10:33

6

Что такое «Период2» вообще? Как вы его в запросе объявляете? Это реквизит документа, регистра? Или это передающий параметр?
|Период2 = &Период2 — это вообще не понятная строка
Может
ИзменениеРеквизитовДокументов.Период > &Период2?

Видно, что данный запрос дорабатывался не в конструкторе, поэтому и ошибки…



0



Dakka

0 / 0 / 0

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

Сообщений: 4

28.02.2023, 07:29

 [ТС]

7

Да ошибка связана с тем что я не могу(не знаю как) определить параметры, если ставлю перед запросом

1C
1
2
Запрос.УстановитьПараметр("Период1",Период1);
    Запрос.УстановитьПараметр("Период2",Период2);

, то это ни на что не влияет, в ВЫБРАТЬ ставлю Период1, Период2, тоже не определяет, естественно любые действия с этими параметрами приводят к ошибке «Синтаксическая ошибка ‘Период'». Как определить эти параметры в запросе?

Добавлено через 6 минут

Что такое «Период2» вообще? Как вы его в запросе объявляете? Это реквизит документа, регистра? Или это передающий параметр?

Есть 2 параметра(даты) задаваемые пользователем: Период1 и Период2. В запросе я не понимаю как объявить, как ни пытался не получается. Период это реквизит документа, он должен попадать в границы между Период1 и Период2.

Видно, что данный запрос дорабатывался не в конструкторе, поэтому и ошибки…

Я сразу в этом признался, но ограничения по периодам там не формируются, хотя эти параметры можно использовать в ручную.



0



slypower

120 / 98 / 28

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

Сообщений: 757

28.02.2023, 08:15

8

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

Решение

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

Да ошибка связана с тем что я не могу(не знаю как) определить параметры, если ставлю перед запросом
1CВыделить код
1
2
Запрос.УстановитьПараметр(«Период1»,Период1);
    Запрос.УстановитьПараметр(«Период2»,Период2);

Вот здесь все верно.

А в запрос параметр передается не верно.
Нужно использовать &

1C
1
 |  &Период2,



1



Yulunga

1231 / 763 / 218

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

Сообщений: 5,589

Записей в блоге: 1

28.02.2023, 08:18

9

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

Решение

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

| ГДЕ
| ККТКонтрагентов.ЭКЛЗЗаводской = ИзменениеРеквизитовДокументов.Значение
| Период МЕЖДУ &Период1 И &Период2

1C
1
2
3
| ГДЕ
 | ККТКонтрагентов.ЭКЛЗЗаводской = ИзменениеРеквизитовДокументов.Значение
| И ИзменениеРеквизитовДокументов.Период МЕЖДУ &Период1 И &Период2



1



0 / 0 / 0

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

Сообщений: 4

28.02.2023, 08:26

 [ТС]

10

Большое спасибо : slypower , Yulunga. Всё заработало!



0



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

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

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

Благо, 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) Ну, вот и все… а сколько бумаги исписали то на комментарии )))

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

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

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

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

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

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

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



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


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


Теги:

  • Форум База

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

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

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

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

Рейтинг@Mail.ru

Rambler's Top100

Поиск

Здравствуйте, уважаемый форум.Очень прошу помощи.В типовом отчете «Расчетные листки» меняю макет, при этом заполняя параметры группировок и изменяя в варианте вывода отчета группировки.Но при запуске отчета получаю ошибку Код {ВнешнийОтчет.РасчетныеЛистки.МодульОбъекта}: Ошибка при вызове метода контекста (Выполнить)   МакетКомпоновки   = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); по причине: Ошибка компоновки макета по причине: Ошибка в выражении по причине: Синтаксическая ошибка Заранее благодарна за любые советы,идеи, мысли

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

выгрузи схему после изменений и попробуй запихнуть ее в консоль скд

«Рисунок» заливаю на а сюда ссылку на него. В профиль вставь фотку. Только так можно ожидать помощи… :)

20 лет ребенку… не занимайтесь педофилией :)

Какая педофилия после 18-ти?))) Уже можно во все тяжкие))

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

Все так говорят… А вот ты выложи сначала :)

И на ничего не понятно… Хоть бы обвела куда смотреть…

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

Все параметры перенесла? в других макетах все так же осталось? Уверена?

да, уверена. параметров пустых ни в одной группировке нет. других макетов нет

У меня в 2.5.66 не открывается. Предыдущие релизы ставить лень

В других макетах в том же отчете. Имею ввиду макеты других группировок и полей, которые уже описаны в станадртном отчете

УПП поди для Украины. sweety-twetty 10 — 10.12.12 — 18:16 Клятвенно обещаю фотографию

Но вообще, они как две капли воды похожи были с год назад

я в теме писала — у меня УПП.  в других группировках все заполнено

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

Тэги: 1С 8

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

bless18
22.11.2012 11:08 Прочитано: 3997

Добрый день!
Мучаюсь не могу найти, как в режиме предприятия добавить новый элемент отбора через контекстное меню.
Если кликнуть по строке таблицы с отборами, то в доступны меню вывести и настроить список.
Как в СКД настроить добавление нового элемента отбора через контекстное меню?
Подскажите, пожалуйста..

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
22.11.2012 12:09 Ответ № 1

(0) bless18, так этот функционал по умолчанию сам настроен. Правк клавишей мыши, новый элемент.

bless18
22.11.2012 12:29 Ответ № 2

В режме предприятие доступны сейчас варианты ВывестиСписок и НастройкаСписка..
а в режиме конфигуратор да — правой кнопкой, НовыйЭлемент..

E_Migachev
22.11.2012 13:03 Ответ № 3

(2) bless18, на форме это табличное поле, какой его тип?

bless18
22.11.2012 13:19 Ответ № 4

На форме это ПанельОтбора

bless18
22.11.2012 13:20 Ответ № 5

С табличной частью, тип которой КомпоновщикНастроек.Настройки.Отбор

bless18
22.11.2012 13:21 Ответ № 6

Это данные )
а тип: ОтборКомпоновкиДанных

E_Migachev
22.11.2012 14:14 Ответ № 7

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

bless18
22.11.2012 14:20 Ответ № 8

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

E_Migachev
22.11.2012 15:23 Ответ № 9

(8) bless18, воттт.. что-то не так *09
попробуй удалить таб поле с формы добавить по новой

bless18
22.11.2012 15:38 Ответ № 10

Спасибо за совет.
Заработало! )

bless18
22.11.2012 15:50 Ответ № 11

а при формировании отчета выдается ошибка:

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

E_Migachev
22.11.2012 16:23 Ответ № 12

(11) bless18, зайди в конструктор запроса в СКД, там увидишь чего за ошибка

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

Понравилась статья? Поделить с друзьями:
  • Синтаксическая ошибка при загрузке приложения андроид
  • Синтаксическая ошибка параметра командной строки
  • Синтаксическая ошибка при загрузке пакета
  • Синтаксическая ошибка параметр ограничиватьдоступповиду не существует
  • Синтаксическая ошибка при анализе покета