Рассмотрим довольно частую и неприятную ситуацию: в системе 1С есть регистр сведений, который исправно накапливал данные, но в какой-то момент запись в него прекратилась. При этом видимых причин нет — конфигурация не менялась, пользователи работают как обычно, а старые записи на месте. В нашем примере проблема возникла с регистром Наличие Файлов, который связан с документом ЗаявкиДС и используется для визуального отображения наличия прикрепленного файла в списке документов. Разберем по шагам, как найти и устранить причину такой неисправности.
Прежде чем вносить какие-либо изменения или углубляться в отладку, необходимо убедиться, что мы можем воспроизвести ошибку в контролируемой среде. Всегда выполняйте диагностику на копии рабочей базы данных! Это защитит вас от случайной потери данных или нарушения бизнес-процессов.
Проведем простой эксперимент:
ЗаявкиДС датой до предполагаемого начала проблемы (например, за январь, как в обсуждаемой теме). Прикрепим к нему файл и проведем документ. Проверим, появилась ли запись в регистре сведений Наличие Файлов.Результаты этого теста дадут нам важную информацию. Если в первом случае запись создается, а во втором — нет, значит, проблема, скорее всего, не связана с базовым кодом прикрепления файлов, а зависит от каких-то дополнительных условий, возможно, связанных с датой или статусами, которые изменились с февраля.
Чаще всего подобные "плавающие" проблемы связаны с фоновыми процессами, правами или внешними факторами. Проанализируем основные гипотезы по порядку.
Очень вероятно, что запись в регистр сведений выполняется не в момент прикрепления файла, а отдельным фоновым или регламентным заданием, которое обрабатывает документы. Это стандартная практика для оптимизации производительности.
Все функции -> Стандартные -> Регламентные и фоновые задания. Поищем в списке задание, название которого может быть связано с обработкой файлов, документов или нашим регистром (например, "Обновление регистра наличия файлов", "Обработка присоединенных файлов").Все функции -> Стандартные -> Журнал регистрации. Установим отбор по событию "Ошибка" и по имени нужного регламентного задания (если мы его нашли). Часто задание может завершаться с ошибкой, но внешне это никак не проявляется. Текст ошибки в журнале — это прямая подсказка к решению.Если проблема не в регламентных заданиях, возможно, дело в правах доступа или доступе к файловой системе.
Наличие Файлов. Возможно, после недавнего обновления изменились роли или были внедрены ограничения на уровне записей (RLS), которые запрещают операцию.Константы или других регистрах), которые могли бы отключить механизм записи. Например, константа ИспользоватьПрикрепленныеФайлы.Если предыдущие шаги не дали результата, отладчик — наш самый надежный инструмент. Он позволит пошагово пройти весь путь выполнения кода и увидеть, в какой момент и почему не происходит запись.
ЗаявкиДС. Обычно это обработчик события в форме документа или общая команда. Установим в этом месте точку останова.Наличие Файлов.Отладка -> Подключение или запустить сеанс с специальным ключом /Debug, который заставит фоновые процессы выполняться в основном потоке. Это позволит использовать точки останова в коде регламентного задания.Иногда корень проблемы кроется в менее очевидных вещах, особенно если недавно проводились обновления.
НаборЗаписей. Классическая ошибка: разработчик считывает набор записей регистра с установленным отбором (например, по конкретному документу), выполняет какие-то действия, а затем записывает его обратно, но уже без отбора. В таком случае система затирает все записи в регистре, где значения измерений пустые. Это может выглядеть как прекращение записи, хотя на самом деле данные сначала записываются, а потом сразу стираются.Конфигуратор -> Администрирование -> Тестирование и исправление) с обязательным предварительным созданием резервной копии.Систематический подход, начиная от простого воспроизведения и заканчивая глубокой отладкой, почти всегда позволяет найти причину, по которой данные перестают попадать в регистр. Главное — действовать последовательно и не забывать про резервные копии.