Ошибка cfgfilenames не определено

Содержание:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обычная опечатка в 1С

опечатка в программе 1С

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

Проверка на определения 1C

Специалист компании ООО «Кодерлайн»

Дягилев Дмитрий Вадимович

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

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

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

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

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

  • глобальные,
  • локальные,
  • экспортные.

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

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

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

  • обычного приложения;
  • управляемого приложения;
  • команды;
  • внешнего соединения;
  • менеджера;
  • формы;
  • объекта;
  • набора записей.

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

  • &НаКлиенте — передаются от одной процедуры к другой с сохранением значения. При переводе исполнения кода на сервер переменные продолжают существовать на стороне клиента со значениями, которые имели до передачи на сервер;

  • &НаСервере — уничтожаются по окончании выполнения процедур/функций на сервере, обратная передача переменной на клиент не производится. При повторном обращении к серверу создается вновь со значением по умолчанию [Неопределено].

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

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

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

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

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

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

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

  • очистка кэш-памяти программы 1С;
  • регистрация ошибки на сайте поддержки 1С, загрузка исправленных версий конфигурации;
  • тестирование и исправление сбоев в 1С через одноименную команду в конфигураторе.

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

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

  • Документ — вид объекта метаданных;
  • РеализацияТоваровУслуг — имя объекта;
  • Форма. ФормаДокументаТовары — модуль возникновения сбоя;
  • Форма(299,42) — номер строки в коде модуля и порядковый номер символа в строке.

Для перехода в конфигуратор нажмите Подробно — Конфигуратор. Если кнопки Подробно нет в окне:

  • откройте конфигуратор самостоятельно;
  • запустите конфигурацию в режиме отладки через меню Отладка — Начать отладку;
  • повторите действия, вызывающие ошибку.

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

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

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

1. Проверьте код процедуры/функции до места, где идет обращение к переменной: возможно, произошла опечатка в имени.

2. Просмотрите раздел объявления переменных в начале модуля: если есть сходные по наименованию переменные, исправьте описку в процедуре/функции.

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

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

  • когда появляется окно с ошибкой «Переменная не определена»: открытие формы, нажатие на кнопку, выбор из списка и т. д.? В примере окно с сообщением об ошибке выдается при попытке изменить дату документа;
  • на наименование процедуры/функции, которая содержит строку кода с ошибкой —ДатаПриИзменении, содержит алгоритм действий при смене даты;
  • на имя ненайденной переменной — ТекДатаДокумента, говорит о значении с типом Дата.
    Проанализировав эту информацию, определите, какое значение должно быть в переменной. В представленном коде, возможно, программист имел в виду дату документа до изменения.
    После определения данных, которые должна содержать переменная, в процедуру/функцию перед местом сбоя дописывается строка кода с присвоением переменной требуемого значения.

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

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

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

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

  1. Не присвоено значение локальной переменной, действия аналогичны использованию на клиенте с поправкой на место исполнения.
    Глобальные переменные на сервере создаются автоматически при выполнении процедур/функций с пометкой &НаСервере или &НаСервереБезКонтекста, так же, как на клиенте им присваивается начальное значение [Неопределено]. По завершении всех операций на сервере переменная уничтожается. При последующих вызовах сервера глобальная переменная примет начальное значение [Неопределено]. Последовательность процедур/функций в модулях не влияет на порядок их выполнения, переход с клиента на сервер и обратно определяется программным кодом.
  2. Переменная объявлена на стороне клиента, а используется на сервере, где ее не существует. Если переменная должна содержать значение, полученное в клиентской процедуре/функции, то можно передать ее на сервер через параметр.
  3. Глобальная переменная не объявлена — добавьте в начале модуля переменную для сервера.
  4. При обращении к базе данных неверно указаны имена объектов, параметров, из-за чего программа ошибочно приняла их за переменные — исправьте опечатку.

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

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

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

Ругается на общий модуль «Переменная не определена»

Я
   fantomask

28.12.16 — 08:20

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

Написал общий модуль для обмена, до недавнего времени работал исправно. Сегодня при открытии формы, где есть кнопка с вызовом процедуры в этом общем модуле. Выходит ошибка: Переменная не определена и название модуля.

Перевел вызов этой процедуры в модуль документа, не помогло.

   1dvd

1 — 28.12.16 — 08:22

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

   fantomask

2 — 28.12.16 — 08:24

(1) Так я вызов этого модуля перевел в модуль документа. Соответственно вызов всегда будет выполняться на стороне сервера.

   Aleksey

3 — 28.12.16 — 08:24

Может кто то обновил и удалил твой модуль

   fantomask

4 — 28.12.16 — 08:26

(3) Всё на месте стоит, я предварительно всё проверил, прогуглил.

   lxndr

5 — 28.12.16 — 08:26

открыжь для модуля «Вызов сервера»

   fantomask

6 — 28.12.16 — 08:28

(5) уже стоит, ошибка та же самая

   МимохожийОднако

7 — 28.12.16 — 08:31

Ничего просто так не происходит. Наверняка были изменения. Включи в режиме отладки остановку по ошибке и анализируй свой код в модуле с ошибкой на свойства и инициализацию.

   fantomask

8 — 28.12.16 — 08:43

(7) При открытии документа выходит эта ошибка.

   Mankubus

9 — 28.12.16 — 08:51

(8) какие флаги стоят в свойствах модуля?

   ptiz

10 — 28.12.16 — 08:53

(2) «я вызов этого модуля перевел в модуль документа. Соответственно вызов всегда будет выполняться на стороне сервера.» — в обычном приложении? Шутишь?

   ifso

11 — 28.12.16 — 08:55

кирпич в посылке, не?

   MUXACb

12 — 28.12.16 — 09:08

(0) Проверяйте весь общий модуль. У нас так было когда в какой-то процедуре модуля(причем для совершенно другого объекта), было получение свойства структуры, а переменная для значения свойства не была определена через «Перем». При вызове общего модуля он проверяется на ошибки

   MUXACb

13 — 28.12.16 — 09:15

+(12) Пардон, не «Перем», а «ПеременннаяДляЗначенияСвойства» = Неопределено;

   fantomask

14 — 28.12.16 — 12:11

(12) Спасибо будем проверять…

   fantomask

15 — 28.12.16 — 14:21

Не знаю в чем была проблема, но переименовал название общего модуля и проблема решилась. Соответственно во всех модулях Переименовал.

   kossmatiy

16 — 28.12.16 — 15:51

(15) кэш?

   luter-89

17 — 28.12.16 — 17:42

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

   luter-89

18 — 28.12.16 — 17:44

Не обращали внимание в типовых в модулях менеджера документа:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#КонецЕсли

  

fantomask

19 — 29.12.16 — 07:08

(18) Пробовал. Тоже не помогло

(16) возможно кэш, но возможности очистить её не было…

Независимо от того, куда вы едете — это в гору и против ветра!

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

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

  • чистка кеша;
  • тестирование и исправление информационной базы;
  • просмотр зарегистрированных ошибок на сайте 1С,

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

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

  • в доработанном программном коде;
  • при выводе печатной формы;
  • при исполнении кода на Клиенте.

Содержание

  • Ошибка в доработанном программном коде
  • Ошибка вывода печатной формы
  • Ошибка исполнения кода на Клиенте

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

