gifts2017

УТ 11.1 Загрузка Заказа клиента из xml

Опубликовал Ruslan (2casp) в раздел Обработки - Обработка документов

Электронный документооборот на примере обмена с "Лукойл".
Обработка позволяет прочитать xml файл с заказами и создать на их основании документы Заказ клиента

Конфигурация Управление торговлей, редакция 11.1 (11.1.10.167).

Итог: заказы создаются, хотелось бы услышать несколько ответов на свои вопросы касательно программного создания заказа.

Обработка внешняя, но не подключаемая, отдаю данную работу на исполнение ищущему. Мне нужно было срочно прочитать xml файл выгруженный из документооборота Лукойла и создать документы Заказ покупателя. Здесь, похожего не нашел, возможно кому то повезет больше ;)

При написании помогли статьи:

1. XDTO-пакеты, xml, xml schema

2. Пророк в своем отечестве или Читаем XML с помощью XDTO

3. Разбор XML документа - почти все возможные способы

Есть похожая статья, только там конфигурация БП и происходит выгрузка из 1С в документооборот: Выгрузка первичных документов (Счет-фактура, Реализация) из 1С8 без Такском

На входе с сайта портала можно скачать файл описание xml (.xsd). В конфигурации добавил новый объект XDTO-пакет. Правда в файл xsd заменил первую строку (на скриншоте видно) и добавил вторую строку.

 

-<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://localhost/xdtoreadorders" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://localhost/xdtoreadorders" xmlns:ns1="http://localhost/xdtoreadorders">

Вопрос остался только в программном создании заказа, когда создаю документ интерактивно, заполнятся он как мы знаем правильно, а вот программно некоторые реквизиты не заполняются: например итоги по табличной части, потом в списке документов почему то не отображается процент оплаты и процент отгрузки по заказу. С радостью выслушаю где можно посмотреть\почитать по этому поводу, в идеале с примером куска кода или обработки :)

Характеристики:

  • Поиск номенклатуры происходит по артикулу.
  • Поиск партнера по наименованию. На основании партнера ищется контрагент и соглашение с клиентом. Соглашение одно, типовое.
  • Цены загружаются на основании соглашения.

Заказ клиента создается, но не проводится.
Код открыт, можно изменять\добавлять\модифицировать...можно пользоваться :))

Скачать файлы

Наименование Файл Версия Размер
Загрузка Заказ клиента 15
.epf 17,41Kb
03.08.15
15
.epf 0.1 17,41Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Anatoli Kudrjashov (grondeks) 20.11.15 11:44
Я в аналогичной ситуации вводил данные в модифицированную форму документа:
&НаКлиенте
Процедура СоздатьЗаказ()
Парам = Новый Структура;
Парам.Вставить("СоздатьЛаминто",Истина);
	                                      				
ЗаказКлиента = ПолучитьФорму("Документ.ЗаказКлиента.Форма.ФормаЗаказаМоя",Парам);
				
ЗаказКлиента.Объект.Партнер = Объект.Клиент;
ЗаказКлиента.Объект.ЖелаемаяДатаОтгрузки = Объект.ДатаОтгрузки;
ЗаказКлиента.Объект.ДатаОтгрузки = Объект.ДатаОтгрузки;
		Для Каждого	Строк Из Объект.ТабличнаяЧасть Цикл 
					Товар = ЗаказКлиента.Объект.Товары.Добавить();
					Товар.Номенклатура = Строк.Номенклатура;
					Товар.КоличествоУпаковок = Строк.КоличествоУпаковок;
					
		КонецЦикла;  

ЗаказКлиента.Объект.Комментарий = Объект.НомерЗаказа;
ЗаказКлиента.Объект.АдресДоставки = Объект.АдресДоставки;
//
ЗаказКлиента.Открыть();

КонецПроцедуры
...Показать Скрыть




В модифицированной форме документа:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	МенеджерОборудованияКлиентПереопределяемый.НачатьПодключениеОборудованиеПриОткрытииФормы(ЭтаФорма, "СканерШтрихкода");
	//////////////////////   Ламинто	
	Если СоздатьЛаминто = Истина  Тогда
	ПартнерПриИзменении(Элементы.Партнер);
     ЗаполнитьЗаказЛаминтоТовар();

  ЗаписатьОбъект();
  Отказ = Истина;
    КонецЕсли;
  //////////////////////////  
КонецПроцедуры


&НаКлиенте
Процедура ЗаполнитьЗаказЛаминтоТовар()
	 Для Каждого Стр ИЗ Объект.Товары Цикл	
	  ТоварыНоменклатураПриИзмененииМоя(Стр);
     КонецЦикла;	   
КонецПроцедуры


&НаКлиенте
Процедура ТоварыНоменклатураПриИзмененииМоя(ТекущаяСтрока)	
	//ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;  -  Единственное отличие от стандартной.
.................
.................

&НаСервере
Процедура ЗаписатьОбъект()
  Робъект = ДанныеФормыВЗначение(ЭтаФорма.Объект,Тип("ДокументОбъект.ЗаказКлиента"));
  Робъект.Записать();	
	
КонецПроцедуры
...Показать Скрыть