Ошибка компиляции при вычислении выражения или выполнении

Доброго дня!

1С:Предприятие 8.3 (8.3.9.2170), Управление производственным предприятием, редакция 1.3 (1.3.90.1). Формы обычные.

Есть кусок кода (хранится в справочнике):

Если Не ГМЗ_СогласованиеДокументов.ТребоватьПроверкуРасценкиЗаказногоЛимита(ПараметрыВыполненияКода.СсылкаДокумента) Тогда
    // Два ЕСЛИ, чтобы сократить длину строки

    Если (ПараметрыВыполненияКода.НовоеСостояниеДокумента = Перечисления.ГМЗ_СостоянияДокументов.Согласован) Тогда
        Если (ПараметрыВыполненияКода.НовоеСостояниеДокумента = Перечисления.ГМЗ_СостоянияДокументов.Утвержден) Тогда
            прм_Запрос = Новый Запрос;
            прм_Запрос.Текст = 
                "ВЫБРАТЬ РАЗЛИЧНЫЕ
                |    ГМЗ_УстановкаЦенМатериаловЛимитов.Ссылка
                |ИЗ
                |    Документ.ГМЗ_УстановкаЦенМатериаловЛимитов КАК ГМЗ_УстановкаЦенМатериаловЛимитов
                |ГДЕ
                |    ГМЗ_УстановкаЦенМатериаловЛимитов.Проведен = ИСТИНА
                |    И ГМЗ_УстановкаЦенМатериаловЛимитов.ДокументЛимитов = &ДокументЛимитов";
            прм_Запрос.УстановитьПараметр("ДокументЛимитов", ПараметрыВыполненияКода.СсылкаДокумента);
            прм_РезультатЗапроса = прм_Запрос.Выполнить();
            прм_Выб = прм_РезультатЗапроса.Выбрать();
            прм_НовоеСостояние = Перечисления.ГМЗ_СостоянияДокументов.Утвержден;
            прм_Комментарий = "Утвержден при утверждении документа лимита";
            прм_РезОперации = "";
            Пока прм_Выб.Следующий() Цикл
                прм_СтрК = Новый Структура("Состояние, Комментарий", прм_НовоеСостояние, прм_Комментарий);
                прм_Рез = ГМЗ_СогласованиеДокументов.УстановитьНовоеСостояниеДокумента(прм_Выб.Ссылка, прм_СтрК);
                прм_РезОперации=?(прм_РезОперации = "","",прм_РезОперации +Символы.ПС+"Утверждение "+СокрЛП(прм_Выб.Ссылка)+":"+?(прм_Рез = "", "ОК", "ОШИБКА!!! " + прм_Рез));
            КонецЦикла;
            ПараметрыВыполненияКода.СтатусОбработкиДокумента = прм_РезОперации;
        КонецЕсли;
    КонецЕсли;
КонецЕсли;

В модуле формы обработки вызываю

ПараметрыВыполненияКода = Новый Структура("СсылкаДокумента, СсылкаПроверяемогоЭтапа, НовоеСостояниеДокумента, СтатусОбработкиДокумента");
ПараметрыВыполненияКода.СсылкаДокумента = СтрокаТабличнойЧасти.Ссылка; 
ПараметрыВыполненияКода.СсылкаПроверяемогоЭтапа = НовыйЭтап; 
ПараметрыВыполненияКода.НовоеСостояниеДокумента = НовоеСостояниеТекущегоДокумента;
ПараметрыВыполненияКода.СтатусОбработкиДокумента = ""; 
Выполнить(КодПостОбработки);



Вылезает вот такая ошибка: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(37,96)}: Ожидается символ ‘)’

Несмотря на это, при вставке кода напрямую в модуль формы (вместо Выполнить(КодПостОбработки)) все работает!

Я пытался уменьшить длину строк текста, все тщетно. Может, есть какие-то ограничения платформы?

Спасибо.

Здравствуйте, коллеги! Сегодня поговорим о проблеме неопределенных переменных в 1С. Рядовой пользователь с данной ошибкой сталкиваться не должен, но если уж и произошло подобное при работе в типовой конфигурации 1С, которая никак не модифицировалась, возможно, у нас наклевывается проблема самого релиза, которая иссякнет при обновлении. В таком случае стоит связаться со специалистом, чтобы найти выход из ситуации.

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

