Почему в обработке «Загрузка данных из файла» не видны новые дополнительные реквизиты и как это исправить?

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

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

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

Выясняем причину: особенности работы механизма кэширования БСП

Для того чтобы понять суть проблемы, проанализируем поведение подсистемы загрузки данных при первом обращении к объекту сопоставления. Когда мы впервые запускаем обработку ЗагрузкаДанныхИзФайла для конкретного справочника (например, Справочник.Партнеры), система выполняет довольно ресурсоемкую операцию: опрашивает метаданные, собирает список всех доступных стандартных полей, а также динамически считывает из Плана видов характеристик (ПВХ) все активные дополнительные реквизиты, привязанные к этому справочнику.

После того как оптимальный бланк колонок сформирован, подсистема кэширует эту структуру. Это сделано разработчиками БСП для повышения производительности, чтобы при каждом последующем открытии формы загрузки не выполнять тяжелые запросы к базе данных. Структура колонок сохраняется в системную таблицу базы данных — Хранилище общих настроек.

Сохранение структуры производится по следующим ключевым параметрам:

Когда мы впоследствии добавляем в систему новые дополнительные реквизиты (например, «Торговый представитель», «Канал продаж»), обработка ЗагрузкаДанныхИзФайла при открытии не знает об этих изменениях. Она обращается к Хранилищу общих настроек, видит там уже готовый сохраненный шаблон колонок, созданный при первом запуске, и выводит его пользователю. В результате новые реквизиты игнорируются и не выводятся на экран.

Ниже мы подробно разберем четыре практических метода, которые помогут заставить обработку отобразить новые реквизиты.

Способ 1. Программная очистка кэша настроек

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

Рассмотрим пример кода, который удаляет сохраненные настройки для текущего пользователя, столкнувшегося с проблемой:


// Определяем имя объекта сопоставления (в нашем случае это справочник Партнеры)
ИмяОбъектаСопоставления = "Справочник_Партнеры";
ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;

// Очищаем кэшированные колонки в хранилище для текущего сеанса
ХранилищеОбщихНастроек.Удалить(
    "ЗагрузкаДанныхИзФайла", 
    ИмяОбъектаСопоставления, 
    ИмяПользователя
);

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


// Глобальный сброс сохраненного бланка колонок для всех пользователей
ИмяОбъектаСопоставления = "Справочник_Партнеры";

ХранилищеОбщихНастроек.Удалить(
    "ЗагрузкаДанныхИзФайла", 
    ИмяОбъектаСопоставления, 
    Неопределено
);

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

Способ 2. Интерактивная очистка настроек в пользовательском режиме

Что делать, если мы работаем в закрытом облачном сервисе (например, 1С:Фреш) или у нас нет административного доступа для запуска произвольного программного кода? В этом случае администратор системы может сбросить устаревшие настройки стандартными интерактивными инструментами БСП.

Разберем этот процесс по шагам:

  1. Перейдем в раздел системы НСИ и администрирование и выберем пункт Настройки пользователей и прав.
  2. В появившемся меню найдем раздел «Пользователи» и перейдем по гиперссылке «Очистка настроек» (в некоторых версиях конфигураций эта кнопка может называться «Копирование и очистка настроек»).
  3. В открывшейся форме выберем конкретного пользователя информационной базы (или сразу список всех пользователей, если нам требуется массовый сброс).
  4. Переключимся на вкладку «Прочие настройки» или «Внешний вид» (точная вкладка зависит от редакции БСП в вашей конфигурации).
  5. В представленном дереве сохраненных параметров найдем ветку с наименованием обработки ЗагрузкаДанныхИзФайла и выделим строку, соответствующую нужному объекту сопоставления (например, Справочник.Партнеры).
  6. Нажмем кнопку «Очистить» в верхней панели управления формой.

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

Способ 3. Использование функции «Изменить бланк» внутри обработки

Существует еще один очень простой пользовательский способ управления колонками, который часто упускают из виду. Разработчики БСП добавили в саму форму загрузки данных инструмент для ручного редактирования структуры импорта. Рассмотрим, как им воспользоваться:

  1. Запустим обработку Загрузка данных из файла и выберем режим сопоставления для требуемого справочника.
  2. На первом шаге «Заполнение таблицы» обратим внимание на левый нижний угол формы. Найдем там гиперссылку «Изменить бланк» и нажмем на нее.
  3. В открывшемся диалоговом окне отобразится дерево всех доступных для сопоставления реквизитов данного справочника.
  4. Поскольку новые реквизиты уже зарегистрированы в метаданных и ПВХ, они обязательно отобразятся в этом списке. Нам достаточно найти их по наименованию (например, «Торговый представитель» или «Канал продаж»), установить напротив них флажки видимости и нажать кнопку «Сохранить бланк» (или «ОК»).

Использование этого метода позволяет пользователю мгновенно вывести нужные поля на форму, не прибегая к помощи программистов и не сбрасывая при этом другие персональные настройки интерфейса.

Способ 4. Проверка корректности создания и привязки дополнительных реквизитов

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

Используя предложенные системные подходы, мы сможем оперативно решать проблемы с импортом данных, поддерживать актуальность структуры загружаемых таблиц и избегать рутинной ручной работы при заполнении реквизитов в базах данных 1С. В качестве альтернативы штатному механизму импорта можно использовать обработку для загрузки и редактирования дополнительных реквизитов из Excel.

← На главную