Предупреждение переноса границы ошибка 1с

Обновлено: 04.07.2024

Перехват исключений в коде

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

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

3. Частные случаи некорректного использования и перехвата исключений.

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

3.1. Если имеется некоторая серверная бизнес-логика, которая вызывается с клиента при интерактивной работе пользователя:

&НаСервере
Процедура ВыполнитьОперацию()
// код, приводящий к вызову исключения
.
КонецПроцедуры

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

// на клиенте
Попытка
ВыполнитьОперацию();
Исключение
ПоказатьПредупреждение(,НСтр("ru = 'Операция не может быть выполнена.'"));
КонецПопытки;

&НаСервере
Процедура ВыполнитьОперацию()
Попытка
// код, приводящий к вызову исключения
.
Исключение
// Запись события в журнал регистрации для системного администратора.
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
УровеньЖурналаРегистрации.Ошибка.
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры

и тогда на клиенте:

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

3.2. Не следует анализировать текст исключений с целью интерпретации причины ошибки. Текст исключения может меняться в зависимости от локализации. В условиях отсутствия штатных средств (например, типизированных исключений), следует выдавать пользователю тексты исключений «как есть». Для понятности, его можно дополнить пояснением возможных причин.
Например:

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

КодОшибки = ЗагрузитьФайлИзИнтернета(. );
Если КодОшибки = 12345 Тогда
.
ИначеЕсли .

правильно применять строковые литералы (например, "Успешно", "НетМестаНаДиске", "Отменено" и т.п.):

РезультатЗагрузки = ЗагрузитьФайлИзИнтернета(. );
Если РезультатЗагрузки = "Успешно" Тогда
.
ИначеЕсли .

Строковые литералы кодов ошибок не локализуются.

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

3.3. Если имеется некоторая клиентская бизнес-логика (код выполняется полностью на клиенте):

&НаКлиенте
Процедура СоздатьФайлНаДиске()
// код, приводящий к вызову исключения
.
КонецПроцедуры

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

&НаСервереБезКонтекста
Процедура ЗаписатьОшибкуРаботыСФайлами(. )
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
УровеньЖурналаРегистрации.Ошибка.
ПодробноеПредставлениеОшибки);
КонецПроцедуры

3.4. Недопустимо перехватывать любые исключения, бесследно для системного администратора:

Попытка
// код, приводящий к вызову исключения
.
Исключение // перехват любых исключений
КонецПопытки;

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

Попытка
// код, приводящий к вызову исключения
.
Исключение
// Пояснение причин перехвата всех исключений "незаметно" от пользователя.
// .
// И запись события в журнал регистрации для системного администратора.
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
УровеньЖурналаРегистрации.Ошибка.
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

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

Процедура ПередЗаписью(Отказ)
Если Не ЗарегистрироватьИзмененияНаУзлахПлановОбмена() Тогда
ВызватьИсключение НСтр("ru = 'Не удалось зарегистрировать изменения на узлах планов обмена. Обратитесь к администратору.'");
КонецЕсли;
.
КонецПроцедуры

Подробнее см. пп. 1.1 и 1.3 стандарта Информирование пользователя.

3.6. Недопустимо делать проверки наличия у объекта реквизитов, методов, макетов и т.п., используя для этого исключения, т.к. это может привести к сложно диагностируемым ошибкам, а также затрудняет отладку в режиме «Останавливаться по ошибке».
Вместо перехвата исключений в этом случае рекомендуется:

  • использовать механизмы работы с метаданными, чтобы явным образом проверять наличие или отсутствие реквизита (макета и т.п.);
  • если различия связаны с особенностями встраивания библиотек – описывать особенности явным образом в переопределяемых модулях (см. Переопределяемые и поставляемые объекты);
  • пересмотреть логику работы методов, использующих перехват исключений. Например, можно предусмотреть параметры, которые определяются в вызывающем коде и указывают нужно или нет обращаться к какому-либо методу или свойству объекта.

Попытка
КонтекстЭДОСервер.ПолучитьМакет("КомпонентаОбмена");
ПутьВК = КонтекстЭДОСервер.ПутьКОбъекту + ".Макет.КомпонентаОбмена";
Исключение
КонецПопытки;

МакетКомпонентыОбмена = КонтекстЭДОСервер.Метаданные().Макеты.Найти("КомпонентаОбмена");
Если МакетКомпонентыОбмена <> Неопределено Тогда
ПутьКМакету = КомпонентаОбмена.ПолноеИмя()
КонецЕсли;

3.7. Порядок обработки исключений при использовании транзакций описан в стандарте Транзакции: правила использования.

3.8. Неправильно использовать исключения для приведения значения к типу. Для таких операций необходимо использовать возможности объекта ОписаниеТипов .

Попытка
КоличествоДнейРазрешения = Число(Значение);
Исключение
КоличествоДнейРазрешения = 0; // значение по умолчанию
КонецПопытки;

ОписаниеТипа = Новый ОписаниеТипов("Число");
КоличествоДнейРазрешения = ОписаниеТипа.ПривестиЗначение(Значение);