В форму типового отчета Движение товаров программист добавил поле Склад. Список выбора значений в это поле ограничен. При открытии отчета появляется ошибка:

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

  1. Нажмите кнопку Подробно в форме сообщения об ошибке.
    В окне Обнаружены ошибки программа укажет:

    • номер неправильной строки кода;
    • исполняемую команду, которая привела к ошибке.

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

  2. Для перехода в место ошибки нажмите кнопку Конфигуратор.
    В Конфирураторе курсор автоматически установится на строке программного кода с ошибкой. Необходимо проверить используемые командой данные. В данном примере ошибка сигнализирует, что переменной ОсновнойСклад не задано значение: при добавлении в список складов программа не понимает, какой склад требуется добавить.
  3. Исправьте ошибку.
    Укажите нужное значение переменной в программном коде, например:

    • ОсновнойСклад = Справочники.Склады.НайтиПоНаименованию(«Основной склад»);
    • ОсновнойСклад = Справочники.Склады.ОсновнойСклад.

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

  4. Сохраните изменения и обновите информационную базу.
  5. Проверьте работу 1С после исправления ошибки.

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

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

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

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

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

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

Информация в окне сообщения об ошибке указывает, что в Модуле менеджера документа ПоступлениеТоваровУслуг не определено значение переменной Ответственный. Для исправления ошибки:

  1. Перейдите в Конфигуратор. В Модуле менеджера документа ПоступлениеТоваровУслуг перейдите на строку 4804.
  2. Укажите для вывода в печатную форму поля Ответственный — текущего пользователя, используя специальную команду 1С:
    • Пользователи.ТекущийПользователь().
  3. Сохраните изменения и обновите информационную базу.
  4. Перейдите в пользовательский режим для проверки выполненных изменений.

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

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

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

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

Все это привело к тому, что в 1С команды делятся на исполняемые &НаСервере и &НаКлиенте. И при написании программного кода нужно это учитывать, иначе программа не сможет выполнить заданную операцию. При работе с переменными при написании программного кода важно понимать:

  • &НаКлиенте — переменные существуют только на время клиентского вызова;
  • &НаСервере— переменные существуют только на время серверного вызова.

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

При доработке программного кода программист использовал операцию получения данных склада &НаКлиенте в процедуре ПриОткрытии.

При сохранении изменений 1С сообщила об ошибке Переменная не определена (Справочники) при определении значения склада:

  • «?»Справочники.Склады.НайтиПоКоду(«»00-000002»).

Ошибка связана с тем, что данная операция исполняется только на сервере, т. е. &НаСервере. И несмотря на то, что сама команда исполнения корректна, ошибка будет формироваться до тех пор, пока ее не перенесут в область команд исполнения &НаСервере, например так:

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

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

См. также:

  • Большое количество забивается решеткой
  • Печатная форма недоступна 1С 8.3 при вызове внешней печатной формы
  • Значение поля номер не уникально 1С 8.3: как исправить
  • У пользователя недостаточно прав на исполнение операции

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

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

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

При обновлении 1С, уже в режиме “Предприятие”, вы можете столкнуться с такой ошибкой: “EF_’№…’: Процедура или функция с указанным именем не определена”.

Теория

Процесс обновления базы 1С я показывал в этой статье. Но бывает так, что в “Конфигураторе” обновление прошло без ошибок. Затем вы открываете базу в режиме “Предприятие” чтобы продолжить обновление. И как только согласитесь с легальностью полученных обновлений, вдруг видите следующую ошибку:

Процедура или функция с указанным именем не определена

Может появиться и другая ошибка, без её описания. Тогда, чтобы понять что произошло, нажмите на ссылку “Сформировать отчет об ошибке“, а затем сохраните ошибку на ваш компьютер. Ошибка сохраниться в архиве в виде текстового файла, который вы можете открыть любым текстовым редактором. В этом текстовом файле можете найти ошибку из-за которой не обновляется база. И она может быть также связана с расширением, а может и ещё с чем-то. Но в этой статье мы рассматриваем именно определённую ошибку.

Эта ошибка означает что в базе есть расширение конфигурации, которое мешает обновиться. И номер этого расширения, в моём случае: “EF_00_00364434_5“. У вас может быть и другой номер, но начинается он всегда с EF_.

Расширения конфигурации – это специальный механизм, который нужен для доработки конфигурации без её изменения и без снятия её с поддержки. Типовые конфигурации, такие как “Бухгалтерия” или “Зарплата и управление персоналом” загружают расширения из интернета автоматически или вручную.

Кстати, расширения имеют больший приоритет, чем основная конфигурация. Поэтому и возникает данная ошибка. Расширение в обновлённой базе уже не нужно, но продолжает работать. И вот вам и ошибка “Процедура или функция с указанным именем не определена”.

Если у вас есть доступ к ИТС, то почитать про расширения можете тут.

В этом случае вам нужно просто удалить мешающее расширение используя “Конфигуратор“.

Удаление расширения

В конфигураторе вам следует перейти по следующим пунктам меню: “Конфигурация” / “Расширения конфигурации“:

Открываем "Расширения конфигурации"

И в открывшемся списке расширений находим нужное расширение и удаляем его:

список расширений конфигурации

Так как я уже удалил мешающее расширение, на рисунке выше его уже нет.

Далее нужно открыть базу в режиме “Предприятие” и попробовать продолжить обновление ещё раз. Больше этой ошибке у вас не должно появиться.

Успешных вам обновлений!

Сводка

Расширение мешает обновлению 1С

Имя статьи

Расширение мешает обновлению 1С

Описание

При обновлении 1С, уже в режиме «Предприятие», вы можете столкнуться с такой ошибкой: «EF_’…’: Процедура или функция с указанным именем не определена»

Перейти к содержимому

Настройка 1С

Решения по использованию программ 1С. Техподдержка. Сопровождение. Услуги программистов.

Коллега по цеху столкнулся со следующей ошибкой. При запуске обновления файловой базы в режиме 1С:Предприятия возникает ошибка сценария. Клиентская система на Windows 7.

Описание: «На этой странице произошла ошибка сценария. Предполагается наличие «]». Вы хотите продолжить выполнение сценариев на этой странице? Да/Нет».

Ошибка сценария при запуске скрипта обновления 1С

Установка обновлений Windows (IE) и прочих компонентов (Visual C++ Redistributable Runtimes, Java) не помогают. Запуск процесса с правами от имени администратора — тоже. Тогда этот способ помог исправить иную ошибку. Дело в другом.

Причина

Возможная причина такой ошибки — недоработка скрипта, сформированного 1С. Или в самом коде, или код ссылается на объект, которого нет в информационной базе.

Для нашего случая — причина скрывалась в «кривых» патчах. В 15-й строке скрипта main.js выполнялась команда на удаление исправлений:

var removeFixNames = [4aae11bb-a5df-43db-9adf-d252ae48f64e,50d45dd5-29c9-4d4e-919d-e2afea3f3fc5,553807f3-2d70-4eb0-84b3-d9fe643a8b37]

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

Т. е. из-за тормозного ПК криво установились патчи, и создавалcя некорректный исполняемый файл скрипта main.js.

