Каждый разработчик 1С рано или поздно сталкивается с мистической ситуацией: в конфигураторе внесены правки, добавлен новый реквизит на форму или изменен программный код, база успешно обновлена (нажата клавиша F7), но при запуске в режиме «1С:Предприятие» всё остается по-прежнему. Мы видим старый интерфейс, старые кнопки и отсутствие новых данных. Давайте детально разберем, почему это происходит и как пошагово диагностировать и устранить эту проблему.
Прежде чем приступать к сложным техническим манипуляциям с кешем, проанализируем саму структуру формы. В современных конфигурациях формы могут быть перегружены элементами. Часто бывает так, что на одной форме сосуществуют несколько групп (страниц), визуально идентичных, но отображаемых в зависимости от различных условий (например, от вида операции документа или прав доступа пользователя).
Рассмотрим ситуацию: вы меняете ширину колонки или заголовок кнопки в одной группе, а в режиме «Предприятие» отображается совершенно другая группа элементов, которую вы не редактировали. Проверим следующие моменты:
ГруппаТовары и ГруппаТовары1.Видимость и ПользовательскаяВидимость. Возможно, редактируемый элемент программно скрыт, а вместо него отображается другой.ПутьКДанным.Разберем стандартный, но важный процесс обновления. Иногда разработчик сохраняет конфигурацию (Ctrl+S), но забывает обновить конфигурацию базы данных (F7). В этом случае в конфигураторе мы видим новые изменения (синяя иконка «бочки» активна), а в режиме «Предприятие» работает старая структура БД.
Проанализируем состояние иконки «Обновить конфигурацию базы данных» на панели инструментов. Если она активна — нажмем её. Если система выдает окно со списком изменений, внимательно изучим его и подтвердим реструктуризацию. Также полезно выполнить команду «Конфигурация — Мобильное приложение — Опубликовать», если разработка ведется для мобильных платформ, так как там механизмы обновления отличаются.
Если в вашей системе используются расширения, это одна из самых вероятных причин «игнорирования» изменений в основной конфигурации. Расширения имеют приоритет над основной конфигурацией. Разберем механизм их работы:
Если форма объекта (например, документа) заимствована в расширение, то при запуске системы 1С будет отрисовывать форму именно из расширения. Любые изменения, которые вы вносите в эту форму в основной конфигурации, будут просто игнорироваться, пока вы не внесете аналогичные правки в расширение или не удалите форму из него.
Как проверить наличие влияния расширений:
Часто проблема кроется не в программном коде, а в том, что 1С запомнила индивидуальные настройки формы для конкретного пользователя. Если пользователь (включая разработчика под своим логином) хоть раз изменил ширину колонки, перетащил кнопку или скрыл панель через меню «Изменить форму», эти настройки сохраняются в системных таблицах базы данных. При последующих изменениях в конфигураторе платформа будет считать настройки пользователя более приоритетными.
Рассмотрим, как сбросить эти настройки:
Если это не помогло, попробуем зайти в базу под другим пользователем, который ранее не открывал эту форму. Если у нового пользователя изменения видны — значит, дело точно в сохраненных настройках.
Проанализируем ситуацию, когда добавленный реквизит или кнопка просто не появляются на экране. В 1С существует механизм «Функциональные опции» (ФО). Если элемент формы связан с какой-либо функциональной опцией, он будет невидим до тех пор, пока значение этой опции (хранящееся обычно в константе или регистре сведений) не станет равным «Истина».
Проверим в конфигураторе свойство СоставФункциональныхОпций для нашего объекта или свойства самого элемента формы ФункциональныеОпции. Если связь установлена, найдем в интерфейсе «Предприятия» место, где включается данная опция (например, в разделе «Настройки»), и активируем её.
Кеширование — это верный друг производительности, но злейший враг разработчика при отладке. 1С кеширует структуру конфигурации, формы, модули и картинки. Рассмотрим способы очистки различных видов кеша.
1. Очистка локального кеша пользователя:
Самый простой способ — удалить базу из списка в стартере 1С и добавить её заново. При этом создается новая папка идентификатора базы, и старый кеш перестает влиять на работу. Если это не помогает, разберем ручной метод:
%AppData%\1C\1Cv8%LocalAppData%\1C\1Cv8eb65...). Не трогайте файлы конфигурационных настроек 1cestart.cfg.2. Очистка серверного кеша (для клиент-серверного варианта):
Если база работает на сервере, может произойти рассинхронизация между рабочим процессом сервера (rphost) и базой данных. В этом случае изменения в коде могут «повиснуть» в памяти сервера.
Выясним способ очистки: необходимо перезапустить службу 1C:Enterprise 8.3 Server Agent. В критических случаях может потребоваться очистка папки snaccfg в каталоге данных сервера (по умолчанию это C:\Program Files\1cv8\srvinfo).
Иногда мы ищем проблему в визуальном редакторе, забывая, что управляемая форма — это динамический объект. Проанализируем программный код модуля формы. Нас интересуют процедуры ПриСозданииНаСервере и ПриЧтенииНаСервере.
Посмотрим, нет ли в коде строк, подобных этой:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Динамическое управление видимостью
Элементы.ГруппаПодробности.Видимость = Ложь;
// Удаление или перемещение элементов
Элементы.Удалить(Элементы.СтараяКнопка);
КонецПроцедуры
Если в коде жестко прописано управление свойствами элементов, никакие галочки в конфигураторе не заставят элемент отобразиться иначе. Проверьте также наличие вызовов общих модулей, которые могут настраивать права доступа к полям (например, в БСП это подсистема «Управление доступом»).
Если вы работаете через браузер или тонкий клиент по протоколу HTTP, в цепочку добавляется еще одно звено — веб-сервер (IIS или Apache). Он тоже умеет кешировать статические данные. Разберем шаги по обновлению публикации:
World Wide Web Publishing Service для IIS).Ctrl+F5 для полной очистки кеша страницы.В редких случаях проблема кроется в особенностях отрисовки интерфейса при использовании режима совместимости со старыми версиями платформы. Если ваша база работает в режиме совместимости, например, «8.3.10», а используется платформа «8.3.23», механизмы отрисовки форм могут работать нестабильно.
Попробуем «встряхнуть» форму в конфигураторе: передвинем элемент на несколько пикселей, сохраним, вернем обратно и снова сохраним. Это заставит платформу полностью пересчитать XML-описание формы. Если это не помогает, можно попробовать выполнить тестирование и исправление информационной базы (меню «Администрирование — Тестирование и исправление») с включенной опцией «Реиндексация таблиц» и «Сжатие таблиц».
Подводя итог, можно сказать, что в 90% случаев проблема «невидимых изменений» решается либо внимательной проверкой имен элементов и расширений, либо сбросом пользовательских настроек формы. Последовательное применение описанных выше шагов поможет вам быстро найти причину и вернуться к продуктивной разработке.