Здравствуйте, продолжаю попытки обновления 1С8 ред2 на ред.3, с НДС по экспорту вроде получилось, зарплата начала считаться правильно. Столкнулась со следующей ошибкой, при проведении закрытия месяца январь 2021 Список ошибок операции
Расчет долей списания косвенных расходов за Январь 2021
Устраните указанные ошибки и повторите выполнение операции

Регламентная операция 00000000093 от 31.12.2020 23:59:59
При этом до обновления сделала все операции по закрытию декабря 2020 года а также реформация баланса.

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

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

Все комментарии (21)

Добрый день! Выполните проверку перехода. Все данные по БУ/НУ в ред. 2.0 и ред. 3.0 должны быть идентичны: Сборник «Переход на 1С Бухгалтерия 3.0 с 2.0»: для типовых и доработанных конфигураций 1С (раздел ПРОВЕРКА ПЕРЕХОДА).
Посмотрите, пожалуйста, обсуждение подобного вопроса здесь:
Переход с 2.0 на 3.0, если внутри года было сальдо по счету 25 в 1С
.

У меня нет ни 25 ни 26 счетов, есть 44

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

Я не заметила, что изменила прошлое. Спасибо большое.

Здравствуйте, обнаружила следующее, наша компания занимается только экспортом, после обновления программы до редакции 3.0 вношу изменения:
1. Изменила настройку валютных счетов, добавила расчеты через банк-корреспондент, иначе выписки не закачивались;
2. Изменила страну регистрации покупателя потому, что у всех заполнилось Россия;
3. Изменила движение денежных документов.
И после этого пропадает проведение регламентных операций.
При этом период до 31.12.2020 года закрыт.

PS: Когда вы меняете УП и настройки обратите внимание, что должна быть выставлена дата 01.01.2021.
Вы не должны менять настройки в закрытом периоде.

Кроме того, переход с 2.0 на 3.0 может иметь ошибки и вам правильно вначале дали ссылки на Сборник:
Сборник «Переход на 1С Бухгалтерия 3.0 с 2.0»: для типовых и доработанных конфигураций 1С

Там разобраны все моменты, которые после перехода нужно проверить или настроить.

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

Сейчас вот так выглядит декабрь 2020 года. Я поняла, что учетную политику трогать нельзя. Сейчас опять заношу январь 2021 года и после каждого раза проверяю, что меняется. Поверку делала, обороты БУ сходятся, ОСВ тоже.

По приведенному скрину общей формы закрытия месяца за декабрь 2020 года у вас светится СИНИМ ссылка Перепроведение документов. После открытия программа показывает, что есть конкретные документы, которые нарушили последовательность закрытия документов.

Для нормального закрытия января 2021 года ссылка Перепроведение документов должна быть зелененькой.
Если эта ссылка синяя еще до того, как вы меняете настройки, значит в процессе переноса произошло какое-то изменение. Или нарушение было уже в 2.0. Проверьте это. В 2.0 у вас нет нарушения границ последовательности документов?
С этим вам нужно разобраться.

Просто приведите скрин из 2.0 до обновления.

По закрытию месяца и ручному переносу границ последовательности у нас есть специальная статья:
Ручной перенос границы последовательности при закрытии месяца

С этим вы должны разобраться ДО изменений настроек в 3.0!

Если год закрыт, учетную политику и настройки налогов и отчетов вы должны делать с даты 01.01.2021.

В редакции 2 все нормально.

Синим появляются надписи тогда, когда я прошу перепровести документы только за январь 2021 или перепроведение не требуется.

Случайно изменили зарплату за январь 2012 года и внесли измения в усетную политику по НДС, настроили экспорт.

Или смириться с ошибками и закрыть синие регламентные операции декабря 2020 года.

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

4. После этого закрываете на редактирование базу на конец года датой: 31.12.2020

5. Переходите к закрытию месяцев 2021 года. В Учетной политике на 01.01.2021 год выставляете настройки, которые будут действовать в этом году. В настройках Налоги и отчеты также устанавливаете нужные настройки на 01.01.2021.

6. Открываете форму Закрытия месяца январь 2021 года и далее все по стандартной схеме.

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

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

Проделала все на п.3 все заработала, внесла январь оборотка сошлась с ред. 2 внесу февраль-март и проверю как формируются отчеты.

Замечательно, я очень рада, что ушла ошибка по регламентным заданиям декабря 2020 года. 🙂
Этот вопрос закрываю.

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

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

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

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

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

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

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

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

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

Видеоролик выполнен в программе «1С:Бухгалтерия 8» версия 3.0.62.17.

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

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

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

  • из формы обработки Закрытие месяца (раздел Операции). Процедура закрытия месяца всегда начинается с контроля последовательности проведения;
  • из раздела Операции - Сервис - Групповое перепроведение документов. Перепровести документы можно по всем организациям или только по выбранной организации.

Начиная с версии 3.0.62.17 в «1С:Бухгалтерии 8» можно переносить границу последовательности без перепроведения документов, например, когда в первичных документах внесены изменения, не влияющие на бухгалтерский и налоговый учет и регламентированную отчетность.

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

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

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