При активном внедрении и сопровождении систем на платформе 1С:Предприятие 8.3 (таких как «1С:Управление торговлей», «1С:ERP Управление предприятием» или «1С:Комплексная автоматизация») пользователи часто сталкиваются с необходимостью расширения стандартной аналитики. Для этого в типовых решениях используется механизм дополнительных реквизитов и сведений, разработанный на базе Библиотеки стандартных подсистем (БСП). Однако при попытке массово загрузить информацию через стандартный инструмент «Загрузка данных из файла» возникает неприятная методическая сложность: новые добавленные реквизиты просто не появляются в табличном документе для сопоставления, хотя старые реквизиты отображаются без проблем.
В этой статье мы подробно разберем, почему возникает подобное поведение системы, изучим архитектурные особенности хранения настроек БСП, а также рассмотрим несколько эффективных способов решения этой проблемы — от простых интерактивных действий до программного сброса кэша настроек.
Для того чтобы понять суть проблемы, проанализируем поведение подсистемы загрузки данных при первом обращении к объекту сопоставления. Когда мы впервые запускаем обработку ЗагрузкаДанныхИзФайла для конкретного справочника (например, Справочник.Партнеры), система выполняет довольно ресурсоемкую операцию: опрашивает метаданные, собирает список всех доступных стандартных полей, а также динамически считывает из Плана видов характеристик (ПВХ) все активные дополнительные реквизиты, привязанные к этому справочнику.
После того как оптимальный бланк колонок сформирован, подсистема кэширует эту структуру. Это сделано разработчиками БСП для повышения производительности, чтобы при каждом последующем открытии формы загрузки не выполнять тяжелые запросы к базе данных. Структура колонок сохраняется в системную таблицу базы данных — Хранилище общих настроек.
Сохранение структуры производится по следующим ключевым параметрам:
"ЗагрузкаДанныхИзФайла"."Справочник_Партнеры" или "Справочник_Номенклатура".Когда мы впоследствии добавляем в систему новые дополнительные реквизиты (например, «Торговый представитель», «Канал продаж»), обработка ЗагрузкаДанныхИзФайла при открытии не знает об этих изменениях. Она обращается к Хранилищу общих настроек, видит там уже готовый сохраненный шаблон колонок, созданный при первом запуске, и выводит его пользователю. В результате новые реквизиты игнорируются и не выводятся на экран.
Ниже мы подробно разберем четыре практических метода, которые помогут заставить обработку отобразить новые реквизиты.
Если мы являемся разработчиками, имеем доступ к конфигуратору или используем внешнюю обработку «Консоль кода», самым быстрым и радикальным решением будет очистка закэшированных данных непосредственно из Хранилища общих настроек. После удаления старого шаблона система будет вынуждена принудительно перестроить структуру колонок при следующем открытии импорта.
Рассмотрим пример кода, который удаляет сохраненные настройки для текущего пользователя, столкнувшегося с проблемой:
// Определяем имя объекта сопоставления (в нашем случае это справочник Партнеры)
ИмяОбъектаСопоставления = "Справочник_Партнеры";
ИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
// Очищаем кэшированные колонки в хранилище для текущего сеанса
ХранилищеОбщихНастроек.Удалить(
"ЗагрузкаДанныхИзФайла",
ИмяОбъектаСопоставления,
ИмяПользователя
);
Если проблему нужно решить массово для всех пользователей системы (чтобы новые реквизиты гарантированно появились у каждого сотрудника без необходимости индивидуального сброса), мы можем запустить очистку глобально. Для этого вместо конкретного имени пользователя передадим значение Неопределено:
// Глобальный сброс сохраненного бланка колонок для всех пользователей
ИмяОбъектаСопоставления = "Справочник_Партнеры";
ХранилищеОбщихНастроек.Удалить(
"ЗагрузкаДанныхИзФайла",
ИмяОбъектаСопоставления,
Неопределено
);
После выполнения данного кода кэш будет полностью сброшен. При очередном открытии обработки импорта система сформирует совершенно новый бланк колонок, куда попадут абсолютно все актуальные дополнительные реквизиты.
Что делать, если мы работаем в закрытом облачном сервисе (например, 1С:Фреш) или у нас нет административного доступа для запуска произвольного программного кода? В этом случае администратор системы может сбросить устаревшие настройки стандартными интерактивными инструментами БСП.
Разберем этот процесс по шагам:
ЗагрузкаДанныхИзФайла и выделим строку, соответствующую нужному объекту сопоставления (например, Справочник.Партнеры).Этот интерактивный способ абсолютно безопасен, не требует написания программного кода и позволяет точечно управлять интерфейсными кэшами пользователей.
Существует еще один очень простой пользовательский способ управления колонками, который часто упускают из виду. Разработчики БСП добавили в саму форму загрузки данных инструмент для ручного редактирования структуры импорта. Рассмотрим, как им воспользоваться:
Загрузка данных из файла и выберем режим сопоставления для требуемого справочника.Использование этого метода позволяет пользователю мгновенно вывести нужные поля на форму, не прибегая к помощи программистов и не сбрасывая при этом другие персональные настройки интерфейса.
Если вы выполнили очистку кэша по всем вышеуказанным методикам, но реквизиты все равно упорно не появляются в обработке, велика вероятность, что допущена логическая ошибка при их первоначальном создании в системе. Проанализируем критически важные параметры настройки свойств:
НСИ и администрирование -> Дополнительные реквизиты. Нам необходимо убедиться, что новые реквизиты добавлены именно в ту группу (набор свойств), которая соответствует целевому справочнику. Например, для партнеров это должен быть набор «Партнеры (Общие)» или набор конкретного сегмента, если в системе включено разделение свойств. Если реквизит просто создан в ПВХ, но не распределен в нужный набор, обработка загрузки его не увидит.Используя предложенные системные подходы, мы сможем оперативно решать проблемы с импортом данных, поддерживать актуальность структуры загружаемых таблиц и избегать рутинной ручной работы при заполнении реквизитов в базах данных 1С. В качестве альтернативы штатному механизму импорта можно использовать обработку для загрузки и редактирования дополнительных реквизитов из Excel.