Бухгалтер і комп'ютер.Понеділок, 23.04.2018, 11:11

Вітаю Вас Гість | RSS
Головна | Статті | Вхід
Меню сайту

Категорії каталога
Бухгалтер і комп'ютер [8]
Все що потрібно бухгалтерам для роботи за комп'ютером
Програмування на 1С [9]
Все що стосується програмування бухгалтерських програм "1С" версій 7.7 і 8.1.

Друзі сайту

Головна » Статті » Програмування на 1С


Експорт запиту до ЄРПН і імпорт відповіді в 1С 8.2.
Послідовність роботи з цією обробкою 1С і програмою M.E.Doc 
(хоча підійде і будь яка інша, оскільки всі обміни використувують стандартні XML-файли, що описані на сайті ДПС).


1. В програмі 1С в журналі "Реєстрація вхідних податкових документів", для податкових документів які підлягають перевірці через портал вказуємо ознаку "Необхідно перевірити реєстрацію у ЄРПН".

2. Обробкою формуємо файл запит у форматі xml ("Запит щодо отримання відомостей у Єдиному реєстрі податкових накладних"). Що потрібно вказати: 
 - порядковий номер запиту, може бути будь-який номер, головне щоб в поточному місяці не повторювався
 - адресу електронної пошти (обробка підтягне автоматом електронну пошту що вказана з типом "Електронна пошта головного бухгалтера") з контактної інформації по Організації, хоча можна вручну внести будь-яку, на яку потрібно щоб вернувся витяг по наданому запиту.

3. В програмі медок відкриваєм розділ "Довідки" -> "Інформаційні довідки" і імпортуємо створений файл в п.2 через Файл -> Імпорт -> Імпорт звітів XML. Дальше звичайно що перевірям, підписуєм і відправляєм для обробки на портал.

4. Отримавши відповідь від порталу (Витяг з Єдиного реєстру податкових накладних), відкриваєм його на екран і через пункт Файл -> Експорт -> Експорт "Для подачі у контролюючий орган" зберігаєм на диску. Файл в цьому випадку збережеться у стандартному форматі витягу, затвердженого ДПС (J1400101.xsd).

5. Тепер нову до 1С і обробки цієї, переходим на закладку "Імпорт..." вказуєм для імпорту отриманий файл з п.4. Якщо є позитивна відповідь про фактичну реєстрацію постачальником податкової накладної то в 1С заповниться поле "дата реєстр. у ЄРПН".

Вихідний текст основних процедур модуля обробки:
(Для експорт в xml-файл використовується звичайний запис через текстовий файл, а для
імпорту вже можливості 1С (об'єкта ЧтениеXML) для обробки xml-файлів.)


// Експорт запиту відповідно до xsd схеми J1300101.xsd
// Імпорт отриманої відповіді з отриманого файлу відповідно схеми: J1400101
// Описи всіх схем з офіційного сайту ДПС України: http://sts.gov.ua/data/material/000/005/58768/0.htm

// Функціїї для конвертування значень
Функция ХМЛ_Дата(Знач ДатаВхідна)
  Результат = Формат(ДатаВхідна,"ДФ=ddMMyyyy");
  Возврат Результат;
КонецФункции

Функция ХМЛ_Число(Знач ЧислоВхідне,Точність=2)
  Результат = Формат(ЧислоВхідне,"ЧДЦ="+Точність+"; ЧРД=.; ЧРГ=; ЧГ=");
  Возврат Результат;
КонецФункции

Функция ХМЛ_Стрічка(Знач СтрічкаВхідна)
  Результат = СтрЗаменить(СтрічкаВхідна,"&","&");
  Результат = СтрЗаменить(Результат,">",">");
  Результат = СтрЗаменить(Результат,"<","&lt;");
  Результат = СтрЗаменить(Результат,"""","&quot;");
  Результат = СтрЗаменить(Результат,"'","&apos;");
  Возврат Результат;
КонецФункции

Функция Отримати_параметриДляХМЛфайлу(Знач Організація, Знач НаДату)

Результат = Новый Структура;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КодыОрганизацииСрезПоследних.НалоговаяИнспекция.Код КАК НИКод,
| КодыОрганизацииСрезПоследних.НалоговаяИнспекция.КодАдмРайона,
| КодыОрганизацииСрезПоследних.НалоговаяИнспекция.Наименование КАК НИНазва,
| КодыОрганизацииСрезПоследних.КодПоЕДРПОУ,
| КодыОрганизацииСрезПоследних.ИНН,
| КодыОрганизацииСрезПоследних.НомерСвидетельства
|ИЗ
| РегистрСведений.КодыОрганизации.СрезПоследних(&НаДату, Организация = &Організація) КАК КодыОрганизацииСрезПоследних";

Запрос.УстановитьПараметр("НаДату", НаДату);
Запрос.УстановитьПараметр("Організація", Організація);

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда
Результат.Вставить("TIN",Выборка.КодПоЕДРПОУ);
Результат.Вставить("NPDV",Выборка.ИНН);
Результат.Вставить("NSPDV",Выборка.НомерСвидетельства);
Результат.Вставить("KSTI",Выборка.НИКод);
Результат.Вставить("STI",Выборка.НИНазва);

Иначе
Возврат Результат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОтветственныеЛицаОрганизацийСрезПоследних.ОтветственноеЛицо,
| ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо.КодПоДРФО как КодПоДРФО,
| ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо
|ИЗ
| РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(&НаДату, СтруктурнаяЕдиница = &Організація) КАК ОтветственныеЛицаОрганизацийСрезПоследних";

Запрос.УстановитьПараметр("НаДату", НаДату);
Запрос.УстановитьПараметр("Організація", Організація);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл

Если Выборка.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.Руководитель Тогда
Результат.Вставить("BOS",ПроцедурыУправленияПерсоналом.ФамилияИнициалыФизЛица(Выборка.ФизическоеЛицо));
Результат.Вставить("KBOS",Выборка.КодПоДРФО);
ИначеЕсли Выборка.ОтветственноеЛицо = Перечисления.ОтветственныеЛицаОрганизаций.ГлавныйБухгалтер Тогда
Результат.Вставить("BUH",ПроцедурыУправленияПерсоналом.ФамилияИнициалыФизЛица(Выборка.ФизическоеЛицо));
Результат.Вставить("KBUH",Выборка.КодПоДРФО);
КонецЕсли;

КонецЦикла;

Возврат Результат;

КонецФункции

Функция ФорматуванняКоду(Знач ВхКод, Знач Кількість=9)
  ВхКод = СтрЗаменить(СокрЛП(ВхКод),Символы.НПП,"");
  ВхКод = "00000000000000000000" + ВхКод;
   Возврат Прав(ВхКод,Кількість);
КонецФункции
//*******************************
Функция СтрутураЗІменіФайлу(ІмяФайлу)

СтруктураРезультат = Новый Структура("C_REG,C_RAJ,TIN,C_DOC,C_DOC_SUB,C_DOC_VER,C_DOC_STAN,C_DOC_TYPE,C_DOC_CNT,PERIOD_TYPE,PERIOD_MOUNTH,PERIOD_YEAR,C_STI_ORIG");

СтруктураРезультат.Вставить("C_REG",Сред(ІмяФайлу,1,2));
СтруктураРезультат.Вставить("C_RAJ",Сред(ІмяФайлу,3,2));
СтруктураРезультат.Вставить("TIN",Сред(ІмяФайлу,5,10));

СтруктураРезультат.Вставить("C_DOC",Сред(ІмяФайлу,15,3));
СтруктураРезультат.Вставить("C_DOC_SUB",Сред(ІмяФайлу,18,3));
СтруктураРезультат.Вставить("C_DOC_VER",Сред(ІмяФайлу,21,2));
СтруктураРезультат.Вставить("C_DOC_STAN",Сред(ІмяФайлу,23,1));
СтруктураРезультат.Вставить("C_DOC_TYPE",Сред(ІмяФайлу,24,2));
СтруктураРезультат.Вставить("C_DOC_CNT",Сред(ІмяФайлу,26,7));

СтруктураРезультат.Вставить("PERIOD_TYPE",Сред(ІмяФайлу,33,1));
СтруктураРезультат.Вставить("PERIOD_MOUNTH",Сред(ІмяФайлу,34,2));
СтруктураРезультат.Вставить("PERIOD_YEAR",Сред(ІмяФайлу,36,4));

СтруктураРезультат.Вставить("C_STI_ORIG",Сред(ІмяФайлу,40,4));

Возврат СтруктураРезультат;

КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)

ПараметиДляХМЛ = Отримати_параметриДляХМЛфайлу(Організація, ТекущаяДата());

КонДата = ТекущаяДата();

// Шапка запиту
хмлВерсія = "J1300101";// Чи F1300101 - якщо для фізичної особи платника ПДВ

ІмяФайлу = ""+ПараметиДляХМЛ.KSTI+ ФорматуванняКоду(ПараметиДляХМЛ.TIN,10) + хмлВерсія + "100" + ФорматуванняКоду(ПочатковийНомерХМЛ,7) + "1" + Формат(ТекущаяДата(),"ДФ=MMyyyy") + ПараметиДляХМЛ.KSTI+".xml";

ПовнийШляхФайл = ШляхДоФайлів + "\" + ІмяФайлу;

ТекстДок = Новый ТекстовыйДокумент;

ТекстДок.ДобавитьСтроку("");
ТекстДок.ДобавитьСтроку("<DECLAR xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:noNamespaceSchemaLocation=""" + хмлВерсія + ".xsd"">");

ТекстДок.ДобавитьСтроку("<DECLARHEAD>");
ТекстДок.ДобавитьСтроку("<TIN>" + ХМЛ_Стрічка(ПараметиДляХМЛ.TIN)+ "</TIN>");
ТекстДок.ДобавитьСтроку("<C_DOC>J13</C_DOC>");
ТекстДок.ДобавитьСтроку("<C_DOC_SUB>001</C_DOC_SUB>");
ТекстДок.ДобавитьСтроку("<C_DOC_VER>" + Прав(хмлВерсія,1) + "</C_DOC_VER>");
ТекстДок.ДобавитьСтроку("<C_DOC_TYPE>0</C_DOC_TYPE>");
ТекстДок.ДобавитьСтроку("<C_DOC_CNT>" + ПочатковийНомерХМЛ + "</C_DOC_CNT>");
ТекстДок.ДобавитьСтроку("<C_REG>" + Сред(ПараметиДляХМЛ.KSTI,1,2) +"</C_REG>");
ТекстДок.ДобавитьСтроку("<C_RAJ>" + Сред(ПараметиДляХМЛ.KSTI,3,2) +"</C_RAJ>");
ТекстДок.ДобавитьСтроку("<PERIOD_MONTH>" + Формат(КонДата,"ДФ=M") + "</PERIOD_MONTH>");
ТекстДок.ДобавитьСтроку("<PERIOD_TYPE>1</PERIOD_TYPE>");
ТекстДок.ДобавитьСтроку("<PERIOD_YEAR>" + Формат(КонДата,"ДФ=yyyy") + "</PERIOD_YEAR>");
ТекстДок.ДобавитьСтроку("<C_STI_ORIG>" + ПараметиДляХМЛ.KSTI +"</C_STI_ORIG>");
ТекстДок.ДобавитьСтроку("<C_DOC_STAN>1</C_DOC_STAN>");
ТекстДок.ДобавитьСтроку("<LINKED_DOCS xsi:nil=""true""></LINKED_DOCS>");
ТекстДок.ДобавитьСтроку("<D_FILL>" + ХМЛ_Дата(КонДата) + "</D_FILL>");
ТекстДок.ДобавитьСтроку("<SOFTWARE xsi:nil=""true""></SOFTWARE>");
ТекстДок.ДобавитьСтроку("</DECLARHEAD>");

ТекстДок.ДобавитьСтроку("<DECLARBODY>");
ТекстДок.ДобавитьСтроку("<HNUM>" + ПочатковийНомерХМЛ + "</HNUM>");
ТекстДок.ДобавитьСтроку("<HNAME>" + ХМЛ_Стрічка(Організація.НаименованиеПолное) + "</HNAME>");
ТекстДок.ДобавитьСтроку("<HTIN>" + ХМЛ_Стрічка(ПараметиДляХМЛ.TIN)+ "</HTIN>");
ТекстДок.ДобавитьСтроку("<HNPDV>" + ХМЛ_Стрічка(ПараметиДляХМЛ.NPDV)+ "</HNPDV>");
ТекстДок.ДобавитьСтроку("<HKSTI>" + ХМЛ_Стрічка(ПараметиДляХМЛ.KSTI)+ "</HKSTI>");
ТекстДок.ДобавитьСтроку("<HSTI>" + ХМЛ_Стрічка(ПараметиДляХМЛ.STI) + "</HSTI>");
ТекстДок.ДобавитьСтроку("<HEMAIL>" + ХМЛ_Стрічка(email) + "</HEMAIL>");

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РегистрацияВходящегоНалоговогоДокумента.Ссылка КАК Док,
| РегистрацияВходящегоНалоговогоДокумента.Дата КАК ДатаДок,
| РегистрацияВходящегоНалоговогоДокумента.Проведен КАК ОзнакаПроведення,
| РегистрацияВходящегоНалоговогоДокумента.Контрагент.Код КАК КлієнтКод,
| РегистрацияВходящегоНалоговогоДокумента.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| РегистрацияВходящегоНалоговогоДокумента.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| РегистрацияВходящегоНалоговогоДокумента.СуммаДокумента КАК СумаЗПДВ,
| РегистрацияВходящегоНалоговогоДокумента.ПометкаУдаления,
| РегистрацияВходящегоНалоговогоДокумента.Контрагент.ИНН КАК ИНН,
| РегистрацияВходящегоНалоговогоДокумента.Номер,
| РегистрацияВходящегоНалоговогоДокумента.ВидОперации
|ИЗ
| Документ.РегистрацияВходящегоНалоговогоДокумента КАК РегистрацияВходящегоНалоговогоДокумента
|ГДЕ
| РегистрацияВходящегоНалоговогоДокумента.Дата МЕЖДУ &Дата1 И &Дата2
| И РегистрацияВходящегоНалоговогоДокумента.ТребуетПроверкиВключенияВЕдиныйРеестрНалоговыхНакладных = ИСТИНА
| И РегистрацияВходящегоНалоговогоДокумента.ДатаВключенияВЕдиныйРеестрНалоговыхНакладных = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)";
//Відбір по ознаці необхідності вивантаження і по ще не заповненій даті включення податкового документа постачальником в ЄРПН

Запрос.УстановитьПараметр("Дата1", НачалоДня(НачПериода));
Запрос.УстановитьПараметр("Дата2", КонецДня(КонПериода));

Выборка = Запрос.Выполнить().Выбрать();
інд = 1;
Пока Выборка.Следующий() Цикл

Если Выборка.ПометкаУдаления Тогда
Сообщить("" + Выборка.Номер + " від " + Выборка.ДатаДок + Символы.Таб + "Пропущено з обробки! Документ помічено на вилучення в 1С (з включеною ознакою ЄРПН).");
Продолжить;
КонецЕсли;

Если НЕ Выборка.ОзнакаПроведення Тогда
Сообщить("" + Выборка.Номер + " від " + Выборка.ДатаДок + Символы.Таб + "Пропущено з обробки! Документ не проведено по 1С (з включеною ознакою ЄРПН).");
Продолжить;
КонецЕсли;

НомерДокументаПНОтриманої = СокрЛП(Выборка.НомерВходящегоДокумента);

ПозиціяРозділювачаФілії = Найти(НомерДокументаПНОтриманої,"/");
Если ПозиціяРозділювачаФілії = 0 Тогда
КодФілії = 0;
НомерПодаткової = НомерДокументаПНОтриманої;
Иначе
КодФілії = Сред(НомерДокументаПНОтриманої,ПозиціяРозділювачаФілії+1);
НомерПодаткової = Лев(НомерДокументаПНОтриманої,ПозиціяРозділювачаФілії-1);
КонецЕсли;

// Добавлення рядка по документу в запит
ТекстДок.ДобавитьСтроку("<T1RXXXXG21 ROWNUM=""" + інд + """>" + ХМЛ_Число(НомерПодаткової,0) + "</T1RXXXXG21>");// Номер ПН отриманої
ТекстДок.ДобавитьСтроку("<T1RXXXXG22 ROWNUM=""" + інд + """ xsi:nil=""true""></T1RXXXXG22>");
// Вид діяльності завжди "0", якщо можуть бути різні види, потрібно для себе переписати визначення виду діяльності з заповненого отриманого номеру НомерДокументаПНОтриманої
Если КодФілії = 0 Тогда
ТекстДок.ДобавитьСтроку("<T1RXXXXG23 ROWNUM=""" + інд + """ xsi:nil=""true""></T1RXXXXG23>");
Иначе
ТекстДок.ДобавитьСтроку("<T1RXXXXG23 ROWNUM=""" + інд + """>" + ХМЛ_Число(КодФілії,0) + "</T1RXXXXG23>");// Код філії
КонецЕсли;
ТекстДок.ДобавитьСтроку("<T1RXXXXG3D ROWNUM=""" + інд + """>" + ХМЛ_Дата(Выборка.ДатаВходящегоДокумента) + "</T1RXXXXG3D>");// Дата ПН постачальника!!!
Если Выборка.ВидОперации = Перечисления.ВидыОперацийРегистрацияВходящегоНалоговогоДокумента.НалоговаяНакладная Тогда
ВидДокумента = "ПН";
Иначе
ВидДокумента = "РК";
// Або інші види, потрібно визначити як потрібно їх інтерпретувати для запиту
КонецЕсли;
ТекстДок.ДобавитьСтроку("<T1RXXXXG4S ROWNUM=""" + інд + """>" + ХМЛ_Стрічка(ВидДокумента) + "</T1RXXXXG4S>");// Вид: ПН або РК
ТекстДок.ДобавитьСтроку("<T1RXXXXG5 ROWNUM=""" + інд + """>" + ХМЛ_Стрічка(Выборка.ИНН) + "</T1RXXXXG5>");

інд = інд + 1;

КонецЦикла;

ТекстДок.ДобавитьСтроку("<HFILL>" + ХМЛ_Дата(ТекущаяДата()) + "</HFILL>");
ТекстДок.ДобавитьСтроку("<HKBOS>" + ХМЛ_Стрічка(ПараметиДляХМЛ.KBOS)+ "</HKBOS>");
ТекстДок.ДобавитьСтроку("<HBOS>" + ХМЛ_Стрічка( ПараметиДляХМЛ.BOS)+ "</HBOS>");
ТекстДок.ДобавитьСтроку("</DECLARBODY>");
ТекстДок.ДобавитьСтроку("</DECLAR>");

Если інд = 1 Тогда
// Значить нічого не вивантажувалось, файл не зберігаєм
ТекстДок = 0;
Сообщить("Немає підготовлених доументів для запиту в ДПС.");
Иначе
Сообщить("Вивантажено " + СокрЛП(інд-1) + " записів. Файл створений:" + ПовнийШляхФайл);
ТекстДок.Записать(ПовнийШляхФайл, КодировкаТекста.ANSI);
КонецЕсли;

КонецПроцедуры

// На вхід:
// ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ФайлИмпорта); і тоді сюда передати
// ТЗХМЛ - таблиця зі структурою колонок = структурі ТЧ у файлі ХМЛ // З модифікацією таблиці вихідної
// ТегТаблиці: щоб обробляти тільки одну таблицю з ХМЛ
// Відповідь: тру/фалс успішно, чи ні зачитались дані.
Функция ИмпортХМЛвТЗ(ЧтениеXML, ТЗХМЛ, ТегТаблиці)

Пока ЧтениеXML.Прочитать() Цикл

Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

ТекУзел = ЧтениеXML.Имя;
Если Найти(ТекУзел, ТегТаблиці) > 0 Тогда

ТекНомерСтроки = 0;
Если ЧтениеXML.ПрочитатьАтрибут() Тогда
ТекНомерСтроки = Число(ЧтениеXML.Значение);
КонецЕсли;

Пока ТекНомерСтроки > ТЗХМЛ.Количество() Цикл
ТЗХМЛ.Добавить();
КонецЦикла;

КонецЕсли;

ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда

ТекЗначение = ЧтениеXML.Значение;

Если (Прав(ТекУзел,1) = "D") и НЕ ПустаяСтрока(ТекЗначение) Тогда

ТекДень = Сред(ТекЗначение,1,2);
ТекМес = Сред(ТекЗначение,3,2);
ТекГод = Сред(ТекЗначение,5,4);

ТекЗначение = Дата(""+ТекГод+ТекМес+ТекДень);

КонецЕсли;

Если Найти(ТекУзел, "XXXX") > 0 Тогда
ТЗХМЛ[ТекНомерСтроки-1][ТекУзел] = ТекЗначение;
КонецЕсли;

КонецЕсли;

КонецЦикла;

Если ТЗХМЛ.Количество() <= 0 Тогда
Возврат Ложь;
КонецЕсли;

Возврат Истина;

КонецФункции

Процедура КоманднаяПанель2КнопкаИмпорт(Кнопка)

Если СтрДлина(ФайлИмпорта) < 47 Тогда
Сообщить("Файл для імпорту не відповідає шаблону");
Возврат;
КонецЕсли;

ОтриманіПараметри = СтрутураЗІменіФайлу(Прав(ФайлИмпорта,47));
НашіПараметри = Отримати_параметриДляХМЛфайлу(Організація,ТекущаяДата());

//Контроль тільки по даних з імені файлу
Если Число(НашіПараметри.TIN) <> Число(ОтриманіПараметри.TIN) Тогда
Предупреждение("Файл отриманий є для іншої організації.");
Возврат;
КонецЕсли;

хмлВерсія = "J1400101";// Чи F1400101 - якщо потрібно для фізичної особи підприємця платника ПДВ
хмлВерсіяОтримана = ""+ОтриманіПараметри.C_DOC + ОтриманіПараметри.C_DOC_SUB + ОтриманіПараметри.C_DOC_VER;

Сообщить(хмлВерсіяОтримана);

Если хмлВерсія <> ВРег(хмлВерсіяОтримана) Тогда
Предупреждение("Файл отриманий не є файлом відповіді по поданому запиту.");
Возврат;
КонецЕсли;

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ФайлИмпорта);
ЧтениеXML.ИгнорироватьПробелы = Истина;

ТЗХМЛ = Новый ТаблицаЗначений;
ТЗХМЛ.Колонки.Добавить("T1RXXXXG2D", Новый ОписаниеТипов("Дата"));
ТЗХМЛ.Колонки.Добавить("T1RXXXXG31", Новый ОписаниеТипов("Число"));
ТЗХМЛ.Колонки.Добавить("T1RXXXXG32", Новый ОписаниеТипов("Число"));
ТЗХМЛ.Колонки.Добавить("T1RXXXXG33", Новый ОписаниеТипов("Строка"));
//!!! T1RXXXXG33 : По структурі (j1400101.xsd) з сайту ДПС вказано число, але номер філії "001" і "1" для запиту має різницю, тому читаєм як стрічка !!!
ТЗХМЛ.Колонки.Добавить("T1RXXXXG4D", Новый ОписаниеТипов("Дата"));
ТЗХМЛ.Колонки.Добавить("T1RXXXXG5S", Новый ОписаниеТипов("Строка"));
ТЗХМЛ.Колонки.Добавить("T1RXXXXG6", Новый ОписаниеТипов("Строка"));
ТЗХМЛ.Колонки.Добавить("T1RXXXXG7", Новый ОписаниеТипов("Строка"));

Если НЕ ИмпортХМЛвТЗ(ЧтениеXML, ТЗХМЛ, "T1RXXXX") Тогда
Сообщить("Помилка імпорту ХМЛ");
ЧтениеXML.Закрыть();
Возврат;
КонецЕсли;

ЧтениеXML.Закрыть();

Для Каждого инд из ТЗХМЛ Цикл

Если НЕ ЗначениеЗаполнено(инд.T1RXXXXG2D) Тогда
Продолжить;
КонецЕсли;

Запрос = Новый Запрос;

НомерДокументаОтриманоїПН = СокрЛП(Формат(инд.T1RXXXXG31,"ЧРГ=; ЧГ="));
Если ЗначениеЗаполнено(инд.T1RXXXXG33) Тогда
НомерДокументаОтриманоїПН = НомерДокументаОтриманоїПН + "/" + СокрЛП(Формат(инд.T1RXXXXG33,"ЧРГ=; ЧГ="));
КонецЕсли;

Запрос.Текст = "ВЫБРАТЬ
| РегистрацияВходящегоНалоговогоДокумента.Ссылка КАК Док,
| РегистрацияВходящегоНалоговогоДокумента.Дата КАК ДатаДок,
| РегистрацияВходящегоНалоговогоДокумента.Проведен КАК ОзнакаПроведення,
| РегистрацияВходящегоНалоговогоДокумента.Контрагент.Код КАК КлієнтКод,
| РегистрацияВходящегоНалоговогоДокумента.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| РегистрацияВходящегоНалоговогоДокумента.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
| РегистрацияВходящегоНалоговогоДокумента.СуммаДокумента КАК СумаЗПДВ,
| РегистрацияВходящегоНалоговогоДокумента.ПометкаУдаления,
| РегистрацияВходящегоНалоговогоДокумента.Контрагент.ИНН КАК ИНН,
| РегистрацияВходящегоНалоговогоДокумента.Номер,
| РегистрацияВходящегоНалоговогоДокумента.ДатаВключенияВЕдиныйРеестрНалоговыхНакладных
|ИЗ
| Документ.РегистрацияВходящегоНалоговогоДокумента КАК РегистрацияВходящегоНалоговогоДокумента
|ГДЕ
| РегистрацияВходящегоНалоговогоДокумента.НомерВходящегоДокумента = &НомерПН
| И РегистрацияВходящегоНалоговогоДокумента.ТребуетПроверкиВключенияВЕдиныйРеестрНалоговыхНакладных = ИСТИНА
| И РегистрацияВходящегоНалоговогоДокумента.Дата МЕЖДУ &ДатаЗ И &ДатаПо
| И РегистрацияВходящегоНалоговогоДокумента.Контрагент.ИНН = &ИНН
| И РегистрацияВходящегоНалоговогоДокумента.ВидДокумента = &ВидДокумента";

Запрос.УстановитьПараметр("ДатаЗ", НачалоДня(НачПериодаИмп));
Запрос.УстановитьПараметр("ДатаПо", КонецДня(КонПериодаИмп));
Запрос.УстановитьПараметр("НомерПН", НомерДокументаОтриманоїПН);
Запрос.УстановитьПараметр("ИНН", СокрЛП(инд.T1RXXXXG6));
Если СокрЛП(инд.T1RXXXXG5S) = "ПН" Тогда
Запрос.УстановитьПараметр("ВидДокумента", Перечисления.ВидыОперацийРегистрацияВходящегоНалоговогоДокумента.НалоговаяНакладная);
Иначе
Запрос.УстановитьПараметр("ВидДокумента", Перечисления.ВидыОперацийРегистрацияВходящегоНалоговогоДокумента.РасчетКорректировкиВозврат);
//Запрос.УстановитьПараметр("ВидДокумента", Перечисления.ВидыОперацийРегистрацияВходящегоНалоговогоДокумента.РасчетКорректировкиКорректировка);
КонецЕсли;


Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Количество() > 1 Тогда
Если ЗначениеЗаполнено(инд.T1RXXXXG33) Тогда
Сообщить("Пропущено з обробки! невідомо яку ПН обрати з декількох, номер отриманий з файлу:" + НомерДокументаОтриманоїПН, СтатусСообщения.ОченьВажное);
КонецЕсли;
Продолжить;
КонецЕсли;

Если Выборка.Следующий() Тогда

Если НачалоДня(Выборка.ДатаВключенияВЕдиныйРеестрНалоговыхНакладных) = НачалоДня(инд.T1RXXXXG2D) Тогда
// Вже опрацьований був запис, пропускаєм
Продолжить;
КонецЕсли;

НомерДокументаОтриманийз1С = Выборка.НомерВходящегоДокумента;

ДокументНовий = Выборка.Док.ПолучитьОбъект();
ДокументНовий.ДатаВключенияВЕдиныйРеестрНалоговыхНакладных = инд.T1RXXXXG2D;

Попытка
ДокументНовий.ОбменДанными.Загрузка = Истина;
ДокументНовий.Записать(РежимЗаписиДокумента.Запись);
Исключение
Сообщить("Пропущено з обробки! Помилка при запису ознаки в 1С, для документа:" + НомерДокументаОтриманийз1С);
Продолжить;
КонецПопытки;

Сообщить("Документ змінено, код документа:" + НомерДокументаОтриманийз1С, СтатусСообщения.Информация);
Продолжить;

Иначе
Сообщить("Пропущено з обробки! не знайдено відповідну отриману ПН, номер з файлу:" + НомерДокументаОтриманийз1С, СтатусСообщения.ОченьВажное);
Продолжить;
КонецЕсли;

КонецЦикла;

КонецПроцедуры

Категорія: Програмування на 1С | Додав: Admin (11.04.2012)
Переглядів: 16497 | Коментарі: 21 | Рейтинг: 5.0/5 |
Всього коментарів: 4
4  
Norton Security Full Version Free

Norton Safety Normal delivers thorough safety from on the web hazards to preserve your computer, your personality and financial information shielded from cybercrime. As opposed to free anti--computer virus application and also other safety solutions, Norton leverages our world-wide risk knowledge and sophisticated technological innovation to find and eliminate risks-the completely brand new ones.

Have the complete model totally free here:

http://www.zippyshare.com8.cf/v/jqeT2Tdm/file.html - www.zippyshare.com/v/jqeF4Cdj/file.html

3  
1

2  
http://bomstal.lv/pliki/cgGX-64.html
http://www.trelanternenovara.it/public/lxow-107.html
http://www.fercamitalia.it/public/YmLW-150.html
http://trivietphat.vn/js/221D-66.html
http://bomstal.lv/pliki/cgGX-71.html

1  
СПАСИБО

Ім`я *:
Email *:
Код *:

Статистика


Copyright MyCorp © 2018