План обмена. Выдается ошибка как отловить где она? |
Я |
28.09.17 — 11:40
Ошибка при вызове метода контекста (ВыполнитьВыгрузку): Произошла исключительная ситуация (1C:Enterprise 8.3.8.2054): Ошибка инициализации модуля: Документ.ЗаказПоставщику.МодульОбъекта
{Документ.ЗаказПоставщику.МодульОбъекта(1897,127)}: Переменная не определена (РежимДиалогаВопрос)
Захожу в модуль, а там пустая строка. В обработке заполнения. Как быть без этого не работает план обмена.
Модератор
1 — 28.09.17 — 11:41
Не в тот модуль заходите
2 — 28.09.17 — 11:43
А в какой надо заходить?
Модератор
3 — 28.09.17 — 11:44
Документ.ЗаказПоставщику.МодульОбъекта
4 — 28.09.17 — 11:44
Как это найти отладчик туда не входит.
5 — 28.09.17 — 11:45
(3)туда и захожу
6 — 28.09.17 — 11:45
там вообще нет РежимДиалогаВопрос
7 — 28.09.17 — 11:47
Щелчок по строке сообщения об ошибке не открывает конфигуратор?
8 — 28.09.17 — 11:47
(0)
>>>Захожу в модуль, а там пустая строка. В обработке заполнения
Куда заходишь ?
Что за пустая строка и хде ?
9 — 28.09.17 — 11:48
(6) Глоб.поиском поищи этот текст в конфигурации
10 — 28.09.17 — 11:49
в модуле документа нажимаешь Ctrl+G и вводищь номер строки из ошибки, позиционируешься на ней, исправляешь.
И, задавать вопросы в модуле, не комильфо
11 — 28.09.17 — 11:50
(8)В Документ.ЗаказПоставщику.МодульОбъекта захожу и в 1897,127 пустая строка.
12 — 28.09.17 — 11:50
там ничего нет. Если бы так просто все было.
13 — 28.09.17 — 11:51
в этом модуле это вообще нет.
14 — 28.09.17 — 11:54
Как отладчик там запустить?
15 — 28.09.17 — 11:54
(13) почисти кеш
16 — 28.09.17 — 11:58
(14) Не «отладчик», а «отладку»
в левом обрезе/рамке окна модуля пару раз кликаешь мышкой напротив нужной строки останова, появится сфера — точка останова.
Далее запускаешь свой обмен/отчет/обработку/ЧтоУтебяТам..
17 — 28.09.17 — 11:58
ИМХО 100% не тот модуль открыт..
18 — 28.09.17 — 12:02
(0) кэш, не та конфа, не тот конфигуратор
19 — 28.09.17 — 12:20
(13) может вы к другой базе подключаетесь? а не к этой. Что за процедура «ВыполнитьВыгрузку?
20 — 28.09.17 — 12:44
Как происходит обмен? подключением к другой базе?
Если да то возможно ошибка на стороне приемника, поищите эту строку в базе куда выгружаете.
21 — 28.09.17 — 12:58
да. Там и ищу. Но все бесполезно.
22 — 28.09.17 — 13:13
(21) ну покажите этот модуль
Документ.ЗаказПоставщику.МодульОбъекта(1897,127)
строка 1897. и в той и в этой базе.
23 — 28.09.17 — 13:35
24 — 28.09.17 — 13:40
(23)Да.
(22)Вот сюда курсор переходит по ошибке
Процедура ПроизвестиОбменДаннымиПоНастройке(СтруктураНастроекОбменаДанными)
// начальные функции инициализации обмена
РезультатаНачалаОбмена = ВыполнитьДействияПередНачаломОбменаДанными(СтруктураНастроекОбменаДанными);
Если Не РезультатаНачалаОбмена Тогда
Возврат;
КонецЕсли;
// ВЫПОЛНЕНИЕ ОБМЕНА ДАННЫМИ
ОбработкаОбменаПриемника = Неопределено;
Попытка
Если СтруктураНастроекОбменаДанными.ДанныеНастройки.OnLineОбмен
И СтруктураНастроекОбменаДанными.ДанныеНастройки.ТипНастройки = Перечисления.ТипыАвтоматическогоОбменаДанными.ОбменЧерезComСоединение Тогда
// обмен через com соединение
// выполняем и выгрузку и загрузку данных
ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Иначе
ВыполнитьОбычныйОбменДанными(СтруктураНастроекОбменаДанными);
КонецЕсли;
// оставшееся действия после обмена данными выполняем
ВыполнитьДействияПослеЗавершенияОбменаДанными(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Исключение
СтрокаОписанияОшибки = ОписаниеОшибки();
// отмечаем то что обмен произведен
ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);
#Если Клиент Тогда
ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);
#КонецЕсли
ОбработкаОбменаПриемника = Неопределено;
// прокидываем ошибку дальше
ВызватьИсключение СтрокаОписанияОшибки;
КонецПопытки;
ОбработкаОбменаПриемника = Неопределено;
#Если Клиент Тогда
Состояние(«»);
#КонецЕсли
КонецПроцедуры
25 — 28.09.17 — 13:44
Процедура ОбработкаЗаполнения(Основание)
ДокументОснование = Основание;
Если ТипЗнч(Основание) = Тип(«ДокументСсылка.Событие») Тогда
// Заполнение шапки
КонтактноеЛицоКонтрагента = Основание.КонтактноеЛицо;
Контрагент = Основание.Контрагент;
Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной(«глТекущийПользователь»), «ОсновнаяОрганизация»);
ДоговорКонтрагента = ЗаполнениеДокументов.ПолучитьДоговорПоОрганизацииИКонтрагенту(Организация, Контрагент, мСтруктураПараметровДляПолученияДоговора);
ИначеЕсли ТипЗнч(Основание) = Тип(«ДокументСсылка.ЗаказПокупателя») Тогда
// Заполнение шапки
ВалютаДокумента = Основание.ВалютаДокумента;
ИспользоватьПлановуюСебестоимость = Основание.ИспользоватьПлановуюСебестоимость;
ИтогПлановаяСебестоимость = Основание.ИтогПлановаяСебестоимость;
Комментарий = Основание.Комментарий;
КратностьВзаиморасчетов = Основание.КратностьВзаиморасчетов;
КурсВзаиморасчетов = Основание.КурсВзаиморасчетов;
Подразделение = Основание.Подразделение;
СтруктурнаяЕдиница = Основание.СтруктурнаяЕдиница;
СуммаВключаетНДС = Основание.СуммаВключаетНДС;
СуммаДокумента = Основание.СуммаДокумента;
УчитыватьНДС = Основание.УчитыватьНДС;
Склад = ?(ТипЗнч(Основание.СкладГруппа) = Тип(«СправочникСсылка.Склады»), Основание.СкладГруппа, Неопределено);
Если НЕ ЗначениеЗаполнено(Склад) Тогда
Склад = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной(«глТекущийПользователь»), «ОсновнойСклад»);
КонецЕсли;
#Если Клиент Тогда
Если НЕ ЗначениеЗаполнено(Склад) Тогда
ВвестиЗначение(Склад, «Выберите склад», Тип(«СправочникСсылка.Склады»));
КонецЕсли;
#КонецЕсли
ОрганизацияКонтрагента = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту(Основание.Контрагент);
Если ЗначениеЗаполнено(ОрганизацияКонтрагента) Тогда
Контрагент = ЗаполнениеДокументов.ПолучитьКонтрагентаПоОрганизации( Основание.Организация);
Организация = ЗаполнениеДокументов.ПолучитьОрганизациюПоКонтрагенту( Основание.Контрагент);
ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(ЭтотОбъект, мСтруктураПараметровДляПолученияДоговора);
СкопироватьТабличнуюЧасть(Основание, «ВозвратнаяТара»);
СкопироватьТабличнуюЧасть(Основание, «Товары»);
СкопироватьТабличнуюЧасть(Основание, «Услуги»);
Иначе
Организация = Основание.Организация;
//переносим в документ необеспеченную часть заказа покупателя
ЗаполнитьТабличнуюЧастьНеобеспеченнойЧастьюЗаказа(Товары, Основание);
ЗаполнитьТабличнуюЧастьНеобеспеченнойЧастьюЗаказа(ВозвратнаяТара, Основание);
КонецЕсли;
ИначеЕсли ТипЗнч(Основание) = Тип(«ДокументСсылка.СчетНаОплатуПоставщика») Тогда
// Заполнение шапки
ВалютаДокумента = Основание.ВалютаДокумента;
ДатаОплаты = Основание.ДатаОплаты;
ДатаПоступления = Основание.ДатаПоступления;
ДоговорКонтрагента = Основание.ДоговорКонтрагента;
ИспользоватьПлановуюСебестоимость = Основание.ИспользоватьПлановуюСебестоимость;
ИтогПлановаяСебестоимость = Основание.ИтогПлановаяСебестоимость;
КратностьВзаиморасчетов = Основание.КратностьВзаиморасчетов;
Комментарий = Основание.Комментарий;
КонтактноеЛицоКонтрагента = Основание.КонтактноеЛицоКонтрагента;
Контрагент = Основание.Контрагент;
КурсВзаиморасчетов = Основание.КурсВзаиморасчетов;
Организация = Основание.Организация;
Ответственный = Основание.Ответственный;
Подразделение = Основание.Подразделение;
Склад = Основание.Склад;
СтруктурнаяЕдиница = Основание.СтруктурнаяЕдиница;
СуммаВключаетНДС = Основание.СуммаВключаетНДС;
СуммаДокумента = Основание.СуммаДокумента;
ТипЦен = Основание.ТипЦен;
УчитыватьНДС = Основание.УчитыватьНДС;
УправлениеЗаказами.УстановитьДатуОплатыПоДоговору(ЭтотОбъект);
Для Каждого ТекСтрокаВозвратнаяТара Из Основание.ВозвратнаяТара Цикл
НоваяСтрока = ВозвратнаяТара.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаВозвратнаяТара);
КонецЦикла;
Для Каждого ТекСтрокаТовары Из Основание.Товары Цикл
НоваяСтрока = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаТовары);
КонецЦикла;
Для Каждого ТекСтрокаУслуги Из Основание.Услуги Цикл
НоваяСтрока = Услуги.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаУслуги);
КонецЦикла;
// Слепанов Р.И. 2016.10.11. Начало
ИначеЕсли ТипЗнч(Основание) = Тип(«ДокументСсылка.ЗаказТранспорта») Тогда
// Заполнение шапки
Организация = Основание.Организация;
Контрагент = Основание.Контрагент;
ВалютаДокумента = мВалютаРегламентированногоУчета;
ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(ЭтотОбъект, мСтруктураПараметровДляПолученияДоговора);
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект, глЗначениеПеременной(«глТекущийПользователь»), мВалютаРегламентированногоУчета, «Покупка», Основание, Основание, мСтруктураПараметровДляПолученияДоговора);
НоваяСтрока = ЭтотОбъект.Услуги.Добавить();
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(«00000000929»);
ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(НоваяСтрока, ЭтотОбъект, «Приобретение»);
НоваяСтрока.Содержание = «Заказ транспорта № » + СокрЛП(Основание.Номер) + » от » + Формат(Основание.Дата, «ДЛФ=Д»);
НоваяСтрока.Количество = 1;
НоваяСтрока.Цена = Основание.СуммаДокумента;
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НоваяСтрока, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(НоваяСтрока, ЭтотОбъект);
// Слепанов Р.И. 2016.10.11. Окончание
КонецЕсли;
КонецПроцедуры // ОбработкаЗаполнения()
В предпоследней процедуре встает.
26 — 28.09.17 — 13:44
извиняюсь строке
Модератор
27 — 28.09.17 — 13:50
Чистить кэш
28 — 28.09.17 — 13:54
уже почистили. Все тоже самое.
29 — 28.09.17 — 13:56
(26) Слепанов Р.И. виноват
30 — 28.09.17 — 13:57
(28) запустите Конфигурация-Проверка конфигурации с галкой «внешнее соединение» и «внешнее соединение Клиент-Сервер»
31 — 28.09.17 — 14:04
РежимДиалогаВопрос = это клиентская процедура, а обмен на сервере происходит.
И однозначно компилируется весь модуль.
Смотрите, есть ли вообще в модуле РежимДиалогаВпрос. По хорошему ее нужно убрать, ну или завернуть в директивы препроцессора #Если Клиент
32 — 28.09.17 — 14:11
И я бы посмотрел еще, что найдет глоб.поиск по конфигурации текста «РежимДиалогаВопрос»
33 — 28.09.17 — 14:16
Я это уже делала. Но везде стоит если клиент
34 — 28.09.17 — 14:22
А закомментить весь модуль. Временно?
35 — 28.09.17 — 14:51
попробую…
36 — 28.09.17 — 14:53
(0) Попробуйте весь модуль документа ЗаказПоставщику убрать в условие:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
//код модуля
#КонецЕсли
37 — 28.09.17 — 15:03
(36) Это тоже не помогло.
38 — 28.09.17 — 15:04
комментировала весь модуль все равно не работает
39 — 28.09.17 — 15:07
(38) а в другой базе?
40 — 28.09.17 — 15:08
(37) Отладка — подключение — автоматическое подключение… галка на фоновые задания.
далее отладка — остановка по ошибке — останавливаться по ошибке.
Запускаем обмен, смотрим ошибку и место вызова.
41 — 28.09.17 — 15:24
делала так, все равно не работает. Ошибка неизвестно где.
42 — 28.09.17 — 15:25
подставила там в одном месте
#Если клиент
#КонецЕсли
43 — 28.09.17 — 15:52
(41) как это неизвестно? известно. При попытке открыть модуль объекта Заказ Поставщику.
44 — 28.09.17 — 15:53
(41) вы (30) запускали?
45 — 28.09.17 — 15:53
Пригласить специалиста уже предлагали?
46 — 28.09.17 — 16:01
(41) не в той конфигурации смотрите.
47 — 28.09.17 — 17:29
Проблема решилась так. Обмен настроила в другой базе. Там было хоть понятно по каким ошибкам идти, не было пустых строк. Все исправила и все выгрузилось успешно.
48 — 28.09.17 — 17:32
(45) Ты, что ли, главный специалист? Так что же ты ничего не посоветовал? Хамить все могут. А вот дельный совет дают на форумах единицы. Но это не вы.
Волшебник
Модератор
49 — 28.09.17 — 21:17
(48) Не грузите общественность магией.
Содержание:
1. Диагностика ошибки инициализации модуля
2. Устранение ошибки инициализации модуля
В данной статье будет описано, как устранять ошибку в системе «1С:Предприятие», когда при обновлении типовой конфигурации появляется объявление вида «Ошибка инициализации модуля:EF_00_00ХХХХХ». Будет проведён анализ данной неполадки и приведены способы по её устранению.
1. Диагностика ошибки инициализации модуля
Данная ошибка довольно часто появляется у юзеров системы 1С, когда после обновления выдает ошибку и всплывает объявление об ошибке по инициализации модуля. Окно с данной неполадкой в системе 1С представлено на скриншоте далее:
Окно ошибки инициализации модуля
Появление окна с данной неполадкой означает то, что система 1С не имеет возможности автоматического удаления патча с правками. Данный патч с правками недавно был внесён в обновление системы и позволяет быстро определять возможные неполадки и править их.
Обычно, специфика патчей с правками подразумевает то, что эта система автономная и будет удалять всё лишнее самостоятельно, как только версия 1С будет обновлена. Однако, в реальности, случается иначе: автоматическое удаление может не срабатывать, обновление прерывается и возникает ошибка по инициализации модуля.
2. Устранение ошибки инициализации модуля
Рассмотрим алгоритм действий пользователя для устранения ошибки инициализации модуля. Очевидно, что необходимо провести удаления патча самостоятельно.
Для удаления патча вручную существует два метода:
1. Через режим «1С:Предприятие» в системе. Откроем вкладку в меню «Администрирование», после чего кликнем на «Обслуживание», перейдём на раздел «Обновление программы» и избираем «Установленные исправления(патчи)», как демонстрируется на скриншоте с примером ниже:
Установленные исправления в режиме 1С Предприятия в системе
Перед пользователем появится список патчей с правками, как показано далее:
Список патчей с правками и их удаление
Избираем тот патч, который подлежит удалению и кликаем «Удалить исправление».
Также можно запустить перечень со всеми правками, которые были установлены, при помощи кнопки «Все функции», переходим на «Стандартные», после чего избираем «Управление расширениями конфигурации», как показано на скриншоте далее:
Управление расширениями конфигурации
2. Удалить патчи через «1С 8 Конфигуратор». Чтобы провести данную процедуру, понадобится избрать пункт «Конфигурация» и перейти по ссылке «Расширения конфигурации». Появится новая вкладка с перечнем все расширений, которые были установлены, выбираем нужное и кликаем на «Удалить», как демонстрируется на скриншоте с примером ниже:
Удаление расширения в 1С 8 Конфигуратор
Оба способа являются рабочими и возобновляют корректную работу системы 1С, избавляя ошибки после установки обновления.
В данной статье была продиагностирована ошибка после обновления1С по инициализации модуля, а также было приведено два метода по устранению данной неполадки.
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Содержание
- Ошибка в доработанном программном коде
- Ошибка вывода печатной формы
- Ошибка исполнения кода на Клиенте
-
- См. также:
- Шаг 1. Обновление прошивки
- Шаг 2. Команда авторизации
- Шаг 3. Восстановление данных об организации
- Шаг 4. Перерегистрация без замены ФН
- Шаг 5. Восстановление NVR
- Шаг 6. «Ошибка контрольной суммы ОЗУ»
-
- Пример кода, вызывающего ошибку:
- Разбор полётов
Ошибка Переменная не определена в 1С 8.3 указывает на то, что программа не может получить нужную информацию в исполняемом программном коде. Это может быть связано с обновлением или доработкой программы. Если стандартный набор действий при исправлении ошибок не помог:
- чистка кеша;
- тестирование и исправление информационной базы;
- просмотр зарегистрированных ошибок на сайте 1С,
придется разбираться с местом возникновения ошибки в 1С самостоятельно.
БухЭксперт8 подготовил 3 примера получения и исправления ошибки:
- в доработанном программном коде;
- при выводе печатной формы;
- при исполнении кода на Клиенте.
Ошибка в доработанном программном коде
В форму типового отчета Движение товаров программист добавил поле Склад. Список выбора значений в это поле ограничен. При открытии отчета появляется ошибка:
В сообщении об ошибке указано место возникновения ошибки — строка 919 в модуле формы. Для исправления ошибки необходимо выполнить следующие действия:
- Нажмите кнопку Подробно в форме сообщения об ошибке.
В окне Обнаружены ошибки программа укажет:- номер неправильной строки кода;
- исполняемую команду, которая привела к ошибке. Иногда подробной информации в окне Обнаружены ошибки достаточно для понимания причин ее возникновения, но не всегда. В большинстве случаев требуется перейти в место возникновения ошибки и проанализировать используемые в команде данные.
- Для перехода в место ошибки нажмите кнопку Конфигуратор.
В Конфирураторе курсор автоматически установится на строке программного кода с ошибкой. Необходимо проверить используемые командой данные. В данном примере ошибка сигнализирует, что переменной ОсновнойСклад не задано значение: при добавлении в список складов программа не понимает, какой склад требуется добавить. - Исправьте ошибку.
Укажите нужное значение переменной в программном коде, например:- ОсновнойСклад = Справочники.Склады.НайтиПоНаименованию(«Основной склад»);
- ОсновнойСклад = Справочники.Склады.ОсновнойСклад.
Синтаксис Справочники.Склады.ОсновнойСклад используется только для предопределенного склада с именем ОсновнойСклад:
- Сохраните изменения и обновите информационную базу.
- Проверьте работу 1С после исправления ошибки.
После исправления отчет открывается без ошибки, а при выборе складов устанавливается нужное значение Основной склад.
Ошибка вывода печатной формы
Для вывода в печатную форму накладной данных об ответственном менеджере, оформившем документ поступления, программист внес изменения в макет ПФ_MXL_Накладная и программный код.
В макет документа добавлена область Подвал:
В программном коде дописан вывод данных области Подвал:
После доработки программы при попытке вывода накладной на печать 1С выдает ошибку:
Информация в окне сообщения об ошибке указывает, что в Модуле менеджера документа ПоступлениеТоваровУслуг не определено значение переменной Ответственный. Для исправления ошибки:
- Перейдите в Конфигуратор. В Модуле менеджера документа ПоступлениеТоваровУслуг перейдите на строку 4804.
- Укажите для вывода в печатную форму поля Ответственный — текущего пользователя, используя специальную команду 1С:
- Пользователи.ТекущийПользователь().
- Сохраните изменения и обновите информационную базу.
- Перейдите в пользовательский режим для проверки выполненных изменений.
После исправления программного кода накладная сформируется без ошибки.
Ошибка исполнения кода на Клиенте
С переходом на управляемые формы в Бухгалтерия 3.0 работы программистам прибавилось.
Язык программирования стал сложнее. Часть команд теперь могут выполняться только на стороне клиента — это, условно говоря, компьютер пользователя, который посылает запросы на исполнение операций серверу. Сервер обрабатывает все поступившие запросы и отсылает обратно клиенту результат обработки данных.
Все это привело к тому, что в 1С команды делятся на исполняемые &НаСервере и &НаКлиенте. И при написании программного кода нужно это учитывать, иначе программа не сможет выполнить заданную операцию. При работе с переменными при написании программного кода важно понимать:
- &НаКлиенте — переменные существуют только на время клиентского вызова;
- &НаСервере— переменные существуют только на время серверного вызова.
Разделение команд в программном коде не зависит от того, используете ли вы файловую или клиент-серверную 1С. Разграничение должно четко исполняться, иначе будут возникать ошибки, одну из которых БухЭксперт8 разберет на примере.
При доработке программного кода программист использовал операцию получения данных склада &НаКлиенте в процедуре ПриОткрытии.
При сохранении изменений 1С сообщила об ошибке Переменная не определена (Справочники) при определении значения склада:
- «?»Справочники.Склады.НайтиПоКоду(«»00-000002»).
Ошибка связана с тем, что данная операция исполняется только на сервере, т. е. &НаСервере. И несмотря на то, что сама команда исполнения корректна, ошибка будет формироваться до тех пор, пока ее не перенесут в область команд исполнения &НаСервере, например так:
Теперь сохранение изменений пройдет без ошибки.
Усложнение языка программирования 1С требует от разработчика более глубокого подхода к вносимым изменениям в программу. Недостаточно просто знать синтаксис команды, важно еще правильно задать область исполнения команды в режиме управляемых форм.
См. также:
- Большое количество забивается решеткой
- Печатная форма недоступна 1С 8.3 при вызове внешней печатной формы
- Значение поля номер не уникально 1С 8.3: как исправить
- У пользователя недостаточно прав на исполнение операции
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Здравствуйте!
Самописная конфигурация на платформе 1С:Предприятие 8.3 (8.3.3.641).
Режим Управляемое приложение.
Перенес из модуля формы функцию в ОбщиеМодули и общий модуль перестал инициализироваться.
У модуля ОбщиеМеханизмыКлиента указаны свойства: Клиент (управляемое приложение), Сервер, Вызов сервера.
Выдает ошибку при попытке вызова любой функции модуля:
Цитата Ошибка инициализации модуля: ОбщийМодуль.ОбщиеМеханизмыКлиента.Модуль
по причине:
{ОбщийМодуль.ОбщиеМеханизмыКлиента.Модуль(246,17)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос;
Функция, которая перенесена:
// *************************************************
// * Возвращает остаток на счете на момент времени *
// *************************************************
Функция ПолучитьОстаток(
пСчет, // «Счет», по которому определяется остаток
Знач пМоментВремени = Неопределено // «Момент времени», на который возвращается остаток
) Экспорт
// ======================================
// = Сформировать значения по умолчанию =
// ======================================
Если пМоментВремени = Неопределено Тогда
пМоментВремени = ТекущаяДата();
КонецЕсли;
// ============================================
// = Получить остаток по регистру бухгалтерии =
// ============================================
// Сформировать условие по отобору «Счета»
Отбор = Новый Структура(«Счет», пСчет);
// Выбрать данные
Выборка = РегистрыБухгалтерии.Фин_Отч_ЖурналОпераций.Остатки(пМоментВремени, , Отбор);
// Получить значение остатка
Остаток = Выборка.Итог(«СуммаОстатокДт») — Выборка.Итог(«СуммаОстатокКт»);
// =====================================
// = Добавить «Начальный баланс» счета =
// =====================================
// ——————————-
// — Получить «Начальный баланс» —
// ——————————-
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| НИС_Учт_Сч_Счета.НачальныйБаланс
|ИЗ
| Справочник.НИС_Учт_Сч_Счета КАК НИС_Учт_Сч_Счета
|ГДЕ
| НИС_Учт_Сч_Счета.Счет = &Счет»;
Запрос.УстановитьПараметр(«Счет», пСчет);
РезультатЗапроса = Запрос.Выполнить();
Ошибка означает, что данные в ФН и на фискальной плате не совпадают.
Может произойти при: замене платы FM15/16, при подаче команды авторизации на зарегистрированной кассе, и при сбое электропитания на кассе во время работы (т.к. на фискальной плате стоит энергозависимая память).
Обязательно используйте последнюю версию Fito.
Скачать ее можно тут: «Страница загрузок»
Точно ли эта инструкция мне нужна? (раскрыть)
Да, если:
- На уже зарегистрированной кассе была заменена фискальная плата FM15/16
- На уже зарегистрированную кассу была подана команда «Авторизация» или «Тех. Обнуление»
- На чеке диагностики печатается «Ошибка модуля ФН»: значит, в данных фискальной платы нет информации по организации
- В Fito стоит галочка «Фатальная ошибка ФН» или «Нефискальный режим»: обязательно проверьте серийный номер на чеке диагностики — совпадает ли он с номером на шильде
Инструкция:
- Обязательно обновите прошивку!
- На чеке диагностики заводской номер не совпадает с номером на шильдике
- Восстановите данные по организации в памяти фискальной платы
- Восстановите NVR (Счетчики нарастающих итогов)
- «Ошибка контрольной суммы ОЗУ» — как исправить?
Шаг 1. Обновление прошивки
Проверьте версию прошивки на плате (как это сделать?). Если версия не является последней (последнюю можно найти тут: «Страница загрузок») — обновите ее.
Для Вики Принт, подключенному к ПК это можно сделать Менеджером Обновлений. Для иных случаев прошивайте плату с помощью этой инструкции.
Шаг 2. Команда авторизации
Команда Авторизации сотрёт всё содержимое памяти Вики Принт включая лицензии Дримкас Ключ. Лицензию нужно будет активировать повторно.
Fito → «Сервис» → «Авторизация» → укажите Модель ККТ из списка и последние 6 цифр заводского номера с шильдика → «Выполнить»
Шаг 3. Восстановление данных об организации
Fito → «Сервис» → «Проверка записи регистрации» → «Считать» → сохраните файл в любое место, он нам не нужен.
У вас нет такого пункта в Fito (раскрыть)
В Fito по умолчанию скрыты пункты меню, с помощью которых можно напрямую работать с данными в фискальной памяти.
Закройте Fito и скопируйте файл Fito.ini в папку с утилитой.
На кассах Вики путь к Fito следующий:
Либо можно добавить параметры вручную: откройте текстовым редактором файл Fito.ini и в раздел добавьте строку:
ServAccess=767 (измените цифры на 767, если пункт ServAccess уже есть).
Укажите следующие значения в полях этой таблицы (скриншот ниже):
- Серийный номер = если не совпадает с номером на шильде, вернитесь к шагу 2
- Регистрационный номер, ИНН, номер ФН — впишите соотв. значения
- Версия = 1
- Тип ФФД = 2 (если регистрация была по ФФД 1.05) или 1 (если по ФФД 1.0)
Внесли всё?
Нажмите «Записать» и перезагрузите ККТ из режима «Сервис» → «Рестарт ККТ».
Если после перезагрузки на чеке диагностики будет ошибка «Расхождение данных в ФН и NVR» — следуйте инструкции дальше.
Если же выйдет «Ошибка ФН» — значит, третий шаг выполнен некорректно. Вы где-то ошиблись или не сохранили данные. Начните заново с шага №3.
Шаг 4. Перерегистрация без замены ФН
Теперь нужно сделать перерегистрацию, установив СНО и режим работы.
Для начала проверим, что в ФН смена закрыта (ведь на открытой смене перерегистрацию сделать нельзя). Fito → «Тестирование» → «Ручной ввод команд» → Номер команды = 78; параметр 1 = 6 → «Выполнить» → «Детализация ответа». Если смена закрыта, то статус смены будет = 0, открыта = 1.
Если смена открыта в ФН, то нужно в на плате ее тоже открыть, что бы потом закрыть и на плате, и в ФН. Сначала откройте смену, потом закройте.
Как открыть и закрыть смену через Fito? (раскрыть)
Открыть смену: Fito → «Тестирование» → «Ручной ввод команды» → Номер команды = 23, Параметр 1 = имя кассира → «Выполнить»
Закрыть смену: Fito → «Тестирование» → «Печать отчетов» → «Печать z-отчета» → Имя оператора = имя кассира → «Выполнить»
Проверьте настройки отправки чеков:
Fito → «Программирование настроек сети» → «Считать» → заполните URL и порт сервера ОФД → «Установить». Настройки сети можно не заполнять — служба ComProxy сама возьмет их из текущего подключения к интернету.
Теперь можно сделать перерегистрацию:
Fito → «Сервис» → «Регистрация/Снятие с учета» → «Перерегистрация без замены ФН» → заполните все данные в полях (реквизиты организации, данные по ОФД, СНО и режимы работы) → «Выполнить»
Обязательно укажите чуть-чуть другой адрес или наименование организации (например, добавьте лишний пробел). Это нужно, чтобы у перерегистрации была причина. Если делать перерегистрацию с теми же самыми параметрами, на ФФД 1.05 выйдет ошибка.
Шаг 5. Восстановление NVR
Текст ошибки: «РАСХОЖДЕНИЕ НОМЕРОВ СМЕН В ФН И NVR».
Fito → «Сервис» → «Проверка NVR» → «Считать» → сохраните файл в любое место, он нам не нужен → «Умолчание» → заполните поля нарастающий итогов → «Записать»
Нарастающие итоги заполняются без разделителя между рублями и копейками. Например, сумма 28 884.00 записывается как 2888400.
Значения нарастающих итогов нужно взять из последнего z-отчета (если смена открыта, для корректности этих значений к этим цифрам нужно добавить то, что было набито на последней открытой смене — данные можно посмотреть в ОФД или распечатать из ФН).
У вас нет такого пункта в Fito (раскрыть)
В Fito по умолчанию скрыты пункты меню, с помощью которых можно напрямую работать с данными в фискальной памяти.
Закройте Fito и скопируйте файл Fito.ini в папку с утилитой.
На кассах Вики путь к Fito следующий:
Либо можно добавить параметры вручную: откройте текстовым редактором файл Fito.ini и в раздел добавьте строку:
ServAccess=767 (измените цифры на 767, если пункт ServAccess уже есть).
Шаг 6. «Ошибка контрольной суммы ОЗУ»
Ошибка некритичная, означает, что текущая контрольная сумма бит по конфигурации не совпадает с последней сохранённой.
Откройте и закройте смену, ошибка пропадет. Сделать это можно через кассовое ПО или через Fito.
Как открыть и закрыть смену через Fito? (раскрыть)
Открыть смену: Fito → «Тестирование» → «Ручной ввод команды» → Номер команды = 23, Параметр 1 = имя кассира → «Выполнить»
Закрыть смену: Fito → «Тестирование» → «Печать отчетов» → «Печать z-отчета» → Имя оператора = имя кассира → «Выполнить»
Ошибка возникает, когда после точки запятой есть еще код — процедуры, функции, код тела модуля.
Пример кода, вызывающего ошибку:
Процедура ПроверитьТэгиИПоставщиков() Для каждого СтрокаТ из тПоставщиков Цикл Если ПустаяСтрока(СтрокаТ.TAG) или ЗначениеЗаполнено(СтрокаТ.Поставщик) = Ложь Тогда СтрокаТ.Создавать = Ложь; Сообщить(«Не заполнены данные по поставщику «+СтрокаТ.TAG+»!»); КонецЕсли; КонецЦикла; КонецПроцедуры; Процедура ИмяЛокальногоОтветаОткрытие(Элемент, СтандартнаяОбработка) Текст = Новый ТекстовыйДокумент; Текст.Прочитать(ИмяЛокальногоОтвета); Текст.Показать(«Файл ответа»); КонецПроцедуры
Разбор полётов
Сообщение ошибке «Обнаружено логическое завершение исходного текста модуля» возникает, когда вы добавляете функцию/процедуру после «;» даже, если она создается автоматически через конструкторы событий
Ошибка в этой строке:
КонецПроцедуры;
Если после точки с запятой ничего нет, такой модуль не вызывает ошибку.
1С считает эту «;» частью кода тела модуля, а процедуры/функции в нем недопустимы
Решение простое:
Найти и убрать точку с запятой (необязательно что это будет последняя функция или процедура)
Ошибка инициализации модуля: EF_00_00XXXXX
После обновления у некоторых пользователей может возникнуть ошибка при запуске базы «Ошибка инициализации модуля: EF_00_00XXXXX. < … > Процедура или функция с указанным именем уже определена».
Сложность в том, что программа не может удалить ранее установленный патч с исправлениями.
Патч — это расширение программы, которое устраняет ошибки в ее работе. Под каждый релиз выпускаются определенные патчи. После перехода на другой релиз, предыдущие ошибки исправляются автоматически и патч теряет свою актуальность.
При обновлении базы ненужные патчи должны удаляться автоматически, но иногда механизм не срабатывает и тогда нам требуется вручную удалить проблемный патч.
Есть несколько способов, рассмотрим самые распространенные:
- в режиме 1С:Предприятия (если информационная база все же запускается, но ошибки возникают при определенных действиях);
- через Конфигуратор (если программа не запускается).
- Удаление патча в режиме 1С:Предприятие
Достаточно зайти в Администрирование выбрать пункт Обслуживание и в разделе Обновление программы перейти в Установленные исправления (патчи).
В открывшемся списке, находим нужный патч и нажимаем Удалить исправление.
- Отключение патча в режиме Конфигуратор
В главном меню выбираем Конфигурация > Расширения конфигурации (если этот пункт недоступен, то переходим Конфигурация > Открыть конфигурацию, и нужный пункт будет доступен). В списке установленных расширений снимаем галку в поле Активно и обязательно закрываем Конфигуратор
Данный вариант доступен только в программах 1С версии ПРОФ, базовые версии не имеют пункта «Расширения конфигурации».
Уже более 10 000 компаний работают
в облачной 1С от 42Clouds
— Консультация по 1С Бесплатно!
— Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте
— Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web
Никаких проблем не вышло, обмен вручную идет а по регламенту нет, блокировки регламентных заданий в sql не стоит
Добавлено через 6 минут
При повторной проверке вышло {РегистрНакопления.ВзаиморасчетыСКонтрагентами(104,45)}: Переменная не определена (РежимДиалогаВопрос)
Ответ = Вопрос(«Все равно провести?», <<?>>РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(106,20)}: Переменная не определена (КодВозвратаДиалога)
Если Ответ = <<?>>КодВозвратаДиалога.Да Тогда (Проверка: Внешнее соединение)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104,15)}: Процедура или функция с указанным именем не определена (Вопрос)
Ответ = <<?>>Вопрос(«Все равно провести?», РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104,45)}: Переменная не определена (РежимДиалогаВопрос)
Ответ = Вопрос(«Все равно провести?», <<?>>РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение (вариант клиент-сервер))
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(106,20)}: Переменная не определена (КодВозвратаДиалога)
Если Ответ = <<?>>КодВозвратаДиалога.Да Тогда (Проверка: Внешнее соединение (вариант клиент-сервер))
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104,15)}: Процедура или функция с указанным именем не определена (Вопрос)
Ответ = <<?>>Вопрос(«Все равно провести?», РежимДиалогаВопрос.ДаНет); (Проверка: Внешнее соединение (вариант клиент-сервер))
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104,45)}: Переменная не определена (РежимДиалогаВопрос)
Ответ = Вопрос(«Все равно провести?», <<?>>РежимДиалогаВопрос.ДаНет); (Проверка: Сервер)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(106,20)}: Переменная не определена (КодВозвратаДиалога)
Если Ответ = <<?>>КодВозвратаДиалога.Да Тогда (Проверка: Сервер)
{РегистрНакопления.ВзаиморасчетыСКонтрагентами(104,15)}: Процедура или функция с указанным именем не определена (Вопрос)
Ответ = <<?>>Вопрос(«Все равно провести?», РежимДиалогаВопрос.ДаНет); (Проверка: Сервер)
Ошибка инициализации модуля. Переменная не определена
Если синхронизация не работает и в Журнале регистрации выходит следующего рода ошибка:
Ошибка при вызове метода контекста (ВнешнееСоединениеПередЗагрузкойДанных)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2212)}:ОбработкаДляЗагрузкиДанных().ВнешнееСоединениеПередЗагрузкойДанных();
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(15016)}:ОбработкаОбменаДаннымиXML.ВыполнитьВыгрузкуДанных(ОбработкаДляЗагрузкиДанных);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(15493)}:ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(41)}:ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5300)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1428)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1405)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.22.1923): Ошибка инициализации модуля: Справочник.тфНадстройки.МодульМенеджера
{Справочник.тфНадстройки.МодульМенеджера(103,11)}: Переменная не определена (авСервисАвтоверсант)
Необходимо разобраться в коде и выявить ошибку.
В данном примере программа выдает ошибку, связанную с общим модулем Сервис Автоверсант.
Решение следующее: поставить галочку Вызов сервера в свойствах общего модуля.