bookresearch.ru / Разработчику / Библиотека работы с ONIX XML / onix 1C supply sample /
Библиотека работы с ONIX XML: Пример выгрузки накладной ONIX XML из 1С
Untitled
// _____________________________________________________________________________
// Процедура выгрузки накладной.
// Автор - Beer Artur 2004Y.
// _____________________________________________________________________________
Процедура XMLНакладная()
попытка
// Создаем обьект для работы с XML.
ХМЛ = СоздатьОбъект("onixxml.tonixxml");
// Фирма1.ИНН - ИНН фирмы продавца.
ХМЛ.Header.FromSAN = СокрЛП(Фирма1.ИНН);
// Фирма1 - объект фирмы продавца.
ХМЛ.Header.FromCompany = СокрЛП(Фирма1);
// Автор - имя пользователя от чъего имени была составлена накладная.
ХМЛ.Header.FromPerson = СокрЛП(Автор);
// Клиент - Объект содержащий информацию о покупателе.
// Клиент.ИНН - ИНН покупателя.
ХМЛ.Header.ToSAN = СокрЛП(Клиент.ИНН);
// Клиент.Наименование - Наименование покупателя.
ХМЛ.Header.ToCompany = СокрЛП(Клиент.Наименование);
// В поле ToPerson записывается имя получателя (в данном случае записываем
// наименование фирмы покупателя, так как мы отгружаем товар юридическому лицу).
ХМЛ.Header.ToPerson = СокрЛП(Клиент.Наименование);
// Записываем дополнительную информацию о документе.
ХМЛ.Header.MessageNote = "Накладная / Generated by 1C [ XMLProcMod v1.0b (C) 2004 Beer Artur]";
// В поле MessageNumber записываем номер сообщения. Я решил пойти простым путем
// и записывать в это поле номер документа.
ХМЛ.Header.MessageNumber = СокрЛП(НомерДок);
// Номер повторного сообщения.
ХМЛ.Header.MessageRepeat = 1;
// Устанавливаем дату сообщения.
ХМЛ.Header.MessageDate = ТекущаяДата();
// Язык докумнта.
ХМЛ.Header.DefaultLanguageOfText = "рус";
Исключение
// Вырабатываем исключение в случае если не была произведене решистрация
// библиотеки onixxml.dll в системе.
// Примечание: на вермя отладки советую этот блок выключить, так как он сработает
// даже в случае любой другой ошибки и Вы будете долго ломать голову почему
// не установлена библиотека onixxml, так как Вы ее установили :D
Сообщить("Не установлен COM-компонент onixxml.dll. Обратитесь к администратору БД.");
Возврат;
КонецПопытки;
// Создаем объект коммерческого документа, в который будут записаны данные из накладной.
CommercialDocument = ХМЛ.CommercialDocuments.Add();
// Выставляем тип документа который может принимать четыре вида:
// 1 - Накладная (PayableBill)
// 2 - Счет-фактуа (Invoice)
// 3 - Заказ товара (Order)
// 4 - Отпуск товара (Sale)
// 5 - Возврат товара (BackSaale)
// Так как мы только продаем, соответственно тип документа у нас PayableBill
CommercialDocument.DocumentType = 1;
// Устанавливаем номер документа.
CommercialDocument.Number = СокрЛП(Строка(НомерДок));
// Создаем объект контрагента продавца.
Saler = CommercialDocument.Contragents.Add();
// Role - роль контрагента. В данном случае значение 2 указывает что этот контрагент
// играет роль продавца в этом документе (Saler).
Saler.Role = 2;
// Инн контрагента.
Saler.ID = Фирма1.ИНН;
// Наименование контрагента.
Saler.Name = СокрЛП(Фирма1.Наименование);
// Создаем объект контрагента покупателя.
Buyer = CommercialDocument.Contragents.Add();
// Устанавливаем роль контрагента как роль получателя (Buyer).
Buyer.Role = 1;
// ИНН Контрагента.
Buyer.ID = Клиент.ИНН;
// Почтовый адрес контрагента.
Buyer.Address = Клиент.ПочтовыйАдрес;
// Имя получателя.
Buyer.Name = Клиент.Наименование;
// Пуь по умолчанию для выгружаемых документов XML.
Путь = "C:\Выгрузка\";
// Предлагаем пользователю изменить путь по умолчанию.
Если ФС.ВыбратьКаталог(Путь, "Выберите каталог для сохранения файла",)=0 Тогда
Возврат;
КонецЕсли;
// Выбираем строки из накладной с товаром.
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
// Создаем новую позицию в документе.
Position = CommercialDocument.Positions.Add();
// RecordReference - Артикул товара.
Position.RecordReference = СокрЛП(Строка(Товар.Код));
// Штрих код товара.
Position.EAN13 = СокрЛП(Строка(Товар.ШтрихКод));
// Количество товара по текущей позиции.
Position.Amount = Количество;
// Цена товара.
Position.Price = Цена;
// Розничная цена ТД "Библио-Глобус".
Position.RecommendedPrice = ЦенаГлобуса;
// наименование товара.
Position.ProductName = Нрег(Товар.Наименование);
// Стандарт товара (штук в пачке/упаковке).
Position.PackQuantity = Товар.Стандарт;
// Добавляем в позицию раздел налогов :)
Tax = Position.Taxes.Add();
// В строку TaxType пишем тип налога. В данном случае 2 (VAT - НДС). Поскольку мы не занимаемся
// розничной продажей товара, я оставил 2 значением по умолчанию. Если Вы занимаетесь розничной
// продажей, проверяйте тип отгрузки, если розничный, тогда устанавливайте значение 1 (НП).
Tax.TaxType = 2;
// Получаем НДС в соответствии с датой документа.
Tax.Rate = Лев(Товар.СтавкаНДС.Получить(ТекущаяДата()), 2);
// Записываем дату из накладной.
CommercialDocument.Date = ДатаДок;
КонецЦикла;
// Сохраняем файл на диск. Номер документа - имя файла.
ХМЛ.SaveToFile(Путь+"\"+СокрЛП(НомерДок)+".xml");
// Сообщаем о том что документ успешно выгружен.
Сообщить("Файл успешно выгружен в каталог " + Путь + "\"+ НомерДок + ".xml");
КонецПроцедуры
|
|
|