Обновление конфигурации «Бухгалтерия государственного учреждения, редакция 1.0» до версии 1.0.49.4 стало одним из самых резонансных из-за масштабных изменений в структуре хранения данных Плана счетов. Многие пользователи столкнулись с ситуацией, когда при попытке выбрать счет в документах или при формировании оборотно-сальдовой ведомости список счетов оказывался абсолютно пустым. Проанализируем причины этой проблемы и разберем по шагам все доступные способы восстановления работоспособности базы.
Основная причина «исчезновения» счетов кроется во внедрении разработчиками механизма периодов действия счетов. В План счетов (ЕПСБУ) были добавлены два новых реквизита: ДатаНачала и ДатаОкончания. По задумке 1С, теперь каждый счет имеет свой срок актуальности. Рассмотрим, что именно пошло не так при обновлении:
01.01.0001).Если отчет нужно сформировать срочно, а программиста нет рядом, можно воспользоваться временным решением. Разберем, как увидеть счета без изменения конфигурации:
При открытии формы выбора счета обратите внимание на правый верхний угол формы. Там расположены поля выбора периода актуальности (даты). Если их очистить (удалить значения), фильтр по датам перестанет действовать, и все счета появятся в списке. Однако этот метод неудобен тем, что процедуру очистки дат придется повторять при каждом открытии окна выбора.
Если база находится на поддержке с возможностью изменения, мы можем временно отключить навязчивый фильтр. Рассмотрим подробнее изменения в модуле формы выбора Плана счетов:
ПриОткрытии.Пример модифицированного кода:
Процедура ПриОткрытии()
// ... существующий код инициализации формы ...
УстановитьДоступностьОтбора();
ТаблицаСчетов(Истина);
// Блокируем проблемный фильтр разработчиков 1С
// УстановитьОтборПоДатеИзмененияПланаСчетов();
КонецПроцедуры
Важно: Этот метод делает конфигурацию «нетиповой», что может затруднить последующие обновления. Рекомендуется использовать его только как временную меру до перехода на исправленный релиз.
Разработчики 1С признали проблему и в последующих патчах добавили инструмент для автоматического исправления ситуации. Если вы уже обновились до версии 1.0.49.5, выполните следующие действия:
В этот момент программа принудительно перезаполнит даты начала и окончания действия для всех предопределенных счетов (обычно устанавливается дата окончания 01.01.2999). После завершения операции счета должны стать видимыми во всех формах выбора.
Иногда восстановление настроек не срабатывает из-за ошибок в регистре сведений РабочиеСчета. Проанализируем ситуацию: если в регистре есть запись, дублирующая комбинацию «Счет + КПС», или запись с пустыми ключевыми полями, типовая обработка обновления «падает». Выясним, как это лечить:
Необходимо воспользоваться внешней обработкой (многие из них были опубликованы на партнерском форуме или Инфостарте), которая умеет:
ДатаОкончания.РабочиеСчета.01.01.2999.После обновления на исправленный релиз 1.0.49.5 пользователи клиент-серверных версий часто сталкиваются с новой технической ошибкой при формировании отчетов: Попытка передачи мутабельного значения результата метода СписокСчетовПоКодуИДате. Разберем причину:
Функция СписокСчетовПоКодуИДате в общем модуле ПолучениеНСИПовтИсп помечена признаком «Повторное использование». При этом она возвращает СписокЗначений. В платформе 8.3 передача мутабельных типов (таких как списки или таблицы значений) между сервером и клиентом в кэшируемых функциях запрещена.
Для исправления необходимо в общем модуле ПолучениеНСИПовтИсп найти указанную функцию и в свойствах модуля (или самой функции, в зависимости от версии платформы) отключить использование кэша (повторное использование возвращаемых значений), либо дождаться релиза 1.0.49.6, где эта ошибка исправлена штатно.
Если после обновления перестали работать ваши старые внешние обработки или документы выдают ошибку Метод объекта не обнаружен (ПолучитьСчетПоКоду), значит, пришло время обновить ваш программный код. Рассмотрим, как изменились методы работы со счетами:
Старая функция ПолучитьСчетПоКоду была удалена из глобального контекста или общих модулей, так как поиск только по коду теперь считается некорректным (нужно учитывать дату действия). Вместо нее следует использовать новую функцию.
Было:
СчетОбъект = ПолучениеНСИ.ПолучитьСчетПоКоду("105.32");
Стало (правильный вариант для БГУ 1.0):
// Теперь обязательно передавать дату, на которую мы ищем актуальный счет
ДатаАктуальности = ТекущаяДата(); // или ДатаДокумента
СчетОбъект = БухгалтерскийУчет.СчетПоКодуИДате("105.32", ДатаАктуальности);
Проанализируйте свои доработки и замените вызовы старых функций на БухгалтерскийУчет.СчетПоКодуИДате. Это решит проблемы с проведением документов, где счета подставляются программно.
Подводя итог, можно сказать, что переход на БГУ 1.0.49.4 требует от системного администратора и программиста особого внимания. Основной алгоритм действий должен быть таким: обновление до 1.0.49.5 -> запуск Восстановления настроек по умолчанию в Плане счетов -> при необходимости чистка регистра «Рабочие счета» и корректировка кода вызова функций поиска счетов. Помните, что перед любыми манипуляциями с Планом счетов крайне важно создать резервную копию базы данных.