gifts2017

1С:Интеграция ЕГАИС + Инвентаризация на ТСД

Опубликовал Stepan Tyumentsev (st-ty@ngs.ru) в раздел Обработки - Обработка справочников

Интеграция ЕГАИС модуля для 1С: 8.3 + модуль WMS контура для инвентаризации алкогольных марок на ТСД.

 ОБРАБОТКА

Представлю небольшую обработку по парсингу файла xml, загруженного из УТМ модуля ЕГАИС. Подобных примеров уже достаточно много, но данный всего скорей, самый "бюджетный"Smile. Поставлена задача загрузить справоники номенклатуры и контрагентов из заранее сформированных с УТМ файлов, из 65 запрошенных поставщиков получилось порядка 100 тыс. наименований, совсем немало, если учесть, что сопоставить нужно только примерно 2 тысячи наименований.  Загрузку классификаторов можно произвести с использовани ПО Центринформ для оптовиков http://egais2016.ru/files/, но ОК может эксплуатироватся бесплатно в течении периода до 31.03.2016 (триальная версия).

Для парсинга используем COMОбъект("MSXML2.DomDocument.4.0") и COMОбъект("Scripting.FileSystemObject"), можно и стандарные 1С: методы, но больше удобны при формировании. Отличительный момент: файлы содержат ns имена, соответственно их нужно задать в свойства:

xmlDoc.setProperty("SelectionNamespaces","xmlns:rap=""http://fsrar.ru/WEGAIS/ReplyAP"" xmlns:pref=""http://fsrar.ru/WEGAIS/ProductRef"" xmlns:oref=""http://fsrar.ru/WEGAIS/ClientRef""");

Структура 1С справочников, думаю, для специалистов будет понятна из текста самой обработки, ее расписывать не буду.

Вторым этапом будет выполнена загрузка и выгрузка ТТН из(в) УТМ, после того как специально обученные люди сопоставят справочники с номенклатурой и контрагентами КИС.

Безусловные минусы это скорость обработки такого количества элементов, но xml быстрее, всего скорей, не обработать в объектные данные. Было бы неплохо, если бы УТМ готовил файлы в JSON формате. Возможно, как вариант, предварительно конвертировать файлы в СУБД, к примеру, в SQL классический вид, а далее уже com-маccивом тянуть в базу. Думаю, данный финт позволит обработать более 100 тыс. позиций быстрее. Замер времени загрузки на сделанных примерах выполняет это примерно минут за 15, в то время как представленная "обработка" парсила значения сразу в 1С базу более 2-х часов.

 ИНТЕГРАЦИЯ ЕГАИС

Внесен модуль интеграции ЕГАИС в демо режиме. За основу взяты модули от Розница 2.0 и УТ 11, и модернизированы под интеграцию кастомной КИС на платформе 8.3, проверенный функционал: соединение с УТМ и загрузка классификаторов. На текущий момент тестируются ТТН, Справки А и В, соответствия к партиям.

Как писал ранее, выполняется задача по сопоставлению номенклатуры, но на практике эта задача не самая простая оказалась, т.к. ЕГАИС поленился внести штрихкоды в классификатор продукции и теперь вместо того чтобы отобрать два три завода на позицию, приходиться рыскать во всей номенклатуре производителя, а если это импортер "???", как на пример Лудинг это более 10 тыс. товаров на один ИНН.

 ТТН и СПРАВКА А

 Сегодня прогрузили ТТН и справки АБ, и сразу возник вопрос почему в справках А нет номера и даты подтверждения фиксации ЕГАИС? Что дает данный сервис получается не понятно, как проверять поставку б без данной информации? Попытка подгрузить расширенную Справку А, кроме потерянных 30 минут на парсинг ни чего нового не дало, обновились только поля дата отгрузки и кол-во. Погуглил, на данный вопрос пользователя в егаис ответа нет. Поражает и скорость тех. поддержки егаис, вопрос задан 12 ноября , сегодня на дворе 16 декабря 2015 г. :

  http://egais2016.ru/forum/viewtopic.php?t=202

  ИНВЕНТАРИЗАЦИЯ МАРОК

  Тестируем инвентаризацию марок на складе с использование подготовленной WMS и приложения для ТСД на базе 1с:расширение для кпк. ТСД выбираем корейской марки MobileBase DS5 на базе WM 6.5 ОС. Серверная база подготовлена с учетом партий, поэтому привязывать марки будем не только к ШК но и к партиям. Ранее делал публикацию "Складские операции на ТСД", в ней описан принцип сделаных партий http://infostart.ru/public/418190. Скрин работы приложения в прил., проводим инвентаризацию на складе, делаем обработку по переносу в Акт постановки на баланс для ЕГАИС.

 В ходе полученной информации по содержанию алкокода в PDF, задача для операторов сопоставить номенклатуру упразднились, т.к. теперь все связки есть и обработка автоматически делает сопоставление через ШК. Для окончательного результата остается привязать к партиям справки А (пошли немного другим путем ,проставляем к партиям номера фиксации, если больше одного номера через запятую), либо попросить поставщиков скинуть через УТМ все поставки за 2015 год, тогда через номер ТТН их можно привязать к данным номенклатуры КИС.

 АКТ ПОСТАНОВКИ НА БАЛАНС

  Ни для кого не новость, что ипортеры вписывали в Справку А по несколько номеров фиксации и куча диапозонов марок без всякого соотвествия, эти поставщики/имортеры и не слишком то спешат выгрузить запрошенные ТТН. Что получили при отправке акта постановки, где попалась такая Справка А, а их как правило процентов 50-75 от всех приходов, а получили отказ в постановке. В первой попытке не совпадает общее количество по Справке А, вторая попытка отправляем равное количеству марок - акт выдает, что данная марка не в диапозоне номера фиксации, начинаем перебирать номера фиксации попорядку, угадали на втором, а их может быть и три и шесть и т.д! Привязка к партиям номеров фиксации особо не спасает ситуацию, т.к. к одной позиции склада может быть два-три алкокода ЕГАИС, причем эти коды в одном диапозоне марок. 

 Перенос инвентаризаций в Акт постановки на баланс, переносим каждую партию в отдельный акт, т.к. не понятно нужно будет перебирать номера фиксации или нет:

Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Проведен",Истина);
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	ИнвентаризацияТовары.Партия.Ссылка   КАК Партия
		|ИЗ
		|	Документ.Инвентаризация.Товары КАК ИнвентаризацияТовары
		|ГДЕ
	    |  НЕ ИнвентаризацияТовары.Партия.НомерТТН В
	    |			(ВЫБРАТЬ РАЗЛИЧНЫЕ
	    |				ЕГАИСТовары.Ссылка.НомерВходящий
	    |			ИЗ
	    |				Документ.алкТоварноТранспортнаяНакладнаяЕГАИС.Товары КАК ЕГАИСТовары
	    |			ГДЕ
	    |				ЕГАИСТовары.Ссылка.Проведен = &Проведен)";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		 Док = Документы.алкАктПостановкиНаБалансЕГАИС.СоздатьДокумент();
		 Док.Организация = Справочники.Организации.НайтиПоКоду("000000001");
		 Док.алкПунктРазгрузкиОрганизации = "Склад";
		 Док.Дата = ТекущаяДата();
		 Док.РежимВводаДанныхПоСправкеА = Истина;
		 Док.СтатусДокумента = Перечисления.алкСтатусыДокументовЕГАИС.Создан;
		 Товары = Док.Товары;
		 СтрокаТовара = Товары.Добавить();
		 Партия = ВыборкаДетальныеЗаписи.Партия;
		 СтрокаТовара.АлкогольнаяПродукция  = Партия.Владелец.НоменклатураЕГАИС;
		 СтрокаТовара.ДатаРозливаПоСправкеА = Формат(Сред(Партия.ДатаРозлива,7,4)+Сред(Партия.ДатаРозлива,4,2)+Сред(Партия.ДатаРозлива,1,2),"ДФ=дд.ММ.гггг");
		 СтрокаТовара.ДатаТТНПоСправкеА     = Партия.ДатаТТН;
		 СтрокаТовара.ДатаФиксацииТТНПоСправкеА = Партия.ДатаФиксацииЕГАИС;
		 СтрокаТовара.Количество                = Партия.Остаток;
		 СтрокаТовара.КоличествоПоСправкеА  = Партия.КолРА;
		 Если СтрокаТовара.АлкогольнаяПродукция.Производитель.КодСтраны = "643" Тогда
		 	СтрокаТовара.НомерТТНПоСправкеА    = Партия.НомерТТН;
		 Иначе
			СтрокаТовара.НомерТТНПоСправкеА    = Сред(Партия.ГТД,1,8)+Сред(Партия.ГТД,16);
		 КонецЕсли;
		 СтрокаТовара.НомерФиксацииТТНПоСправкеА = Партия.НомерФиксацииЕГАИС;
		 
		ЗапросМАрок = Новый Запрос;
		ЗапросМАрок.УстановитьПараметр("Партия",Партия);
		ЗапросМАрок.Текст = 
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	ИнвентаризацияТовары.Марка   КАК Марка
		|ИЗ
		|	Документ.Инвентаризация.Товары КАК ИнвентаризацияТовары
		|ГДЕ
	    |   ИнвентаризацияТовары.Партия = &Партия";
	
		РезультатЗапроса = ЗапросМАрок.Выполнить();
		
		ВыборкаМарок = РезультатЗапроса.Выбрать();
		i = 0;
		Пока ВыборкаМарок.Следующий() Цикл
			СтрокаМАрки = Док.КодыМарок.Добавить();
		    СтрокаМАрки.Код = ВыборкаМарок.Марка; 
			i = i + 1;
		КонецЦикла;
		СтрокаТовара.Количество = i;
		Док.Комментарий = Строка(Партия)+ " К:" +Строка(СтрокаТовара.АлкогольнаяПродукция.Производитель.КодСтраны)+" П:"+ Строка(СтрокаТовара.АлкогольнаяПродукция.Производитель) +
		                 " И:"+ Строка(СтрокаТовара.АлкогольнаяПродукция.Импортер);
		Док.Записать();
	КонецЦикла;

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

Наименование Файл Версия Размер Кол. Скачив.
Интеграция ЕГАИС 1.9
.cf 12,52Mb
26.12.15
2
.cf 12,52Mb 2 Скачать
Интеграция ЕГАИС (демо версия)
.cf 12,60Mb
15.12.15
8
.cf 12,60Mb 8 Скачать
СправочникиЕГАИС.epf
.epf 7,27Kb
15.12.15
8
.epf 7,27Kb 8 Скачать
Мобильное приложение инентаризации марок.
.xml 567,79Kb
16.12.15
3
.xml 567,79Kb 3 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. Геннадий Жаркой (ifal) 18.12.15 22:41
По поводу того, что товаров много тысяч позиций, в общем можно делать так: читаете марки, из марок выбираете алкокоды, только по ним делаете запросы в ЕГАИС.
2. Stepan Tyumentsev (st-ty@ngs.ru) 19.12.15 10:10
(1) ifal, 68 разрядный код марки в формате PDF не содержит алкокода из классификатора ЕГАИС, и даже если сперва провести инвентаризацию то через связку штрихкод - марка не получаем его. Вариант инвентаризации через Checkmark2 код дает, но тогда мы теряем привязку к партии товара, поскольку инвентаризируем как раз тот товар которого нет в подгруженных ТТН за 2015 год.
3. Геннадий Жаркой (ifal) 19.12.15 20:13
(2) st-ty@ngs.ru, штрихкод марки в формате pdf-417 содержит алкокод продукции (ссылка - там есть пример кода в комментариях) , вы говорите про какой-то другой код? Это сказано к тому, что вам там надо всего 2 тыс. позиции из 100 тыс, выделив кода из марок и можете только по ним отправить запрос в ЕГАИС. Про партии и про учет ни слова не говорил.
4. Stepan Tyumentsev (st-ty@ngs.ru) 19.12.15 23:13
(3) ifal, "...для получения AlcСode из QR-кода надо символы с 8 по 19 (12 символов) перевести из тридцатишестеричной
системы счисления в десятичную систему счисления, добавить впереди недостающие ведущие нули,
и получим 19 -ти разрядное число, состоящее только из цифр"? По описанию кода это символы о производителе инн и т.д. , если это не так, то было бы здорово. Спасибо за информацию.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа