Добрый день! Хотелось бы поделиться с вами своей разработкой. Начну с самого начала. Я работаю в компаниипредоставляющих, среди прочего, услуги 1с-программистов в рамках аутсорсинга. Не так давно, мы занимались внедрением для одной компании 1с Бухгалтерии. Загвоздка была в том, что данная организация на своих складах использовала систему складского учета Infor WMS и отказываться от неё категорически не собиралась. В следствии чего возникла необходимость проведения обмена данными с этой системой. Обслуживанием этой WMS занималась другая компания, у них уже были некоторые наработки со своей стороны: у них был свой FTP-сервер на который они могли в одни папки закидывать собранные Infor WMS xml-ки(Номенклатура, Контрагенты, Штрих-Коды, Приемка товаров, Отгрузка, Пересчет, Корректировка), и забирать из других. Ими была предложена как раз структура этих папок, а так же состав необходимых xml-ников, а остальным занимались уже мы. После недолгих обсуждений быра разработана такая система: в 1С должны быть созданы 2 склада: например "промежуточный" и "ответственного хранения(ОТХ)", как показано на одном из скриншотов.Так же для необходимых документов и справочников Номенклатура и Контрагенты были заведены ЗСО "Статус обмена" со значениями "Отправлено" и "Не отправлено". Для документов было так же свойство "Документ-подтверждение".
1. Приемка товаров регистрировалась в 1с документом "Перемещение товаров и услуг" со склада "ОТХ" на "Промежуточный";
2. Отгрузка регистрировалась как "Реализация товаров и услуг" на склад "Промежуточный"
3. Сообщения о перерасчетах и корректировках- "Перемещение товаров и услуг" с "Промежуточный" на склад "ОТХ" в случае изменения количества в сторону увеличения и наоборот, при уменьшении;
4. Что в 1с отражало Номенклатуру и Контрагентов из Infor WMS думаю и так понятно. Штрих-коды на начальном этапе было решено не хранить в 1с.
Отправка данных на сервер:
Каков был алгоритм работы? На начальном этапе обмен должен был проводить специальный человек(потом уже можно было бы это все автоматизировать, при желании клиента). Так вот, он запускал написанную обработку, выбирал необходимые документы отгрузки и приемки, при необходимости и номенклатуру с контрагентами и нажимал "отправить". Сначала, конечно же, созадавались ,по понятной для Infor WMS схеме, xml-ки с номенклатурой и контрагентами(причем не только выбранными непосредственно пользователем, а, конечно же, ещё и из выбранных документов), а потом уже и документы, и отправлялись на сервер FTP стандартными командами объекта 1с FTPСоединение. При этом у удачно отправленных объектов менялся статус обмена на "Отправлено".
Получение данных с сервера:
Тут так же все просто. Когда пользователю нужно, он нажимает кнопку "Получить" и xml-ки с подтверждениями, о получении отправленных ранее файлов. от Infor WMS забирались с FTP-сервера, сохранялись на компьютер, и, перемещались в папку архива. Да, в предложенной системе каталогов на сервере были, конечно же, папки типа "архив", куда перемещались обработанные файлы. Так вот, после этого файлы соответствующим алгоритмом разбирались, и выяснялось что именно пришло и как это обрабатывать. На каждое новое сообщение подтверждения создавался новый документ. Например, для документа "Перемещение ...", который был изначально, создавался документ-подтверждение "Перемещение..." но уже не со склада "ОТХ" на промежуточный, а наоборот. При этом новый документ записывался в свойство старого "Документ-подтверждение". Все вообщем-то просто. Однако, тут вскрылась одна проблема со стороны объекта FTPСоединение. Имена файлов, которые отправляла система WMS содержали знаки нижнего подчеркивания...И вот когда таковых было в единичном количестве - проблем не было, когда их было 2 - начинало работать с переменным успехом, а вот когда их было больше...Получение файлов все так же работало на "Ура", а вот перемещение, или хотя бы удалене уже не работали. Поэтому, пришлось писать ftp-скрипт, который в случае неудачной попытки стандартного перемещения(FTPСоеднение.Переместить(Путь1, Путь2)) пытался сделать это сам. Так уже все заработало. Ну, конечно же, если права доступа на FTP-сервере были настроены правильно.
Итог:
В итоге была создана внешняя обработка, которая в соответствии с созданной схемой ведет обмен данными с Infor WMS.
Естественно, данная программа имеет много встроенных интересных решений, легкая в использовании. На скриншотах можно увидеть, что для каждого из объектов создана своя вкладка, сделана возможность быстрого отбора по статусу обмена, групповой выбор, выбор по одному элементу. Конечно же выбор настроек FTP доступен интерактивно. Есть возможность, на той же форме настроек соединения с FTP, его и проверить. Все действия по приему и отправке данных сопровождается соответствующими оповещениями в окне сообщений. Есть ещё пара нюансов с работой программы, ранее не описанных. В случае каких-либо ошибокв документах, которые собираются отправлять(например несколько трочек с одинаковой номенклатурой), приводится возможность отредактировать этот документ и продолжить отправку. Причем, если ошибка не исправлена, или появилась новая, запрос на редактирование документа(или отмену его отправки) снова появляется. Так же, что бы в случае подобных ситуаций не так сильно зависеть от пользователя, на это действие повешан таймер: если за 5 секунд действие не выбрано - документ пропускаем и сообщаем об этом. Так же и при получении данных - если документ-подтверждение не может быть корректно заполнен программно на основе поступивших данных - программа предоставляет пользователю возможность его отредактировать. Если пользователь отказывается - сообщение о подтверждении с сервера FTP в архив не перемещается и будет отображено в следующий раз.
Вообщем программа получилась весьма удобной, а главное, корректно выполняющей свою основную задачу.
Буду рад ответить на все вопросы, а так же выслушать критику. Спасибо.