// простейший пример экспорта в 1С

var OutputFileName :string = 'c:\temp\1C\export1s2.txt';

var MainStorage:integer = 1;

 var
   DATASET :TDATASET; // предопределенный DATASET, сформированный программой
   MINDATE :TDATETIME; // предопределенная минимальная дата
   MAXDATE :TDATETIME; // предопределенная максимальная дата

   CheckOutput :boolean; // предопределенный (выводятся ли расх.накладные)
   CheckInput  :boolean; // предопределенный (выводятся ли прих.накладные)
   CheckInputMoney :boolean;  // предопределенный (выводятся ли выплаты покупателей)

   MyStr :string;
   S :string;
   i :integer;
   table :TTable;

   SkladName :string;

begin
   MyStr := '';

   with TMyWait.create('Идет экспорт данных в 1С') do
   try
     table := Ttable.create(nil);
     table.databasename := 'dbkassa';
     table.tablename := 'agents';
     table.open;

     try


       Text := 'Передача данных '; //+ inttostr(dataset.recordcount); // нет пока свойства  recordcount

       dataset.disablecontrols;
       try
         dataset.first;

         //progressbarpos := dataset.recordcount; нет пока у tdataset свойства recordcount и recno
         while not dataset.eof do begin
           //incprogress;

           if table.findkey([dataset.fieldbyname('sklad').asInteger])
           then begin
             SkladName := stringreplace( table.fieldbyname('name').asstring,'"','""',true);
           end
           else
             SkladName := '';

           S := '';

           if (dataset.fieldbyname('po').asstring = '-')
           then begin
               if (pos('П',dataset.fieldbyname('osnov').asstring) =1)
               then begin

                 //1,"Перемещение товаров в розницу ВН-7837.            (14.11.05)","14.11.05"
                 //2,"Перемещ.товаров в розницу ","41.3","Номенклатура","Медикаменты","МестаХранения","Киоск-Ветлянка","","","41.1","Номенклатура","Медикаменты","МестаХранения","Отдел запасов №1","","",3663.96
                 //2,"Списана торговая наценка","41.3","Номенклатура","Медикаменты","МестаХранения","Киоск-Ветлянка","","","42","МестаХранения","Киоск-Ветлянка","","","","",1263.04
                 //2,"Перемещ.товаров в розницу ","41.3","Номенклатура","Медикаменты","МестаХранения","Киоск-Ветлянка","","","41.1","Номенклатура","Медикаменты","МестаХранения","Отдел запасов №1","","",182.93
                 //2,"Списана торговая наценка","41.3","Номенклатура","Медикаменты","МестаХранения","Киоск-Ветлянка","","","42","МестаХранения","Киоск-Ветлянка","","","","",69.07
                 //3


                 s := '1,"Перемещение товаров в розницу ВН-'
                   +dataset.fieldbyname('nomer').asstring+'.';
                 s := s + stringofchar(' ',49 - length(s));
                 s := s + '('+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+')","'+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+'"';
                 S := S + #13 + #10;

                 s := s+ '2,"Перемещ.товаров в розницу ","41.3","Номенклатура","Медикаменты","МестаХранения","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","","","41.1","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","",'+formatfloat('#.00',dataset.fieldbyname('summa').asfloat);
                 S := S + #13 + #10;
                 s := s+ '2,"Списана торговая наценка","41.3","Номенклатура","Медикаменты","МестаХранения","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","","","42","МестаХранения","'+dataset.fieldbyname('agentname').asstring+'","","","","",' +formatfloat('#.00',dataset.fieldbyname('summa').asfloat - dataset.fieldbyname('summaz').asfloat);
                 S := S + #13 + #10;
                 //s := s+ '2,"Перемещ.товаров в розницу ","41.3","Номенклатура","Медикаменты","МестаХранения","'+dataset.fieldbyname('agentname').asstring+'","","","41.1","Номенклатура","Медикаменты","МестаХранения","'+dataset.fieldbyname('skladname').asstring+'","","",'+formatfloat('#.00',dataset.fieldbyname('summa').asfloat);
                 //S := S + #13 + #10;
                 //s := s+ '2,"Списана торговая наценка","41.3","Номенклатура","Медикаменты","МестаХранения","'+dataset.fieldbyname('agentname').asstring+'","","","42","МестаХранения","'+dataset.fieldbyname('agentname').asstring+'","","","","",' +floatformat('#.00',dataset.fieldbyname('summa').asfloat - dataset.fieldbyname('summaz').asfloat);
                 //S := S + #13 + #10;


               end
               else
               if (pos('В',dataset.fieldbyname('osnov').asstring) =1)
               then begin

                 s := '1,"Возврат товаров поставщику Рн-'
                   +dataset.fieldbyname('nomer').asstring+'.';
                 s := s + stringofchar(' ',49 - length(s));
                 s := s + '('+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+')","'+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+'"';
                 S := S + #13 + #10;

                 s := s+ '2,"Возврат товаров ","41.1","Номенклатура","Медикаменты","МестаХранения","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","","","60.1","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","",'+formatfloat('#.00',-dataset.fieldbyname('summa').asfloat);
                 S := S + #13 + #10;
                 s := s+ '2,"Выделен НДС","19.3","Номенклатура","Медикаменты","МестаХранения","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","","","60.1","МестаХранения","'+dataset.fieldbyname('agentname').asstring+'","","","","",' +formatfloat('#.00',-(dataset.fieldbyname('nds10').asfloat+dataset.fieldbyname('nds18').asfloat));
                 S := S + #13 + #10;

               end
               else begin

                 //1,"Оптовый отпуск №Рн-1483 ГБ          (14.11.05)","14.11.05"
                 //2,"Выручка от продажи","62.1","Контрагенты","МУ ""Балашовская ЦРБ""","Договоры","","ВидРасчета","ЗаТовары","90.1.1","ВидыНоменклатуры","Медикаменты","СтавкиНДС","10%","","",760
                 //2,"Себестоимость продажи","90.2.1","ВидыНоменклатуры","Медикаменты","","","","","41.2","Номенклатура","Медикаменты","МестаХранения","Отдел запасов, Яблочкова, 2","","",760
                 //2,"Налог на добавленную стоимость","90.3","ВидыНоменклатуры","Медикаменты","СтавкиНДС","10%","","","68.2","ВидыПлатежейВБюджет","Налог","","","","",69.09
                 //3

                 s := '1,"Оптовый отпуск №Рн-'
                   +dataset.fieldbyname('nomer').asstring+'.';
                 s := s + stringofchar(' ',49 - length(s));
                 s := s + '('+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+')","'+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+'"';
                 S := S + #13 + #10;

                 if dataset.fieldbyname('summa10').asfloat <> 0
                 then begin
                   s := s+ '2,"Выручка от продажи","62.1","Контрагенты","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","Договоры","","ВидРасчета","ЗаТовары","90.1.1","ВидыНоменклатуры","Медикаменты","СтавкиНДС","10%","","",'+formatfloat('#.00',dataset.fieldbyname('summa10').asfloat);
                   S := S + #13 + #10;
                   s := s+ '2,"Себестоимость продажи","90.2.1","ВидыНоменклатуры","Медикаменты","","","","","41.2","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","",'+formatfloat('#.00',dataset.fieldbyname('summa10z').asfloat);
                   S := S + #13 + #10;
                   s := s+ '2,"Налог на добавленную стоимость","90.3","ВидыНоменклатуры","Медикаменты","СтавкиНДС","10%","","","68.2","ВидыПлатежейВБюджет","Налог","","","","",'+formatfloat('#.00',dataset.fieldbyname('nds10').asfloat);
                   S := S + #13 + #10;
                 end;
                 if dataset.fieldbyname('summa18').asfloat <> 0
                 then begin
                   s := s+ '2,"Выручка от продажи","62.1","Контрагенты","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","Договоры","","ВидРасчета","ЗаТовары","90.1.1","ВидыНоменклатуры","Медикаменты","СтавкиНДС","18%","","",'+formatfloat('#.00',dataset.fieldbyname('summa18').asfloat);
                   S := S + #13 + #10;
                   s := s+ '2,"Себестоимость продажи","90.2.1","ВидыНоменклатуры","Медикаменты","","","","","41.2","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","",'+formatfloat('#.00',dataset.fieldbyname('summa18z').asfloat);
                   S := S + #13 + #10;
                   s := s+ '2,"Налог на добавленную стоимость","90.3","ВидыНоменклатуры","Медикаменты","СтавкиНДС","18%","","","68.2","ВидыПлатежейВБюджет","Налог","","","","",'+formatfloat('#.00',dataset.fieldbyname('nds18').asfloat);
                   S := S + #13 + #10;
                 end;

                 if dataset.fieldbyname('summa0').asfloat <> 0
                 then begin
                   s := s+ '2,"Выручка от продажи","62.1","Контрагенты","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","Договоры","","ВидРасчета","ЗаТовары","90.1.1","ВидыНоменклатуры","Медикаменты","СтавкиНДС","0%","","",'+formatfloat('#.00',dataset.fieldbyname('summa0').asfloat);
                   S := S + #13 + #10;
                   s := s+ '2,"Себестоимость продажи","90.2.1","ВидыНоменклатуры","Медикаменты","","","","","41.2","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","",'+formatfloat('#.00',dataset.fieldbyname('summa0z').asfloat);
                   S := S + #13 + #10;
                 end;
               end;
           end
           else begin

             if (pos('В',dataset.fieldbyname('osnov').asstring) =1)
             then begin
               if MainStorage = dataset.fieldbyname('sklad').asInteger // это приход по перебросу на главный склад (то есть возврат из А.П.)
               then begin
                   s := '1,"Возврат из А/П ПВ-'
                     +dataset.fieldbyname('nomer').asstring+'.';
                   s := s + stringofchar(' ',49 - length(s));
                   s := s + '('+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+')","'+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+'"';
                   S := S + #13 + #10;

                   s := s+ '2,"Поступили товары","41.3","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","","41.1","Контрагенты","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","Договоры","","","",'+formatfloat('#.00',-dataset.fieldbyname('summaz').asfloat);
                   S := S + #13 + #10;
               end
               else begin
                   s := '1,"Внутреннее перемещение П-'
                     +dataset.fieldbyname('nomer').asstring+'.';
                   s := s + stringofchar(' ',49 - length(s));
                   s := s + '('+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+')","'+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+'"';
                   S := S + #13 + #10;

                   s := s+ '2,"Поступили товары","41.3","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","","41.1","Контрагенты","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","Договоры","","","",'+formatfloat('#.00',dataset.fieldbyname('summaz').asfloat);
                   S := S + #13 + #10;
               end
             end
             else begin

                //1,"Поступление товаров Р-116787   (14.11.05)","14.11.05"
                //2,"Поступили товары","41.1","Номенклатура","Медикаменты","МестаХранения","Отдел запасов №1","","","60.1","Контрагенты","ЗАО ""СИА Интернейшнл-Саратов""","Договоры","","","",62293.82
                //2,"Поступили товары","41.1","Номенклатура","Медикаменты","МестаХранения","Отдел запасов №1","","","60.1","Контрагенты","ЗАО ""СИА Интернейшнл-Саратов""","Договоры","","","",3517.15
                //3


               s := '1,"Поступление товаров Р-'
                 +dataset.fieldbyname('nomer').asstring+'.';
               s := s + stringofchar(' ',49 - length(s));
               s := s + '('+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+')","'+formatdatetime('dd.mm.yy',dataset.fieldbyname('data').asdatetime)+'"';
               S := S + #13 + #10;

               s := s+ '2,"Поступили товары","41.1","Номенклатура","Медикаменты","МестаХранения","'+skladname+'","","","60.1","Контрагенты","'+stringreplace(dataset.fieldbyname('agentname').asstring,'"','""',true)+'","Договоры","","","",'+formatfloat('#.00',dataset.fieldbyname('summaz').asfloat);
               S := S + #13 + #10;
             end;

           end;


           S := S + '3'+#13+#10;


           MyStr := MyStr + S;

           dataset.next;
         end;
       finally
         dataset.enablecontrols;
       end;

       Text := 'сохранение информации';
       stringtofile(OutputFileName,MyStr);
       //CreateHInt('Файл создан','',20); // Здесь пока ошибка с TMsgDlgType
       bvMessage('Процедура окончена');

     finally
       table.free;
     end;
   finally
     free;
   end;

end.
