Автоматизация работы выездного торгового представителя при использовании учетной системы на платформе 1С:Предприятие 7.7 («Торговля и Склад 7.7») имеет свою специфику. Платформа 7.7 лишена встроенных веб-сервисов и поддержки протоколов REST/JSON, однако при небольшом ассортименте (например, прайс-лист на 300–500 позиций) и небольшом штате агентов задачу можно решить быстро и надежно. Рассмотрим наиболее эффективные готовые программные комплексы и альтернативные варианты реализации обмена данными.
Если требуется полноценное мобильное рабочее место с фиксацией маршрутов, контролем остатков, историей взаиморасчетов и удобным тач-интерфейсом под Android, целесообразно использовать проверенные коробочные решения с готовой интеграцией под 1С 7.7:
Когда в штате числится только один торговый агент, а номенклатурный список невелик (около 300 позиций), развертывание специализированных серверных комплексов мобильной торговли может оказаться избыточным. Разберем по шагам простой и устойчивый сценарий файлового обмена:
CSV или XLS и отправляется по электронной почте либо синхронизируется через клиент облачного диска.ЗаявкаПокупателя.Посмотрим на пример кода внешней обработки 1С 7.7 для разбора простого текстового файла формата CSV (разделитель — точка с запятой) со строками «КодТовара;Количество;Цена»:
Процедура ЗагрузитьЗаявкуИзФайла(ИмяФайла, ВыбКонтрагент, ВыбСклад)
ТекстФайла = СоздатьОбъект("Текст");
ТекстФайла.Открыть(ИмяФайла);
КолСтрок = ТекстФайла.КоличествоСтрок();
Если КолСтрок = 0 Тогда
Предупреждение("Файл пуст!");
Возврат;
КонецЕсли;
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
Док.Новый();
Док.ДатаДок = ТекущаяДата();
Док.Клиент = ВыбКонтрагент;
Док.Склад = ВыбСклад;
СпрН = СоздатьОбъект("Справочник.Номенклатура");
Для Ном = 1 По КолСтрок Цикл
Стр = ТекстФайла.ПолучитьСтроку(Ном);
Если ПустаяСтрока(Стр) = 1 Тогда
Продолжить;
КонецЕсли;
// Разбираем строку формата: Код;Количество;Цена
Поз1 = Найти(Стр, ";");
КодТовара = Лев(Стр, Поз1 - 1);
ОстатокСтр = Сред(Стр, Поз1 + 1);
Поз2 = Найти(ОстатокСтр, ";");
КолВо = Число(Лев(ОстатокСтр, Поз2 - 1));
ЦенаТовара = Число(Сред(ОстатокСтр, Поз2 + 1));
Если СпрН.НайтиПоКоду(КодТовара, 2) = 1 Тогда
Док.НоваяСтрока();
Док.Номенклатура = СпрН.ТекущийЭлемент();
Док.Количество = КолВо;
Док.Цена = ЦенаТовара;
Док.Сумма = Док.Количество * Док.Цена;
КонецЕсли;
КонецЦикла;
Док.Записать();
Сообщить("Создан документ: " + Док.ТекущийДокумент());
КонецПроцедуры
Современной альтернативой является создание простого Telegram-бота или мини-веб-приложения для планшета. Проанализируем архитектуру этого решения:
MSXML2.DOMDocument) или встроенные средства парсинга считывают полученный файл и регистрируют документ в базе данных..tmp), переименовывая их в целевое (например, .csv) только после полной завершенности записи. Это предотвратит ошибку чтения не полностью переданного файла со стороны 1С.