Как загрузить сложные справочники из Excel в «1С:Бухгалтерию 3.0» в сервисе «1С:Фреш»?

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

Работа в облачном сервисе «1С:Предприятие 8 через интернет» (1С:Фреш) накладывает на пользователей и разработчиков ряд жестких ограничений. Одно из самых частых затруднений — это невозможность использовать привычную универсальную обработку ЗагрузкаДанныхИзТабличногоДокумента.epf для переноса номенклатуры, контрагентов и других справочников из файлов Excel. Попытка загрузить стандартную обработку в личный кабинет сервиса заканчивается отклонением на этапе автоматического аудита безопасности.

В этой статье мы подробно проанализируем, почему классический загрузчик не работает в облаке, и разберем по шагам все доступные альтернативные методы загрузки сложных данных (включая такие реквизиты, как коды ТН ВЭД, страны происхождения, статьи затрат и т. д.) в конфигурацию «1С:Бухгалтерия 3.0» во Фреше.

---

Почему классическая «Универсальная загрузка» не проходит аудит во Фреше

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

  1. Выполнение произвольного кода (инъекции): В оригинальном универсальном загрузчике предусмотрен «Режим вычисления» для колонок. Это позволяет прямо в интерфейсе написать произвольную строку кода на встроенном языке 1С (например, для преобразования данных «на лету»). В облачной многопользовательской среде выполнение неконтролируемого динамического кода (через функции Выполнить() или Вычислить()) категорически запрещено, так как это ставит под угрозу безопасность данных других арендаторов сервера.
  2. Зависимость от COM-технологий: Традиционный загрузчик использует COM-соединение с приложением MS Excel (Excel.Application). Серверная инфраструктура 1С:Фреш функционирует под управлением операционных систем семейства Linux. В Linux-среде COM-объекты Microsoft физически отсутствуют, что привело бы к критической ошибке при попытке прочитать файл на стороне сервера.
  3. Прямой доступ к файловой системе: В облаке запрещены небезопасные интерактивные методы работы с локальными путями файлов пользователя. Все файлы должны передаваться на сервер исключительно через механизмы временного хранилища платформы.

---

Вариант №1. Использование встроенного механизма загрузки 1С:Бухгалтерии

Прежде чем прибегать к сложным техническим схемам, рассмотрим штатный функционал импорта данных, который уже встроен разработчиками фирмы «1С» в конфигурацию и гарантированно работает в облаке без каких-либо доработок.

Для загрузки номенклатуры или контрагентов выполним следующие действия:

  1. Перейдем в раздел Справочники и откроем список Номенклатура.
  2. Нажмем кнопку Загрузить в командной панели списка.
  3. В открывшемся окне система предложит загрузить подготовленный файл Excel, XLS, XLSX, CSV или ODS. Выберем наш файл на локальном компьютере.
  4. Платформа автоматически считает структуру таблицы и предложит сопоставить колонки файла с реквизитами справочника в базе данных.

Важное ограничение: Штатный импорт спроектирован для максимально простой загрузки. Он отлично справляется с базовыми реквизитами (наименование, артикул, единица измерения, ставка НДС, цена). Однако, если вам требуется загрузить специфические данные (например, код ТН ВЭД, страну происхождения, номер ГТД, признак маркированной продукции или дополнительные реквизиты), стандартный помощник загрузки вам не поможет — эти поля в нем просто отсутствуют.

---

Вариант №2. Механизм быстрого заполнения «из внешнего файла»

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

Проанализируем эту возможность на примере документа «Поступление (акт, накладная, УПД)»:

  1. Откроем документ поступления и перейдем на вкладку Товары.
  2. Нажмем кнопку Заполнить и выберем пункт меню Заполнить из внешнего файла.
  3. Перед нами откроется специальная табличная форма. Мы можем скопировать строки из нашего файла Excel (выделив их и нажав Ctrl+C) и вставить их прямо в форму 1С нажатием сочетания клавиш Ctrl+V.
  4. Нажмем кнопку Далее. Система попытается сопоставить позиции из файла с уже существующей в базе номенклатурой по наименованию, артикулу или штрихкоду. Если какие-то позиции не будут найдены, программа предложит создать их автоматически прямо из этого окна.

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

---

Вариант №3. Транзит данных через локальную информационную базу

Если перед нами стоит задача разовой масштабной загрузки сложного каталога товаров со множеством специфических реквизитов (включая страны происхождения, классификаторы ТН ВЭД и т.д.), идеальным выходом будет использование локальной «транзитной» базы данных.

Разберем по шагам эту надежную схему:

  1. Создание локальной копии/базы: Развернем на локальном компьютере пустую базу «1С:Бухгалтерия 3.0». Крайне важно, чтобы версия (релиз) локальной конфигурации в точности совпадала с релизом базы в облаке 1С:Фреш. Посмотреть версию в облаке можно через меню «Справка — О программе».
  2. Использование универсального загрузчика: В локальной базе у нас нет никаких ограничений безопасности. Скачиваем стандартную обработку ЗагрузкаДанныхИзТабличногоДокумента.epf для управляемых форм. Открываем ее через меню «Файл — Открыть».
  3. Настройка и загрузка: Настраиваем загрузку справочника номенклатуры со всеми необходимыми сложными реквизитами из файла Excel. Запускаем процесс. Локальный компьютер без проблем прочитает файл через COM или встроенные средства и создаст полноценные карточки номенклатуры со всеми взаимосвязями.
  4. Перенос данных в облако: После того как справочник успешно загружен и проверен в локальной базе, у нас есть два пути переноса его в облако:
    • Если база была абсолютно пустой, мы можем просто выгрузить ее целиком в файл для перехода в сервис (через меню «Администрирование — Перейти в сервис 1С:Фреш») и загрузить в облако как новую базу.
    • Если рабочая база в облаке уже ведется, мы можем настроить стандартную синхронизацию данных между локальной базой и облачной базой во Фреше, либо воспользоваться обработками выгрузки/загрузки данных в формате XML, которые предварительно прошли аудит в сервисе.

---

Вариант №4. Адаптация обработки «Загрузка данных из табличного документа» под аудит

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

Рассмотрим подробнее технические изменения, которые необходимо внести в код внешней обработки:

Во-первых, полностью откажемся от использования COM-соединения при чтении файлов Microsoft Excel. Вместо этого задействуем штатный кроссплатформенный метод платформы ТабличныйДокумент.Прочитать(). Он работает непосредственно на стороне сервера 1С (в том числе под Linux) и не требует наличия установленного пакета MS Office.

Пример безопасного серверного кода для чтения файла:


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

Во-вторых, полностью вырежем из модуля обработки интерактивные элементы управления, связанные с динамическим выполнением кода. Все строки кода, содержащие функции Вычислить() или Выполнить(), должны быть удалены или переписаны на безопасные предопределенные алгоритмы выбора данных.

В-третьих, адаптируем интерфейс для работы исключительно в управляемых формах. Все процедуры взаимодействия с файловой системой клиента должны использовать асинхронные вызовы платформы 8.3, такие как НачатьПомещениеФайлаНаСервер().

После проведения данной оптимизации готовую обработку можно смело отправлять через своего обслуживающего партнера на ручной аудит в личном кабинете 1С:Фреш. После успешного прохождения проверки она станет доступна вашей компании для постоянного использования в облаке.

---

Вариант №5. Магазин расширений 1С:Фреш

Не забываем и про самый простой современный способ расширения возможностей облака. Фирма «1С» активно развивает собственный Магазин расширений (Каталог расширений), интегрированный непосредственно в интерфейс сервиса.

Чтобы найти готовый профессиональный загрузчик:

  1. Войдите в базу «1С:Бухгалтерия» в облаке под правами администратора.
  2. Перейдите в раздел Администрирование и выберите пункт Каталог расширений (или Магазин решений).
  3. В строке поиска введите поисковый запрос, например: «Загрузка из Excel» или «Импорт номенклатуры».
  4. Перед вами откроется список расширений от сертифицированных партнеров «1С», которые уже успешно прошли аудит безопасности и гарантированно совместимы с текущей версией БП 3.0.
  5. Многие из этих решений предоставляются по подписке или имеют бесплатный демо-период. Установка выполняется в один клик без участия программиста.

Использование готовых решений из Магазина расширений избавляет вас от необходимости поддерживать и регулярно обновлять собственную обработку при выходе новых релизов конфигурации.

← На главную