Каждый бухгалтер и технический специалист рано или поздно сталкивается с неожиданными последствиями обновлений типовых конфигураций. Типичная ситуация: после успешного перехода на новый релиз программы 1С:Бухгалтерия предприятия 3.0 пользователи обнаруживают, что пропал производственный календарь на текущий рабочий год. При попытке открыть список календарей перед нами предстает абсолютно пустая таблица, хотя до проведения обновления все работало корректно.
При этом, если мы попробуем заглянуть «под капот» системы и выполним запрос к базе данных, то увидим, что записи в независимом регистре сведений ДанныеПроизводственногоКалендаря никуда не исчезли. Они успешно выбираются программным путем, но интерактивно в интерфейсе формы списка справочника ПроизводственныеКалендари мы их не наблюдаем. Давайте детально разберем причины этой проблемы, проанализируем поведение системы и найдем эффективные способы восстановления работоспособности интерфейса.
В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), разработчики 1С активно используют механизм динамического изменения интерфейса под нужды конкретного предприятия. Одним из таких механизмов является управление видимостью объектов через функциональные опции.
Выясним, как это работает на практике. В системе существует специальная функциональная опция ИспользоватьНесколькоПроизводственныхКалендарей. Поведение платформы следующее:
ПроизводственныеКалендари или делают ее пустой для отображения, если опция отключена.Чтобы исправить данное поведение и вернуть отображение календаря в интерфейс, нам необходимо принудительно включить указанную опцию. Рассмотрим пошагово, как это сделать в интерфейсе 1С:Бухгалтерии 3.0:
После установки этого флага функциональная опция примет значение Истина, интерфейс мгновенно перестроится, и наш производственный календарь снова появится в списке доступных элементов.
Вторая распространенная техническая проблема, с которой мы можем столкнуться после обновления, кроется в уникальном идентификаторе (коде) основного календаря. Программа 1С жестко ориентируется на предопределенные стандарты при автоматическом заполнении регламентированных данных.
Проанализируем этот момент подробнее. Для корректной идентификации основного общегосударственного календаря в поле Код справочника ПроизводственныеКалендари должно быть строго указано значение «РФ». Важно обратить внимание на следующие нюансы:
Если при прошлых ручных корректировках или в процессе сбоя при обновлении этот код был изменен (например, записан как «RF», «рф» строчными буквами или заменен на числовой код), то система перестает идентифицировать этот календарь как предопределенный и основной. Данные в регистре сведений ДанныеПроизводственногоКалендаря при этом физически остаются привязанными к объекту, но сама платформа теряет связь и скрывает календарь из стандартных списков.
Чтобы проверить эту гипотезу и исправить код, мы можем воспользоваться консолью запросов или написать простую обработку. Посмотрим на пример кода, который позволяет быстро проанализировать текущие коды календарей в базе данных:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Календари.Ссылка КАК Ссылка,
| Календари.Код КАК Код,
| Календари.Наименование КАК Наименование
|ИЗ
| Справочник.ПроизводственныеКалендари КАК Календари";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Календарь: " + Выборка.Наименование + " | Текущий код: " + Выборка.Код);
КонецЦикла;
Если мы обнаружили, что код отличается от эталонного «РФ», необходимо воспользоваться обработкой «Групповое изменение реквизитов» или выполнить программное переименование кода. Пример программного исправления кода выглядит следующим образом:
// Программное исправление кода производственного календаря
КалендарьОбъект = Справочники.ПроизводственныеКалендари.НайтиПоНаименованию("Российская Федерация").ПолучитьОбъект();
Если КалендарьОбъект <> Неопределено Тогда
КалендарьОбъект.Код = "РФ";
КалендарьОбъект.Записать();
Сообщить("Код производственного календаря успешно изменен на 'РФ'");
КонецЕсли;
Довольно часто корень проблемы лежит не в программных кодах и не в настройках ведения учета, а в банальном засорении временных файлов (кэша) платформы «1С:Предприятие» после динамического обновления конфигурации.
Когда конфигурация обновляется, структура метаданных или настройки динамических списков могут претерпеть изменения. При этом старые сохраненные настройки отображения формы у конкретного пользователя пытаются наложиться на новую структуру, что приводит к некорректному наложению невидимых отборов. В результате форма открывается, но данные в ней не выводятся.
Разберем, как сбросить настройки формы до первоначального системного вида:
ПроизводственныеКалендари (даже если она выглядит абсолютно пустой).Если сброс настроек формы не принес желаемого результата, рекомендуется выполнить полную очистку кэша конфигурации. Для этого закроем программу 1С, удалим базу из списка запуска в стартере 1С, а затем добавим ее заново. Это приведет к созданию нового каталога временных файлов и полной очистке локального кэша метаданных.
Что делать, если регламентные сроки поджимают, нужно срочно рассчитать заработную плату или заполнить графики работы сотрудников, а стандартный список календарей все еще не отображается? Рассмотрим несколько проверенных альтернативных способов получить прямой доступ к заполнению календаря:
Способ 1. Использование прямой навигационной ссылки.
Каждая форма в управляемом приложении 1С имеет свой уникальный адрес. Мы можем открыть справочник в обход любых интерфейсных меню и отключенных функциональных опций. Для этого выполним следующие действия:
e1cib/list/Справочник.ПроизводственныеКалендари и нажмем кнопку Перейти.Программа принудительно откроет искомую форму списка справочника.
Способ 2. Переход через связанные графики работы.
Производственный календарь всегда жестко связан со справочником графиков работы сотрудников. Мы можем зайти в календарь «с черного хода»:
Таким образом, комбинируя предложенные методики, мы гарантированно сможем решить возникшую проблему с видимостью производственного календаря после обновления 1С:Бухгалтерии предприятия 3.0 и обеспечить бесперебойную работу пользователей в информационной базе.