Кабинет
1. Практически резюме
2. Quest игры
3. Joomla!
  · Joomla! LocalLinker
4. Мои работы
  · Low-traffic KharkovForum.com
  · Краситель таблиц
  · Http-лог Eserv
  · Спам-фильтр под Eserv
  · Удаление архивов видеонаблюдения
  · Конвертор расходных документов
  · Перевод LJ moods
  · Логотипы IDO group
  · Переводчик транслита
  · Переводчик дат
5. HTML в BBC
6. Это я люблю (± 100)
7. Страница памяти
Последние новости
 17.05.10 Вернулись из путешествия по Средней Азии! Киргизстан (Бишкек, Ош, Иссык-Куль) - Узбекистан (Ташкент, Хива, Бухара, Самарканд) - Та... »»
Поиск

Вид из окна
Турция. Флаг
Быстрый переход
Полезно
Достопримечательности Украины Система Orphus
Статистика
Rambler's Top100
      Прихожая    Гостиная    Кабинет    Библиотека    Детская    Выход
Конвертор расходов  

<!-- о скрипте -->

Собственно говоря данный скрипт не делает ничего сложно и он очень приметивен. Зато он отображает как использование Perl'а на локальных машинах может облегчить вам жизнь.


Суть работы:
  1. При запуске скрипт спрашивает имя файла.
    Предполагается, что исходный файл имеет имя вида "Axxxxx.exp", где xxxxx - произвольный набор цифр. Таков формат экспортного документа из БД. Так вот, скрипт спрашивает только эти саммые цифры.
  2. Потом подставляет остальное.
  3. Считывает файл (с пятой строки, пропуская все ненужное)
  4. Разбивает в массив.
  5. Переставляет нужные столбцы местами.
  6. Создает новый файл и записывает в него измененные строки.
  7. Удаляет исходный файл.

Исходный код:
Каждая строка этого файла не содержит переносов. Что бы вы могли его правильно собрать, я их пронумеровал.
  1. #!/usr/bin/perl
  2.  
  3.  
  4. print "Input file-name (whithout 'A' & '.exp'!)\n";
  5. $file= <STDIN>;
  6. $ext=".exp";
  7. $convfile="newfile";
  8. $stop=1;
  9. chomp($file);
  10.  
  11. open (FILE, "<A$file$ext") || die "Can't open file $file$ext: \n $! \nand\n $^E";
  12.   @line=;
  13. close (FILE);
  14. open (FILE, ">$convfile$ext") || die "Can't create file $convfile$ext: \n $! \nand\n $^E";
  15.  for ($i=0;$i<$#line;$i++) {
  16.   if ($i>=5 && $line[$i]=~ /\#\#/ && $stop) {$stop=0;}
  17.   if ($i>=5 && $stop) {
  18.    ($ID,$GoodsID,$GoodsName,$ProducerID,$ProducerName,$SeriaID,$SerialNo,$BestBefore,$SOQNo,$SOQDate,$RegSertNo,$RegSertDate,$RegExpired,$Price,$CurrencyID,$CurrencyAbbr,$DutySum,$DutySum2,$IncomeNDS,$RealPrice,$CustPrice,$PurchPrice,$SellPrice,$EndPrice,$AVCoef,$AVTCoef,$Quantity,$SummaNDS,$Summa,$Dim,$Capacity)=split('\|',$line[$i]);
  19.    print FILE "$ID|$GoodsID|$GoodsName|$ProducerID|$ProducerName|$SeriaID|$SerialNo|$BestBefore|$SOQNo|$SOQDate|$RegSertNo|$RegSertDate|$RegExpired|$PurchPrice|$CurrencyID|$CurrencyAbbr|$DutySum|$DutySum2|$IncomeNDS|$SellPrice|$Price|$RealPrice|$CustPrice|$EndPrice|$AVCoef|$AVTCoef|$Quantity|$SummaNDS|$Summa|$Dim|$Capacity";
  20.   } else {
  21.    print FILE "$line[$i]";
  22.  }
  23. }
  24. close (FILE);
  25. unlink ("A$file$ext");

Пример файла (A59647.exp):
Каждая строка этого файла не содержит переносов. Что бы вы могли его правильно собрать, я их пронумеровал.
  1. ## Расходная накладная - импортировать в приход
  2. #1DocID|DocNo|DocDate|BookDate|OwnerID|OwnerName|CustomerID|CustomerName|Summa|SummaNDS|AVTMode|AVTBase|PayMode|PayDate|RPerson|LANo|LADate|Comments
  3. 59647| 871 |04.03.2003|04.03.2003|1516|ШАНГЛІ УКРАЇНА, ТОВ, м. Харків|1878|Артель "Напрасный труд", ТОВ, м. Харків|47.7700|0.0000|1|2|0|11.03.2003||||(по заявке № 7329/)
  4. ##
  5. #2ID|GoodsID|GoodsName|ProducerID|ProducerName|SeriaID|SerialNo|BestBefore|SOQNo|SOQDate|RegSertNo|RegSertDate|RegExpired|Price|CurrencyID|CurrencyAbbr|DutySum|DutySum2|IncomeNDS|RealPrice|CustPrice|PurchPrice|SellPrice|EndPrice|AVCoef|AVTCoef|Quantity|SummaNDS|Summa|Dim|Capacity
  6. 325002|14114|Горпилс апельсин лед. д/рас №8|3281|ДЖЕПАК, Индия|26301|GOR-2021|01.08.2005|FPR/GOR-2021|06.09.2002|Р,03,02/04375|12.03.2002|06.03.2007|1.4900|4|ГРН|0.0000|0.0000|0.0000|1.1200|1.4900|1.4900|1.2700|0.0000|-15.000|0.000|2.000|0.0000|2.5400|УП|600
  7. 325003|14115|Горпилс лимон лед. д/рас №8|3281|ДЖЕПАК, Индия|26302|GLE-2027|01.07.2005|FPR/GLE-2027|02.09.2002|Р,03,02/04375|12.03.2002|06.03.2007|1.4900|4|ГРН|0.0000|0.0000|0.0000|1.1200|1.4900|1.4900|1.2700|0.0000|-15.000|0.000|2.000|0.0000|2.5400|УП|600
  8. 325004|14116|Горпилс лимон-медовые лед. д/рас №8|3281|ДЖЕПАК, Индия|26303|GHL-2026|01.08.2005|FPR/GHL-2026|07.09.2002|Р,03,02/04375|12.03.2002|06.03.2007|1.4900|4|ГРН|0.0000|0.0000|0.0000|1.1300|1.4900|1.4900|1.2700|0.0000|-15.000|0.000|3.000|0.0000|3.8100|УП|600
  9. 325005|14117|Горпилс метол-эвкалипт лед. д/рас №8|3281|ДЖЕПАК, Индия|26304|GME-2011|01.08.2005|FPR/GME-2011|05.09.2002|Р,03,02/04375|06.03.2002|06.03.2007|1.4900|4|ГРН|0.0000|0.0000|0.0000|1.1200|1.4900|1.4900|1.2700|0.0000|-15.000|0.000|2.000|0.0000|2.5400|УП|600
  10. 325000|13738|Максамин Форте №100|2685|АНГЛО-ФРЕНЧ ДРАГС ЭНД ИНДАСТРИЗ ЛИМИТЕД, ИНДИЯ|18501|01201-PE|31.01.2004|ARN:FE2/029|11.02.2002|Р.01.01/02664||18.01.2006|27.5000|4|ГРН|0.0000|0.0000|0.0000|23.4800|27.5000|27.5000|23.3800|0.0000|-15.000|0.000|1.000|0.0000|23.3800|УП|70
  11. 325001|13986|Салмодил сироп 100 мл №1|3051|FDC Limited, Индия|21786|DLW 2031|01.02.2004|209|01.03.2002|P.02.02/04324||15.02.2007|3.9300|4|ГРН|0.0000|0.0000|0.0000|3.9300|3.9300|5.0800|4.3200|0.0000|-15.000|0.000|3.000|0.0000|12.9600|УП|50
  12. ##
  13. #3Name|Bank|Account|MFO|OKPO|Address|Phones|Faxes|TaxIDNo|TaxSertNo|ContractNo|ContractDate|LicenseNo
  14. ШАНГЛІ УКРАЇНА, ТОВ, м. Харків|Харьковское ГРУ "ПриватБанк"|26006278519001|351533|24660391|Україна, 61126, м. Харків, вул. Маршала Конєва, 21|14-38-02|14-38-01|246603920355|29422048|||АА248855
  15. ##
  16. #4Name|Bank|Account|MFO|OKPO|Address|Phones|Faxes|TaxIDNo|TaxSertNo|ContractNo|ContractDate|LicenseNo
  17. Артель "Напрасный труд", ТОВ, м. Харків|Ком. відд. УСБ, м. Харків|000000000000|000000|00000000|Україна, 61153, м. Харків, пр. Ххххххххххххх, 00|00-00-00|00-00-00|000000000000|00000000|||АА000000
<!-- спасибо! -->
: BBCode
: HTML


<!-- внимание! -->
  • Код, текст и фотографии размещенные на этом сайте принадлежат их автору - Сапронову Артёму Александровичу.
  • Допускается использование материалов сайта в личных целях.
  • Приветствуется распространение с обязательным указанием активной гиперссылки на страницу, с которой взят материал.
  • Запрещается внесение изменений в исходный текст (в том числе синонимизация и рерайт).
  • Использование материалов сайта в коммерческих целях без согласования с автором запрещено.
  • Обращайте внимание на даты. Некоторые страницы морально устарели.
  • Автор не несет отвественности за любые возможные последствия связанные с использованием материалов сайта.
  • С предложениями, замечаниями или пожеланиями обращайтесь по email.

© 13.11.2002 Артем Сапронов
http://www.sapronov.com

Удаление архивов видеонаблюдения ↑↓  ← Ctrl →  Перевод LJ moods 
Полная бесхарактерность - очень противный характер.
[ ЛАБРЮЙЕР, Жан де ]