Dataexchange.assort
Выгрузка ассортимента
Название файла: 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С, этот параметр может быть необязательным
- вес - вес товара в килограммах
- объём - объём товара в кубических дециметрах
Важные моменты при настройке файлообмена
Тут описывается наш опыт, позволяющий вам успешно обойти «грабли».
Список процессов (этапов) и недопущение проблем
- Процесс генерации выгрузок (экспорта данных в файл из 1C, например)
- Процесс передачи (аплоада) файлов
- Процесс импорта выгрузок (в базу портала)
Три вышеописанных процесса всегда связаны друг с другом и выполняются в следующей последовательности: 1-2-3. Важно, чтобы следующий процесс никогда не начинался, пока не закончится предыдущий (например 2 еще не закончился, а уже начался 3). Также важно, набор данных с которыми работает процесс (этап) не менялся, пока процесс не завершит работу. Теперь опишем, как нужно проектировать скрипты, чтобы эти два правила выполнялись всегда.
- Генерация выгрузок. Пока выгрузка генерируется (пока идёт выгрузка данных в файл), файл должен иметь расширение t__. После завершения выгрузки (сброса всех данных в файл), происходит переименование расширения файла из t__ в tx_. Внимание программистам 1C! Если 1C умеет скидывать данные в файл «мгновенно», то это вовсе не означает, что жёсткий диск работает мгновенно и мгновенно записывает файл, а значит на это полагаться никак нельзя! Поэтому и требуется жонглирование с расширениями (или переносами между каталогами, если вам так будет удобнее).
- Каждую минуту (или каждые 2-3 минуты) запускается скрипт для передачи файлов на портал Мы рекомендуем использовать утилиту ncftpput исключительно из-за опции –DD, которая позволяет выполнять удаление файла, только если файл полностью скопирован. Этот же скрипт должен переименовать файлы после переноса из tx_ в txt.
- Скрипт на стороне портала должен начать обрабатывать файлы, для этого скрипт переносит все *.txt файлы во временную папку, которые затем сразу же обрабатывает. После обработки файлы переносятся в архив, где на всякий случай хранятся одну неделю.
Пример использования утилиты: ncftpput -S .tmp -DD -u ftp_login -p XXXXX ftp.host.ru /path *.tx_ *.txt
Бесплатный пакет утилит ncftp можно скачать по ссылке.