Доброго времени суток, уважаемые коллеги! В этой статье поговорим об обработке, которая выгружает номенклатуру из базы конфигурации 1С «Управление торговлей для Казахстана», редакция 2.2, редакции 2.2.17.4 в xml-файл. Если немного доработать, то можно использовать и для других подобных конфигураций. В прошлые раз на этом сайте была выложена обработка для загрузки операций из табличного документа 1С.

Описание работы выгрузки товаров в Каспий Магазин

Обработка позволяет выгрузить товары и их цены в xml-файл, указанного формата.

  • Скачайте обработку, в конце статьи указана ссылка.
  • Затем откройте её в режиме 1С:Предприятие 8.
  • Перейдите к пункту меню «Файл» | «Открыть…» (Ctrl+O).
  • После открытия нужно нажать на кнопку «Выполнить».
  • После этого нужно пройти в справочник «Организаци» -> «Свойства».
  • Затем необходимо заполнить все эти свойства, описание этих свойств можно посмотреть ниже.
  • После заполнения всех свойств нужно нажать на кнопку «Выполнить» и файл с товарами будет записан в папку, которую вы указали в свойствах.

Заполнение данных номенклатурных позиций происходит в зависимости от того, какие группы номенклатуры указаны в свойстве «ПапкаНоменклатурыКаспий». Если остатков товара нет в базе, то он все равно будет записан в xml-файл с указанием цены и флагом отсутствия наличия этого товара в остатках. Кстати, вы можете воспользоваться неплохим отчётом, чтобы удобно анализировать движения номенклатуры по приходу, реализации и возвратам в разрезе месяцев года, если вы работаете в конфигурации Бухгалтерия для Казахстана.

Описание свойств основной организации

СвойствоОписаниеЗначение по умолчанию
КаталогКаспийКаталог, в который будет записан файл с товарами, тип «Строка».«Z:\Dropbox (Личный)»
ПапкаНоменклатурыКаспийГруппа справочника «Номенклатура», по которой осуществляется фильтрация товаров. Можно создавать несколько таких свойств.пустая ссылка на справочник «Номенклатура»
СкладКаспийЭлемент справочника «Склады», по которому осуществляется фильтрация остатков номенклатуры. Можно создавать несколько таких свойств.пустая ссылка на справочник «Склады»
ТипЦеныКаспийНазвание типа цен в вашей базе, тип «Строка».«Розничные»

Часть программного кода обработки на встроенном языке 1С

Когда вы нажимаете на кнопку Выполнить, то срабатывает процедура ВыгрузитьФайл и выполняется следующий код:

Процедура ВыгрузитьФайл() Экспорт
	
	Папки = УстановитьПапкуНоменклатурыКаспий();
	
	КаталогКаспий = ПолучитьКаталогКаспий();
	
	Склад = УстановитьПапкуСкладаКаспий();
	
	ТипЦены = УстановитьТипЦеныКаспий();
		
	Если Папки = Неопределено ИЛИ КаталогКаспий = Неопределено ИЛИ 
		Склад = Неопределено ИЛИ ТипЦены = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ТипЦены = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию(ТипЦены[0]);
	Если ТипЦены.Пустая() Тогда
		Сообщить("Тип цен """ + ТипЦены[0] + """ не найден!", СтатусСообщения.Важное);
		Возврат;
	КонецЕсли;
			
	СтруктураИсходныхПараметров = Новый Структура("Организация, Склад, Родитель, ДатаЗапроса, ПодбиратьУслуги, ТипЦен", 
	ОсновнаяОрганизация, Склад, Справочники.Номенклатура.ПустаяСсылка(), ТекущаяДата(), Ложь, ТипЦены);
	
	Запрос = ПолучитьЗапросДляПодбора("РасходОстаткиИЦеныНоменклатуры", Папки, ТекущаяДата(), Истина, Ложь);
	Если Запрос = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	РезультатЗапроса = Запрос.Выполнить();
	
	...
	
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.ОткрытьФайл(КаталогКаспий + "\GoodsForKaspi.xml");
	
	ЗаписьXML.ЗаписатьОбъявлениеXML();
	ЗаписьXML.ЗаписатьНачалоЭлемента("kaspi_catalog");
	ЗаписьXML.ЗаписатьАтрибут("date", "string");
	ЗаписьXML.ЗаписатьАтрибут("xmlns", "kaspiShopping");
	ЗаписьXML.ЗаписатьАтрибут("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
	ЗаписьXML.ЗаписатьАтрибут("xsi:schemaLocation", "kaspiShopping http://kaspi.kz/kaspishopping.xsd");

	...
	
	ЗаписьXML.ЗаписатьКонецЭлемента(); // 
	ЗаписьXML.ЗаписатьКонецЭлемента(); // 
	ЗаписьXML.Закрыть();
	
КонецПроцедуры


Здесь опубликован не весь программный код обработки для выгрузки товаров в Каспий Магазин. Но его можно увидеть, да и опробовать саму эту обработку, если скачать по ссылке. Если у вас другие данные или другая конфигурация, то можно помочь изменить обработку под ваши нужды, обращайтесь.

Синхронизация выгруженного файла с hhtp/s сервером

На сайте Каспий Магазина сказано, что можно выложить сформированный XML в http/s сервер и затем указать ссылку в кабинете продавца и каждые 30 минут система будет загружать ваш прайс, если в нём есть изменения. Если у вас есть собственный хостинг, то вы можете выгружать свой файл туда через ftp, воспользовавшись, например, бесплатной программой FreeFileSync. С помощью нее можно настроить онлайн обмен в режиме реального времени. Она может выгружать файл, если он будет изменен.

Можно настроить запись изменений остатков товаров в XML без участия пользователя. Для этого можно встроить обработку в конфигурацию, затем создать подписку на событие ОбработкаПроведения и расположить её обработчик, например в общем модуле ОбщегоНазначения. И в этом обработчике прописать такой код:

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

Как видно из кода, файл с товарами будет формироваться всякий раз, когда будет проведен любой документ, который делает движения в регистр накопления ТоварыНаСкладах. Как раз из этого регистра формируются остатки для записи в xml-файл.

Демонстрация работы обработки 1С для выгрузки номенклатуры

ПОДПИСКА