1с ошибка ожидается оператор препроцессора

На чтение 3 мин. Просмотров 322 Опубликовано

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. Директивы компиляции:

&НаКлиенте (&AtClient)
&НаСервере (&AtServer)
&НаСервереБезКонтекста (&AtServerNoContext)

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

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

2. Не следует использовать инструкции препроцессора в клиент-серверных общих модулях для проверки клиентского и серверного контекстов (#Если Сервер, #Если Клиент) ввиду невозможности надежного определения контекста исполнения. Процедуры и функции, которые работают по-разному при вызове с клиента и с сервера, следует размещать в общих модулях с постфиксами Клиент и Сервер , а не КлиентСервер .

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

Функция КодОсновногоЯзыка() Экспорт
#Если НЕ ТонкийКлиент И НЕ ВебКлиент Тогда
Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
#Иначе
Возврат СтандартныеПодсистемыКлиент.ПараметрКлиента(«КодОсновногоЯзыка»);
#КонецЕсли
КонецФункции

Функция КодОсновногоЯзыка() Экспорт
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
#Иначе
Возврат СтандартныеПодсистемыКлиент.ПараметрКлиента(«КодОсновногоЯзыка»);
#КонецЕсли
КонецФункции

Правильно: разделить на две одноименные функции в серверном и клиентском модуле с различной реализацией. В общем случае, когда у них имеется определенная общая часть, одинаковая для клиента и сервера, то для того чтобы избежать дублирования кода, этот общий код (и только его) следует оставить в клиент-серверном общем модуле и вызывать его из клиентской и серверной функций, соответственно. Тем самым надежно достигается различное поведение в клиентском и серверном контекстах без использования инструкций препроцессора.

В то же время, как и в обычных клиентских модулях, допустимо ветвление кода для учета специфики различных режимов работы клиентского приложения: веб-клиент, тонкий или толстый клиент (например, #Если ВебКлиент).

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

Процедура Пример1()
а = 1
#Область ИмяОбласти
+ 2;
#КонецОбласти // разрыв выражения
КонецПроцедуры

#Область ИмяОбласти
Процедура Пример2()
// .
#КонецОбласти // разрыв процедуры
КонецПроцедуры

Если Тогда
// .
#Если ВебКлиент Тогда // разрыв блока Если
Иначе
// .
#КонецЕсли
КонецЕсли;

Результат = Пример4(Параметр1,
#Если Клиент Тогда
Параметр2, // некорректный вызов функции
#КонецЕсли
Параметр3);

Данные ошибки диагностируются автоматически с помощью среды разработки 1C:Enterprise Development Tools (EDT).

Правильно использовать инструкции препроцессора без разрыва конструкций.

При запуске «Закрытие месяца» выдает сообщение об ошибках

Как устранить Ошибку

В файле ReadMe.txt, который входит в пакет обновления релиза сказано:

Внимание!
Текущая версия конфигурации «Бухгалтерия предприятия» предназначена
для использования с версией системы 1С:Предприятие не ниже 8.3.8.1747
При работе с операционной системой Microsoft Windows 10 необходимо использовать версию 8.3 платформы «1С:Предприятие».
Работа конфигурации в режимах совместимости «Версия 8.3» и «Версия 8.2.х» поддерживается.

Это означает, что
необходимо установить любую платформу линейки 8.3.х.хххх, но не ниже рекомендуемой 8.3.8.1747

Не путайте платформу с конфигурацией (редакцией, релизом)!

После установки новой платформы (8.3.х.хххх) запустите свою рабочую ИБ и ошибка исчезнет.

Подскажите пожалуйста
Установлена 1С: Предприятие 8.2 (8.2.12.87), на нее поставил 1С: Розница. Магазин автозапчастей 2.1 (2.1.3.11). Прои запуске ошибка: <ХранилищеНастроек. ХранилищеВариантовОтчетов (2,2)>: Ожидается оператор препроцессора
# >Область ПрограммныйИнтерфейс
<ХранилищеНастроек. ХранилищеВариантовОтчетов (199,2)>: Ожидается оператор препроцессора
# >КонецОбласти
<ХранилищеНастроек. ХранилищеВариантовОтчетов (201,2)>: Ожидается оператор препроцессора
# >Область ОбработчикиСобытий
<ХранилищеНастроек. ХранилищеВариантовОтчетов (423,2)>: Ожидается оператор препроцессора
# >КонецОбласти

vedma777 пишет:

Цитата
Стоит 1С:Предприятие 8.2 (8.2.19.80). Обновила 2.0 (2.0.66.12) .
…..
Что делать?

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

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

Установите любую платформу линейки 8.3.8.хххх (не гонитесь за сверхновыми), но не ниже рекомендуемой 8.3.8.1747, и тогда будут видны обновления для вашей конфигурации.

Для этого следует:

— скачать с сайта ИТС Технологическую платформу для Windows — это файл windows.rar;
— распаковать windows.rar в любую папку;
— в этой папке запустить setup.exe;
— со всеми предложениями соглашайтесь кроме установки драйвера защиты, он установлен ранее.

Всё. Новая платформа установлена, старая при этом осталась на месте.
Если на Рабочем столе был ярлык 1С Предприятие — он обновится и при запуске Вы увидите окно с «1С:Предприятие 8.3».
Если Вы пользовались панелью быстрого запуска, то в ней ярлык не обновляется; его следует удалить, а на его место скопировать обновленный.

Таким образом ваша БП 2.0 начала работать на платформе 8.3 и теперь возможно её корректное обновление.

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

Автор helena3891, 26 дек 2017, 15:26

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

1С:Упрощенка 8. Базовая версия. После обновления до версии 8.2.19.83 при запуске выпадает ошибка:

{Перечисление.СтавкиНДС.МодульМенеджера(3,2)}: Ожидается оператор препроцессора
#<<?>>Область ПрограммныйИнтерфейс
{Перечисление.СтавкиНДС.МодульМенеджера(30,2)}: Ожидается оператор препроцессора
#<<?>>КонецОбласти

Возможности зайти в программу нет. В конфигураторе описание проблемы (скрин в приложении)

Посоветуйте, пожалуйста, что делать


Спасибо за Сказать спасибо


Цитата: helena3891 от 26 дек 2017, 15:26
1С:Упрощенка 8. Базовая версия. После обновления до версии 8.2.19.83 при запуске выпадает ошибка:

8.2.19.83 — это версия платформы 1С. Она не обновляется, а ставится параллельно к старой
А обновления «1С:Упрощенка 8» версии 2.0 с ноября 2016, уже более года, требуют использования 1С не ниже 8.3.8.1747

Вы, если не файлы с инструкциями по обновлению, то, хотя бы, первые фразы со страницы обновлений — читайте, хотя бы раз в полгода
Это намного быстрее и эффективнее, чем ставить несоответствующие Вашей конфигурации версии 1С


Цитата: Геннадий ОбьГЭС от 26 дек 2017, 16:08
требуют использования 1С не ниже 8.3.8.1747

Уж поверьте, сообщения читаю. несмотря на то, что просят обновить до  8.3.8.1747, выпускают обновления для 8.2…
8.3.8.1747 — технологическая платформа 8.3,  которую у меня компьютер не потянет.. поэтому и обновляю 2.
была бы специалистом по установке 1с, переставила бы на другой компьютер. но увы и ах.. не умею этого делать..
поэтому и спрашиваю что можно сделать в текущей ситуации без обновлений до 3 версии

Если я что-то не верно понимаю, поясните, пожалуйста..

Добавлено: 26 дек 2017, 17:42


И еще вопрос — если я на другой комп поставлю версию 8.3, смогу я в нее загрузить базу из версии 8.2? или нужно сначала поставить на новом компе версию 8.2, загрузить базу 8.2, потом обновить до 8.3?


Цитата: helena3891 от 26 дек 2017, 17:02
И еще вопрос — если я на другой комп поставлю версию 8.3, смогу я в нее загрузить базу из версии 8.2? или нужно сначала поставить на новом компе версию 8.2, загрузить базу 8.2, потом обновить до 8.3?

Вашу — сможете
Вначале — не надо

По поводу обновления 1С читайте мой предыдущий ответ:
1С не обновляется, а ставится новая взамен и параллельно старой


Цитата: helena3891 от 26 дек 2017, 17:02
8.3.8.1747 — технологическая платформа 8.3,  которую у меня компьютер не потянет.. поэтому и обновляю 2.
была бы специалистом по установке 1с, переставила бы на другой компьютер. но увы и ах.. не умею этого делать..

Не понятно что именно у вас не потянет.
Механизм действий следующий:
1) Заходите в Конфигуратор: Администрирование-> Выгрузить информационную базу (будет сохранен файл формата .DT)
2) Далее загружаете новую версию платформы и устанавливаете.
Если будет устанавливать на другой компьютер, то понадобится активировать лицензию — смотрите коробку 1С и ключи дополнительные)
3) Если установили платформу на тот же компьютер — сверьте оборотку и работайте спокойно. Это на всякий случай, проблем быть не должно
4) Если установили платформу на новый компьютер — то в Конфигураторе сделайте: Администрирование ->Загрузить информационную базу и выберите тот файл DT который был сделан в п.1. Дальше проверьте оборотку для успокоения души и работайте:)

