Статья успешно отправлена на почту

Использование произвольного кода для загрузки документов в 1С

Применимо к продуктам: Магазин 15 Склад 15
Последние изменения: 2024-03-26

Выделите текст или фото, с замеченной ошибкой > нажмите карандаш для редактирования

Заметили ошибку в тексте?
Напишите нам, мы исправим!

Для пользовательских бизнес-процессов (как их создавать и редактировать, описано в статье) можно использовать произвольный код при загрузке документов в 1С. Для этого требуется проставить флаг «Выполнить только произвольный код при загрузке» в главном окне настройки бизнес-процесса.

Далее, чтобы использовать произвольный код при загрузке документа, в модуль интеграционной обработки нужно поместить экспортную процедуру, выполняющую программное заполнение документа 1С данными документа Mobile SMARTS. Имя процедуры должно совпадать с именем обработчика, указанным в поле «Обработчик загрузки документа» на форме настройки бизнес-процесса.

В структуру параметров процедуры будут переданы следующие данные:

  • АдресаПеременных — структура, содержащая адреса переменных с текущими настройками подключения Mobile SMARTS.
  • ДанныеДокументаMS — структура, содержащая данные документа Mobile SMARTS.
  • Док1СОснование — ссылка на исходный документ 1С (при наличии).
  • ДокументТСД — структура, содержащая данные документа Mobile SMARTS.
  • СтрокаНастройки — структура, содержащая настройку бизнес-процесса.
  • ТекущиеНастройкиMS — структура, содержащая текущие настройки подключения Mobile SMARTS.

Пример кода:

Процедура ПоступлениеТоваровУслуг_Загрузка(СтруктураПараметров) ЭкспортДок1СОснование = СтруктураПараметров.Док1СОснование;Если Док1СОснование = Неопределено ТогдаДок1СРезультат = Документы[СтруктураПараметров.СтрокаНастройки.ТипРезультирующегоДокумента1С].СоздатьДокумент();Док1СРезультат.Дата = ТекущаяДата();ИначеДок1СРезультат = Док1СОснование.ПолучитьОбъект();КонецЕсли;ДокументТСД = СтруктураПараметров.ДокументТСД;ШапкаДокумента = ДокументТСД.ШапкаДокумента;СтрокиФакт = ДокументТСД.СтрокиФакт;Док1СРезультат.Склад = Справочники.Склады.ПолучитьСсылку(Новый УникальныйИдентификатор(ШапкаДокумента.ИдСклада1С));Док1СРезультат.Контрагент = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(ШапкаДокумента.ИдКонтрагента));Для Каждого СтрокаТЧ Из СтрокиФакт ЦиклЕсли СтрокаТЧ.Свойство("ЭтоТаблицаЗначений") ТогдаПродолжить;КонецЕсли;Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаТЧ.ИдТовара));Упаковка = Справочники.УпаковкиЕдиницыИзмерения.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаТЧ.ИдУпаковки));Если ЗначениеЗаполнено(Упаковка) И Упаковка.Владелец.ИмяПредопределенныхДанных = "БазовыеЕдиницыИзмерения" ТогдаУпаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();КонецЕсли;СтруктураПоиска = Новый Структура("Номенклатура, Упаковка", Номенклатура, Упаковка);НайденныеСтроки = Док1СРезультат.Товары.НайтиСтроки(СтруктураПоиска);Если НайденныеСтроки.Количество() = 0 ТогдаСтрокаДокумента = Док1СРезультат.Товары.Добавить();СтрокаДокумента.Номенклатура = Номенклатура;СтрокаДокумента.Упаковка = Упаковка;ИначеСтрокаДокумента = НайденныеСтроки[0];КонецЕсли;СтрокаДокумента.КоличествоУпаковок = СтрокаДокумента.КоличествоУпаковок + СтрокаТЧ.КоличествоФакт;СтрокаДокумента.Количество = СтрокаДокумента.КоличествоУпаковок * ?(ЗначениеЗаполнено(СтрокаДокумента.Упаковка), СтрокаДокумента.Упаковка.Коэффициент, 1);КонецЦикла;Док1СРезультат.Записать(РежимЗаписиДокумента.Запись);КонецПроцедуры
Была ли статья полезна?
Спасибо за ваш отзыв!
Отзыв
Заполните, пожалуйста, данную форму, что конкретно вы не нашли, оставьте свои комментарии о работе сайта / полезности / сложности с навигацией
0/500