1. Проверка на определения 1С 8.3

Можно прописать перед ошибкой следующий код:

Если Не НашаПеременная = Неопределено Тогда

Соответственно, закрыв «Если» после, но тут как уже писалось нужно действовать аккуратно, возможно данная конструкция напрочь сломает весь последующий код. Гораздо лучше найти, где объявляется переменная и устранить ошибку.

2. Поиск объявления переменной 1С 8.3

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

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

3. Обычная опечатка в программе 1С 8.3 Предприятие

Чтобы быстро в программе 1С 8.3 Предприятие проверить опечатка ли спровоцировала ошибку, просто скопируем переменную из объявления и вставим ее имя в то место, где случается ошибка. Можно сделать следующим образом, чтобы избежать таких ошибок в будущем:

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

Переменная не определена в 1С 8.3

Ошибка Переменная не определена в 1С 8.3 указывает на то, что программа не может получить нужную информацию в исполняемом программном коде. Это может быть связано с обновлением или доработкой программы. Если стандартный набор действий при исправлении ошибок не помог:

Придется разбираться с местом возникновения ошибки в 1С самостоятельно.

БухЭксперт8 подготовил 3 примера получения и исправления ошибки:

Ошибка в доработанном программном коде

В сообщении об ошибке указано место возникновения ошибки — строка 919 в модуле формы. Для исправления ошибки необходимо выполнить следующие действия:

Синтаксис Справочники. Склады. ОсновнойСклад используется только для предопределенного склада с именем ОсновнойСклад :

Ошибка вывода печатной формы

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

В макет документа добавлена область Подвал :

В программном коде дописан вывод данных области Подвал :

После доработки программы при попытке вывода накладной на печать 1С выдает ошибку:

После исправления программного кода накладная сформируется без ошибки.

Ошибка исполнения кода на Клиенте

С переходом на управляемые формы в Бухгалтерия 3.0 работы программистам прибавилось.

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

Разделение команд в программном коде не зависит от того, используете ли вы файловую или клиент-серверную 1С. Разграничение должно четко исполняться, иначе будут возникать ошибки, одну из которых БухЭксперт8 разберет на примере.

Теперь сохранение изменений пройдет без ошибки.

Усложнение языка программирования 1С требует от разработчика более глубокого подхода к вносимым изменениям в программу. Недостаточно просто знать синтаксис команды, важно еще правильно задать область исполнения команды в режиме управляемых форм.

См. также:

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Карточка публикации

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

Для отправки комментария вам необходимо авторизоваться.

Вы можете задать еще вопросов

Доступ к форме «Задать вопрос» возможен только при оформлении полной подписки на БухЭксперт8

Нажимая кнопку «Задать вопрос», я соглашаюсь с
Регламентом БухЭксперт8.ру >>

Переменная не определена в 1С 8.3

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

Использование переменных в 1С

Переменные указываются в структуре кода с использованием знака равенства (=) или перечисляются после ключевого слова Перем в одноименном разделе модулей, кроме общего и модуля сеанса.

Тип переменной заранее не задается, а определяется после присвоения какого-либо значения. В памяти они не хранятся, а создаются в момент исполнения кода и стираются с завершением операций. Различают 3 вида переменных:

Глобальные переменные

Объявляются в верхней части модулей до процедур/функций в разделе объявления переменных. Имена перечисляются после ключевого слова Перем через запятую. Присвоение значений происходит в процессе выполнения кода, изначально имеет тип [Неопределено].

Глобальные переменные можно использовать в модулях:

В модулях формы и команды для каждой процедуры/функции определяется место исполнения: на сервере (&НаСервере, &НаСервереБезКонтекста) или на клиенте (&НаКлиенте), при этом режим работы программы (серверный или файловый) не имеет значения. Объявленные глобальные переменные в этих модулях во время выполнения кода:

Локальные переменные

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

Экспортные переменные

В разделе переменных после имени имеют ключевое слово Экспорт, которое позволяет экспортировать их в любое место программы через обращение к модулю-родителю.

Ошибка «Переменная не определена» в 1С 8.3

Когда программа 1С не может найти переменную, пользователю выдается сообщение «Переменная не определена ([Имя_переменной])».

Сбой может возникнуть после обновления или доработки конфигурации. Первичные действия по устранению ошибки будут такими же, как при появлении других предупреждающих сообщений, например, «Поле объекта не обнаружено» или «Метод объекта не обнаружен»:

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

Кроме текста ошибки в окне указано место ее возникновения:

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

Способы устранения ошибки

Если переменная не определена в процедуре/функции, исполняемой на стороне клиента (&НаКлиенте):

Когда ошибку «Переменная не определена» 1С 8.3 выдает при выполнении серверной процедуры/функции (&НаСервере, &НаСервереБезКонтекста):

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

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

Источники:

Https://www. koderline. ru/expert/instruktsii/article-peremennaya-ne-opredelena-v-1s/

Https://buhexpert8.ru/obuchenie-1s/oshibki-v-1s/peremennaya-ne-opredelena-v-1s-8-3.html

Https://profbuh8.ru/2020/12/peremennaya-ne-opredelena-v-1s-8-3/

Ошибка при выгрузке из УТ 10.3 в БП 2.0

Ситуация такая УТ нетиповая, БП — типовая
делаю выгрузку через УниверсальныйОбменXML по стандартным привилам УТ с БП 2.0
и при нажатии Выгрузить данные вылазит ошибка:

Ошибка в обработчике события ПередВыгрузкойДанных (конвертация)
Обработчик = ПередВыгрузкойДанных (конвертация)
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(12582)
КодСообщения = 62

сам модуль перед выгрузкой вот:
Параметры.Вставить(«ВалютаРегламентированногоУчета», Константы.ВалютаРегламентированногоУчета.Получить());
Параметры.Вставить(«ВалютаУправленческогоУчета», Константы.ВалютаУправленческогоУчета.Получить());

Если НЕ Параметры.ПервыйОбмен Тогда

Параметры.Вставить(«ДатаНачалаВыгрузкиДокументов»,УзелДляОбмена.ДатаНачалаВыгрузкиДокументов);
Параметры.Вставить(«ПередаватьТолькоДокументыОтраженныеВБухгалтерскомУчете»,УзелДляОбмена.ПередаватьТолькоДокументыОтраженныеВБухгалтерскомУчете);

Параметры.Вставить(«ИспользоватьФильтрПоОрганизациям»,?(УзелДляОбмена.Организации.Количество()>0,Истина,Ложь));
Параметры.Вставить(«ИспользоватьФильтрПоСкладам»,?(УзелДляОбмена.Склады.Количество()>0,Истина,Ложь));
Параметры.Вставить(«ИспользоватьФильтрПоПодразделениям»,?(УзелДляОбмена.Подразделения.Количество()>0,Истина,Ложь));

Если Параметры.ИспользоватьФильтрПоОрганизациям Тогда

Параметры.Вставить(«МассивОрганизаций»,УзелДляОбмена.Организации.Выгрузить().ВыгрузитьКолонку(«Организация»));

КонецЕсли;

Если Параметры.ИспользоватьФильтрПоСкладам Тогда

Параметры.Вставить(«МассивСкладов»,УзелДляОбмена.Склады.Выгрузить().ВыгрузитьКолонку(«Склад»));

КонецЕсли;

Если Параметры.ИспользоватьФильтрПоПодразделениям Тогда

Параметры.Вставить(«МассивПодразделений»,УзелДляОбмена.Подразделения.Выгрузить().ВыгрузитьКолонку(«Подразделение»));

КонецЕсли;

МассивТиповДокументов = Новый Массив;

Для каждого МетаДокумент Из Метаданные.Документы цикл

МассивТиповДокументов.Добавить(Тип(«ДокументСсылка.» + МетаДокумент.Имя));
МассивТиповДокументов.Добавить(Тип(«ДокументОбъект.» + МетаДокумент.Имя));

КонецЦикла;

ОписаниеТиповДокументы = Новый ОписаниеТипов(МассивТиповДокументов);
Параметры.Вставить(«ОписаниеТиповДокументы»,ОписаниеТиповДокументы);

МассивТиповДокументов.Очистить();
МассивТиповДокументов.Добавить(Тип(«ДокументСсылка.СчетФактураВыданный»));
МассивТиповДокументов.Добавить(Тип(«ДокументСсылка.СчетФактураПолученный»));
МассивТиповДокументов.Добавить(Тип(«ДокументОбъект.СчетФактураПолученный»));
МассивТиповДокументов.Добавить(Тип(«ДокументОбъект.СчетФактураВыданный»));

ОписаниеТиповДокументы = Новый ОписаниеТипов(МассивТиповДокументов);

Параметры.Вставить(«ОписаниеТиповДокументыСФ»,ОписаниеТиповДокументы);

КонецЕсли;
// Документы расчетов (БП зачет аванса), несовместимые типы документов.
// Обмен не поддерживается.
СтруктураНевыгружаемыхДокументовРасчетов = Новый Структура();
// СписаниеСРасчетногоСчета
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомитентуОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.РеализацияТоваровУслуг»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомиссионераОПродажах»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«СписаниеСРасчетногоСчета», Массив);
// ПоступлениеНаРасчетныйСчет
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщикуИзНТТ»));
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщику»));
Массив.Добавить(Тип(«ДокументСсылка.АвансовыйОтчет»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеДопРасходов»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеТребованиеВыставленное»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеТоваровУслугВНТТ»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомитентуОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.ИнкассовоеПоручениеПереданное»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеПоручениеВходящее»));
Массив.Добавить(Тип(«ДокументСсылка.АккредитивПолученный»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеТоваровУслуг»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежныйОрдерПоступлениеДенежныхСредств»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«ПоступлениеНаРасчетныйСчет», Массив);
// ПоступлениеТоваровУслуг
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщикуИзНТТ»));
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщику»));
Массив.Добавить(Тип(«ДокументСсылка.ПриходныйКассовыйОрдер»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеДопРасходов»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомитентуОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеПоручениеВходящее»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомиссионераОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.РеализацияТоваровУслуг»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«ПоступлениеТоваровУслуг», Массив);
// ПриходныйКассовыйОрдер
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.КорректировкаДолгаПоВозвратнойТаре»));
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровОтПокупателя»));
Массив.Добавить(Тип(«ДокументСсылка.ПриходныйКассовыйОрдер»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеДопРасходов»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеТребованиеВыставленное»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомитентуОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.ИнкассовоеПоручениеПереданное»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеПоручениеВходящее»));
Массив.Добавить(Тип(«ДокументСсылка.АккредитивПолученный»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежныйОрдерПоступлениеДенежныхСредств»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«ПриходныйКассовыйОрдер», Массив);
// РасходныйКассовыйОрдер
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.КорректировкаДолгаПоВозвратнойТаре»));
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщикуИзНТТ»));
Массив.Добавить(Тип(«ДокументСсылка.ИнкассовоеПоручениеПолученное»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеПоручениеИсходящее»));
Массив.Добавить(Тип(«ДокументСсылка.РасходныйКассовыйОрдер»));
Массив.Добавить(Тип(«ДокументСсылка.АккредитивПереданный»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеТоваровУслугВНТТ»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежныйОрдерСписаниеДенежныхСредств»));
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщику»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеТребованиеПолученное»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомиссионераОПродажах»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«РасходныйКассовыйОрдер», Массив);
// РеализацияТоваровУслуг
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровОтПокупателя»));
Массив.Добавить(Тип(«ДокументСсылка.ИнкассовоеПоручениеПолученное»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеПоручениеИсходящее»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеДопРасходов»));
Массив.Добавить(Тип(«ДокументСсылка.РасходныйКассовыйОрдер»));
Массив.Добавить(Тип(«ДокументСсылка.АккредитивПереданный»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомитентуОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеТоваровУслуг»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеТребованиеПолученное»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомиссионераОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.АвансовыйОтчет»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«РеализацияТоваровУслуг», Массив);
// ПоступлениеДопРасходов
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщикуИзНТТ»));
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровПоставщику»));
Массив.Добавить(Тип(«ДокументСсылка.ПриходныйКассовыйОрдер»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеДопРасходов»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеТребованиеВыставленное»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомитентуОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.ИнкассовоеПоручениеПереданное»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеПоручениеВходящее»));
Массив.Добавить(Тип(«ДокументСсылка.АккредитивПолученный»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомиссионераОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.РеализацияТоваровУслуг»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежныйОрдерПоступлениеДенежныхСредств»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«ПоступлениеДопРасходов», Массив);
// ОтчетКомиссионераОПродажах
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.ВозвратТоваровОтПокупателя»));
Массив.Добавить(Тип(«ДокументСсылка.ДокументРасчетовСКонтрагентом»));
Массив.Добавить(Тип(«ДокументСсылка.ДокументРасчетовСКонтрагентом»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеПоручениеИсходящее»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеДопРасходов»));
Массив.Добавить(Тип(«ДокументСсылка.РасходныйКассовыйОрдер»));
Массив.Добавить(Тип(«ДокументСсылка.АккредитивПереданный»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеТоваровУслугВНТТ»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомитентуОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежныйОрдерСписаниеДенежныхСредств»));
Массив.Добавить(Тип(«ДокументСсылка.ПоступлениеТоваровУслуг»));
Массив.Добавить(Тип(«ДокументСсылка.ПлатежноеТребованиеПолученное»));
Массив.Добавить(Тип(«ДокументСсылка.ОтчетКомиссионераОПродажах»));
Массив.Добавить(Тип(«ДокументСсылка.АвансовыйОтчет»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«ОтчетКомиссионераОПродажах», Массив);
// КорректировкаДолга
Массив = Новый Массив();
Массив.Добавить(Тип(«ДокументСсылка.ОтражениеРеализацииТоваровИУслугНДС»));
Массив.Добавить(Тип(«ДокументСсылка.КорректировкаДолгаПоВозвратнойТаре»));
Массив.Добавить(Тип(«ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой»));
Массив.Добавить(Тип(«ДокументСсылка.ОтражениеПоступленияТоваровИУслугНДС»));
СтруктураНевыгружаемыхДокументовРасчетов.Вставить(«КорректировкаДолга», Массив);
///////////////
Параметры.СтруктураНевыгружаемыхДокументовРасчетов = СтруктураНевыгружаемыхДокументовРасчетов;

Как решить такую проблему?

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

ты не меняй описанную мною процедуру ВЫПОЛНИТЬ, на функцию ВЫЧИСЛИТЬ

Во первых код который ты дал — содержит ошибку — нет определения для переменной строка. То есть она просто тупо не компилиться. Но поверив тебе и усомнившись в своих знаниях решил все же проверить и сделал так

1C
1
2
3
4
5
6
7
8
9
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Формула = "45*15,26";
    ошибка = "Нет ошибки";
    Попытка  
        Выполнить(Формула);      
    Исключение
        Сообщить("Не удалось вычислить " + Формула+" Причина "+ОписаниеОшибки());  
    КонецПопытки; 
КонецПроцедуры

Не очень отличается от твоего идеала? На выходе увидел — «Не удалось вычислить 45*15,26 Причина {Форма.Форма.Форма(6)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,1)}: Неопознанный оператор»
Внимание, вопрос — Какое из указанных слов тебе не понятно?

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

