var
  Storage :integer; // склад, используемый при фильтрации данных
  DATASET :TDataset; // собственно, таблица

  maxbarcode :integer = 0;

  FileName :string = 'c:\temp\cas.plu';
  FileBody :string;
  //IntValue :integer;
  StrValue :string;
  StrValue1 :string;
  StrValue2 :string;
begin



  dataset.disablecontrols;
  try
    FileBody := '';
    dataset.first;
    while not dataset.eof do
    begin
       if (maxbarcode = 0)
          or (strtointprotected(dataset.fieldbyname('barcode').asstring)<=maxbarcode)
       then begin
         StrVAlue := conversionString( dataset.fieldbyname('name').asstring ,ctANSI2OEM);
         StrValue1 := StrPadRight(copy(StrValue,1,28),28);

         if length(StrValue) <=28
         then StrValue2 := strpadRight(' ',28)
         else StrValue2 :=  strpadRight(copy(StrValue,29,28),28);

         FileBody := FileBody
            + FORMATFLOAT('0000', strtointprotected( dataset.fieldbyname('barcode').asstring))
            + ' '+StrValue1
            + ' '+StrValue2
            + ' '+FORMATFLOAT('000000', dataset.fieldbyname('cena').asfloat*100)
            + ' 000 0000'
            + ' '+FORMATFLOAT('000000', strtointprotected( dataset.fieldbyname('barcode').asstring))
            + ' 00 000';


  (*
  4 байта – номер ячейки
  1 байт – пробел
  28 байт – наименование 1 товара
  1 байт – пробел
  28 байт – наименование 2 товара
  1 байт – пробел
  6 байт – цена товара
  1 байт – пробел
  3 байта – срок хранения товара
  1 байт – пробел
  4 байта – вес тары
  1 байт – пробел
  6 байт – идентификационный код товара
  1 байт – пробел
  2 байта – групповой код товара
  1 байт – пробел
  3 байта – номер сообщения, в данном случае - 000 (3 нуля).
  *)
       end;

       dataset.next;
    end;

    FileBody := FileBody+ chr(26);

    StringToFile(Filename,FileBody);

  finally
    dataset.enablecontrols;
  end;


  createHint('Файл "'+FileName+ '" сформирован.');
end.
