Выгрузка каталога товаров (прайса) в формате XLS, архивация полученного файла и отправка на FTP


Внешняя обработка выгрузки прайса (Каталога номенклатуры с ценой, остатком и другими данными) в формате Excel (XLS) (для обмена с интернет-магазином).
Позволяет формировать, сохранять, архивировать и отправлять на FTP-ресурс прайс-лист В ФОРМАТЕ EXCEL.

Писалась для КА 1.1.115.1, платформа 8.2, тестировалась на ней же.

С помощью технологии ADO можно легко создавать и заполнять файлы excel прямо из 1С.

Не требуется запуск самого процесса excel.exe, как это происходит в случае использования OLE-сервера excel.application, а следовательно, на него не тратятся ресурсы. Не требуется самого приложения EXCEL, достаточно, чтобы на компьютере был установлен OLEDB провайдер Microsoft.Jet.OLEDB.4.0 (он входит в состав практически всех ОС семейства Windows) Это особенно актуально, когда данный код выполняется на сервере 1С:Предприятия, например в качестве регламентного задания.

Полезно также узнать на примере моей обработки, как можно через 1с-код архивировать и отправлять файлы на FTP

В моих публикациях имеется подобная обработка выгрузки прайса в формате XML, теперь же я сделал обработку, позволяющую:

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

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

3. Сформировать из полученных данных файл формата Excel (с определенным составом колонок) и записать его на жесткий диск либо на сетевой ресурс.

4. Заархивировать и отправить полученный файл на FTP-ресурс

Сейчас в Excel-файл выводится следующий состав полей:
Код, Артикул, Наименование, Остаток, ПолноеНаименование, КодЕдиницыИзмерения, Цена. Состав и положение колонок можно менять как угодно.

Все информационные сообщения (ошибки и др.) о работе обработки выводятся в ЖурналРегистрации

Тип цены жестко прописан в запросе — по умолчанию берется цена по коду 000000001 "Розничная"

Цена и остаток берется из среза последних, на момент выгрузки, это сделано специально, для обновлении информации в интернет-магазине.

При выгрузке обработка в журнал регистрации выдает список товаров, на которые по каким-либо причинам не установлена цена.

6 Comments

  1. premierex

    (0)

    Тип цены жестко прописан в запросе — по умолчанию берется цена по коду 000000001 «Розничная»

    Просто жесть!

    Reply
  2. pav22001

    (1)

    В чем проблема?

    Reply
  3. premierex

    (2) Проблема в том, что, как я полагаю, код у типа цены «Розничная» может отличаться в различных базах данных. И, опять же по моему скромному мнению, использование функции «НайтиПоКоду» — моветон в программировании. Если обработка внешняя, вполне можно сделать отбор по типу цен, номенклатуре, складу, чтобы можно было выгружать прайс товаров, имеющихся в наличиии, определенных групп, типов цен и т. д. Я вот этого всего на скриншотах, увы, не увидел.

    Reply
  4. pav22001

    Обработка писалась для преобразования в регламентное задание, то есть для встраивания модуля обработки в общие модули и создания регламентного задания, т.к. ручной запуск для периодического обмена — вот моветон в программировании.

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

    Не вижу никакой проблемы в переделке обработки под свою базу, причем переделки будут минимальны. В коде обработки на каждое действие даны пояснения.

    Кстати, «НайтиПоКоду» — работает быстрее аналогов, имхо

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

    Reply
  5. premierex

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

    )не в XML, а в XLS

    реализуется достаточно просто средствами встроенного языка 1С. И даже пакет MS Office устанавливать нет необходимости.

    Reply
  6. premierex

    (0)

    достаточно, чтобы на компьютере был установлен OLEDB провайдер Microsoft.Jet.OLEDB.4.0 (он входит в состав практически всех ОС семейства Windows)

    .

    А если сервер 1С на UNIX? Там тоже OLEDB провайдер Microsoft.Jet.OLEDB.4.0 в поставке идёт?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *