Как сбросить или очистить пользовательские настройки внешней обработки в 1С?

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

Часто возникает ситуация, когда внешняя обработка в 1С после первого успешного запуска начинает выдавать ошибку при последующих открытиях. Как правило, первая мысль — виноваты сохраненные пользовательские настройки, которые "запомнились" в некорректном состоянии. Задача сводится к тому, чтобы вернуть обработку в ее первоначальный вид. Рассмотрим, как это сделать, а также проанализируем ситуацию, когда проблема кроется глубже, чем кажется на первый взгляд.

В нашем примере пользователь столкнулся с ошибкой после работы с типовой обработкой ЗагрузкаДанныхИзТабличногоДокумента.epf в конфигурации «Зарплата и Управление Персоналом 3.1». Стандартные методы очистки не помогали, что и привело к поиску решения.

Шаг 1. Диагностика: настройки или несовместимость?

Прежде чем приступать к удалению настроек, важно убедиться, что причина ошибки именно в них. В обсуждаемой ситуации ключевой проблемой оказалась попытка использовать старую обработку, написанную для обычных форм (платформа 8.2), в современной конфигурации, работающей в режиме управляемого приложения (ЗУП 3.1).

Это фундаментальная несовместимость. Старая обработка пытается выполнить код, который некорректно работает в управляемом режиме. Например, она может пытаться интерактивно создать форму документа, для которого в новой конфигурации такая операция запрещена или требует предварительного заполнения реквизитов, что и вызывает ошибку. Как было отмечено, в ЗУП 3.1 документ ДанныеДляРасчетаЗарплаты нельзя создать интерактивно без указания ВидДокумента.

Вывод: Если вы работаете в современной конфигурации (ERP, УТ 11, БП 3.0, ЗУП 3.1 и т.д.), убедитесь, что используемая вами внешняя обработка предназначена для управляемых форм. В противном случае никакая очистка настроек не поможет. Наиболее правильное решение — найти актуальную версию обработки для управляемого приложения. При разработке новых решений на базе БСП можно использовать шаблон дополнительной обработки с разделением хранения настроек.

Если же вы уверены, что обработка совместима, а проблема именно в сохраненных параметрах, перейдем к методам их очистки.

Шаг 2. Простые способы сброса настроек (без программирования)

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

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

    1. Закройте все окна программы 1С.
    2. В окне запуска баз 1С выделите проблемную базу и нажмите "Удалить". Важно: это удалит только ярлык из списка, сама база данных останется нетронутой.
    3. Откройте "Проводник" Windows и вставьте в адресную строку %APPDATA%\1C\1cv8, нажмите Enter. Полностью удалите содержимое этой папки (или папку с идентификатором вашей базы, если знаете его).
    4. Теперь вставьте в адресную строку %LOCALAPPDATA%\1C\1cv8 и также удалите содержимое.
    5. Снова откройте окно запуска 1С, нажмите "Добавить", укажите путь к вашей информационной базе и добавьте ее в список.
    6. Запустите базу. Первый запуск будет немного дольше, так как кэш будет создаваться заново.
  2. Изменение идентификаторов обработки. Система привязывает настройки к внутреннему имени объекта и идентификатору его формы. Если их изменить, 1С будет считать обработку новой и не найдет для нее старых настроек.

    • Изменить имя обработки: Откройте обработку в конфигураторе. В палитре свойств найдите свойство "Имя" и измените его (например, с "ЗагрузкаИзТаблицы" на "ЗагрузкаИзТаблицы_1"). Сохраните обработку.
    • Изменить идентификатор формы: Добавьте обработку во временный узел конфигурации ("Внешние обработки"), а затем сохраните ее обратно на диск (правой кнопкой мыши -> "Сохранить как..."). Этот процесс часто приводит к смене внутреннего уникального идентификатора формы, что "отвязывает" ее от старых настроек.
  3. Стандартная очистка настроек. В режиме "Предприятие" есть стандартный инструмент: Администрирование - Настройки пользователей и прав - Очистка настроек. Здесь можно выбрать пользователя и типы настроек для удаления. Однако этот способ может не сработать, если разработчик обработки использовал нестандартный механизм их сохранения.

Шаг 3. Программные способы очистки настроек

Если простые методы не помогли, можно прибегнуть к программным решениям. Их можно выполнить через универсальную обработку "Консоль кода" или создать свою временную обработку. Для запуска подобных скриптов подойдёт консоль кода для управляемых форм.

Полная очистка всех настроек пользователя

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


// Получаем текущего пользователя
Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();

// Удаляем все его настройки
ОчиститьНастройкиПользователя(Пользователь);

Точечное удаление настроек из хранилища

Это самый точный способ, который позволяет удалить конкретную настройку, не затрагивая остальные. Сложность заключается в том, чтобы правильно определить ключ, под которым настройка сохранена. Обычно он имеет структуру "ТипОбъекта.ИмяОбъекта.ИмяФормы/ИмяСохраняемогоПараметра". Имя объекта можно посмотреть в свойствах обработки в конфигураторе.

Вот пример кода для удаления настроек окна и настроек данных формы для внешней обработки:


// Имя пользователя, для которого удаляем настройки. Можно получить программно.
ИмяПользователя = "ИвановИИ"; 

// Ключ для удаления настроек расположения окна формы
КлючНастроекОкна = "ВнешняяОбработка.МояОбработка.Форма.Форма/НастройкиОкна";

// Ключ для удаления настроек данных формы (например, отборов СКД)
КлючНастроекДанных = "ВнешняяОбработка.МояОбработка.Форма.Форма/КлючТекущихНастроекДанных";

// Удаляем настройку из системного хранилища
ХранилищеСистемныхНастроек.Удалить(КлючНастроекОкна, , ИмяПользователя);
ХранилищеСистемныхНастроек.Удалить(КлючНастроекДанных, , ИмяПользователя);

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

Перехват загрузки настроек на форме

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

Например, если проблема в сохраненном отборе системы компоновки данных (СКД), можно очистить его следующим образом:


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

Этот метод хорош тем, что он обратим: достаточно закомментировать код, и настройки снова начнут загружаться.

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

← На главную