Как решить проблемы и ошибки при обновлении «1С:Бухгалтерия предприятия» на отозванный релиз 3.0.75.48

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Конец года для любого практикующего специалиста 1С и бухгалтера — это период повышенной ответственности. Именно в это время традиционно выпускаются критически важные обновления конфигураций, связанные с изменениями в законодательстве, новыми формами отчетности и алгоритмами учета. Однако спешка при выпуске релизов иногда приводит к неприятным последствиям. Ярким примером стал выход обновления конфигурации «Бухгалтерия предприятия» редакции 3.0 (версия 3.0.75.48) в конце декабря 2019 года.

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

Проблема №1: Противоречия в требованиях к технологической платформе

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

  1. В официальном описании к релизу было указано, что текущая версия конфигурации предназначена для работы с версией технологической платформы 1С:Предприятие 8 не ниже 8.3.15.1830. При этом на момент выхода релиза версия 8.3.15.1830 сама имела статус тестовой и была выпущена всего за пару дней до этого.
  2. В то же время в файле поставки 1cv8upd.htm содержалась совершенно другая информация: конфигурация предназначена для использования с версией системы 1С:Предприятие 8.3 не ниже 8.3.15.1747, а рекомендуется версия не ниже 8.3.15.1778.

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

Проблема №2: Сбой сервиса 1С:ДиректБанк (Ошибка 00-00268880)

Основной причиной экстренного отзыва релиза 3.0.75.48 разработчиками стала критическая ошибка в механизме прямого обмена с банками. Проанализируем ее суть.

При использовании встроенного сервиса 1С:ДиректБанк для интеграции со Сбербанком (при авторизации по токену или по паре логин/пароль), а также с любыми банками, использующими технологическую компоненту iBank2, система полностью блокировала отправку и получение платежных документов. При попытке выполнить сеанс обмена программа выдавала системное сообщение:

Поле объекта не обнаружено (Идентификатор)

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

Проблема №3: Ошибка проведения документов «СлужебныйАвтотранспорт не найдено»

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


Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Предопределенное значение "Справочник.СтатьиЗатрат.СлужебныйАвтотранспорт" не найдено.
{ОбщийМодуль.ОбщегоНазначенияСлужебныйКлиентСервер.Модуль(313)}: ВызватьИсключение ТекстОшибкиПредопределенноеЗначениеНеНайдено(ПолноеИмяПредопределенного);
{ОбщийМодуль.ОбщегоНазначения.Модуль(571)}: Возврат ОбщегоНазначенияСлужебныйКлиентСервер.ПредопределенныйЭлемент(
{Справочник.СтатьиЗатрат.МодульМенеджера(32)}: Возврат ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.СтатьиЗатрат." + НазначениеСтатьиЗатрат);
{Документ.ПоступлениеТоваровУслуг.МодульМенеджера(1429)}: Запрос.УстановитьПараметр("СтатьяЗатратРасходыГСМ",
{Документ.ПоступлениеТоваровУслуг.МодульОбъекта(454)}: ПараметрыПроведения = Документы.ПоступлениеТоваровУслуг.ПодготовитьПараметрыПроведения(Ссылка, Отказ);

Выясним причину этой ошибки. В данном обновлении разработчики добавили новый функционал для учета путевых листов и расходов на горюче-смазочные материалы (ГСМ). Для обеспечения работы новых алгоритмов в структуру метаданных справочника СтатьиЗатрат был добавлен новый предопределенный элемент — СлужебныйАвтотранспорт.

Однако из-за программного сбоя в дефектном релизе фоновые обработчики обновления информационной базы не отрабатывали до конца или завершались некорректно. В результате в конфигурации (в коде) обращение к этому элементу уже существовало, а физически в таблицах базы данных (в СУБД или файловой БД) этот элемент еще не был создан. Это полностью блокировало проведение любых документов поступления, где задействованы механизмы распределения ГСМ.

Пошаговое руководство по исправлению ошибок

Если вы столкнулись с описанными выше сбоями, рассмотрим основные варианты восстановления работоспособности информационной базы.

Вариант 1: Обновление на исправленный релиз (Рекомендуемый способ)

Самый надежный и правильный метод — это уйти с отозванной версии 3.0.75.48 на исправленные официальные релизы, которые оперативно выпустила фирма 1С сразу после праздников:

  1. Выполните резервное копирование информационной базы в режиме Конфигуратора (меню «Администрирование» — «Выгрузить информационную базу»).
  2. Скачайте и установите последующие стабильные релизы. Для решения всех проблем этой ветки отлично подходят версии 3.0.75.58 или наиболее стабильная версия начала 2020 года — 3.0.75.70.
  3. В этих релизах разработчики полностью исправили работу сервиса 1С:ДиректБанк, восстановили кнопку «Заполнить» в декларации по налогу на прибыль, исправили закрытие счета 08.04.1 по доп. расходам, а также обеспечили корректное создание предопределенного элемента СлужебныйАвтотранспорт при первом запуске программы.

Вариант 2: Принудительное выполнение обработчиков обновления ИБ

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

Для этого нам понадобится запустить программу с дополнительным параметром. Выполним следующие действия:

  1. Полностью закройте программу 1С.
  2. Откройте окно запуска 1С:Предприятия, выберите вашу информационную базу и нажмите кнопку «Изменить».
  3. Нажмите «Далее» до последней вкладки параметров. В поле «Параметры запуска» введите команду принудительного обновления: /C СтартОтложенногоОбновленияВОбщемПотоке.
  4. Запустите базу данных в режиме Предприятия. Дождитесь, пока система в фоновом режиме выполнит все пропущенные процедуры обновления метаданных.

Также мы можем проверить статус выполнения процедур обновления непосредственно в интерфейсе программы. Для этого перейдем по пути: «Администрирование» — «Обслуживание» — «Результаты обновления программы». Если там присутствуют невыполненные обработчики, запустите их выполнение вручную.

Вариант 3: Ручное создание элемента (для программистов)

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

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


&НаСервере
Процедура ВосстановитьПредопределенныеЭлементыНаСервере()
    
    // Инициализируем заполнение предопределенных элементов
    Справочники.СтатьиЗатрат.ВыполнитьИнициализациюПредопределенныхДанных();
    
    // Проверим, появился ли нужный элемент в базе
    ЭлементСтатьи = Справочники.СтатьиЗатрат.СлужебныйАвтотранспорт;
    Если ЗначениеЗаполнено(ЭлементСтатьи) Тогда
        Сообщить("Предопределенный элемент 'Служебный автотранспорт' успешно найден и инициализирован.");
    Иначе
        Сообщить("Не удалось инициализировать элемент программно. Требуется обновление конфигурации.");
    КонецЕсли;
    
КонецПроцедуры

Использование этого метода позволяет быстро снять блокировку проведения документов поступления без полной переустановки релиза, если у вас сильно измененная (кастомизированная) конфигурация, быстрое обновление которой затруднено.

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

← На главную