Переход с облачного сервиса «МойСклад» на локальную или облачную версию 1С — это задача, с которой часто сталкиваются компании при масштабировании бизнеса. Основная сложность заключается в том, что стандартные средства синхронизации зачастую переносят только справочники и документы реализации, оставляя «за бортом» заказы покупателей, счета и историю взаимоотношений. В данной статье мы разберем основные методы переноса данных, проанализируем технические нюансы работы с API и рассмотрим способы адаптации данных для старых конфигураций, таких как Управление торговлей 10.3.
Для разового переноса остатков, справочников товаров и даже простых документов (заказов) в конфигурации на обычных формах (УТ 10.3) наиболее эффективным и быстрым способом является использование формата Excel или CSV. Проанализируем алгоритм действий:
ЗагрузкаДанныхИзТабличногоДокумента.epf (она входит в состав ИТС или встроена во многие конфигурации).Артикул из Excel должен соответствовать реквизиту Артикул справочника Номенклатура в 1С.ДокументСсылка.ЗаказПокупателя и настроим создание табличной части Товары.Рассмотрим преимущество этого метода: он не требует навыков программирования и позволяет быстро «закинуть» данные в систему, минуя сложности настройки правил обмена XML.
Современный «МойСклад» предоставляет мощное REST API, работающее с данными в формате JSON. Если нам требуется автоматизированный перенос или постоянный обмен, этот способ является наиболее надежным. В 1С версии 8.3 для этого используются объекты HTTPСоединение и ЧтениеJSON.
Разберем пример кода для получения списка заказов через API:
// Настройка соединения с API МойСклад
Сервер = "online.moysklad.ru";
Ресурс = "/api/remap/1.2/entity/customerorder";
Заголовок = Новый Соответствие;
Заголовок.Вставить("Authorization", "Basic " + КодироватьСтрокуBase64(Логин + ":" + Пароль));
Соединение = Новый HTTPСоединение(Сервер, 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс, Заголовок);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(Чтение);
// Далее следует обход структуры Данные.rows и создание документов в 1С
КонецЕсли;
Проанализируем ситуацию, когда необходимо загрузить не только заголовки, но и позиции заказа. В API 1.2 позиции находятся по отдельной ссылке в поле positions. При обработке каждого заказа нам потребуется выполнить дополнительный запрос к вложенному ресурсу, чтобы получить состав табличной части.
Для современных конфигураций (Управление торговлей 11, Управление нашей фирмой (УНФ), Бухгалтерия предприятия 3.0) сервис «МойСклад» поддерживает протокол EnterpriseData. Это универсальный формат обмена, который понимает большинство типовых решений 1С.
Выясним причину, почему это удобно: 1С и «МойСклад» уже имеют преднастроенные узлы обмена. В разделе «Приложения» сервиса «МойСклад» выберем «Синхронизация с 1С» и укажем версию EnterpriseData. Данный метод позволяет переносить:
Важный нюанс: для старой УТ 10.3 этот способ не подойдет без серьезной доработки, так как поддержка EnterpriseData появилась в платформе значительно позже выхода этой конфигурации.
Если конечной целью является перенос данных в УТ 10.3, но стандартные обработки не справляются с объемом, рассмотрим схему «Шлюза»:
Бухгалтерия предприятия 3.0.ВыгрузкаЗагрузкаДанныхXML.epf или настроенные правила в Конвертации данных 2.0 для переброса в УТ 10.3.Этот метод позволяет использовать уже готовые и отлаженные механизмы обмена, минимизируя риск потери данных при прямом переносе.
Проанализируем интересное решение, предложенное в обсуждении. Если штатная выгрузка в 1С поддерживает только документы реализации, а вам крайне важны заказы, можно выполнить следующую последовательность действий:
Реализация (можно пометить их специальным префиксом или проектом).Реализаций создаст документы Заказ покупателя и перенесет в них табличные части.Для копирования табличных частей в 1С можно использовать следующий программный подход:
Для Каждого СтрокаРеализации Из РеализацияОбъект.Товары Цикл
НоваяСтрока = ЗаказОбъект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаРеализации);
КонецЦикла;
ЗаказОбъект.Записать();
При переходе на BAS УНФ (или аналогичные решения для других регионов) стоит обратить внимание на настройки валют и единиц измерения. В «МоемСкладе» структура хранения единиц измерения может отличаться от классификатора 1С (ОКЕИ). Перед массовой загрузкой рекомендуется вручную создать основные группы товаров и единицы измерения в 1С, чтобы при импорте система смогла правильно сопоставить объекты по коду или наименованию.
Подводя итог, выбор метода зависит от глубины истории, которую нужно сохранить. Если важны только остатки — выбираем Excel. Если нужен полноценный оперативный учет с сохранением всех цепочек документов — настраиваем EnterpriseData или используем API v1.2.