Доработка конфигурации для загрузки отчета по транзакциям с сайта Газпромнефть

Опубликовал Екатерина Кетова (kravius12) в раздел Обмен - Обмен через XML

Доработка для загрузки данных по транзакциям с сайта Газпромнефть из формата xml.

Доработка конфигурации для загрузки данных с сайта.

На сайте Газпромнефть в личном кабинете формируешь отчет, загружаешь его в табличную часть документа "Загрузка Газпром". Документ формирует движения в регистре накопления, и по его данным строится отчет.  Таким образом имеем информацию по картам. Адрес заправки, вид топлива, количество литров, цена и сумма по каждой карте. 

 

Писалась для конфигурации Резон Мясокомбинат, для автоматизации блока учета ГСМ. Встраивается в любую конфигурацию на обычных формах.

Состав объектов конфигурации:

  • Справочник "Автомобили"
  • Справочник "Топливные карты"
  • Справочник "Типы ГСМ"
  • Справочник "Водители"
  • Регистр накопления "Заправки"
  • Документ "загрузка"
  • Отчет "Данные по картам"

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

Наименование Файл Версия Размер
Конфигурация cf
.cf 149,12Kb
22.06.15
2
.cf 149,12Kb 2 Скачать

См. также

Комментарии
1. Екатерина Кетова (kravius12) 24 24.05.16 15:28 Сейчас в теме
Формат файла поменялся:
Текст процедуры для нового файла:
Процедура загрузка()

	XML = Новый ЧтениеXML;
	XML.ОткрытьФайл(ПутьКФайлу);
	
	Таблица = новый ТаблицаЗначений;
	Таблица.Колонки.Добавить("НомерКарты",новый ОписаниеТипов("Строка"));
	Таблица.Колонки.Добавить("Бензин", Новый ОписаниеТипов("Строка"));  
	Таблица.Колонки.Добавить("ЦенаСоСкидкой", Новый ОписаниеТипов("Строка")); 
	Таблица.Колонки.Добавить("СуммаСоСкидкой", Новый ОписаниеТипов("Строка")); 
	Таблица.Колонки.Добавить("ID", Новый ОписаниеТипов("Строка")); 
	Таблица.Колонки.Добавить("DT", Новый ОписаниеТипов("Строка")); 
	Таблица.Колонки.Добавить("АдресЗаправки", Новый ОписаниеТипов("Строка")); 
	Таблица.Колонки.Добавить("ВидОперации", Новый ОписаниеТипов("Строка")); 
	Таблица.Колонки.Добавить("количество", Новый ОписаниеТипов("число")); 
	
	
	Таблица.Колонки.Добавить("SERVICE",новый ОписаниеТипов("Строка"));
	
	состояние("Загрузка...");                                                          
	Уровень = ложь;
	ТЭ = неопределено;
	НомерКарты = "";
	состояние("Загрузка файла данных...");
	
	Пока XML.Прочитать() Цикл                  
		//ПолучитьXMLТип(ЧтениеXML);
		
		Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
			ТЭ = XML.Имя;
			Если XML.Имя = "G_CARD" Тогда
				
				Уровень = 1;
			ИначеЕсли XML.Имя = "G_TRANSACTION" Тогда	
				Уровень = 2;
				НС = таблица.Добавить();
				НС.НомерКарты = НомерКарты;
			иначеЕсли XML.Имя = "G_PRODUCT" Тогда
				Уровень = 3;
			иначеЕсли XML.Имя = "G_PRODUCT_GROUP" Тогда
				Уровень = 31;				
			иначеЕсли XML.Имя = "G_GAS_STATION" Тогда
				Уровень = 32;				
			КонецЕсли;
		КонецЕсли;
		
		Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
			Если Уровень = 1  Тогда
				
				Если ТЭ = "S_NUMBER" Тогда
					
					номерКарты = XML.Значение;
				КонецЕсли; 
			иначеЕсли уровень = 2 тогда
				Если ТЭ = "F_PRICE_WO_DISCOUNT" Тогда
					
					НС.ЦенаСоСкидкой = XML.Значение;
				иначеЕсли ТЭ = "F_SUM_WO_DISCOUNT"  тогда	 
					НС.СуммаСоСкидкой = XML.Значение;
				иначеЕсли ТЭ = "ID_TRANS"  тогда	 
					НС.ID = XML.Значение;
				иначеЕсли ТЭ = "DT_TRANS"  тогда	 
					НС.DT = XML.Значение;
				иначеЕсли ТЭ = "TRANS_TYPE_NAME"  тогда	 
					НС.ВидОперации = XML.Значение;
				иначеЕсли ТЭ = "F_QTY"  тогда	 
					НС.количество = XML.Значение;
						
				КонецЕсли;
				
			иначеЕсли уровень = 3 тогда
				Если ТЭ = "S_NAME" Тогда
					
					НС.Бензин = XML.Значение;
				КонецЕсли; 
			иначеЕсли уровень = 32 тогда
				Если ТЭ = "S_ADDRESS" Тогда
					
					нс.АдресЗаправки = XML.Значение;
					
				КонецЕсли; 
			КонецЕсли; 
		КонецЕсли;
		
		Если XML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
			Если XML.Имя = "G_CARD" Тогда
				
				ЗагружаемКарту = ложь;
				
			КонецЕсли;
			
			
		КонецЕсли;
	КонецЦикла;
	XML.Закрыть();
	состояние("Запись данных в документ...");
	Заправки.Очистить();
	Для каждого строка Из таблица Цикл
		карта = справочники.ТопливныеКарты.НайтиПоРеквизиту("НомерКарты",строка.номерКарты);
		Если карта <> справочники.ТопливныеКарты.ПустаяСсылка() Тогда
			
			нс = Заправки.Добавить();
			нс.Карта = карта;
		иначе
			сообщить("Не найдена карта с номером: " + строка.номерКарты);
			продолжить;
		КонецЕсли; 
		нс.сумма = строка.СуммаСоСкидкой;
		нс.НомерЧека = строка.ID;
		типГСМ = Справочники.ТипыГСМ.НайтиПоРеквизиту("Газпром",строка.Бензин);
		
		НС.ТипГСМ = ТипГСМ;
		НС.Цена = строка.ЦенаСоСкидкой;
		НС.ВидОбслуживания = строка.ВидОперации;
		нс.АдресЗаправки = строка.АдресЗАправки;
		нс.Количество = строка.Количество;
		Год = лев(Строка.DT,4);
		месяц = сред(строка.DT,6,2);
		день = сред(строка.DT,9,2);
	    период = Дата(год + месяц + день);
		нс.Период = период;
		
	КонецЦикла; 
	сообщить("Загрузка данных завершена!",СтатусСообщения.Информация);


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