Добавлено через 1 минуту
Неужели так сложно понять что оператор и функция — разные вещи?

Добавлено через 1 час 48 минут
В общем проблема твоего кода в том что ты сам не понимаешь — толи выполнить то ли вычислить. Если исходит из предположения что у тебя правильно оформленный код (это подразумевает наличие ; в конце оператора) то твой вопрос решается так

формула = «…..»
попытка
если найти(формула,»;») > 0 тогда
выполнить(формула);
иначе
результат = вычислить(формула);
исключение
сообщить(ОписаниеОшибки());
конецпопытки

но это костыль.
более правильный вариант — написать свой парсер 1С.
еще более правильный вариант — не использовать Выполнить и Вычислить. В твоем случае еще и гото нельзя использовать.

Неправильная константа типа Число

Ошибка «Неправильная константа типа Число» возникает при исполнении кода методом Выполнить(«<Код>») или при сохранении модуля (автопроверка).

Она говорит о том, что  в выражении  типа «Число» присутствуют не цифровые символы и  это не разделитель запятой (.)

К примеру, нижеприведенное выражение вызывает данную ошибку:

Номер = 48 354;  ! Пробел или неразрывный пробел здесь лишний.

Номер = 0xff;      !В 1С нет шестнадцатеричного представления числа.

Полный текст

Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: Неправильная константа типа Число

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

Понравилась статья? Поделить с друзьями:
  • Ошибка компиляции модов ведьмак 3
  • Ошибка компиляции майкрософт jscript код ошибки 800а03ее
  • Ошибка компиляции для платы ардуино уно
  • Ошибка компиляции для платы ардуино нано
  • Ошибка компиляции для платы ардуино леонардо