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

Dataexchange.assort: различия между версиями

(Отмена правки 2884, сделанной участником Pva (обс.))
(Отмена правки 2883, сделанной участником Pva (обс.))
Строка 20: Строка 20:
 
# вес - вес товара в килограммах
 
# вес - вес товара в килограммах
 
# объём - объём товара в кубических дециметрах
 
# объём - объём товара в кубических дециметрах
 
== Важные моменты при настройке файлообмена ==
 
 
Тут описывается наш опыт, позволяющий вам успешно обойти «грабли».
 
 
Список процессов (этапов) и недопущение проблем
 
 
# Процесс генерации выгрузок (экспорта данных в файл из 1C, например)
 
# Процесс передачи (аплоада или даунлоада) файлов
 
# Процесс импорта выгрузок (из файла в 1C или в базу портала)
 
 
Три вышеописанных процесса всегда связаны друг с другом и выполняются в следующей последовательности: 1-2-3. Важно, чтобы следующий процесс никогда не начинался, пока не закончится предыдущий (например 2 еще не закончился, а уже начался 3). Также важно, набор данных с которыми работает процесс (этап) не менялся, пока процесс не завершит работу. Теперь опишем, как нужно проектировать скрипты, чтобы эти два правила выполнялись всегда.
 
 
# Генерация выгрузок. Пока выгрузка генерируется (пока идёт выгрузка данных в файл), файл должен иметь расширение t__. После завершения выгрузки (сброса всех данных в файл), происходит переименование расширения файла из t__ в tx_. <font color=red><i>Внимание программистам 1C! Если 1C умеет скидывать данные в файл «мгновенно», то это вовсе не означает, что жёсткий диск работает мгновенно и мгновенно записывает файл, а значит на это полагаться никак нельзя! Поэтому и требуется жонглирование с расширениями (или переносами между каталогами, если вам так будет удобнее)</i></font>.
 
# Каждую минуту (или каждые 2-3 минуты) запускается скрипт для передачи файлов на портал Мы рекомендуем использовать утилиту ncftpput исключительно из-за опции –DD, которая позволяет выполнять удаление файла, только если файл полностью скопирован. Этот же скрипт должен переименовать файлы после переноса из tx_ в txt.
 
# Скрипт на стороне портала должен начать обрабатывать файлы, для этого скрипт переносит все *.txt файлы во временную папку, которые затем сразу же обрабатывает. После обработки файлы переносятся в архив, где на всякий случай хранятся одну неделю.
 
 
<font color=red><i>Вышеописанный процесс подходит для передачи данных от 1C к порталу. Если требуется передача данных от портала к 1C (заказы и т.д.), то описанные важные моменты учитываются аналогично.
 
 
Кроме того, при настройке передачи данных от портала к 1С файлов выгрузок заказов необходимо удалять файлы выгрузок по окончании процесса скачивания.</i></font>
 
 
Пример использования утилиты:
 
ncftpput  -S .tmp -DD -u ftp_login -p XXXXX ftp.host.ru /path *.tx_ *.txt
 
 
Бесплатный пакет утилит ncftp можно скачать по [http://www.ncftp.com/download/ ссылке].
 
 
  
 
[[Category:Dataexchange]]
 
[[Category:Dataexchange]]

Версия 11:52, 23 декабря 2013

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

Название файла: 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. объём - объём товара в кубических дециметрах