Почему загруженные из Excel внутренние документы не видны в списке 1С:Документооборот и как это исправить?

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

При переносе данных или первичной настройке системы «1С:Документооборот 2.1» администраторы и программисты часто прибегают к использованию типовой обработки Загрузка данных из табличного документа. Этот инструмент позволяет быстро перенести информацию из файлов Excel в справочники базы данных. Однако при импорте во вспомогательный справочник Внутренние документы пользователи часто сталкиваются с неприятным симптомом: обработка сообщает об успешном завершении операции, но созданные документы физически не отображаются в списках программы.

В этой статье мы подробно разберем технические причины такого поведения платформы, проанализируем внутреннюю архитектуру хранения данных в «1С:Документооборот» и рассмотрим практические способы исправления уже загруженных документов, а также правила для корректного выполнения будущих импортов.

Проанализируем технические причины проблемы

Для того чтобы понять, почему созданные элементы справочника ВнутренниеДокументы оказываются невидимыми в динамических списках, нам необходимо заглянуть во внутреннее устройство конфигурации. Проблема кроется в сочетании работы механизма загрузки данных, кэширования списков и расчета прав доступа.

1. Использование режима обмена данными (признак загрузки)

Стандартная обработка загрузки данных по умолчанию записывает новые объекты в базу данных с установленным свойством ОбменДанными.Загрузка = Истина. Этот режим предназначен для ускорения миграции информации между базами. Платформа «1С:Предприятие» при этом намеренно отключает большинство стандартных бизнес-процедур, проверок валидации и обработчиков событий, прописанных в модулях объектов (например, в событиях ПередЗаписью и ПриЗаписи). Как результат:

2. Механизм кэширования динамических списков

В «1С:Документооборот» версии 2.1 для ускорения открытия списков документов используется специальный кэширующий регистр сведений — ДанныеВнутреннихДокументов. Динамический список на форме справочника делает сложное левое соединение с этим регистром, считывая из него большинство ключевых полей для отображения на форме. Запись в этот регистр сведений происходит программно именно внутри обработчиков событий модуля объекта при стандартной интерактивной записи. Поскольку при загрузке из Excel эти обработчики были проигнорированы из-за режима обмена, регистр остался пустым. Динамический список пытается соединиться с пустым регистром и в результате не выводит пользователю абсолютно ничего.

3. Отсутствие рассчитанных дескрипторов прав доступа

Права доступа в «1С:Документооборот» рассчитываются по сложным алгоритмам и хранятся в виде дескрипторов прав. При записи в режиме обмена система безопасности не получает сигнал о необходимости рассчитать права для нового документа. В итоге у системы отсутствуют записи о том, кто имеет право на чтение этих элементов. По умолчанию СУБД скрывает такие записи от пользователей (включая администраторов в зависимости от настроек ограничений на уровне записей RLS), защищая данные.


Способ 1. Исправление уже загруженных данных (если документы уже в базе)

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


ВЫБРАТЬ
    ВнутренниеДокументы.Ссылка,
    ВнутренниеДокументы.Код,
    ВнутренниеДокументы.Наименование
ИЗ
    Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы

Если запрос возвращает строки с вашими документами, но при этом колонка «Код» пуста, нам необходимо выполнить их массовую перезапись в обычном режиме (с отключенным режимом обмена). Разберем по шагам, как это сделать.

Шаг 1. Заполнение обязательных реквизитов

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

Для массового заполнения пустых реквизитов мы можем воспользоваться стандартной обработкой Групповое изменение реквизитов. Настройте отбор по загруженным элементам (например, по автору или дате создания) и укажите корректные значения для пустых полей.

Шаг 2. Перезапись документов в стандартном режиме

В обработке Групповое изменение реквизитов откройте меню «Дополнительные параметры» и обязательно снимите флаг «Выполнять в режиме загрузки данных» (или убедитесь, что он выключен). Запустите процесс изменения или просто выполните групповую перезапись элементов. При этом произойдет следующее:

  1. Каждому документу автоматически присвоится свободный Код в соответствии с правилами нумерации.
  2. Вызовутся стандартные обработчики модуля справочника, которые сформируют записи в регистре сведений ДанныеВнутреннихДокументов.
  3. Документы автоматически зарегистрируются в очереди на расчет прав доступа. После выполнения регламентных заданий по обновлению прав они станут видимы для пользователей.

Альтернативный вариант: Использование программного кода

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


Выборка = Справочники.ВнутренниеДокументы.Выбрать();
Пока Выборка.Следующий() Цикл
    // Фильтруем только те документы, которые загрузились некорректно (без кода)
    Если Не ЗначениеЗаполнено(Выборка.Код) Тогда
        ДокОбъект = Выборка.ПолучитьОбъект();
        
        // Отключаем режим загрузки, чтобы сработали стандартные события
        ДокОбъект.ОбменДанными.Загрузка = Ложь;
        
        // Генерируем новый код по правилам автонумерации
        ДокОбъект.УстановитьНовыйКод();
        
        // Проверяем и заполняем обязательные реквизиты при необходимости
        Если Не ЗначениеЗаполнено(ДокОбъект.Организация) Тогда
            ДокОбъект.Организация = Справочники.Организации.НайтиПоНаименованию("Наша Организация");
        КонецЕсли;
        
        Если Не ЗначениеЗаполнено(ДокОбъект.Папка) Тогда
            ДокОбъект.Папка = Справочники.ПапкиВнутреннихДокументов.НайтиПоНаименованию("Общая папка");
        КонецЕсли;
        
        Попытка
            ДокОбъект.Записать();
            Сообщить("Успешно обработан документ: " + ДокОбъект.Наименование);
        Исключение
            Сообщить("Ошибка записи документа " + ДокОбъект.Наименование + ": " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
КонецЦикла;

Способ 2. Правильная настройка будущих загрузок из табличного документа

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

1. Отключите режим обмена данными в обработке

В форме настройки обработки Загрузка данных из табличного документа перейдите в раздел параметров записи объектов. Найдите тумблер или флаг, отвечающий за режим загрузки (он может называться «Использовать режим обмена данными» или «Записывать в режиме загрузки»). Снимите этот флаг. После этого система начнет производить запись каждого созданного элемента точно так же, как если бы вы создавали документ вручную через интерфейс программы.

2. Тщательно готовьте файл Excel перед загрузкой

Когда режим обмена выключен, 1С не позволит записать документ с незаполненными обязательными полями — транзакция завершится ошибкой. Убедитесь, что в вашей таблице Excel присутствуют и сопоставлены в обработке следующие колонки:

3. Исключите поле «Код» из сопоставления

Не пытайтесь заполнять коды вручную в файле импорта и исключите колонку Код из сопоставления полей в обработке загрузки. Позвольте платформе автоматически генерировать уникальные коды и префиксы номеров документов в момент выполнения метода Записать(). Это гарантирует отсутствие дублей и сохранит сквозную нумерацию документов в системе.

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

← На главную