Решение

  1. Создайте копию информационной базы 1С. Обязательно. Бэкапы — наше все. Без резервной копии нечего «промышлять». И даже думать об этом.
  2. Выполните удаление исправлений (патчей):
    ► вручную в интерфейсе;
    ► автоматически через команду запуска ИБ с опцией «/DeleteCfg -AllExtensions»;
    ► или с помощью нашей обработки УдалитьПатчи.epf (там всего одна кнопка, которая по одному клику удаляет все патчи из базы).

    Как удалить патчи через Конфигуратор или строку запуска подробно рассказано в заметке «Ошибка в расширении EF_00_00XXXXXX или EF_ХХХХ_ХХ при обновлении конфигурации 1С:Предприяти».

  3. Запустите обновление повторно.

Интерфейс обработки УдалитьПатчи.epf

✅ Пусть все получится, и вы успешно завершите обновление. Успехов вам, товарищи.

__________
Если не получается или требуется дополнительная поддержка, наши программисты 1С готовы помочь. +7-911-500-10-11

Добрый день всем! Я ученик-новичок в 1с, потому заранее извиняюсь при наличии элементарных ошибок.

Сделал Общий модуль ПроведениеРасчетов. В свойствах поставил галочку «Глобальный». Выбивает ошибку:

{CommonModule.ПроведениеРасчетов.Module(9,3)}: Переменная не определена (Запрос)        <
>Запрос.Текст = {CommonModule.ПроведениеРасчетов.Module(19,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«Регистратор», Регистратор);{CommonModule.ПроведениеРасчетов.Module(20,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«ВидРасчета», ТребуемыйВидРасчета);{CommonModule.ПроведениеРасчетов.Module(21,9)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«СписокСотрудников», СписокСотрудников);{CommonModule.ПроведениеРасчетов.Module(23,23)}: Переменная не определена (Запрос)        ВыборкаРезультата = <
>Запрос.Выполнить().Выбрать();{CommonModule.ПроведениеРасчетов.Module(50,4)}: Переменная не определена (Запрос)         <
>Запрос.Текст ={CommonModule.ПроведениеРасчетов.Module(62,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«ИзмеренияОсновного», Измер);{CommonModule.ПроведениеРасчетов.Module(63,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«ИзмеренияБазового», Измер);{CommonModule.ПроведениеРасчетов.Module(64,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«Регистратор», Регистратор);{CommonModule.ПроведениеРасчетов.Module(65,3)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«ВидРасчета», ТребуемыйВидРасчета);{CommonModule.ПроведениеРасчетов.Module(66,9)}: Переменная не определена (Запрос)        <
>Запрос.УстановитьПараметр(«СписокСотрудников», СписокСотрудников);{CommonModule.ПроведениеРасчетов.Module(68,26)}: Переменная не определена (Запрос)        ВыборкаРезультата = <
>Запрос.Выполнить().Выбрать();

Вот сам текст модуля:

Процедура РассчитатьНачисления(НаборЗаписейРегистра, ТребуемыйВидРасчета, СписокСотрудников) Экспорт

      Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;

      // Рассчитать первичные записи.
   Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда

              Запрс = Новый Запрос;
       Запрос.Текст =
       «ВЫБРАТЬ
       | НачисленияДанныеГрафика.ЗначениеПериодРегистрации КАК Норма,
       | НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
       | НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки                 
       |ИЗ
       | РегистрРасчета.Начисления.ДанныеГрафика(Регистратор = &Регистратор И
       | ВидРасчета = &ВидРасчета И Сотрудник В (&СписокСотрудников))
       | КАК НачисленияДанныеГрафика»;

              Запрос.УстановитьПараметр(«Регистратор», Регистратор);
       Запрос.УстановитьПараметр(«ВидРасчета», ТребуемыйВидРасчета);
       Запрос.УстановитьПараметр(«СписокСотрудников», СписокСотрудников);

                            ВыборкаРезультата = Запрос.Выполнить().Выбрать();

                      Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
                          СтруктураНомер = Новый Структура(«НомерСтроки»);
                          СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
                          ВыборкаРезультата.Сбросить();
                          Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
                              Если ВыборкаРезультата.Норма = 0 Тогда
                                  Сообщение = Новый СообщениеПользователю;
                                  Сообщение.Текст = «Вид расчета: Оклад — Нет рабочих дней в заданном периоде»;
                                  Сообщение.Сообщить();
                                  ЗаписьРегистра.Результат = 0;
                              Иначе
                                  // Рассчитать оклад по фактическому периоду
                                  // и исходным данным.
                                  ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт;
                                  Сообщение = Новый СообщениеПользователю;
                                  Сообщение.Текст = «Выполнен расчет» + ЗаписьРегистра.Регистратор + » — » + ЗаписьРегистра.ВидРасчета + » — » + ЗаписьРегистра.Сотрудник;
                                  Сообщение.Сообщить();
                              КонецЕсли;
                          КонецЕсли;
                      КонецЦикла;

                        // Рассчитать вторичные записи.
   ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда

           Запрс = Новый Запрос;
        Запрос.Текст =
        «ВЫБРАТЬ
       |    НачисленияБазаНачисления.РезультатБаза КАК База,
       |    НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки
       |ИЗ
       |    РегистрРасчета.Начисления.БазаНачисления(&ИзмеренияОсновного,
       |   &ИзмеренияБазового, , Регистратор = &Регистратор И ВидРасчета = &ВидРасчета И
       |   Сотрудник В (&СписокСотрудников))КАК НачисленияБазаНачисления»;

              Измер = Новый Массив(1);
       Измер[0] = «Сотрудник»;

              Запрос.УстановитьПараметр(«ИзмеренияОсновного», Измер);
       Запрос.УстановитьПараметр(«ИзмеренияБазового», Измер);
       Запрос.УстановитьПараметр(«Регистратор», Регистратор);
       Запрос.УстановитьПараметр(«ВидРасчета», ТребуемыйВидРасчета);
       Запрос.УстановитьПараметр(«СписокСотрудников», СписокСотрудников);

          ВыборкаРезультата = Запрос.Выполнить().Выбрать();   

              Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
                          СтруктураНомер = Новый Структура(«НомерСтроки»);
                          СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
                          ВыборкаРезультата.Сбросить();
                          Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
                               ЗаписьРегистра.Результат = ВыборкаРезультата.База * (10/100);                         
                               Сообщение = Новый СообщениеПользователю;
                               Сообщение.Текст = «Выполнен расчет» + ЗаписьРегистра.Регистратор + » — » + ЗаписьРегистра.ВидРасчета + » — » + ЗаписьРегистра.Сотрудник;
                               Сообщение.Сообщить();
                          КонецЕсли;
       КонецЦикла;

                        КонецЕсли;

   КонецПроцедуры

Я пробовал снять галочку «Глобальный», тогда при попытках действий с  документами Начисления сотрудникам выбивает ошибку:

{Документ.НачисленияСотрудникам.МодульОбъекта(38,2)}: Переменная не определена (Запрос)
   <
>Запрос.УстановитьПараметр(«ТекущийДокумент», Ссылка);
{Документ.НачисленияСотрудникам.МодульОбъекта(41,13)}: Переменная не определена (Запрос)
   ТаблЗнач = <
>Запрос.Выполнить().Выгрузить();
{Документ.НачисленияСотрудникам.МодульОбъекта(45,2)}: Переменная не определена (ПроведенияРасчетов)
   <
>ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников);
{Документ.НачисленияСотрудникам.МодульОбъекта(47,2)}: Переменная не определена (ПроведенияРасчетов)
   <
>ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников);

Вот модуль Документа НачисленияСотрудникам:

Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   // регистр Начисления
   Движения.Начисления.Записывать = Истина;
   Для Каждого ТекСтрокаНачисления Из Начисления Цикл
       Движение = Движения.Начисления.Добавить();
       Движение.Сторно = Ложь;
       Движение.ВидРасчета = ТекСтрокаНачисления.ВидРасчета;
       Движение.ПериодДействияНачало = ТекСтрокаНачисления.ДатаНачала;
       Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
       Движение.ПериодРегистрации = Дата;
       Движение.БазовыйПериодНачало = ТекСтрокаНачисления.ДатаНачала;
       Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисления.ДатаОкончания);
       Движение.Сотрудник = ТекСтрокаНачисления.Сотрудник;
       Движение.ГрафикРаботы = ТекСтрокаНачисления.ГрафикРаботы;
       Движение.ИсходныеДанные = ТекСтрокаНачисления.Начислено;
   КонецЦикла;
   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

      // Записываем движения регистров.
   Движения.Начисления.Записать();

      // Получим список всех сотрудников, содержащихся в документе.
   Запрс = Новый Запрос(
   «ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    НачисленияСотрудникамНачисления.Сотрудник
   |ИЗ
   |    Документ.НачисленияСотрудникам.Начисления
   | КАК НачисленияСотрудникамНачисления
   |
   |ГДЕ
   |    НачисленияСотрудникамНачисления.Ссылка = &ТекущийДокумент»);

      Запрос.УстановитьПараметр(«ТекущийДокумент», Ссылка);

      // Сформируем список сотрудников.
   ТаблЗнач = Запрос.Выполнить().Выгрузить();
   МассивСотрудников = ТаблЗнач.ВыгрузитьКолонку(«Сотрудник»);

      // Вызов процедуры РассчитатьНачисления из общего модуля.
   ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Оклад, МассивСотрудников);
   Движения.Начисления.Записать( , Истина);
   ПроведенияРасчетов.РассчитатьНачисления(Движения.Начисления, ПланыВидовРасчета.ОсновныеНачисления.Премия, МассивСотрудников);
   Движения.Начисления.Записать( , Истина);

   КонецПроцедуры

Помогите пожалуйста решить ошибку.

dulingleb

1 / 1 / 0

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

Сообщений: 30

1

1C 8.x

Переменная не определена

04.11.2013, 18:15. Показов 10365. Ответов 6

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


Короче вот в чем фишка:

1C
1
2
3
4
5
6
&НаКлиенте
Процедура Проверить(Команда)
    НаборЗаписей = РегистрыСведений.Дорожки.СоздатьНаборЗаписей();
    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Дорожка = 1;
КонецПроцедуры

{Документ.ЗаказДорожки.Форма.ФормаЗаказаДорожки.Фо рма(4,17)}: Переменная не определена (РегистрыСведений)
НаборЗаписей = <<?>>РегистрыСведений.Дорожки.СоздатьНаборЗаписей( ); (Проверка: Тонкий клиент)

Я вообще на дорубаю что ему надо, чем ему не нравится в тонкий клиент?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

900 / 877 / 8

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

Сообщений: 2,680

04.11.2013, 18:18

2

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

РегистрыСведений.Дорожки.СоздатьНаборЗаписей();

Это может выполняться только на сервере.

0

1 / 1 / 0

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

Сообщений: 30

04.11.2013, 18:19

 [ТС]

3

когда я создаю на сервере то ничего не происходит(

0

856 / 655 / 111

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

Сообщений: 2,410

04.11.2013, 18:34

4

А как вы создаете на сервере?

1

1 / 1 / 0

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

Сообщений: 30

04.11.2013, 18:37

 [ТС]

5

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

А как вы создаете на сервере?

&НаСервере
Процедура Проверить(Команда)
НаборЗаписей = РегистрыСведений.Дорожки.Выбрать();
Сообщить(НаборЗаписей.Дорожка);
КонецПроцедуры

0

Dethmontt

Модератор

Эксперт 1С

3697 / 2897 / 569

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

Сообщений: 11,398

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

04.11.2013, 18:38

6

Команда должна быть на клиенте!

1C
1
2
&НаКлиенте
Процедура Проверить(Команда)

А это:

1C
1
2
3
НаборЗаписей = РегистрыСведений.Дорожки.СоздатьНаборЗаписей();
    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Дорожка = 1;

Должно быть на сервере

Добавлено через 1 минуту
Что то в это роде…

1C
1
2
3
4
5
6
7
8
9
10
11
&НаКлиенте
Процедура Проверить(Команда)
ВызватьСервер();
КонецПроцедуры
 
&НаСервере
Процедура ВызватьСервер()
НаборЗаписей = РегистрыСведений.Дорожки.СоздатьНаборЗаписей();
    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Дорожка = 1;
КонецПроцедуры

1

1 / 1 / 0

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

Сообщений: 30

04.11.2013, 18:42

 [ТС]

7

Dethmontt, блин, спасибо тебе, дай Бог тебе здоровья!

0

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

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

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

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

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

  • глобальные,
  • локальные,
  • экспортные.

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

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

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

  • обычного приложения;
  • управляемого приложения;
  • команды;
  • внешнего соединения;
  • менеджера;
  • формы;
  • объекта;
  • набора записей.

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

  • &НаКлиенте — передаются от одной процедуры к другой с сохранением значения. При переводе исполнения кода на сервер переменные продолжают существовать на стороне клиента со значениями, которые имели до передачи на сервер;

  • &НаСервере — уничтожаются по окончании выполнения процедур/функций на сервере, обратная передача переменной на клиент не производится. При повторном обращении к серверу создается вновь со значением по умолчанию [Неопределено].

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

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

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

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

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

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

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

  • очистка кэш-памяти программы 1С;
  • регистрация ошибки на сайте поддержки 1С, загрузка исправленных версий конфигурации;
  • тестирование и исправление сбоев в 1С через одноименную команду в конфигураторе.

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

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

  • Документ — вид объекта метаданных;
  • РеализацияТоваровУслуг — имя объекта;
  • Форма. ФормаДокументаТовары — модуль возникновения сбоя;
  • Форма(299,42) — номер строки в коде модуля и порядковый номер символа в строке.

Для перехода в конфигуратор нажмите Подробно — Конфигуратор. Если кнопки Подробно нет в окне:

  • откройте конфигуратор самостоятельно;
  • запустите конфигурацию в режиме отладки через меню Отладка — Начать отладку;
  • повторите действия, вызывающие ошибку.

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

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

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

1. Проверьте код процедуры/функции до места, где идет обращение к переменной: возможно, произошла опечатка в имени.

2. Просмотрите раздел объявления переменных в начале модуля: если есть сходные по наименованию переменные, исправьте описку в процедуре/функции.

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

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

  • когда появляется окно с ошибкой «Переменная не определена»: открытие формы, нажатие на кнопку, выбор из списка и т. д.? В примере окно с сообщением об ошибке выдается при попытке изменить дату документа;
  • на наименование процедуры/функции, которая содержит строку кода с ошибкой —ДатаПриИзменении, содержит алгоритм действий при смене даты;
  • на имя ненайденной переменной — ТекДатаДокумента, говорит о значении с типом Дата.
    Проанализировав эту информацию, определите, какое значение должно быть в переменной. В представленном коде, возможно, программист имел в виду дату документа до изменения.
    После определения данных, которые должна содержать переменная, в процедуру/функцию перед местом сбоя дописывается строка кода с присвоением переменной требуемого значения.

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

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

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

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

  1. Не присвоено значение локальной переменной, действия аналогичны использованию на клиенте с поправкой на место исполнения.
    Глобальные переменные на сервере создаются автоматически при выполнении процедур/функций с пометкой &НаСервере или &НаСервереБезКонтекста, так же, как на клиенте им присваивается начальное значение [Неопределено]. По завершении всех операций на сервере переменная уничтожается. При последующих вызовах сервера глобальная переменная примет начальное значение [Неопределено]. Последовательность процедур/функций в модулях не влияет на порядок их выполнения, переход с клиента на сервер и обратно определяется программным кодом.
  2. Переменная объявлена на стороне клиента, а используется на сервере, где ее не существует. Если переменная должна содержать значение, полученное в клиентской процедуре/функции, то можно передать ее на сервер через параметр.
  3. Глобальная переменная не объявлена — добавьте в начале модуля переменную для сервера.
  4. При обращении к базе данных неверно указаны имена объектов, параметров, из-за чего программа ошибочно приняла их за переменные — исправьте опечатку.

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

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

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

1

2

3

4

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Здравствуйте! Помогите, пожалуйста, решить проблему с обновлением конфигурации.
Установлена 1С 8.3.12.1412, Конфигурация Бухгалтегия предприятия базовая 3.0.43.253.

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

28.01.2019 22:59:50 Обновление конфигурации информационной базы…
28.01.2019 22:59:51 Запускается: C:Program Files (x86)1cv88.3.12.1412bin1cv8.exe; параметры: CONFIG /F»D:1CBaseAccountingUSNBase» /N»» /P»******» /WA- /UpdateDBCfg -server /Out «templog.txt» /UCПакетноеОбновлениеКонфигурацииИБ /DisableStartupMessages /DisableStartupDialogs; окно: SW_SHOW; ожидание: true
28.01.2019 23:00:29 Код возврата: 101
28.01.2019 23:00:29 ОбщаяКартинка.История: Имя не уникально!
28.01.2019 23:00:29 Справочник.ТорговыеТочки.Команда.Создать: Имя команды не может совпадать с именем стандартной команды
28.01.2019 23:00:29 При проверке метаданных обнаружены ошибки!
28.01.2019 23:00:29 Операция не может быть выполнена.
28.01.2019 23:00:30 Завершение с ошибкой. Код ошибки: 101. Подробности см. в предыдущей записи.
28.01.2019 23:00:30 Завершение…
28.01.2019 23:00:30 Запускается: C:Program Files (x86)1cv88.3.12.1412bin1cv8c.exe; параметры: ENTERPRISE /F»D:1CBaseAccountingUSNBase» /N»» /P»******» /WA-; окно: SW_SHOW; ожидание: false
28.01.2019 23:00:30 Код возврата: 0

Геннадий С

активный пользователь

офлайн

Дата регистрации: 26.03.2017
Сообщений: 642

Виктория, сначала нужно обновить платформу минимум на 8.3.12.1685. И перед обновлением проверьте конфигурацию на ошибки, проведите Тестирование и исправление в конфигураторе.

Vladko

Дата регистрации: 27.08.2007
Сообщений: 2643

Виктория Беркутова,обновляйте через конфигуратор. На платформах 8.3.12 и 8.3.13 динамическое обновление плохо работает.

Valentin46

Дата регистрации: 10.02.2011
Сообщений: 1041

Vladko пишет:

Цитата
На платформах 8.3.12 и 8.3.13 динамическое обновление плохо работает.

Это Вы зря — всё прекрасно работает.
По поводу обновления через конфигуратор поддержу Вас, оно часто проясняет ситуацию.

Другое дело, что обслуживание базы до невозможности запущено, процесс обновления требует, во-первых, скачивания около 20 файлов обновления, во-вторых, собственно обновление на каждом этапе требует времени около 20 мин (может больше — зависит от базы). Итого!? За это время может произойти все что угодно, даже если база изначально была в порядке.

Я бы поступил так:

— воспользовался советами (их два и оба важны) Геннадия; попутно замечу, что не встречал нареканий по поводу платформы 8.3.13.1513;
— провел бы несколько (5-6) обновлений через конфигуратор;
— после каждого этапа необходимо запускать режим 1С:Предприятия (прямо из конфигуратора) для корректного завершения обновления;
— если нет ошибок, провел бы на всякий случай ТИИ;
— попытался бы запустить автоматическое обновление.

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

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Большое спасибо всем за рекомендации!
Вроде получилось:
1. Обновила платформу на 8.3.12.1685. Стоит ли обновиться до более новой?
2. Обновила до конфигурации 3.0.44.115 через конфигуратор. Завтра попробую дообновляться до 3.0.67.72
3. Проверить конфигурацию на ошибки не удалось, т.к. нет такого пункта в меню в конфигураторе, может потому что у меня УПП?

Valentin46

Дата регистрации: 10.02.2011
Сообщений: 1041

Виктория пишет:

Цитата
Конфигурация Бухгалтегия предприятия базовая 3.0.43.253. Пытаюсь обновить версию конфигурации

Теперь Виктория пишет:

Цитата
Проверить конфигурацию на ошибки не удалось, т.к. нет такого пункта в меню в конфигураторе, может потому что у меня УПП?

А причем здесь УПП?

В любом случае посмотрите: «Конфигуратор — Администрирование — Тестирование и исправление…«.

А если у Вас проблемы и с УПП, то лучше создать новую тему и описать проблемы.

Виктория пишет:

Цитата
1. Обновила платформу на 8.3.12.1685. Стоит ли обновиться до более новой?

Можно установить что-нибудь из линейки 8.3.13.хххх (рано или поздно это придется сделать), например, 8.3.13.1513, но за самыми свежими версиями не гонитесь.

Геннадий С

активный пользователь

офлайн

Дата регистрации: 26.03.2017
Сообщений: 642

Виктория, с релиза 44 до 67 очень большой разрыв, может быть поэтому обновление из программы проходит с ошибкой. Лучше, всё-таки, обновиться через конфигуратор, хотя бы до 3.1.60, какие конкретно релизы использовать для скачивания, видно на страничке обновлений для БП. Пункт в конфигураторе для ТиИ должен быть: меню Администрирование — Тестирование и исправление, поставить все галки, предварительно обязательно сделать копию ИБ. Платформу дальше обновлять пока не нужно.

Vladko

Дата регистрации: 27.08.2007
Сообщений: 2643

Valentin46, Valentin46 пишет:

Цитата
Цитата
1. Обновила платформу на 8.3.12.1685. Стоит ли обновиться до более новой?

Можно установить что-нибудь из линейки 8.3.13.хххх (рано или поздно это придется сделать), например, 8.3.13.1513, но за самыми свежими версиями не гонитесь.

Я бы пока не рекомендовал обновлять платформу на 8.3.13, тем более на .1513. Очень много нареканий именно на этот релиз платформы в интернете от пользователей.
На 8.3.12.1685 1С бухгалтерия 3.0 работает без проблем.

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Valentin46 пишет:

Цитата

       В любом случае посмотрите: » Конфигуратор — Администрирование — Тестирование и исправление… «.

Нашла, оказывается не там искала. Тестирование провела. Результат:
«Объект изменен: РегистрБухгалтерии. Хозрасчетный
Регистрация изменена: РегистрБухгалтерии. Хозрасчетный

Геннадий С пишет:

Цитата
       Лучше, всё-таки, обновиться через конфигуратор, хотя бы до 3.1.60, какие конкретно релизы использовать для скачивания, видно на страничке обновлений для БП.

Вы имеете ввиду 3.0.60 или я что-то не понимаю?

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Valentin46 пишет:

Цитата

              — после каждого этапа необходимо запускать режим 1С:Предприятия (прямо из конфигуратора) для корректного завершения обновления; —

А как это сделать, что-то не соображу?

Содержание:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обычная опечатка в 1С

опечатка в программе 1С

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

 Проверка на определения 1C

Специалист компании ООО «Кодерлайн»

Дягилев Дмитрий Вадимович

При обновлении 1С, уже в режиме “Предприятие”, вы можете столкнуться с такой ошибкой: “EF_’№…’: Процедура или функция с указанным именем не определена”.

Теория

Процесс обновления базы 1С я показывал в этой статье. Но бывает так, что в “Конфигураторе” обновление прошло без ошибок. Затем вы открываете базу в режиме “Предприятие” чтобы продолжить обновление. И как только согласитесь с легальностью полученных обновлений, вдруг видите следующую ошибку:

Процедура или функция с указанным именем не определена

Может появиться и другая ошибка, без её описания. Тогда, чтобы понять что произошло, нажмите на ссылку “Сформировать отчет об ошибке“, а затем сохраните ошибку на ваш компьютер. Ошибка сохраниться в архиве в виде текстового файла, который вы можете открыть любым текстовым редактором. В этом текстовом файле можете найти ошибку из-за которой не обновляется база. И она может быть также связана с расширением, а может и ещё с чем-то. Но в этой статье мы рассматриваем именно определённую ошибку.

Эта ошибка означает что в базе есть расширение конфигурации, которое мешает обновиться. И номер этого расширения, в моём случае: “EF_00_00364434_5“. У вас может быть и другой номер, но начинается он всегда с EF_.

Расширения конфигурации – это специальный механизм, который нужен для доработки конфигурации без её изменения и без снятия её с поддержки. Типовые конфигурации, такие как “Бухгалтерия” или “Зарплата и управление персоналом” загружают расширения из интернета автоматически или вручную.

Кстати, расширения имеют больший приоритет, чем основная конфигурация. Поэтому и возникает данная ошибка. Расширение в обновлённой базе уже не нужно, но продолжает работать. И вот вам и ошибка “Процедура или функция с указанным именем не определена”.

Если у вас есть доступ к ИТС, то почитать про расширения можете тут.

В этом случае вам нужно просто удалить мешающее расширение используя “Конфигуратор“.

Удаление расширения

В конфигураторе вам следует перейти по следующим пунктам меню: “Конфигурация” / “Расширения конфигурации“:

Открываем "Расширения конфигурации"

И в открывшемся списке расширений находим нужное расширение и удаляем его:

список расширений конфигурации

Так как я уже удалил мешающее расширение, на рисунке выше его уже нет.

Далее нужно открыть базу в режиме “Предприятие” и попробовать продолжить обновление ещё раз. Больше этой ошибке у вас не должно появиться.

Успешных вам обновлений!

Сводка

Расширение мешает обновлению 1С

Имя статьи

Расширение мешает обновлению 1С

Описание

При обновлении 1С, уже в режиме «Предприятие», вы можете столкнуться с такой ошибкой: «EF_’…’: Процедура или функция с указанным именем не определена»

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

  • чистка кеша;
  • тестирование и исправление информационной базы;
  • просмотр зарегистрированных ошибок на сайте 1С,

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

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

  • в доработанном программном коде;
  • при выводе печатной формы;
  • при исполнении кода на Клиенте.

Содержание

  • Ошибка в доработанном программном коде
  • Ошибка вывода печатной формы
  • Ошибка исполнения кода на Клиенте

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

В форму типового отчета Движение товаров программист добавил поле Склад. Список выбора значений в это поле ограничен. При открытии отчета появляется ошибка:

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

  1. Нажмите кнопку Подробно в форме сообщения об ошибке.
    В окне Обнаружены ошибки программа укажет:

    • номер неправильной строки кода;
    • исполняемую команду, которая привела к ошибке.

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

  2. Для перехода в место ошибки нажмите кнопку Конфигуратор.
    В Конфирураторе курсор автоматически установится на строке программного кода с ошибкой. Необходимо проверить используемые командой данные. В данном примере ошибка сигнализирует, что переменной ОсновнойСклад не задано значение: при добавлении в список складов программа не понимает, какой склад требуется добавить.
  3. Исправьте ошибку.
    Укажите нужное значение переменной в программном коде, например:

    • ОсновнойСклад = Справочники.Склады.НайтиПоНаименованию(«Основной склад»);
    • ОсновнойСклад = Справочники.Склады.ОсновнойСклад.

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

  4. Сохраните изменения и обновите информационную базу.
  5. Проверьте работу 1С после исправления ошибки.

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

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

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

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

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

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

Информация в окне сообщения об ошибке указывает, что в Модуле менеджера документа ПоступлениеТоваровУслуг не определено значение переменной Ответственный. Для исправления ошибки:

  1. Перейдите в Конфигуратор. В Модуле менеджера документа ПоступлениеТоваровУслуг перейдите на строку 4804.
  2. Укажите для вывода в печатную форму поля Ответственный — текущего пользователя, используя специальную команду 1С:
    • Пользователи.ТекущийПользователь().
  3. Сохраните изменения и обновите информационную базу.
  4. Перейдите в пользовательский режим для проверки выполненных изменений.

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

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

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

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

Все это привело к тому, что в 1С команды делятся на исполняемые &НаСервере и &НаКлиенте. И при написании программного кода нужно это учитывать, иначе программа не сможет выполнить заданную операцию. При работе с переменными при написании программного кода важно понимать:

  • &НаКлиенте — переменные существуют только на время клиентского вызова;
  • &НаСервере— переменные существуют только на время серверного вызова.

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

При доработке программного кода программист использовал операцию получения данных склада &НаКлиенте в процедуре ПриОткрытии.

При сохранении изменений 1С сообщила об ошибке Переменная не определена (Справочники) при определении значения склада:

  • «?»Справочники.Склады.НайтиПоКоду(«»00-000002»).

Ошибка связана с тем, что данная операция исполняется только на сервере, т. е. &НаСервере. И несмотря на то, что сама команда исполнения корректна, ошибка будет формироваться до тех пор, пока ее не перенесут в область команд исполнения &НаСервере, например так:

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

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

См. также:

  • Большое количество забивается решеткой
  • Печатная форма недоступна 1С 8.3 при вызове внешней печатной формы
  • Значение поля номер не уникально 1С 8.3: как исправить
  • У пользователя недостаточно прав на исполнение операции

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

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

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

Ругается на общий модуль «Переменная не определена»

Я
   fantomask

28.12.16 — 08:20

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

Написал общий модуль для обмена, до недавнего времени работал исправно. Сегодня при открытии формы, где есть кнопка с вызовом процедуры в этом общем модуле. Выходит ошибка: Переменная не определена и название модуля.

Перевел вызов этой процедуры в модуль документа, не помогло.

   1dvd

1 — 28.12.16 — 08:22

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

   fantomask

2 — 28.12.16 — 08:24

(1) Так я вызов этого модуля перевел в модуль документа. Соответственно вызов всегда будет выполняться на стороне сервера.

   Aleksey

3 — 28.12.16 — 08:24

Может кто то обновил и удалил твой модуль

   fantomask

4 — 28.12.16 — 08:26

(3) Всё на месте стоит, я предварительно всё проверил, прогуглил.

   lxndr

5 — 28.12.16 — 08:26

открыжь для модуля «Вызов сервера»

   fantomask

6 — 28.12.16 — 08:28

(5) уже стоит, ошибка та же самая

   МимохожийОднако

7 — 28.12.16 — 08:31

Ничего просто так не происходит. Наверняка были изменения. Включи в режиме отладки остановку по ошибке и анализируй свой код в модуле с ошибкой на свойства и инициализацию.

   fantomask

8 — 28.12.16 — 08:43

(7) При открытии документа выходит эта ошибка.

   Mankubus

9 — 28.12.16 — 08:51

(8) какие флаги стоят в свойствах модуля?

   ptiz

10 — 28.12.16 — 08:53

(2) «я вызов этого модуля перевел в модуль документа. Соответственно вызов всегда будет выполняться на стороне сервера.» — в обычном приложении? Шутишь?

   ifso

11 — 28.12.16 — 08:55

кирпич в посылке, не?

   MUXACb

12 — 28.12.16 — 09:08

(0) Проверяйте весь общий модуль. У нас так было когда в какой-то процедуре модуля(причем для совершенно другого объекта), было получение свойства структуры, а переменная для значения свойства не была определена через «Перем». При вызове общего модуля он проверяется на ошибки

   MUXACb

13 — 28.12.16 — 09:15

+(12) Пардон, не «Перем», а «ПеременннаяДляЗначенияСвойства» = Неопределено;

   fantomask

14 — 28.12.16 — 12:11

(12) Спасибо будем проверять…

   fantomask

15 — 28.12.16 — 14:21

Не знаю в чем была проблема, но переименовал название общего модуля и проблема решилась. Соответственно во всех модулях Переименовал.

   kossmatiy

16 — 28.12.16 — 15:51

(15) кэш?

   luter-89

17 — 28.12.16 — 17:42

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

   luter-89

18 — 28.12.16 — 17:44

Не обращали внимание в типовых в модулях менеджера документа:

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#КонецЕсли

  

fantomask

19 — 29.12.16 — 07:08

(18) Пробовал. Тоже не помогло

(16) возможно кэш, но возможности очистить её не было…

Содержание:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обычная опечатка в 1С

опечатка в программе 1С

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

 Проверка на определения 1C

Специалист компании ООО «Кодерлайн»

Дягилев Дмитрий Вадимович

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

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

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

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

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

  • глобальные,
  • локальные,
  • экспортные.

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

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

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

  • обычного приложения;
  • управляемого приложения;
  • команды;
  • внешнего соединения;
  • менеджера;
  • формы;
  • объекта;
  • набора записей.

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

  • &НаКлиенте — передаются от одной процедуры к другой с сохранением значения. При переводе исполнения кода на сервер переменные продолжают существовать на стороне клиента со значениями, которые имели до передачи на сервер;

  • &НаСервере — уничтожаются по окончании выполнения процедур/функций на сервере, обратная передача переменной на клиент не производится. При повторном обращении к серверу создается вновь со значением по умолчанию [Неопределено].

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

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

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

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

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

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

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

  • очистка кэш-памяти программы 1С;
  • регистрация ошибки на сайте поддержки 1С, загрузка исправленных версий конфигурации;
  • тестирование и исправление сбоев в 1С через одноименную команду в конфигураторе.

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

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

  • Документ — вид объекта метаданных;
  • РеализацияТоваровУслуг — имя объекта;
  • Форма. ФормаДокументаТовары — модуль возникновения сбоя;
  • Форма(299,42) — номер строки в коде модуля и порядковый номер символа в строке.

Для перехода в конфигуратор нажмите Подробно — Конфигуратор. Если кнопки Подробно нет в окне:

  • откройте конфигуратор самостоятельно;
  • запустите конфигурацию в режиме отладки через меню Отладка — Начать отладку;
  • повторите действия, вызывающие ошибку.

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

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

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

1. Проверьте код процедуры/функции до места, где идет обращение к переменной: возможно, произошла опечатка в имени.

2. Просмотрите раздел объявления переменных в начале модуля: если есть сходные по наименованию переменные, исправьте описку в процедуре/функции.

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

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

  • когда появляется окно с ошибкой «Переменная не определена»: открытие формы, нажатие на кнопку, выбор из списка и т. д.? В примере окно с сообщением об ошибке выдается при попытке изменить дату документа;
  • на наименование процедуры/функции, которая содержит строку кода с ошибкой —ДатаПриИзменении, содержит алгоритм действий при смене даты;
  • на имя ненайденной переменной — ТекДатаДокумента, говорит о значении с типом Дата.
    Проанализировав эту информацию, определите, какое значение должно быть в переменной. В представленном коде, возможно, программист имел в виду дату документа до изменения.
    После определения данных, которые должна содержать переменная, в процедуру/функцию перед местом сбоя дописывается строка кода с присвоением переменной требуемого значения.

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

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

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

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

  1. Не присвоено значение локальной переменной, действия аналогичны использованию на клиенте с поправкой на место исполнения.
    Глобальные переменные на сервере создаются автоматически при выполнении процедур/функций с пометкой &НаСервере или &НаСервереБезКонтекста, так же, как на клиенте им присваивается начальное значение [Неопределено]. По завершении всех операций на сервере переменная уничтожается. При последующих вызовах сервера глобальная переменная примет начальное значение [Неопределено]. Последовательность процедур/функций в модулях не влияет на порядок их выполнения, переход с клиента на сервер и обратно определяется программным кодом.
  2. Переменная объявлена на стороне клиента, а используется на сервере, где ее не существует. Если переменная должна содержать значение, полученное в клиентской процедуре/функции, то можно передать ее на сервер через параметр.
  3. Глобальная переменная не объявлена — добавьте в начале модуля переменную для сервера.
  4. При обращении к базе данных неверно указаны имена объектов, параметров, из-за чего программа ошибочно приняла их за переменные — исправьте опечатку.

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

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

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

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

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

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

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

По поводу Списка — ничего не нашла в реквизитах формы и объекта. Еще раз: опишите задание, чтобы помочь вам в этом вопросе.

Добавлено через 4 минуты
Насчет процедуры ОбработкаПроверкиЗаполнения() — почему у вас эта процедура в форме документа, а не в модуле объекта?
Думаю, тут вы ошиблись. Конкретно про неопределенную переменную. ПереченьНоменклатуры — это табличная часть документа, в форме документа обращение к ней идет через Объект.ПереченьНоменклатуры, в модуле документа — ПереченьНоменклатуры.

1

2

3

4

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Здравствуйте! Помогите, пожалуйста, решить проблему с обновлением конфигурации.
Установлена 1С 8.3.12.1412, Конфигурация Бухгалтегия предприятия базовая 3.0.43.253.

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

28.01.2019 22:59:50 Обновление конфигурации информационной базы…
28.01.2019 22:59:51 Запускается: C:Program Files (x86)1cv88.3.12.1412bin1cv8.exe; параметры: CONFIG /F»D:1CBaseAccountingUSNBase» /N»» /P»******» /WA- /UpdateDBCfg -server /Out «templog.txt» /UCПакетноеОбновлениеКонфигурацииИБ /DisableStartupMessages /DisableStartupDialogs; окно: SW_SHOW; ожидание: true
28.01.2019 23:00:29 Код возврата: 101
28.01.2019 23:00:29 ОбщаяКартинка.История: Имя не уникально!
28.01.2019 23:00:29 Справочник.ТорговыеТочки.Команда.Создать: Имя команды не может совпадать с именем стандартной команды
28.01.2019 23:00:29 При проверке метаданных обнаружены ошибки!
28.01.2019 23:00:29 Операция не может быть выполнена.
28.01.2019 23:00:30 Завершение с ошибкой. Код ошибки: 101. Подробности см. в предыдущей записи.
28.01.2019 23:00:30 Завершение…
28.01.2019 23:00:30 Запускается: C:Program Files (x86)1cv88.3.12.1412bin1cv8c.exe; параметры: ENTERPRISE /F»D:1CBaseAccountingUSNBase» /N»» /P»******» /WA-; окно: SW_SHOW; ожидание: false
28.01.2019 23:00:30 Код возврата: 0

Геннадий С

активный пользователь

офлайн

Дата регистрации: 26.03.2017
Сообщений: 645

Виктория, сначала нужно обновить платформу минимум на 8.3.12.1685. И перед обновлением проверьте конфигурацию на ошибки, проведите Тестирование и исправление в конфигураторе.

Vladko

Дата регистрации: 27.08.2007
Сообщений: 2644

Виктория Беркутова,обновляйте через конфигуратор. На платформах 8.3.12 и 8.3.13 динамическое обновление плохо работает.

Valentin46

Дата регистрации: 10.02.2011
Сообщений: 1041

Vladko пишет:

Цитата
На платформах 8.3.12 и 8.3.13 динамическое обновление плохо работает.

Это Вы зря — всё прекрасно работает.
По поводу обновления через конфигуратор поддержу Вас, оно часто проясняет ситуацию.

Другое дело, что обслуживание базы до невозможности запущено, процесс обновления требует, во-первых, скачивания около 20 файлов обновления, во-вторых, собственно обновление на каждом этапе требует времени около 20 мин (может больше — зависит от базы). Итого!? За это время может произойти все что угодно, даже если база изначально была в порядке.

Я бы поступил так:

— воспользовался советами (их два и оба важны) Геннадия; попутно замечу, что не встречал нареканий по поводу платформы 8.3.13.1513;
— провел бы несколько (5-6) обновлений через конфигуратор;
— после каждого этапа необходимо запускать режим 1С:Предприятия (прямо из конфигуратора) для корректного завершения обновления;
— если нет ошибок, провел бы на всякий случай ТИИ;
— попытался бы запустить автоматическое обновление.

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

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Большое спасибо всем за рекомендации!
Вроде получилось:
1. Обновила платформу на 8.3.12.1685. Стоит ли обновиться до более новой?
2. Обновила до конфигурации 3.0.44.115 через конфигуратор. Завтра попробую дообновляться до 3.0.67.72
3. Проверить конфигурацию на ошибки не удалось, т.к. нет такого пункта в меню в конфигураторе, может потому что у меня УПП?

Valentin46

Дата регистрации: 10.02.2011
Сообщений: 1041

Виктория пишет:

Цитата
Конфигурация Бухгалтегия предприятия базовая 3.0.43.253. Пытаюсь обновить версию конфигурации

Теперь Виктория пишет:

Цитата
Проверить конфигурацию на ошибки не удалось, т.к. нет такого пункта в меню в конфигураторе, может потому что у меня УПП?

А причем здесь УПП?

В любом случае посмотрите: «Конфигуратор — Администрирование — Тестирование и исправление…«.

А если у Вас проблемы и с УПП, то лучше создать новую тему и описать проблемы.

Виктория пишет:

Цитата
1. Обновила платформу на 8.3.12.1685. Стоит ли обновиться до более новой?

Можно установить что-нибудь из линейки 8.3.13.хххх (рано или поздно это придется сделать), например, 8.3.13.1513, но за самыми свежими версиями не гонитесь.

Геннадий С

активный пользователь

офлайн

Дата регистрации: 26.03.2017
Сообщений: 645

Виктория, с релиза 44 до 67 очень большой разрыв, может быть поэтому обновление из программы проходит с ошибкой. Лучше, всё-таки, обновиться через конфигуратор, хотя бы до 3.1.60, какие конкретно релизы использовать для скачивания, видно на страничке обновлений для БП. Пункт в конфигураторе для ТиИ должен быть: меню Администрирование — Тестирование и исправление, поставить все галки, предварительно обязательно сделать копию ИБ. Платформу дальше обновлять пока не нужно.

Vladko

Дата регистрации: 27.08.2007
Сообщений: 2644

Valentin46, Valentin46 пишет:

Цитата

Цитата
1. Обновила платформу на 8.3.12.1685. Стоит ли обновиться до более новой?

Можно установить что-нибудь из линейки 8.3.13.хххх (рано или поздно это придется сделать), например, 8.3.13.1513, но за самыми свежими версиями не гонитесь.

Я бы пока не рекомендовал обновлять платформу на 8.3.13, тем более на .1513. Очень много нареканий именно на этот релиз платформы в интернете от пользователей.
На 8.3.12.1685 1С бухгалтерия 3.0 работает без проблем.

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Valentin46 пишет:

Цитата

       В любом случае посмотрите: » Конфигуратор — Администрирование — Тестирование и исправление… «.

Нашла, оказывается не там искала. Тестирование провела. Результат:
«Объект изменен: РегистрБухгалтерии. Хозрасчетный
Регистрация изменена: РегистрБухгалтерии. Хозрасчетный

Геннадий С пишет:

Цитата
       Лучше, всё-таки, обновиться через конфигуратор, хотя бы до 3.1.60, какие конкретно релизы использовать для скачивания, видно на страничке обновлений для БП.

Вы имеете ввиду 3.0.60 или я что-то не понимаю?

Виктория Беркутова

Дата регистрации: 28.01.2019
Сообщений: 7

Valentin46 пишет:

Цитата

              — после каждого этапа необходимо запускать режим 1С:Предприятия (прямо из конфигуратора) для корректного завершения обновления; —

А как это сделать, что-то не соображу?

Читают тему:

  • Ошибка cf80 бмв х6
  • Ошибка cf60 bmw e70
  • Ошибка cf35 bmw e70
  • Ошибка cf32 bmw e71
  • Ошибка cf3 частотник дельта