← На главную
В процессе коллективной разработки в среде 1С:Предприятие часто возникает ситуация, когда после удаления объектов метаданных (например, ПодпискиНаСобытия или ОбщиеМодули) попытка поместить изменения в хранилище заканчивается неудачей. Особенное недоумение вызывает ошибка «404 - файл или каталог не найден», если хранилище опубликовано на веб-сервере (IIS или Apache). На первый взгляд кажется, что сервер «потерял» базу хранилища, но на самом деле проблема кроется в особенностях передачи данных и настройках безопасности.
Разберем подробно причины возникновения этой ошибки и пошагово пройдем по методам ее решения, от простых манипуляций в Конфигураторе до тонкой настройки веб-сервера.
Метод 1. Рекурсивный захват и работа с корнем конфигурации
Часто ошибка возникает из-за того, что удаленные объекты оставили «фантомные» связи в корне конфигурации или связанных подсистемах. Если мы попытаемся положить изменения только по частям, сервер может не сопоставить структуру метаданных.
Рассмотрим алгоритм действий для корректной синхронизации:
- Отменим все текущие захваты объектов, если это возможно. Если система не дает «отпустить» объекты, попробуем выполнить Сравнение/объединение конфигурации с хранилищем.
- В окне «Хранилище конфигурации» выберем корневой элемент (самую верхнюю строку с названием конфигурации).
- Выполним команду «Захватить в хранилище». В появившемся диалоговом окне обязательно установим флаг «Захватывать рекурсивно». Это критически важно, так как при удалении подписок на события изменения затрагивают не только сами подписки, но и состав объектов, к которым они относятся.
- После успешного захвата корня попробуем снова произвести удаление объектов (если они вернулись после объединения) и выполним «Поместить в хранилище».
Метод 2. Очистка локального кэша хранилища
Проанализируем ситуацию на стороне клиентского компьютера. 1С сохраняет временные данные о состоянии хранилища в локальных папках пользователя. Если произошел сбой при обновлении (например, при переходе на новую версию УПП), кэш может содержать информацию об объектах, которых уже нет в основной базе хранилища, что и приводит к конфликту протокола HTTP.
Выполним следующие шаги для очистки:
- Закроем все запущенные экземпляры Конфигуратора.
- Перейдем в каталог
%AppData%\Local\1C\1cv8\.
- Найдем папки с идентификаторами баз (длинные буквенно-цифровые названия). Внутри них нас интересует каталог
1Cv8FTxt и любые папки, содержащие в названии слово storage.
- Удалим эти каталоги. При следующем подключении к хранилищу конфигуратор заново загрузит актуальное состояние метаданных с сервера.
Метод 3. Настройка фильтрации запросов в IIS (Allow Double Escaping)
Если первые два метода не помогли, значит, причина кроется в настройках веб-сервера IIS. Ошибка 404 в данном контексте часто означает не отсутствие файла, а то, что модуль Request Filtering заблокировал запрос от 1С, посчитав его опасным или некорректным.
Выясним причину: при удалении объектов или передаче длинных имен метаданных 1С формирует URL, который может содержать спецсимволы или последовательности, интерпретируемые IIS как попытка взлома. Посмотрим, как это исправить:
- Откроем Диспетчер служб IIS.
- Выберем в дереве слева наш сайт или виртуальное приложение, в котором опубликовано хранилище.
- В центральной части окна (раздел IIS) откроем пункт «Фильтрация запросов» (Request Filtering).
- В правой панели действий выберем «Изменить параметры функции» (Edit Feature Settings).
- Установим флажок «Разрешить двойное экранирование» (Allow double escaping).
- Также проверим параметры «Максимальная длина контента» (Maximum allowed content length). Для крупных конфигураций типа УПП или ERP рекомендуется установить значение не менее
104857600 (100 МБ) или выше.
- Перезапустим службу IIS (команда
iisreset в командной строке).
Метод 4. Проверка логической целостности конфигурации
Иногда помещение в хранилище блокируется из-за «битых» ссылок внутри самой конфигурации. Удаленная подписка на событие могла оставить след в объекте-источнике. Перед помещением в хранилище обязательно выполним полную проверку.
Разберем шаги проверки:
- Зайдем в меню Конфигурация — Проверка конфигурации.
- Установим флажки:
- Логическая целостность конфигурации;
- Поиск некорректных ссылок.
- Нажмем «ОК» и дождемся завершения процесса. Если в списке ошибок появятся упоминания удаленных подписок, нам необходимо зайти в соответствующие объекты и вручную очистить ссылки.
Метод 5. Использование прямого файлового доступа (file://)
Для диагностики и разового исправления ситуации мы можем временно отказаться от протокола http://. Это позволит нам понять, связана ли проблема с веб-сервером или с самой базой хранилища 1cv8ddb.1cd.
- Если сервер хранилища доступен по локальной сети, попробуем подключиться к нему через сетевой путь (например,
\\server\storage_folder).
- В Конфигураторе выберем Хранилище — Подключиться к хранилищу и укажем путь через
file://.
- Если в файловом режиме удаление и помещение объектов проходят успешно, значит, проблема 100% в настройках IIS или прокси-сервера.
- После успешного помещения изменений в файловом режиме можно вернуться к работе через веб-сервер — структура метаданных на сервере уже будет обновлена, и ошибка 404, скорее всего, исчезнет.
Метод 6. Исправление целостности самого хранилища
Если даже через файловый доступ возникают ошибки, возможно, повреждена внутренняя база данных хранилища. Посмотрим, как выполнить лечение:
- Запустим Конфигуратор без открытия основной базы.
- Зайдем в меню Администрирование — Хранилище конфигурации — Проверка целостности хранилища.
- Укажем путь к базе хранилища и запустим процесс восстановления. Это исправит возможные ошибки в таблицах истории и ссылках между версиями.
Важный совет: При работе с тяжелыми конфигурациями (УПП, ERP) старайтесь не удалять объекты «напрямую». Рекомендуется сначала захватить объект, переименовать его с префиксом Удалить_, очистить все его свойства и ссылки, поместить в хранилище, и только вторым этапом (желательно при монопольном захвате всей конфигурации) производить окончательное удаление.