Всё работало хорошо, но вдруг перестало, после того, как я внес изменения в макет СКД:
При формировании отчета появлялась надпись «Синтаксическая ошибка» и всё.
Когда убрал некоторые секции, методом деструктивного исключения обнаружил, что глючит зеленая секция.
Благо, CTRL+Z сработал и вернул изменения назад (каюсь, рабочей версии отчета не было).
Вздохнул было, но потом опять ошибка возникла. И тут до меня дошло — проблема в пустых ячейках, где указан тип ячейки «Параметр», но не указано, значение какого параметра брать. Поменял тип на Текст — и все заработало.
Экие тонкости в 1С, однако!
СКД: Ошибка в СКД! |
Я |
Викуся
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)
Конструкторы:
По умолчанию
Описание:
Описывает связь настроек компоновки данных и схемы компоновки данных.
См. также:
ОтчетОбъект, свойство КомпоновщикНастроек
ВнешнийОтчет, свойство КомпоновщикНастроек
Содержание
- КомпоновщикМакета, синтаксическая ошибка при выполнении
- Ошибка при программном выполнении отчета СКД
- Ошибка компоновки макета по причине ошибка в выражении по причине синтаксическая ошибка
- Несоответствие типов СхемаКомпоновкиДанных
- СКД, ошибка в вычисляемых полях
КомпоновщикМакета, синтаксическая ошибка при выполнении
мозг сломал, не понимаю из-за чего появляется ошибка.
Используется набор данных, данные определяются при компоновке через таблицу значений
Концовка процедуры
Схема = ПолучитьМакет(«ОсновнаяСхемаКомпоновкиДанных»);
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить(«НаборДМС», ТЗ_ДМС);
//Инициализируем процессор компоновки
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки, Истина);
//Очищаем документ результата
ДокументРезультат.Очистить();
//Выводим отчет в документ
ПроцессорВывода = Новый
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Ошибка
Синтаксическая ошибка
<ВнешнийОтчет.ПриложениеКДоговору.МодульОбъекта(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) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?
В СКД можно использовать функции глобальных и неглобальных общих модулей в вычисляемых полях при условии что функция объявлена как экспортная.
Есть только маленькая тонкость при программном формировании отчета СКД.
Обычно, при инициализации процессора компоновки данных делают так:
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
При таком формировании отчета вызова функций не произойдет. Что бы эту возможность включить нужно сделать так
по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Неверные параметры «*»
Источник
1C 8 Система компоновки данных (СКД): вывод вычисляемых полей при программном формировании отчета
Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка:
{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
Найденные решения:
Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):
Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>),
где <ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь
Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):
ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпановки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:
{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
При этом функция по всем правилам была экспортной и к этому моменту проверок размещена в глобальном модуле. Поэтому название модуля было исключено из значения выражения вычисляемого поля системы компоновки данных и отчет вывелся.
А для случая, если функция для расчета выражения вычисляемого поля скд, размещена не в глобальном модуле, то необходимо указать и имя самого модуля, содержащего используемую функцию (пример рис. 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С с которыми мы работаем каждый месяц это делают, хотела попробовать , не вызывая их решить эту проблему, спасибо,обращусь к ним.
askharlov
24.07.12
✎
14:55
Запрос в консоли запросов отрабатывает прекрасно. В СКД при попытке сформировать отчет получаю
«Отчет не сформирован. Синтаксическая ошибка.»
Больше никаких комментариев 1С не дает.
В чем может быть проблема, где копать?
Заранее спасибо за помощь.
Господин ПЖ
24.07.12
✎
14:56
телепатирую — в запросе есть итоги…
0_Serg_0
24.07.12
✎
14:56
стоит для начала книжки про скд почитать…
askharlov
24.07.12
✎
14:59
(1) Итогов нет. Есть СГРУППИРОВАТЬ в 2-х временных таблицах
askharlov
24.07.12
✎
14:59
Собственно вот сам запрос:
+code
ВЫБРАТЬ РАЗРЕШЕННЫЕ
МАКСИМУМ(ХозрасчетныйОборотыДтКт.Регистратор) КАК Регистратор,
МАКСИМУМ(ХозрасчетныйОборотыДтКт.Период) КАК Период,
ХозрасчетныйОборотыДтКт.СубконтоДт1 КАК Номенклатура,
МАКСИМУМ(ВЫБОР
КОГДА ХозрасчетныйОборотыДтКт.КоличествоОборотДт <> 0
ТОГДА ХозрасчетныйОборотыДтКт.СуммаОборот / ХозрасчетныйОборотыДтКт.КоличествоОборотДт
ИНАЧЕ ХозрасчетныйОборотыДтКт.СуммаОборот
КОНЕЦ) КАК ЦенаПокупки
ПОМЕСТИТЬ ВТЦеныПоступления
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(, &КонецПериода, Регистратор, СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладе), , СчетКт В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками)), , ) КАК ХозрасчетныйОборотыДтКт
ГДЕ
ХозрасчетныйОборотыДтКт.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
СГРУППИРОВАТЬ ПО
ХозрасчетныйОборотыДтКт.СубконтоДт1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
КонтрагентыПоМенеджерам.Контрагент,
КонтрагентыПоМенеджерам.Период КАК ПериодНач,
КонтрагентыПоМенеджерам.Менеджер,
МИНИМУМ(ЕСТЬNULL(КонтрагентыПоМенеджерам1.Период, &КонецПериода)) КАК ПериодКон
ПОМЕСТИТЬ ВТМенеджера
ИЗ
РегистрСведений.КонтрагентыПоМенеджерам КАК КонтрагентыПоМенеджерам
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтрагентыПоМенеджерам КАК КонтрагентыПоМенеджерам1
ПО КонтрагентыПоМенеджерам.Контрагент = КонтрагентыПоМенеджерам1.Контрагент
И КонтрагентыПоМенеджерам.Период < КонтрагентыПоМенеджерам1.Период
СГРУППИРОВАТЬ ПО
КонтрагентыПоМенеджерам.Период,
КонтрагентыПоМенеджерам.Менеджер,
КонтрагентыПоМенеджерам.Контрагент
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
КонтрагентыПоМенеджерамСрезПоследних.Контрагент,
КонтрагентыПоМенеджерамСрезПоследних.Период,
КонтрагентыПоМенеджерамСрезПоследних.Менеджер,
ЕСТЬNULL(КонтрагентыПоМенеджерамСрезПервых.Период, &КонецПериода)
ИЗ
РегистрСведений.КонтрагентыПоМенеджерам.СрезПоследних(&НачалоПериода, ) КАК КонтрагентыПоМенеджерамСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтрагентыПоМенеджерам.СрезПервых(&НачалоПериода, ) КАК КонтрагентыПоМенеджерамСрезПервых
ПО КонтрагентыПоМенеджерамСрезПоследних.Период <> КонтрагентыПоМенеджерамСрезПервых.Период
И КонтрагентыПоМенеджерамСрезПоследних.Контрагент = КонтрагентыПоМенеджерамСрезПервых.Контрагент
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Организация,
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Контрагент КАК Покупатель,
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ДатаОплаты,
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Сделка КАК СчетФактура,
РеализацияТоваровУслуг.Ссылка КАК РасходнаяНакладная,
СчетНаОплатуПокупателюТовары.Номенклатура,
ВЫРАЗИТЬ(СчетНаОплатуПокупателюТовары.Количество * ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа / СчетНаОплатуПокупателюТовары.Ссылка.СуммаДокумента КАК ЧИСЛО(15, 2)) КАК Количество,
ВЫРАЗИТЬ(СчетНаОплатуПокупателюТовары.Сумма * ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа / СчетНаОплатуПокупателюТовары.Ссылка.СуммаДокумента КАК ЧИСЛО(15, 2)) КАК СуммаПродажи,
СчетНаОплатуПокупателюТовары.Цена КАК ЦенаПродажи,
ВТЦеныПоступления.Регистратор КАК ДокументОприходования,
ВТЦеныПоступления.Регистратор.Контрагент КАК Поставщик,
ВЫРАЗИТЬ(ВТЦеныПоступления.ЦенаПокупки КАК ЧИСЛО(15, 2)) КАК ЦенаПокупки,
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка КАК ПлатежноеПоручениеВходящее,
ВЫРАЗИТЬ(ВТЦеныПоступления.ЦенаПокупки * СчетНаОплатуПокупателюТовары.Количество * ПлатежноеПоручениеВходящееРасшифровкаПлатежа.СуммаПлатежа / СчетНаОплатуПокупателюТовары.Ссылка.СуммаДокумента КАК ЧИСЛО(15, 2)) КАК СуммаПокупки,
ВТМенеджера.Менеджер
ИЗ
Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеВходящееРасшифровкаПлатежа
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ПО ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Сделка = РеализацияТоваровУслуг.Сделка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦеныПоступления КАК ВТЦеныПоступления
ПО СчетНаОплатуПокупателюТовары.Номенклатура = ВТЦеныПоступления.Номенклатура
ПО ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Сделка = СчетНаОплатуПокупателюТовары.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ ВТМенеджера КАК ВТМенеджера
ПО ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Контрагент = ВТМенеджера.Контрагент
И ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ДатаОплаты >= ВТМенеджера.ПериодНач
И ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ДатаОплаты < ВТМенеджера.ПериодКон
ГДЕ
ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Проведен
И ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.ДатаОплаты МЕЖДУ &НачалоПериода И &КонецПериода
И ПлатежноеПоручениеВходящееРасшифровкаПлатежа.Ссылка.Оплачено
Всем добрый день. Есть локальная база, 20+ юзеров, на одном компе при формировании отчета вываливается ошибка «Отчет не сформирован! Синтаксическая ошибка.» на других компах норм. Настройки структуры одинаковые. подключал внешний отчет, рабочий, такая же ошибка. Подскажите пожалуйста в чем дело. Заранее Спасибо.
Почистить на компе %UserProfile%Application Data1C1Cv81
Убей кэш путем перепрописывания базы в списке выбора
Спасибо, сейчас попробую!
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
1C 8 Система компоновки данных (СКД): вывод вычисляемых полей при программном формировании отчета
Описание ошибки:
Отчет на СКД формируется программно. При этом используется одно вычисляемое поле, в выражении которого указана экспортная функция глобального модуля. При формировании отчета возникает ошибка:
{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
Найденные решения:
Подробное изучение методической информации дало понять, что при программном выводе отчета в коде было отключено использование внешних функций. См. текст из синтаксис-помощника метода Инициализировать() процессора компоновки данных (ПроцессорКомпоновкиДанных):
Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>),
где <ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь
Поэтому в код программного вывода отчета было добавлено отсутствующее условие (выделено жирным):
ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпановки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
Но после этого СКД отказалсь вывести отчет, рапортуя ошибку:
{Форма.ФормаОтчета.Форма(137)}: Ошибка при вызове метода контекста (Следующий)
ЭлементРезультата = ПроцессорКомпановки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Функция не найдена «УчетДрагМеталловГлобальный.ОтчетКоличествоМеталла»
При этом функция по всем правилам была экспортной и к этому моменту проверок размещена в глобальном модуле. Поэтому название модуля было исключено из значения выражения вычисляемого поля системы компоновки данных и отчет вывелся.
А для случая, если функция для расчета выражения вычисляемого поля скд, размещена не в глобальном модуле, то необходимо указать и имя самого модуля, содержащего используемую функцию (пример рис. 01).
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
22-05-2015
Журавлев А.С.
(www.azhur-c.ru)