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

Обновлено: 27.01.2023

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добрый день. Озадачили меня хитрым заданием — требуется создать обработку, на форме которой будут отображаться результаты различных складских отчетов.

Что я сделал:

1. Добавил реквизит формы — РезультатОтчета(тип табличный документ)

2. Следующий код:

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

    НастройкиОтчета = Отчет.НастройкиПоУмолчанию;

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

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

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

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

    РезультатОтчета.Очистить();

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

    ПроцессорКомпоновкиОтчета.УстановитьДокумент(РезультатОтчета);

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

При выполнении, на строке «ПроцессорКомпоновкиОтчета.Инициализировать(Макет);» возникает ошибка:

«по причине:

Ошибка компоновки данных

по причине:

Ошибка инициализации

по причине:

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

по причине:

Синтаксическая ошибка «ТекущаяДатаСеанса»»

Макет, что передаю в параметры — не пустой. Наверное, что-то упустил…

Заранее спасибо!

Всем привет. есть код:     ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); На последней строчке выдает ошибку: Синтаксическая ошибка «ТекущаяДатаСеанса» В СхемаОст находиться СхемаОст = Отчеты[«РасчетыСПартнерами»].Создать.СхемаКомпоновкиДанных (типовой отчет УТ11.3); Если просто запустить отчет в «РасчетыСПартнерами» то ошибки нет. Подскажите куда копать. Заранее спасибо. P.S. Ошибка появилась после перехода с 11.2 на 11.3 Данные отладки:

Лучше СхемаОст = Отчеты[«РасчетыСПартнерами»].ПолучитьМакет(«ИмяМакета»)

Тэги:

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

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

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

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

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

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

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

Описание проблемы, ошибки, которую надо диагностировать

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

Неправильно

ДатаПоследнегоОповещения = ТекущаяДатаСеанса();
ДатаСледующегоОповещения = РассчитатьДату() + ТекущаяДатаСеанса();

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

ДатаПоследнегоОповещения = ТекущаяДатаСеанса();
ДатаСледующегоОповещения = РассчитатьДату() + ДатаПоследнегоОповещения;

связанные ишузы по методам ТекущаяДата, ТекущаяДатаСеанса

  • [NEW] Запрет на использование метода ТекущаяДата() #924
  • Работа в разных часовых поясах #222

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

https://its.1c.ru/db/v8std/content/643/hdoc

Параметры диагностики

Тип Статья на русском

  • 🐜 Ошибка
  • 👮 Уязвимость
  • 💂‍♂️ Потенциальная уязвимость
  • 💩 Качество кода
  • :trollface: Другое

Важность Статья на русском

  • 💔 Блокирующая / Blocker
  • ❤️ Критическая / Critical
  • 💛 Важная / Major
  • 💙 Незначительная / Minor
  • 💚 Информационная / Info
  • 💞 Другое

Тэги Статья на русском

  • STANDARD — «Нарушение стандартов 1С»
  • LOCKINOS — «Не будет работать в другой ОС»
  • SQL — «Проблема с запросом»
  • PERFORMANCE — «Проблема производительности»
  • BRAINOVERLOAD — «Непонятный код»
  • BADPRACTICE — «Плохая практика программирования»
  • CLUMSY — «Излишние действия»
  • DESIGN — «Ошибка в проектировании»
  • SUSPICIOUS — «Подозрительный код»
  • UNPREDICTABLE — «Непредсказуемо работающий код»
  • DEPRECATED — «Устаревшая функциональность»
  • ERROR — «Ошибочная конструкция»
  • LOCALIZE — «Проблемы локализации»

Время на исправление (минут)

1 минута

Дополнительная информация

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