Для пользовательских бизнес-процессов (как их создавать и редактировать, описано в статье) можно использовать произвольный код при выгрузке документов из 1С. Для этого требуется проставить флаг «Выполнить только произвольный код при выгрузке» в главном окне настройки бизнес-процесса.
Далее, чтобы использовать произвольный код при выгрузке документа, в модуль интеграционной обработки нужно поместить экспортную функцию, программно формирующую данные документа для выгрузки в базу Mobile SMARTS. Имя функции должно совпадать с именем обработчика, указанным в поле «Обработчик выгрузки документа» на форме настройки бизнес-процесса.
Данные документа, возвращаемые функцией, должны быть представлены в виде структуры с ключами:
- ШапкаДокумента
- ТабличныеЧасти
ШапкаДокумента, в свою очередь, является структурой, ключи которой — это имена реквизитов шапки документа Mobile SMARTS. Значения ключей — выгружаемые значения соответствующих реквизитов 1С.
ТабличныеЧасти — это структура, ключами которой являются имена табличных частей документа Mobile SMARTS. Значения ключей — это массивы данных строк соответствующих табличных частей документа 1С.
Пример кода:
Функция ПоступлениеТоваровУслуг_Выгрузка(Документ1С, ДанныеНастроекИзКэша, НастройкаБП) Экспорт ДанныеДокумента = Новый Структура(); ДанныеШапки = Новый Структура(); ДанныеШапки.Вставить("Name", Строка(Документ1С)); ДанныеШапки.Вставить("ИмяТипаДокумента", НастройкаБП.ТипДокументаMS); ДанныеШапки.Вставить("НастройкаБизнесПроцесса", НастройкаБП.ID_БизнесПроцесса); ДанныеШапки.Вставить("ИмяБП", НастройкаБП.Название); ДанныеШапки.Вставить("Ид", XMLСтрока(Документ1С)); ДанныеШапки.Вставить("ИдСклада", "1"); ДанныеШапки.Вставить("ИдСклада1С", XMLСтрока(Документ1С.Склад)); ДанныеШапки.Вставить("ИмяСклада", Документ1С.Склад.Наименование); ДанныеШапки.Вставить("ИдКонтрагента", XMLСтрока(Документ1С.Контрагент)); ДанныеШапки.Вставить("ИмяКонтрагента", Документ1С.Контрагент.Наименование); ДанныеТабличныхЧастей = Новый Структура; МассивДанныхСтрок = Новый Массив; Для Каждого СтрокаТЧ Из Документ1С.Товары Цикл ДанныеДляВыгрузки_Строка = Новый Структура; ДанныеДляВыгрузки_Строка.Вставить("ИдТовара", XMLСтрока(СтрокаТЧ.Номенклатура)); ДанныеДляВыгрузки_Строка.Вставить("ИдУпаковки", XMLСтрока(СтрокаТЧ.Номенклатура.ЕдиницаИзмерения)); ДанныеДляВыгрузки_Строка.Вставить("ИдЕдиницыИзмерения", XMLСтрока(СтрокаТЧ.Номенклатура.ЕдиницаИзмерения)); ДанныеДляВыгрузки_Строка.Вставить("КоличествоПлан", СтрокаТЧ.КоличествоУпаковок); МассивДанныхСтрок.Добавить(ДанныеДляВыгрузки_Строка); КонецЦикла; ДанныеТабличныхЧастей.Вставить("СтрокиПлан", МассивДанныхСтрок); ДанныеДокумента.Вставить("ШапкаДокумента", ДанныеШапки); ДанныеДокумента.Вставить("ТабличныеЧасти", ДанныеТабличныхЧастей); Возврат ДанныеДокумента; КонецФункции