Открыть главное меню

Dataexchange.assort

Версия от 11:51, 23 декабря 2013; Pva (обсуждение | вклад) (Отмена правки 2884, сделанной участником Pva (обс.))

Выгрузка ассортимента

Название файла: assort.txt Периодичность: раз в сутки

Формат: текстовый файл в кодировке Windows-1251, значения полей разделены табуляцией. Если какой-либо параметр не может быть заполнен, то он пропускается, т. е. разделители (табуляции) идут подряд. Каждая строка содержит 8 полей: бренд, номер по бренду, описание, цена, наличие, код товара, вес, объём. Каждый товар (уникальное сочетание пары бренд-номер) должен встречаться в файле только один раз!

Пример содержимого файла (показаны только три первых товара, символ табуляции обозначен " <таб> "):

  Febi <таб> 01089 <таб> Антифриз <таб> 190.0 <таб> 73 <таб> 010023 <таб> 2.4 <таб> 1.5
  Febi <таб> 09918 <таб> Колодки тормозные передние <таб> 820 <таб>  <таб> 02177 <таб>  <таб> 2,32
  Ruville <таб> 01089 <таб> Антифриз <таб> 190.0 <таб> 10 <таб> 100034 <таб> 2.4 <таб> 1.5

Внимание, нужно понимать следующее:

  1. в значении любого поля должны отсутствовать знаки табуляции, т.к. они являются разделителями
  2. в качестве разделителя дробного числа может использоваться запятая или точка
  3. цена - цена товара в валюте прайса
  4. наличие - текущий остаток на складе
  5. код товара - код товара в 1С, этот параметр может быть необязательным
  6. вес - вес товара в килограммах
  7. объём - объём товара в кубических дециметрах

Важные моменты при настройке файлообмена

Тут описывается наш опыт, позволяющий вам успешно обойти «грабли».

Список процессов (этапов) и недопущение проблем

  1. Процесс генерации выгрузок (экспорта данных в файл из 1C, например)
  2. Процесс передачи (аплоада или даунлоада) файлов
  3. Процесс импорта выгрузок (из файла в 1C или в базу портала)

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

  1. Генерация выгрузок. Пока выгрузка генерируется (пока идёт выгрузка данных в файл), файл должен иметь расширение t__. После завершения выгрузки (сброса всех данных в файл), происходит переименование расширения файла из t__ в tx_. Внимание программистам 1C! Если 1C умеет скидывать данные в файл «мгновенно», то это вовсе не означает, что жёсткий диск работает мгновенно и мгновенно записывает файл, а значит на это полагаться никак нельзя! Поэтому и требуется жонглирование с расширениями (или переносами между каталогами, если вам так будет удобнее).
  2. Каждую минуту (или каждые 2-3 минуты) запускается скрипт для передачи файлов на портал Мы рекомендуем использовать утилиту ncftpput исключительно из-за опции –DD, которая позволяет выполнять удаление файла, только если файл полностью скопирован. Этот же скрипт должен переименовать файлы после переноса из tx_ в txt.
  3. Скрипт на стороне портала должен начать обрабатывать файлы, для этого скрипт переносит все *.txt файлы во временную папку, которые затем сразу же обрабатывает. После обработки файлы переносятся в архив, где на всякий случай хранятся одну неделю.

Вышеописанный процесс подходит для передачи данных от 1C к порталу. Если требуется передача данных от портала к 1C (заказы и т.д.), то описанные важные моменты учитываются аналогично.

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

Пример использования утилиты: ncftpput -S .tmp -DD -u ftp_login -p XXXXX ftp.host.ru /path *.tx_ *.txt

Бесплатный пакет утилит ncftp можно скачать по ссылке.