Если что — обращайтесь:)

С уважением,
Андрей Федотов
Future IT Solutions


Цитата: Андрей Федотов от 03 янв 2018, 11:40
Механизм действий следующий:
1) Заходите в Конфигуратор: Администрирование-> Выгрузить информационную базу (будет сохранен файл формата .DT)

Для файловой базы — это излишне, просто скопировать из папки базы файл 1Cv8.1CD и прописать в списке баз путь к папке с этим файлом


Добрый вечер! Аналогичная проблема, не сделала резервную копию, обновила 1 с предприятие базовая, 8.2, с 8.2.0.66.38 до 8.2.0.44 через конфигуратор (всегда нормально делала)
Открывая 1с  окно с ошибками и вылетает что делать?


Сказали же уже, может недостаточно понятно.
8.2 не умеет обрабатывать эту чисто косметическую свистоперделку #Область <имя> #КонецОбласти
Варианта у вас два:
1. Поставить Платформу 8.3. Учитывая, что изменений вы заметите чуть менее чем никаких, не понимаю, почему до сих пор этого не сделано. Браузеры Амиго и Маил.сру-Спутники вы почему-то устанавливать умеете, а нажать 3 раза далее в сетапе 1С-платформы вызывает какой-то трепетный ужас и полную фрустрацию. Нипонятно.
2. Глобальный поиском найти все #Область <имя> #КонецОбласти и удалить. Ручками. Ну или удалять по мере появления таких ошибок, ибо в тексте ошибки четко указан модуль с этой фигней.

P.S.: Не, Области как свистоперделка — штука удобная. Особенно во всяких формочках на УФ с кучей хуков, где два десятка клиентских и полтинник серверных вызовов, которые на обычных пишутся в три строки кода. Скроллить короче меньше, ага.


Цитата: helena3891 от 26 дек 2017, 17:02
8.3.8.1747 — технологическая платформа 8.3,  которую у меня компьютер не потянет.. поэтому и обновляю 2.
была бы специалистом по установке 1с, переставила бы на другой компьютер. но увы и ах.. не умею этого делать..

Я слабо улавливаю:
1)
какая разница — на какой компьютер ставить?
Как можно уметь ставить на один и не уметь на другой?
Тем более, что Вы явно не автоматически устанавливаете — то, что не рекомендуется
2)
Я не замечал, чтобы под 8.3 конфигурации работали медленнее, чем под 8.2
По ощущениям — наоборот

Быстродействие больше зависит от самой конфигурации и настроек базы,
чем от платформы
(можно поотключать регламентные фоновые задания и ненужные функциональности на УФ)

Цитата: 20005701554 от 04 янв 2018, 23:55с 8.2.0.66.38 до 8.2.0.44 через конфигуратор (всегда нормально делала)

1С не обновляют, тем более с большей на меньшую версию

Да, и версий таких — нет
8.2.19.130 — максимальная или последняя версия 8.2

Зачем сочинять-то?
Прям, какие-то сказочники косяком идут


С недавнего времени обновления конфигурации 1с Бухгалтерия 2.0 требует платформу 8.3. Об этом сообщается в самой базе и на сайте users.v8.1c.ru при скачивании обновления:

Внимание! Текущая версия конфигурации «Бухгалтерия предприятия» предназначена для использования с версией технологической платформы 1С:Предприятие 8 не ниже 8.3.8.1747.

Несколько релизов можно было обновить указывая в конфигураторе 1с файл обновления и процесс шел. База обновлялась и все работало.

Но теперь программисты стали использовать функционал платформы 8.3 в конфигурации 1с Бухгалтерия 2.0 и начались проблемы. Кто то писал про регламентированные отчеты, не знаю с этим не столкнулся.

Да электронные формы регламентированной отчетности для 2.0 выходят с задержкой. Но с этим как то можно жить. А вот с невозможностью закрытия месяца уже сложнее. Вот такая ошибка вылетает на платформе 8.2.19.130  с конфигурацией базы 2.0.66.16 и выше:

{ОбщийМодуль.РезервыПоСомнительнымДолгам.Модуль(1,2)}: Ожидается оператор препроцессора
#<>Область ПрограммныйИнтерфейс
{ОбщийМодуль.РезервыПоСомнительнымДолгам.Модуль(290,2)}: Ожидается оператор препроцессора
#<>КонецОбласти
{ОбщийМодуль.РезервыПоСомнительнымДолгам.Модуль(292,2)}: Ожидается оператор препроцессора
#<>Область РасчетРезервов
{ОбщийМодуль.РезервыПоСомнительнымДолгам.Модуль(765,2)}: Ожидается оператор препроцессора
#<>КонецОбласти
{ОбщийМодуль.РезервыПоСомнительнымДолгам.Модуль(767,2)}: Ожидается оператор препроцессора
#<>Область Коллекции
{ОбщийМодуль.РезервыПоСомнительнымДолгам.Модуль(910,2)}: Ожидается оператор препроцессора
#<>КонецОбласти

Все финал. Не можешь или не хочешь, прижали 1сники. Если конфигурация снята с поддержки можно по убирать области из модуля, нужно смотреть как повлияет. А для остальных – ставим платформу 8.3. После этого закрытие месяца опять работает в штатном режиме.

На чтение 3 мин. Опубликовано

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. Директивы компиляции:

&НаКлиенте (&AtClient)
&НаСервере (&AtServer)
&НаСервереБезКонтекста (&AtServerNoContext)

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

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

2. Не следует использовать инструкции препроцессора в клиент-серверных общих модулях для проверки клиентского и серверного контекстов (#Если Сервер, #Если Клиент) ввиду невозможности надежного определения контекста исполнения. Процедуры и функции, которые работают по-разному при вызове с клиента и с сервера, следует размещать в общих модулях с постфиксами Клиент и Сервер , а не КлиентСервер .

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

Функция КодОсновногоЯзыка() Экспорт
#Если НЕ ТонкийКлиент И НЕ ВебКлиент Тогда
Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
#Иначе
Возврат СтандартныеПодсистемыКлиент.ПараметрКлиента(«КодОсновногоЯзыка»);
#КонецЕсли
КонецФункции

Функция КодОсновногоЯзыка() Экспорт
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Возврат Метаданные.ОсновнойЯзык.КодЯзыка;
#Иначе
Возврат СтандартныеПодсистемыКлиент.ПараметрКлиента(«КодОсновногоЯзыка»);
#КонецЕсли
КонецФункции

Правильно: разделить на две одноименные функции в серверном и клиентском модуле с различной реализацией. В общем случае, когда у них имеется определенная общая часть, одинаковая для клиента и сервера, то для того чтобы избежать дублирования кода, этот общий код (и только его) следует оставить в клиент-серверном общем модуле и вызывать его из клиентской и серверной функций, соответственно. Тем самым надежно достигается различное поведение в клиентском и серверном контекстах без использования инструкций препроцессора.

В то же время, как и в обычных клиентских модулях, допустимо ветвление кода для учета специфики различных режимов работы клиентского приложения: веб-клиент, тонкий или толстый клиент (например, #Если ВебКлиент).

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

Процедура Пример1()
а = 1
#Область ИмяОбласти
+ 2;
#КонецОбласти // разрыв выражения
КонецПроцедуры

#Область ИмяОбласти
Процедура Пример2()
// .
#КонецОбласти // разрыв процедуры
КонецПроцедуры

Если Тогда
// .
#Если ВебКлиент Тогда // разрыв блока Если
Иначе
// .
#КонецЕсли
КонецЕсли;

Результат = Пример4(Параметр1,
#Если Клиент Тогда
Параметр2, // некорректный вызов функции
#КонецЕсли
Параметр3);

Данные ошибки диагностируются автоматически с помощью среды разработки 1C:Enterprise Development Tools (EDT).

Правильно использовать инструкции препроцессора без разрыва конструкций.

При запуске «Закрытие месяца» выдает сообщение об ошибках

Как устранить Ошибку

В файле ReadMe.txt, который входит в пакет обновления релиза сказано:

Внимание!
Текущая версия конфигурации «Бухгалтерия предприятия» предназначена
для использования с версией системы 1С:Предприятие не ниже 8.3.8.1747
При работе с операционной системой Microsoft Windows 10 необходимо использовать версию 8.3 платформы «1С:Предприятие».
Работа конфигурации в режимах совместимости «Версия 8.3» и «Версия 8.2.х» поддерживается.

Это означает, что
необходимо установить любую платформу линейки 8.3.х.хххх, но не ниже рекомендуемой 8.3.8.1747

Не путайте платформу с конфигурацией (редакцией, релизом)!

После установки новой платформы (8.3.х.хххх) запустите свою рабочую ИБ и ошибка исчезнет.

Подскажите пожалуйста
Установлена 1С: Предприятие 8.2 (8.2.12.87), на нее поставил 1С: Розница. Магазин автозапчастей 2.1 (2.1.3.11). Прои запуске ошибка: <ХранилищеНастроек. ХранилищеВариантовОтчетов (2,2)>: Ожидается оператор препроцессора
# >Область ПрограммныйИнтерфейс
<ХранилищеНастроек. ХранилищеВариантовОтчетов (199,2)>: Ожидается оператор препроцессора
# >КонецОбласти
<ХранилищеНастроек. ХранилищеВариантовОтчетов (201,2)>: Ожидается оператор препроцессора
# >Область ОбработчикиСобытий
<ХранилищеНастроек. ХранилищеВариантовОтчетов (423,2)>: Ожидается оператор препроцессора
# >КонецОбласти

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

Интересное по теме:

  • 1с ошибка ожидается выражение выбрать
  • 1с ошибка обсуждение уже существует
  • 1с ошибка обращения к серверу 1с предприятия
  • 1с ошибка обращения к интернет поддержке
  • 1с ошибка обработки представления регистрбухгалтерии хозрасчетный остатки

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: