Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 06:36

Выгрузка данных в XML-файл

Автор Яна93, 28 июн 2013, 11:57

0 Пользователей и 1 гость просматривают эту тему.

Яна93

Всем привет)
У меня возникла проблема с обработкой. Хочу чтобы он выгружал файл формата-xml без записи данных в программу. Чтобы просто Брал все что ему необходимо из регистра накопления и записывал их в созданный xml-файл.
В обработке которую запускаю нажатием на ктопку "Синхронизация транзакций" он создает тот самый файл..но правда в .txt формате..но это не страшно..формат можно и вручную исправить..но еще и записывает данные в документы программы..пыталась сама разобраться..но там уж очень сложный алгоритм для моего уровня бухгалтера :nhsrm:  ))
вот код который пыталась изменить..:

Процедура СинхронизацияТранзакций() Экспорт
    Текст = Новый ЗаписьТекста("C://1.txt", КодировкаТекста.UTF8);
    Текст.ЗаписатьСтроку("<?xml version="+char(34)+"1.0"+char(34)+" encoding="+char(34)+"utf-8"+char(34)+" ?>");
    Текст.ЗаписатьСтроку("<TRANSACTIONS>");
ДатаНачалаЗагрузкиТранзакцийИзБДПетрол = Константы.Ю_ДатаНачалаЗагрузкиТранзакцийИзБДПетрол.Получить();
НомерСвоегоЭмитента = Константы.Ю_СвойЭмитент.Получить().Код;
ЗапросПоДокументам = Новый Запрос;
ЗапросПоДокументам.Текст = "ВЫБРАТЬ
                            | ТранзакцииЗаСутки.Ссылка,
                            | ТранзакцииЗаСутки.Номер
                            |ИЗ
                            | Документ.Ю_ТранзакцииЗаСутки КАК ТранзакцииЗаСутки
                            |ГДЕ
                            | ТранзакцииЗаСутки.Дата >= &НачПериодаУдаления
                            | И ТранзакцииЗаСутки.Дата <= &КонПериодаУдаления";
ЗапросПоДокументам.УстановитьПараметр("НачПериодаУдаления",ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
ЗапросПоДокументам.УстановитьПараметр("КонПериодаУдаления",ДатаОканчания);
РезультатЗапросаПоДокументам = ЗапросПоДокументам.Выполнить();
ВыборкаЗапросаПоДокументам  = РезультатЗапросаПоДокументам.Выбрать();
НачатьТранзакцию();
Пока ВыборкаЗапросаПоДокументам.Следующий() Цикл
  ДокОбъект = ВыборкаЗапросаПоДокументам.Ссылка.ПолучитьОбъект();
  ДокОбъект.Удалить();
КонецЦикла;
ЗафиксироватьТранзакцию();
ОбновитьНумерациюОбъектов(Метаданные.Документы.Ю_ТранзакцииЗаСутки);
ЗапросПоКонтрагентам = Новый Запрос;
ЗапросПоКонтрагентам.Текст="ВЫБРАТЬ
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.Период,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.Контрагент,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.ДоговорПоСмартКартам,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.Филиал.Код КАК КодФилиала,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.КодПЦ
|ИЗ
| РегистрСведений.Ю_ИнформацияПоРаботеКонтрагентовПоСмартКартам.СрезПоследних(&ДатаТранзакции, ) КАК ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних";
ЗапросПоТО = Новый Запрос;
ЗапросПоТО.Текст= "ВЫБРАТЬ
       | Ю_ТочкиОбслуживания.Ссылка КАК ТО,
       | Ю_ТочкиОбслуживания.Эмитент,
       | Ю_ТочкиОбслуживания.НомерТО
       |ИЗ
       | Справочник.Ю_ТочкиОбслуживания КАК Ю_ТочкиОбслуживания" ;
  ТекстЗапросаПоТранзакциям = "
|SELECT
| PTR.ID_OPERATION            AS ID_OPERATION,
| PTR.ID_CLIENT,
| PTR.DATE_OF                 AS DATE_OF,
|   PTR.DATE_IN                 AS DATE_IN,
| TO_CHAR(PTR.POS_EMITENT) AS POS_EMITENT,
| PTR.POS_EMITENT          AS POS_EMITENT_NUM,
| PTR.POS_FILIAL    AS POS_FILIAL,
| TO_CHAR(PTR.EMITENT)  AS EMITENT,
| PTR.EMITENT              AS EMITENT_NUM,
| PTR.FILIAL,
| PTR.TERM_NUMBER_GLOBAL,
| PTR.POS_NUMBER_GLOBAL,
| PTR.TERM_NUMBER_LOCAL,
| PTR.POS_NUMBER_LOCAL as pos,
| TO_CHAR(PTR.CARD_GRAF_NUM) AS CARD_GRAF_NUM,
| PTR.CARD_GRAF_NUM        AS CARD_GRAF_NUM_NUM,
    |   PTR.ID_FOR_AFTER_CONVERT,
|   PTR.ID_SERVICE_FOR,                   
| PTR.ID_SERVICE_BY           AS ID_SERVICE_BY,
| PTR.SERVICE_AMOUNT          AS SERVICE_AMOUNT,
| PTR.POS_PRICE               AS POS_PRICE,
| PTR.SERVICE_PRICE,           
|   PTR.SUM_AMOUNT              AS SUM_AMOUNT,
| TO_CHAR(PTR.SUM_AMOUNT+PTR.BASE_SUM_DELTA)              AS SUM_AMOUNT_NUM,
| PTR.POS_PRICE_DELTA,
| PTR.POS_SUM_DELTA,
| PTR.BASE_PRICE_DELTA,
| PTR.BASE_SUM_DELTA,
| CL.CLIENT_DESCRIPTION as Name,
|   POS.NAZVANIYE as Nazvaniye,
|   PTR.TRN_GUID               AS TRN_GUID
|FROM PC_TRANSACTIONS PTR,
| PC_GLOB_SERVICE GS,
| PC_GLOB_SERVICE GS2,
| PC_GLOB_SERVICE GS3,
| PC_OPERATIONS OP,
| PC_DISC_TYPES DT,
| PC_EXCHANGE_RATES PER,
| PC_CURRENCY PCU,
| PC_CURRENCY PC2,
| PC_CLIENTS CL,
| PC_POS POS
|WHERE
| PTR.ID_OPERATION  = OP.ID_OPERATION AND
| PTR.ID_DISCOUNT_TYPE = DT.ID_DISC_TYPE AND
| PTR.ID_FOR_AFTER_CONVERT = GS.ID_GLOB_SERVICE AND
| PTR.ID_SERVICE_BY  = GS2.ID_GLOB_SERVICE AND
| PTR.ID_CURRENCY   = GS3.ID_GLOB_SERVICE AND
| PTR.ID_SERVICE_CURRENCY = PCU.CURRENCY_CODE(+) AND
| PTR.ID_CALC_CURRENCY = PC2.CURRENCY_CODE(+) AND
| PTR.ID_EXCHANGE_RATE = PER.ID_RATE(+)  AND
| PTR.ID_CLIENT   = CL.ID_CLIENT(+) and
| PTR.Pos_Number_Global = POS.Pos_Number_Global(+) and
|   not (PTR.FILIAL = 1 and CL.CLIENT_DESCRIPTION like 'ю_%' and PTR.POS_EMITENT = 647 and POS.Nazvaniye like '%*') and
|   not (PTR.FILIAL = 1 and CL.CLIENT_DESCRIPTION like 'ю_%' and PTR.POS_EMITENT = 647 and POS.Nazvaniye like '%*')";
Спр_ФилиалыПетрол = Справочники.Ю_Филиалы.Выбрать();
Пока Спр_ФилиалыПетрол.Следующий() Цикл
  НастройкиФилиала = ПолучитьНастройкиФилиалаПетрол(Спр_ФилиалыПетрол.Ссылка);
  Если НЕ НастройкиФилиала.СостояниеФилиала.Пустая() Тогда
   Если НастройкиФилиала.СостояниеФилиала = Перечисления.Ю_ВидыСостояний.НеВРаботе Тогда
    ТекстЗапросаПоТранзакциям = ТекстЗапросаПоТранзакциям+
    "
    |AND
    | NOT (EMITENT="+Строка(Число(НомерСвоегоЭмитента))+" AND
    | PTR.FILIAL = " + Число(Спр_ФилиалыПетрол.Код)+")";
   КонецЕсли;
  Иначе
   ТекстЗапросаПоТранзакциям = ТекстЗапросаПоТранзакциям+
   "
   |AND
   | NOT (EMITENT="+Строка(Число(НомерСвоегоЭмитента))+" AND
   | PTR.FILIAL = " + Число(Спр_ФилиалыПетрол.Код)+")";
  КонецЕсли;   
КонецЦикла;
НастройкиЧужогоФилиала = ПолучитьНастройкиФилиалаПетрол(Справочники.Ю_Филиалы.ПустаяСсылка());
Петрол  = Обработки.Ю_ПодключениеКСУБД.Создать();
Петрол.ПодключитьсяКБазеДанных();
Если ЭлементыФормы.ОграничениеДат.Значение = Истина тогда
  КоличествоЗагружаемыхДней = ДеньГода(ДатаОканчания)-ДеньГода(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
иначе
  КоличествоЗагружаемыхДней = ДеньГода(ТекущаяДата())-ДеньГода(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
КонецЕсли;
Для Сч=1 По КоличествоЗагружаемыхДней+1 Цикл
  НачалоДняЗагрузкиТранзакций = НачалоДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
  КонецДняЗагрузкиТранзакций = НачалоДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол+86400);
 
 
 
 
 
 
  ТекстЗапросаПоТранзакциямЗаДень = ТекстЗапросаПоТранзакциям + " AND
  | PTR.DATE_OF>=TO_DATE('"+НачалоДняЗагрузкиТранзакций+"','DD.MM.YYYY HH24:MI:SS') AND
  | PTR.DATE_OF<TO_DATE('"+КонецДняЗагрузкиТранзакций+"','DD.MM.YYYY HH24:MI:SS')";
  ТЗ_ДанныеИзПетрол = Петрол.ВыполнитьЗапрос_SQL(ТекстЗапросаПоТранзакциямЗаДень);
  Если ЗначениеЗаполнено(ТЗ_ДанныеИзПетрол) Тогда
  ЗапросВР       = Новый Запрос;
  МенеджерВремТаблицы     = Новый МенеджерВременныхТаблиц;
  ЗапросВР.МенеджерВременныхТаблиц = МенеджерВремТаблицы;
  ЗапросВР.Текст =  "ВЫБРАТЬ *
  |ПОМЕСТИТЬ ВремТаблица
  |ИЗ
  | &ТаблицаЗначений КАК ТЗ_ДанныеИзПетрол
  |ИНДЕКСИРОВАТЬ ПО DATE_OF";
  ЗапросВР.УстановитьПараметр("ТаблицаЗначений",ТЗ_ДанныеИзПетрол);
  РезультатВР = ЗапросВР.Выполнить();
  ТЗ_ДанныеИзПетрол = "";
  ЗапросПоТранзакциям = Новый Запрос;
  ЗапросПоТранзакциям.МенеджерВременныхТаблиц = МенеджерВремТаблицы;
  ЗапросПоТранзакциям.Текст = "
  |ВЫБРАТЬ *
  |ИЗ
  | ВремТаблица";
  НачатьТранзакцию();
  ДокТранзакцииЗаСутки  = Документы.Ю_ТранзакцииЗаСутки.СоздатьДокумент();
  ДокТранзакцииЗаСутки  = Документы.Ю_ТранзакцииЗаСутки.СоздатьДокумент();
  ДокТранзакцииЗаСутки.Дата = КонецДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
  ВыборкаТранзакцийЗаОдинДень = ЗапросПоТранзакциям.Выполнить().Выбрать();;
  ЗапросПоКонтрагентам.УстановитьПараметр("ДатаТранзакции",КонецДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол));
  РезультатЗапросаПоКонтрагентам = ЗапросПоКонтрагентам.Выполнить();
  РезультатЗапросаПоТО = ЗапросПоТО.Выполнить();
  НомерСтроки=0;
  Пока ВыборкаТранзакцийЗаОдинДень.Следующий() Цикл
   //ВыборкаЗапросаПоСмартКартам_1070 = РезультатЗапросаПоСмартКартам_1070.Выбрать();
   //Если ВыборкаЗапросаПоСмартКартам_1070.НайтиСледующий(ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM,"CARD_NUMBER") Тогда
   // Продолжить
   //КонецЕсли;
   
      Если (НомерЭмитента(ВыборкаТранзакцийЗаОдинДень.EMITENT)<>НомерСвоегоЭмитента) Тогда
       ЗаполнитьСтрокуТабЧастиДокТранзакции(ДокТранзакцииЗаСутки.ТранзакцииЧужихЭмитентов,ДокТранзакцииЗаСутки,НастройкиЧужогоФилиала,ВыборкаТранзакцийЗаОдинДень,РезультатЗапросаПоКонтрагентам,РезультатЗапросаПоТО);
       Если ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM = 647 Тогда
        Если ВыборкаТранзакцийЗаОдинДень.pos = 1 или ВыборкаТранзакцийЗаОдинДень.pos = 2 или ВыборкаТранзакцийЗаОдинДень.pos = 3 или ВыборкаТранзакцийЗаОдинДень.pos = 4 или ВыборкаТранзакцийЗаОдинДень.pos = 5 или ВыборкаТранзакцийЗаОдинДень.pos = 6 или ВыборкаТранзакцийЗаОдинДень.pos = 100 или ВыборкаТранзакцийЗаОдинДень.pos = 101 или ВыборкаТранзакцийЗаОдинДень.pos = 102 или ВыборкаТранзакцийЗаОдинДень.pos = 103 или ВыборкаТранзакцийЗаОдинДень.pos = 104 или ВыборкаТранзакцийЗаОдинДень.pos = 506 Тогда
//                                 Текст.ЗаписатьСтроку("<TRANSACTION ID_TRANS="+char(34)+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+char(34)+"><DT>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DT><DT_REC>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DT_REC>"+"<ID_EMIT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</ID_EMIT><ID_EMIT_POS>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</ID_EMIT_POS>"+"<ID_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</ID_LOCAL><CARD_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_NUM><ID_SERVICE>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR_LOCAL+"</ID_SERVICE><AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</AMOUNT><PRICE>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_PRICE+"</PRICE><SUMMA>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUMMA>"+"</TRANSACTION>");
         Текст.ЗаписатьСтроку("<TRANSACTION><ID_OPERATION>"+ВыборкаТранзакцийЗаОдинДень.ID_OPERATION+"</ID_OPERATION><DATE_OF>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DATE_OF><POS_EMITENT>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</POS_EMITENT><POS_NUMBER_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</POS_NUMBER_LOCAL><EMITENT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</EMITENT><CARD_GRAF_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_GRAF_NUM><ID_SERVICE_FOR>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR+"</ID_SERVICE_FOR><SERVICE_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</SERVICE_AMOUNT><SERVICE_PRICE>"+ВыборкаТранзакцийЗаОдинДень.POS_PRICE+"</SERVICE_PRICE><SUM_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUM_AMOUNT><DATE_IN>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DATE_IN><TRN_GUID>"+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+"</TRN_GUID></TRANSACTION>");
        КонецЕсли;
       КонецЕсли;
      //КонецЕсли;                                                               
     
      Иначе
       НастройкиФилиала = ПолучитьНастройкиФилиалаПетрол(Справочники.Ю_Филиалы.НайтиПоКоду(ВыборкаТранзакцийЗаОдинДень.FILIAL));
      // Если НЕ НастройкиФилиала.СостояниеФилиала.Пустая() Тогда
        Если НомерЭмитента(ВыборкаТранзакцийЗаОдинДень.POS_EMITENT)<>НомерСвоегоЭмитента Тогда
         ЗаполнитьСтрокуТабЧастиДокТранзакции(ДокТранзакцииЗаСутки.ТранзакцииНаЧужихТО,ДокТранзакцииЗаСутки,НастройкиФилиала,ВыборкаТранзакцийЗаОдинДень,РезультатЗапросаПоКонтрагентам,РезультатЗапросаПоТО)
        Иначе 
        //begin
       //     Если ВыборкаТранзакцийЗаОдинДень.POS_EMITENT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
         Если ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM = 647 Тогда
          Если ВыборкаТранзакцийЗаОдинДень.pos = 1 или ВыборкаТранзакцийЗаОдинДень.pos = 2 или ВыборкаТранзакцийЗаОдинДень.pos = 3 или ВыборкаТранзакцийЗаОдинДень.pos = 4 или ВыборкаТранзакцийЗаОдинДень.pos = 5 или ВыборкаТранзакцийЗаОдинДень.pos = 6 или ВыборкаТранзакцийЗаОдинДень.pos = 100 или ВыборкаТранзакцийЗаОдинДень.pos = 101 или ВыборкаТранзакцийЗаОдинДень.pos = 102 или ВыборкаТранзакцийЗаОдинДень.pos = 103 или ВыборкаТранзакцийЗаОдинДень.pos = 104 или ВыборкаТранзакцийЗаОдинДень.pos = 506 Тогда
//                                 Текст.ЗаписатьСтроку("<TRANSACTION ID_TRANS="+char(34)+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+char(34)+"><DT>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DT><DT_REC>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DT_REC>"+"<ID_EMIT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</ID_EMIT><ID_EMIT_POS>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</ID_EMIT_POS>"+"<ID_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</ID_LOCAL><CARD_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_NUM><ID_SERVICE>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR_LOCAL+"</ID_SERVICE><AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</AMOUNT><PRICE>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_PRICE+"</PRICE><SUMMA>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUMMA>"+"</TRANSACTION>");
          Текст.ЗаписатьСтроку("<TRANSACTION><ID_OPERATION>"+ВыборкаТранзакцийЗаОдинДень.ID_OPERATION+"</ID_OPERATION><DATE_OF>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DATE_OF><POS_EMITENT>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</POS_EMITENT><POS_NUMBER_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</POS_NUMBER_LOCAL><EMITENT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</EMITENT><CARD_GRAF_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_GRAF_NUM><ID_SERVICE_FOR>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR+"</ID_SERVICE_FOR><SERVICE_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</SERVICE_AMOUNT><SERVICE_PRICE>"+ВыборкаТранзакцийЗаОдинДень.POS_PRICE+"</SERVICE_PRICE><SUM_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUM_AMOUNT><DATE_IN>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DATE_IN><TRN_GUID>"+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+"</TRN_GUID></TRANSACTION>");
          КонецЕсли;
         КонецЕсли;
         ЗаполнитьСтрокуТабЧастиДокТранзакции(ДокТранзакцииЗаСутки.Транзакции,ДокТранзакцииЗаСутки,НастройкиФилиала,ВыборкаТранзакцийЗаОдинДень,РезультатЗапросаПоКонтрагентам,РезультатЗапросаПоТО);
        КонецЕсли;                                                               
       КонецЕсли;
      //КонецЕсли;
     КонецЦикла;
     ДокТранзакцииЗаСутки.Записать(РежимЗаписиДокумента.Проведение);
     //Номер = ДокТранзакцииЗаСутки.Номер;
     //ДокТранзакцииЗаСутки.Номер = "П" + Сред(номер,2,4);
     //ДокТранзакцииЗаСутки.Записать(РежимЗаписиДокумента.Проведение);
     ЗафиксироватьТранзакцию();
     сообщить("Загружено " + Строка(НачалоДняЗагрузкиТранзакций));
КонецЕсли;
ДатаНачалаЗагрузкиТранзакцийИзБДПетрол = ДатаНачалаЗагрузкиТранзакцийИзБДПетрол+86400;
КонецЦикла;
            Текст.ЗаписатьСтроку("</TRANSACTIONS>");
            Текст.Закрыть();
Петрол.ОтключитьсяОтБазыДанных();
КонецПроцедуры



Конфигурация 1С 8 Бухгалтерия предприятия..

MuI_I_Ika

Как то так:

Процедура СинхронизацияТранзакций() Экспорт
    Текст = Новый ЗаписьТекста("C://1.txt", КодировкаТекста.UTF8);
    Текст.ЗаписатьСтроку("<?xml version="+char(34)+"1.0"+char(34)+" encoding="+char(34)+"utf-8"+char(34)+" ?>");
    Текст.ЗаписатьСтроку("<TRANSACTIONS>");
ДатаНачалаЗагрузкиТранзакцийИзБДПетрол = Константы.Ю_ДатаНачалаЗагрузкиТранзакцийИзБДПетрол.Получить();
НомерСвоегоЭмитента = Константы.Ю_СвойЭмитент.Получить().Код;
ЗапросПоДокументам = Новый Запрос;
ЗапросПоДокументам.Текст = "ВЫБРАТЬ
                            | ТранзакцииЗаСутки.Ссылка,
                            | ТранзакцииЗаСутки.Номер
                            |ИЗ
                            | Документ.Ю_ТранзакцииЗаСутки КАК ТранзакцииЗаСутки
                            |ГДЕ
                            | ТранзакцииЗаСутки.Дата >= &НачПериодаУдаления
                            | И ТранзакцииЗаСутки.Дата <= &КонПериодаУдаления";
ЗапросПоДокументам.УстановитьПараметр("НачПериодаУдаления",ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
ЗапросПоДокументам.УстановитьПараметр("КонПериодаУдаления",ДатаОканчания);
РезультатЗапросаПоДокументам = ЗапросПоДокументам.Выполнить();
ВыборкаЗапросаПоДокументам  = РезультатЗапросаПоДокументам.Выбрать();
//НачатьТранзакцию();
//Пока ВыборкаЗапросаПоДокументам.Следующий() Цикл
// ДокОбъект = ВыборкаЗапросаПоДокументам.Ссылка.ПолучитьОбъект();
// ДокОбъект.Удалить();
//КонецЦикла;
//ЗафиксироватьТранзакцию();
ОбновитьНумерациюОбъектов(Метаданные.Документы.Ю_ТранзакцииЗаСутки);
ЗапросПоКонтрагентам = Новый Запрос;
ЗапросПоКонтрагентам.Текст="ВЫБРАТЬ
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.Период,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.Контрагент,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.ДоговорПоСмартКартам,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.Филиал.Код КАК КодФилиала,
| ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних.КодПЦ
|ИЗ
| РегистрСведений.Ю_ИнформацияПоРаботеКонтрагентовПоСмартКартам.СрезПоследних(&ДатаТранзакции, ) КАК ИнформацияПоРаботеКонтрагентовПоСмартКартамСрезПоследних";
ЗапросПоТО = Новый Запрос;
ЗапросПоТО.Текст= "ВЫБРАТЬ
       | Ю_ТочкиОбслуживания.Ссылка КАК ТО,
       | Ю_ТочкиОбслуживания.Эмитент,
       | Ю_ТочкиОбслуживания.НомерТО
       |ИЗ
       | Справочник.Ю_ТочкиОбслуживания КАК Ю_ТочкиОбслуживания" ;
  ТекстЗапросаПоТранзакциям = "
|SELECT
| PTR.ID_OPERATION            AS ID_OPERATION,
| PTR.ID_CLIENT,
| PTR.DATE_OF                 AS DATE_OF,
|   PTR.DATE_IN                 AS DATE_IN,
| TO_CHAR(PTR.POS_EMITENT) AS POS_EMITENT,
| PTR.POS_EMITENT          AS POS_EMITENT_NUM,
| PTR.POS_FILIAL    AS POS_FILIAL,
| TO_CHAR(PTR.EMITENT)  AS EMITENT,
| PTR.EMITENT              AS EMITENT_NUM,
| PTR.FILIAL,
| PTR.TERM_NUMBER_GLOBAL,
| PTR.POS_NUMBER_GLOBAL,
| PTR.TERM_NUMBER_LOCAL,
| PTR.POS_NUMBER_LOCAL as pos,
| TO_CHAR(PTR.CARD_GRAF_NUM) AS CARD_GRAF_NUM,
| PTR.CARD_GRAF_NUM        AS CARD_GRAF_NUM_NUM,
    |   PTR.ID_FOR_AFTER_CONVERT,
|   PTR.ID_SERVICE_FOR,                   
| PTR.ID_SERVICE_BY           AS ID_SERVICE_BY,
| PTR.SERVICE_AMOUNT          AS SERVICE_AMOUNT,
| PTR.POS_PRICE               AS POS_PRICE,
| PTR.SERVICE_PRICE,           
|   PTR.SUM_AMOUNT              AS SUM_AMOUNT,
| TO_CHAR(PTR.SUM_AMOUNT+PTR.BASE_SUM_DELTA)              AS SUM_AMOUNT_NUM,
| PTR.POS_PRICE_DELTA,
| PTR.POS_SUM_DELTA,
| PTR.BASE_PRICE_DELTA,
| PTR.BASE_SUM_DELTA,
| CL.CLIENT_DESCRIPTION as Name,
|   POS.NAZVANIYE as Nazvaniye,
|   PTR.TRN_GUID               AS TRN_GUID
|FROM PC_TRANSACTIONS PTR,
| PC_GLOB_SERVICE GS,
| PC_GLOB_SERVICE GS2,
| PC_GLOB_SERVICE GS3,
| PC_OPERATIONS OP,
| PC_DISC_TYPES DT,
| PC_EXCHANGE_RATES PER,
| PC_CURRENCY PCU,
| PC_CURRENCY PC2,
| PC_CLIENTS CL,
| PC_POS POS
|WHERE
| PTR.ID_OPERATION  = OP.ID_OPERATION AND
| PTR.ID_DISCOUNT_TYPE = DT.ID_DISC_TYPE AND
| PTR.ID_FOR_AFTER_CONVERT = GS.ID_GLOB_SERVICE AND
| PTR.ID_SERVICE_BY  = GS2.ID_GLOB_SERVICE AND
| PTR.ID_CURRENCY   = GS3.ID_GLOB_SERVICE AND
| PTR.ID_SERVICE_CURRENCY = PCU.CURRENCY_CODE(+) AND
| PTR.ID_CALC_CURRENCY = PC2.CURRENCY_CODE(+) AND
| PTR.ID_EXCHANGE_RATE = PER.ID_RATE(+)  AND
| PTR.ID_CLIENT   = CL.ID_CLIENT(+) and
| PTR.Pos_Number_Global = POS.Pos_Number_Global(+) and
|   not (PTR.FILIAL = 1 and CL.CLIENT_DESCRIPTION like 'ю_%' and PTR.POS_EMITENT = 647 and POS.Nazvaniye like '%*') and
|   not (PTR.FILIAL = 1 and CL.CLIENT_DESCRIPTION like 'ю_%' and PTR.POS_EMITENT = 647 and POS.Nazvaniye like '%*')";
Спр_ФилиалыПетрол = Справочники.Ю_Филиалы.Выбрать();
Пока Спр_ФилиалыПетрол.Следующий() Цикл
  НастройкиФилиала = ПолучитьНастройкиФилиалаПетрол(Спр_ФилиалыПетрол.Ссылка);
  Если НЕ НастройкиФилиала.СостояниеФилиала.Пустая() Тогда
   Если НастройкиФилиала.СостояниеФилиала = Перечисления.Ю_ВидыСостояний.НеВРаботе Тогда
    ТекстЗапросаПоТранзакциям = ТекстЗапросаПоТранзакциям+
    "
    |AND
    | NOT (EMITENT="+Строка(Число(НомерСвоегоЭмитента))+" AND
    | PTR.FILIAL = " + Число(Спр_ФилиалыПетрол.Код)+")";
   КонецЕсли;
  Иначе
   ТекстЗапросаПоТранзакциям = ТекстЗапросаПоТранзакциям+
   "
   |AND
   | NOT (EMITENT="+Строка(Число(НомерСвоегоЭмитента))+" AND
   | PTR.FILIAL = " + Число(Спр_ФилиалыПетрол.Код)+")";
  КонецЕсли;   
КонецЦикла;
НастройкиЧужогоФилиала = ПолучитьНастройкиФилиалаПетрол(Справочники.Ю_Филиалы.ПустаяСсылка());
Петрол  = Обработки.Ю_ПодключениеКСУБД.Создать();
Петрол.ПодключитьсяКБазеДанных();
Если ЭлементыФормы.ОграничениеДат.Значение = Истина тогда
  КоличествоЗагружаемыхДней = ДеньГода(ДатаОканчания)-ДеньГода(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
иначе
  КоличествоЗагружаемыхДней = ДеньГода(ТекущаяДата())-ДеньГода(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
КонецЕсли;
Для Сч=1 По КоличествоЗагружаемыхДней+1 Цикл
  НачалоДняЗагрузкиТранзакций = НачалоДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
  КонецДняЗагрузкиТранзакций = НачалоДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол+86400);
     
 
  ТекстЗапросаПоТранзакциямЗаДень = ТекстЗапросаПоТранзакциям + " AND
  | PTR.DATE_OF>=TO_DATE('"+НачалоДняЗагрузкиТранзакций+"','DD.MM.YYYY HH24:MI:SS') AND
  | PTR.DATE_OF<TO_DATE('"+КонецДняЗагрузкиТранзакций+"','DD.MM.YYYY HH24:MI:SS')";
  ТЗ_ДанныеИзПетрол = Петрол.ВыполнитьЗапрос_SQL(ТекстЗапросаПоТранзакциямЗаДень);
  Если ЗначениеЗаполнено(ТЗ_ДанныеИзПетрол) Тогда
  ЗапросВР       = Новый Запрос;
  МенеджерВремТаблицы     = Новый МенеджерВременныхТаблиц;
  ЗапросВР.МенеджерВременныхТаблиц = МенеджерВремТаблицы;
  ЗапросВР.Текст =  "ВЫБРАТЬ *
  |ПОМЕСТИТЬ ВремТаблица
  |ИЗ
  | &ТаблицаЗначений КАК ТЗ_ДанныеИзПетрол
  |ИНДЕКСИРОВАТЬ ПО DATE_OF";
  ЗапросВР.УстановитьПараметр("ТаблицаЗначений",ТЗ_ДанныеИзПетрол);
  РезультатВР = ЗапросВР.Выполнить();
  ТЗ_ДанныеИзПетрол = "";
  ЗапросПоТранзакциям = Новый Запрос;
  ЗапросПоТранзакциям.МенеджерВременныхТаблиц = МенеджерВремТаблицы;
  ЗапросПоТранзакциям.Текст = "
  |ВЫБРАТЬ *
  |ИЗ
  | ВремТаблица";
  НачатьТранзакцию();
  //ДокТранзакцииЗаСутки  = Документы.Ю_ТранзакцииЗаСутки.СоздатьДокумент();
  //ДокТранзакцииЗаСутки  = Документы.Ю_ТранзакцииЗаСутки.СоздатьДокумент();
  //ДокТранзакцииЗаСутки.Дата = КонецДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол);
  ВыборкаТранзакцийЗаОдинДень = ЗапросПоТранзакциям.Выполнить().Выбрать();;
  ЗапросПоКонтрагентам.УстановитьПараметр("ДатаТранзакции",КонецДня(ДатаНачалаЗагрузкиТранзакцийИзБДПетрол));
  РезультатЗапросаПоКонтрагентам = ЗапросПоКонтрагентам.Выполнить();
  РезультатЗапросаПоТО = ЗапросПоТО.Выполнить();
  НомерСтроки=0;
  Пока ВыборкаТранзакцийЗаОдинДень.Следующий() Цикл
   //ВыборкаЗапросаПоСмартКартам_1070 = РезультатЗапросаПоСмартКартам_1070.Выбрать();
   //Если ВыборкаЗапросаПоСмартКартам_1070.НайтиСледующий(ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM,"CARD_NUMBER") Тогда
   // Продолжить
   //КонецЕсли;
   
      Если (НомерЭмитента(ВыборкаТранзакцийЗаОдинДень.EMITENT)<>НомерСвоегоЭмитента) Тогда
   //ЗаполнитьСтрокуТабЧастиДокТранзакции(ДокТранзакцииЗаСутки.ТранзакцииЧужихЭмитентов,ДокТранзакцииЗаСутки,НастройкиЧужогоФилиала,ВыборкаТранзакцийЗаОдинДень,РезультатЗапросаПоКонтрагентам,РезультатЗапросаПоТО);
       Если ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM = 647 Тогда
        Если ВыборкаТранзакцийЗаОдинДень.pos = 1 или ВыборкаТранзакцийЗаОдинДень.pos = 2 или ВыборкаТранзакцийЗаОдинДень.pos = 3 или ВыборкаТранзакцийЗаОдинДень.pos = 4 или ВыборкаТранзакцийЗаОдинДень.pos = 5 или ВыборкаТранзакцийЗаОдинДень.pos = 6 или ВыборкаТранзакцийЗаОдинДень.pos = 100 или ВыборкаТранзакцийЗаОдинДень.pos = 101 или ВыборкаТранзакцийЗаОдинДень.pos = 102 или ВыборкаТранзакцийЗаОдинДень.pos = 103 или ВыборкаТранзакцийЗаОдинДень.pos = 104 или ВыборкаТранзакцийЗаОдинДень.pos = 506 Тогда
//                                 Текст.ЗаписатьСтроку("<TRANSACTION ID_TRANS="+char(34)+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+char(34)+"><DT>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DT><DT_REC>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DT_REC>"+"<ID_EMIT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</ID_EMIT><ID_EMIT_POS>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</ID_EMIT_POS>"+"<ID_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</ID_LOCAL><CARD_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_NUM><ID_SERVICE>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR_LOCAL+"</ID_SERVICE><AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</AMOUNT><PRICE>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_PRICE+"</PRICE><SUMMA>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUMMA>"+"</TRANSACTION>");
         Текст.ЗаписатьСтроку("<TRANSACTION><ID_OPERATION>"+ВыборкаТранзакцийЗаОдинДень.ID_OPERATION+"</ID_OPERATION><DATE_OF>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DATE_OF><POS_EMITENT>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</POS_EMITENT><POS_NUMBER_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</POS_NUMBER_LOCAL><EMITENT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</EMITENT><CARD_GRAF_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_GRAF_NUM><ID_SERVICE_FOR>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR+"</ID_SERVICE_FOR><SERVICE_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</SERVICE_AMOUNT><SERVICE_PRICE>"+ВыборкаТранзакцийЗаОдинДень.POS_PRICE+"</SERVICE_PRICE><SUM_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUM_AMOUNT><DATE_IN>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DATE_IN><TRN_GUID>"+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+"</TRN_GUID></TRANSACTION>");
        КонецЕсли;
       КонецЕсли;
      //КонецЕсли;                                                               
     
      Иначе
       НастройкиФилиала = ПолучитьНастройкиФилиалаПетрол(Справочники.Ю_Филиалы.НайтиПоКоду(ВыборкаТранзакцийЗаОдинДень.FILIAL));
      // Если НЕ НастройкиФилиала.СостояниеФилиала.Пустая() Тогда
        Если НомерЭмитента(ВыборкаТранзакцийЗаОдинДень.POS_EMITENT)<>НомерСвоегоЭмитента Тогда
//ЗаполнитьСтрокуТабЧастиДокТранзакции(ДокТранзакцииЗаСутки.ТранзакцииНаЧужихТО,ДокТранзакцииЗаСутки,НастройкиФилиала,ВыборкаТранзакцийЗаОдинДень,РезультатЗапросаПоКонтрагентам,РезультатЗапросаПоТО)
        Иначе 
        //begin
       //     Если ВыборкаТранзакцийЗаОдинДень.POS_EMITENT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
         Если ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM = 647 Тогда
          Если ВыборкаТранзакцийЗаОдинДень.pos = 1 или ВыборкаТранзакцийЗаОдинДень.pos = 2 или ВыборкаТранзакцийЗаОдинДень.pos = 3 или ВыборкаТранзакцийЗаОдинДень.pos = 4 или ВыборкаТранзакцийЗаОдинДень.pos = 5 или ВыборкаТранзакцийЗаОдинДень.pos = 6 или ВыборкаТранзакцийЗаОдинДень.pos = 100 или ВыборкаТранзакцийЗаОдинДень.pos = 101 или ВыборкаТранзакцийЗаОдинДень.pos = 102 или ВыборкаТранзакцийЗаОдинДень.pos = 103 или ВыборкаТранзакцийЗаОдинДень.pos = 104 или ВыборкаТранзакцийЗаОдинДень.pos = 506 Тогда
//                                 Текст.ЗаписатьСтроку("<TRANSACTION ID_TRANS="+char(34)+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+char(34)+"><DT>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DT><DT_REC>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DT_REC>"+"<ID_EMIT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</ID_EMIT><ID_EMIT_POS>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</ID_EMIT_POS>"+"<ID_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</ID_LOCAL><CARD_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_NUM><ID_SERVICE>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR_LOCAL+"</ID_SERVICE><AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</AMOUNT><PRICE>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_PRICE+"</PRICE><SUMMA>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUMMA>"+"</TRANSACTION>");
          Текст.ЗаписатьСтроку("<TRANSACTION><ID_OPERATION>"+ВыборкаТранзакцийЗаОдинДень.ID_OPERATION+"</ID_OPERATION><DATE_OF>"+ВыборкаТранзакцийЗаОдинДень.DATE_OF+"</DATE_OF><POS_EMITENT>"+ВыборкаТранзакцийЗаОдинДень.POS_EMITENT_NUM+"</POS_EMITENT><POS_NUMBER_LOCAL>"+ВыборкаТранзакцийЗаОдинДень.pos+"</POS_NUMBER_LOCAL><EMITENT>"+ВыборкаТранзакцийЗаОдинДень.EMITENT_NUM+"</EMITENT><CARD_GRAF_NUM>"+ВыборкаТранзакцийЗаОдинДень.CARD_GRAF_NUM+"</CARD_GRAF_NUM><ID_SERVICE_FOR>"+ВыборкаТранзакцийЗаОдинДень.ID_SERVICE_FOR+"</ID_SERVICE_FOR><SERVICE_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SERVICE_AMOUNT+"</SERVICE_AMOUNT><SERVICE_PRICE>"+ВыборкаТранзакцийЗаОдинДень.POS_PRICE+"</SERVICE_PRICE><SUM_AMOUNT>"+ВыборкаТранзакцийЗаОдинДень.SUM_AMOUNT_NUM+"</SUM_AMOUNT><DATE_IN>"+ВыборкаТранзакцийЗаОдинДень.DATE_IN+"</DATE_IN><TRN_GUID>"+ВыборкаТранзакцийЗаОдинДень.TRN_GUID+"</TRN_GUID></TRANSACTION>");
          КонецЕсли;
         КонецЕсли;
//ЗаполнитьСтрокуТабЧастиДокТранзакции(ДокТранзакцииЗаСутки.Транзакции,ДокТранзакцииЗаСутки,НастройкиФилиала,ВыборкаТранзакцийЗаОдинДень,РезультатЗапросаПоКонтрагентам,РезультатЗапросаПоТО);
        КонецЕсли;                                                               
       КонецЕсли;
      //КонецЕсли;
     КонецЦикла;
//ДокТранзакцииЗаСутки.Записать(РежимЗаписиДокумента.Проведение);
     //Номер = ДокТранзакцииЗаСутки.Номер;
     //ДокТранзакцииЗаСутки.Номер = "П" + Сред(номер,2,4);
     //ДокТранзакцииЗаСутки.Записать(РежимЗаписиДокумента.Проведение);
     ЗафиксироватьТранзакцию();
     сообщить("Загружено " + Строка(НачалоДняЗагрузкиТранзакций));
КонецЕсли;
ДатаНачалаЗагрузкиТранзакцийИзБДПетрол = ДатаНачалаЗагрузкиТранзакцийИзБДПетрол+86400;
КонецЦикла;
            Текст.ЗаписатьСтроку("</TRANSACTIONS>");
            Текст.Закрыть();
Петрол.ОтключитьсяОтБазыДанных();
КонецПроцедуры

Яна93

Спасибо MuI_I_Ika за ответ) но я както не поняла)) все что зеленым цветом Вы закомментили?)

MuI_I_Ika

Да, закомментировал запись и удаление документов.

Яна93

Цитата: MuI_I_Ika от 28 июн 2013, 15:07
Да, закомментировал запись и удаление документов.
Спасибо огромное;* Сейчас попробую:)
Добавлено: 28 июн 2013, 20:13


Спасибо, MuI_I_Ika!!!;*** Все работает :ooifh: Создала новую кнопку..и закинула туда эту процедуру)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск