5 Контрольный пример
В качестве входной информации при выполнении программы Exp2f.prg используются базы данных, описание которых дано в пункте 3.3 в таблице 2.
Входная информация дана в приложении А.
На основании разработанного алгоритма, представленного в виде блок-схемы в пункте 4.1. и описания в пункте 4.2. разработан модуль выгрузки данных в текстовом формате комплекса «Налогоплательщик ЮЛ» для государственной налоговой инспекции, листинг которого показан в приложении В.
В результате работы программы формируется выходная информация, описание которой дано в пункте 3.4. в таблице 2, структура и информация выходного текстового файла дана в приложении Б.
Полученные выходные данные доказывают работоспособность программы и являются контрольным примером.
6 Экономическое обоснование программы
Применение персональных компьютеров на различных предприятиях и учреждениях позволяет совершенно по-новому организовать процесс решения множества экономических задач, в том числе и задачу выгрузки данных в текстовом формате комплекса «Налогоплательщик ЮЛ» для государственной налоговой инспекции. Это приводит к уменьшению административно-управленческих расходов, повышению производительности труда, сокращению сроков выдачи документов, что в свою очередь влияет на эффективность работы предприятия по расчетам с органами налоговой инспекции. На решение этой задачи без применения средств вычислительной техники расчетный отдел и отдел бухгалтерского учета затрачивают массу дефицитного времени, а компьютер призван обеспечить разгрузку этих подразделений от рутинной работы.
Входной информацией для этой задачи являются базы данных, хранящие информацию о введенных документах, получаемых в процессе работы любого предприятия или организации.
Выходная информация представляет собой текстовый файл специального формата, который подлежит передаче в государственную налоговую инспекцию.
Экономическая эффективность – это оценка результатов, выполнение различных действий, направленных на изменение способа, скорости и качества обслуживания клиентов.
Экономический эффект – это прежде всего экономия денежных средств предприятия, которая может быть достигнута за счет:
высвобождения штатных сотрудников для выполнения других заданий;
снижения затрат на транспортировку информации между подразделением и аппаратом;
снижение риска пень и штрафных санкций со стороны налоговой инспекции, имеющих место быть в результате несвоевременных выплат и предоставления отчётности.
Наиболее распространенным методом определения экономической эффективности является метод сравнения. Его сущность заключается в сопоставлении трудоемкости и себестоимости выполненных работ с аналогичными показателями предыдущих периодов, то есть экономическую эффективность определяют по совокупности высвобож-денного времени, работников, совершенствованию способов обработки информации путём применения более современных методов обработки.
Выделяются два вида показателей эффективности: прямая (непосредственно снижает трудовые и стоимостные затраты) и косвенная (косвенно улучшает учет за счет усовершенствований в работе сотрудников бухгалтерии).
Основным показателем прямой эффективности является снижение стоимостных и трудовых затрат на расчётные работы. В основе выявления прямой эффективности лежит принцип сопоставления затрат при различных способах решения.
Показателями прямой экономической эффективности являются:
абсолютное снижение трудовых и стоимостных затрат, показывающих, на сколько времени и на какую сумму снизились затраты;
относительное снижение трудовых и стоимостных затрат, показывающее, какая часть затрат при предполагаемом варианте экономится;
индекс роста производительности труда, показывает, во сколько раз произошло изменение.
Косвенная эффективность имеет скрытую форму и проявляется в улучшении качества управления объектом, может быть определена экспертным путем.
Косвенная эффективность позволяет оценить влияние задачи на различные стороны деятельности через качественные факторы.
Из-за отсутствия единой методики расчета прямой эффективности программных продуктов, внедряемых на персональном компьютере, в данном дипломном проекте рассматривается косвенная эффективность.
Косвенная эффективность автоматизации задачи «Выгрузка данных в текстовом формате комплекса «Налогоплательщик ЮЛ» для государственной налоговой инспекции» заключается в следующем:
внедрение безбумажной технологии обработки информации сильно сокращает расходы на покупку бумаги и других расходных материалов;
использование разработанной программы позволяет упорядочить большие объёмы информации для удобного использования;
возможность оперативного контроля за достоверностью информации, уменьшается число возможных ошибок, при генерировании производных данных;
сразу после ввода, данные могут участвовать в различных операциях;
возможность быстрого получения необходимых отчетов;
необходимая информация может быть быстро найдена (в том числе с помощью контекстного поиска), поиск которой в обычной папке с документами затруднен;
существенная экономия времени и людских ресурсов при выполнении операций, связанных с обработкой информации;
позволяет быстро и в наиболее подходящем для конкретного человека виде просмотреть данные, что повышает их восприятие.
Все изложенные выше преимущества автоматизации задачи выгрузки данных в текстовом формате на сегодняшний день оценены не только рядовыми пользователями, но и властными структурами, особенно это касается возможности контроля и поиска информации. ГНИ заинтересована иметь единую, электронную базу по всем лицам – налогоплательщикам, так как наличие такой базы существенно усложняет процесс уклонения от уплаты налогов (сокрытие, занижение доходов, повторное использование одноразовых льгот и т.д.)
Поэтому 15 июня 1998 года была принята очередная редакция инструкции государственной налоговой службы Российской Федерации №35 от 29 июня 1995года. Согласно которой, с 01 марта 1999 года все предприятия с численностью работающих свыше 100 человек обязаны предоставлять данные о доходах своих работников в налоговую инспекцию на магнитных носителях, причем в строго оговоренном формате.
Перечисленные факторы эффективности автоматизации задачи «Выгрузка данных в текстовом формате комплекса «Налогоплательщик ЮЛ» для государственной налоговой инспекции» приводят к уменьшению расходов на обработку экономической информации, повышению производительности труда, что в свою очередь влияет на эффективность работы и является основанием для анализа деятельности.
Косвенный эффект позволяет оценить влияние задачи на различные стороны деятельности данного объекта. Проявляется он через качественные факторы.
Режимы работы выбираются с таким расчетом, чтобы в своей совокупности они обеспечивали максимальную эффективность задачи.
При этом ускоряется не только процесс поиска и обработки данных, но что немаловажно, повышается контроль за качеством выполненной работы.
Внедрение новых информационных технологий существенно влияет на характер и способы обслуживания. Таким образом, при наименьших затратах труда и времени, осуществляется оперативный и безошибочный учет и поиск информации. Из этого следует целесообразность внедрения данной задачи на ПЭВМ.
Список литературы
1. Автоматизированное рабочее место в системе управления предприятием. Сборник научных трудов, - Ленинград, 1989.
2. В.В.Шураков. Автоматизированное рабочее место для статической обработки данных, 1990.
3. И.Л.Кантарь. Автоматизированные рабочие места управленческого аппарата, 1990.
4. Данилевский Ю.Г., Петухов ИА., Шибанов B.C. Информационная технология в промышленности. Л.: Машиностроение, 1988, 284с.
5. П.И. Камышанов. Практическое пособие по бухгалтерскому учету:- Издание третье, дополненное и переработанное - Москва: ООО «МЕДпресс»; - Элиста: АПП «Джангар», 1998. – 528 с.
6. А.А. Попов Программирование в среде СУБД FoxPro 2.0. Построение систем обработки данных. - М.: Издательство Март, 1996--352с.: илл.
7. Глушаков С.В., Ломотько Д.В.; Базы данных. - Харьков: Издательство «Фолио», 2001
8. Нортон П.; Персональный компьютер. Аппаратно-программная реализация. Книга 1. - М: Издательство «АСТ», 1999
Приложение А
(рекомендуемое)
Входная информация
Structure for database: C:\OF\KP_SPP.DBF
Number of data records: 49
Date of last update : 04/14/04
Code Page : 866
Field Field Name Type Width Dec Index Collate
1 KODF Character 2
2 KODP Numeric 2
3 NAIM Character 35
4 WDATA Date 8
5 PRN Numeric 1
** Total ** 49
Structure for database: C:\OF\SPP.DBF
Number of data records: 69
Date of last update : 04/14/04
Code Page : 866
Field Field Name Type Width Dec Index Collate
1 KODF Character 2
2 KODP Numeric 2
3 NAIM Character 35
4 WDATA Date 8
5 PRN Numeric 1
** Total ** 49
Structure for database: C:\OF\KP_SGR.DBF
Number of data records: 347
Date of last update : 04/14/04
Code Page : 866
Field Field Name Type Width Dec Index Collate
1 KODF Character 2
2 KODP Numeric 2
3 KODGR Numeric 2
4 RGR Numeric 2
5 NAIM Character 50
6 NAIMP Character 35
7 WDATA Date 8
8 GO5N Numeric 2
9 PP Character 1
10 CHVGR Numeric 2
11 CHRGR Numeric 2
12 GNI Numeric 1
13 GNI_IS Numeric 1
** Total ** 111
Structure for database: C:\OF\SGR.DBF
Number of data records: 448
Date of last update : 04/14/04
Code Page : 866
Field Field Name Type Width Dec Index Collate
1 KODF Character 2
2 KODP Numeric 2
3 KODGR Numeric 2
4 RGR Numeric 2
5 NAIM Character 50
6 NAIMP Character 35
7 WDATA Date 8
8 GO5N Numeric 2
9 PP Character 1
10 CHVGR Numeric 2
11 CHRGR Numeric 2
12 GNI Numeric 1
13 GNI_IS Numeric 1
** Total ** 111
Structure for database: C:\OF\K029.DBF
Number of data records: 51
Date of last update : 04/16/04
Code Page : 866
Field Field Name Type Width Dec Index Collate
1 C257 Character 4
2 C258 Character 15
3 K Numeric 10
** Total ** 30
Structure for database: C:\OF\SPUTR.DBF
Number of data records: 2
Date of last update : 05/22/02
Code Page : 866
Field Field Name Type Width Dec Index Collate
1 RAZDEL Numeric 3
2 TAXCODE Character 9
3 NDAT Date 8
4 PRUT Character 1
5 PARAG Numeric 2
** Total ** 24
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ KP_SPP.DBF
Record# KODF KODP NAIM WDATA PRN
1 sy 1 Сведения об адвокате 01/01/01 0
2 sy 2 Данные о платежах 01/01/01 0
3 sp 1 Справка 01/01/01 0
4 sp 2 Расчет авансовых платежей 01/01/01 0
5 sp 3 Справочно (не подл.налогообложению) 01/01/01 0
6 sk 1 Налоговая декларация по единому соц 01/01/01 0
7 sk 2 Расчет суммы налога 01/01/01 0
8 sk 3 Справочно 01/01/01 0
9 sl 1 II.Расчет для заполн. стр.300 и 400 01/01/01 0
10 sm 1 III.Расчет для заполн.стр.300 и 400 01/01/01 0
11 qc 1 Расчет 01/01/02 0
12 qg 1 II.Расчет для заполн. с.0300 и 0400 01/01/02 0
13 qg 2 Расчет усл.на право прим.регр.став. 01/01/02 0
14 qb 1 Сведения о налогоплательщике 01/01/02 0
15 qb 2 Налоговая декларация 01/01/02 0
16 qf 2 Расчет по страх.взносам 01/01/03 0
17 qf 3 Уплата страх.взносов на ОПС 01/01/03 0
18 qf 1 Сведения о налогоплательщике 01/01/03 0
19 qd 1 Расчет для заполнения строки 0300 01/01/03 0
20 qd 2 Расчет условия на право прим.ставок 01/01/03 0
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ SPP.DBF
Record# KODF KODP NAIM WDATA PRN
1 qf 2 Расчет по страх.взносам 01/01/02 0
2 qf 3 Справочно 01/01/02 0
3 qf 1 Сведения о налогоплательщике 01/01/02 0
4 qd 2 Расчет для заполнения с.0300 и 0400 01/01/02 0
5 qd 3 Расчет условия на право прим.ставок 01/01/02 0
6 qd 1 Справочно 01/01/02 0
7 qe 1 Выплаты в пользу работников (инв.) 01/01/02 0
8 qe 2 Расчет условий на право прим.льгот 01/01/02 0
9 qe 3 Примечание в разделу II 01/01/02 0
10 qe 4 Выплаты в пользу иностран.граждан 01/01/02 0
11 ba 1 финансовые результаты 01/01/94 0
12 ba 2 испoльзование прибыли 01/01/94 0
13 ba 3 платежи в бюджет 01/01/94 0
14 ba 4 затраты и расходы 01/01/94 0
15 ba 1 финансовые результаты 07/01/95 0
16 ba 2 испoльзование прибыли 07/01/95 0
17 ba 4 платежи в бюджет 07/01/95 0
18 ba 5 затраты и расходы 07/01/95 0
19 ba 3 движение денежных средств 07/01/95 0
20 ba 1 финансовые результаты 10/01/95 0
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ KP_SGR.DBF
Record# KODF KODP KODGR RGR NAIM NAIMP WDATA GO5N PP CHVGR CHRGR GNI GNI_IS
1 sy 2 1 0 Авансовые платежи по ЕСН Данные о платежах 01/01/01 2 3 0
2 sy 2 2 0 Код строки Данные о платежах 01/01/01 2 3 0
3 sy 2 3 1 ПФР (2001),федеральный бюджет Данные о платежах 01/01/01 2 3 0
4 sy 2 4 2 ФФОМС Данные о платежах 01/01/01 2 3 0
5 sy 2 5 3 ТФОМС Данные о платежах 01/01/01 2 3 2
6 sy 1 1 0 Наименование Сведения об адвокате01/01/01 2 1 0
7 sy 1 2 0 Код строки Сведения об адвокате01/01/01 2 1 0
8 sy 1 3 1 Значение Сведения об адвокате01/01/01 2 1 2
9 sr 1 1 0 Наименование 01/01/01 2 14 0
10 sr 1 2 0 Код строки 01/01/01 2 14 0
11 sr 1 3 1 Налоговая база нар.итогом ПФР 01/01/01 2 14 0
12 sr 1 5 3 Налоговая база нар.итогом ФСС РФ 01/01/01 2 14 0
13 sr 1 6 4 Начислено авансовых платежей ПФР: ставка 01/01/01 2 14 0
14 sr 1 8 6 Начислено авансовых платежей ФСС: ставка 01/01/01 2 14 0
15 sr 1 10 8 Начислено авансовых платежей ФФОМС: ставка 01/01/01 2 14 0
16 sr 1 12 10 Начислено авансовых платежей ТФОМС: ставка 01/01/01 2 14 0
17 sr 1 14 12 Численность ПФР 01/01/01 2 14 0
18 sr 1 16 14 Численность ФСС 01/01/01 2 14 2
19 sr 1 7 5 Начислено авансовых платежей ПФР: cумма 01/01/01 2 14 0
20 sr 1 9 7 Начислено авансовых платежей ФСС: ставка 01/01/01 2 14 0
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ SGR.DBF
Record# KODF KODP KODGR RGR NAIM NAIMP WDATA GO5N PP CHVGR CHRGR GNI GNI_IS
1 qf 2 1 0 Наименование показателя Расчет по страх.взносам 01/01/02 2 8 0
2 qf 2 2 0 Код строки Расчет по страх.взносам 01/01/02 2 8 0
3 qf 2 3 1 Для мужчин 1952г., женщин 1956г.по дан.страховат. Расчет по страх.взносам 01/01/02 2 8 0
4 qf 2 4 2 Для мужчин 1952г., женщин 1956г.по дан.НО Расчет по страх.взносам 01/01/02 2 8 1
5 qf 2 5 3 Для муж.1953-1966, жен.1957-1966 по дан.страховат. Расчет по страх.взносам 01/01/02 2 8 0
6 qf 2 6 4 Для муж.1953-1966, жен.1957-1966 по дан.НО Расчет по страх.взносам 01/01/02 2 8 1
7 qf 2 7 5 Для лиц 1967г.р. и моложе по данным страхователя Расчет по страх.взносам 01/01/02 2 8 0
8 qf 2 8 6 Для лиц 1967г.р. и моложе по данным НО Расчет по страх.взносам 01/01/02 2 8 1
9 qf 2 9 7 Всего по данным страхователя Расчет по страх.взносам 01/01/02 2 8 2
10 qf 2 10 8 Всего по данным налогового органа Расчет по страх.взносам 01/01/02 2 8 1
11 qf 3 1 0 Наименование показателя Справочно 01/01/02 2 3 0
12 qf 3 2 0 Код строки Справочно 01/01/02 2 3 0
13 qf 3 3 1 Всего Справочно 01/01/02 2 3 0
14 qf 3 4 2 В т.ч. на страховую часть трудовой пенсии Справочно 01/01/02 2 3 2
15 qf 3 5 3 В т.ч. на накопительную часть трудовой пенсии Справочно 01/01/02 2 3 0
16 qf 1 1 0 Наименование Сведения о налогоплательщике 01/01/02 2 1 0
17 qf 1 2 0 Код строки Сведения о налогоплательщике 01/01/02 2 1 0
18 qf 1 3 1 Значение/Код Сведения о налогоплательщике 01/01/02 2 1 0
19 qd 2 1 0 Наименование Расчет для заполнения с.0300 и 0400 01/01/02 2 14 0
20 qd 2 2 0 Код строки Расчет для заполнения с.0300 и 0400 01/01/02 2 14 0
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ K029.DBF
Record# C257 C258 K
1 0373 млн.руб. 1000000
2 0374 млрд.руб. 1000000000
3 0006 м 1
4 0008 км 1000
5 0055 кв.м 1
6 0056 тыс.кв.м 1000
7 0059 га 10000
8 0061 кв.км 1000000
9 0062 тыс.га 10000000
10 0744 % 1
11 0770 кратн. 1
12 0113 куб.м 1
13 0114 тыс.куб.м 1000
14 0115 млн.куб.м 1000000
15 0162 карат 1
16 0165 тыс.кар 1000
17 0166 кг 1
18 0167 ц 100
19 0168 т 1000
20 0170 тыс.т 1000000
21 0238 лс 1
22 0796 шт 1
23 0798 тыс.шт 1000
24 0797 100 шт 100
25 0799 млн.шт 1000000
26 0120 л 1
27 0124 тыс.л 1000
28 0371 руб. 1
29 0372 тыс.руб. 1000
30 0642 Ед. 1
31 0792 чел. 1
32 0793 тыс.чел. 1000
33 0794 млн.чел. 1000000
34 0795 млрд.чел. 1000000000
35 0214 КВт 1
36 0119 тыс.дкл 1000
37 0116 дкл 1
ИНФОРМАЦИЯ БАЗЫ ДАННЫХ SPUTR.DBF
Record# RAZDEL TAXCODE NDAT PRUT PARAG
1 21 102011101 09/01/95 1 1
2 80 101020201 01/01/99 1 1
Приложение Б
(обязательное)
Выходная информация
ИдФайл:2129000988**212901001200101102936
ТипИнф:ДЕКЛАРАЦИЯЮЛ
НаимОтпрЮл:Здесь должно быть наименование предприятия.
ТелОтпр:000-00-01
ДолжОтпр:
ФИООтпр:ФИО бухгалтера
КолДок:1
ВерсПрог:INPUTDOC
@@@
ИдДок:2129000988**212901001200100000001
КНД:1151006
НаимФОтч:Расчет налога от фактической прибыли
ПеридОтч:2000,К4
ДатаДок:30.11.2000
ОКЕИ:383
ВарДекл:999
КолПокФОтч:18
П010000103:1230.000
П010000303:5670.000
П010000403:0.000
П010000503:0.000
П010000603:0.000
П010000703:0.000
П010000803:0.000
П010000903:0.000
П010001003:0.000
П010001103:0.000
П010001203:0.000
П010001303:01 12..2000
П010001603: . .
П010001703: 04.06.1999
П010002а03:0.000
П010002б03:0.000
П010002в03:0.000
П010002г03:0.000
КНД:0710001
НаимФОтч:Бухгалтерский баланс
ПеридОтч:2000,К4
ДатаДок:09.12.2000
ОКЕИ:384
ВарДекл:999
КолПокФОтч:17
П010011003:456.000
П010011004:0.000
П010011103:45645.000
П010011104:0.000
П010011203:65.000
П010011204:0.000
П010011303:456.000
П010011304:0.000
П010012003:45.000
П010012004:0.000
П010012103:64.000
П010012104:0.000
П010012203:456.000
П010012204:0.000
П010013003:4564.000
П010013004:0.000
П010013503:6456.000
@@@
===
Приложение В
(обязательное)
Текст программы
&&---получение списка существующих документов--(открытие БД осуществляет вызывающий модуль!)
wait window nowait 'Идет подготовка данных'
YearC=iif(val(sDT)>50,'19'+sDT,'20'+sDT)
FltDocC='KONTROL="1" ' && фильтр на KP_SD
select KP_SD
set filter to &FltDocC
go top
do while not eof()
&& определяем имя и период
do case
case KP_SD.PER='1'
FileNameC=KP_SD.KODF+sKW+sDT
PeriodTxtC=YearC+',М'+alltrim(str(sPERIO,2))
case KP_SD.PER='2'
KvartC=str(int((sPERIO-1)/3)+1,1)
FileNameC=KP_SD.KODF+KvartC+sDT
PeriodTxtC=YearC+',К'+KvartC
case KP_SD.PER='3'
YerHlfC=iif(sPERIO>6,'2','1')
KvartC=iif(sPERIO>6,'4','2')
FileNameC=KP_SD.KODF+YerHlfC+sDT
PeriodTxtC=YearC+',К'+KvartC
case KP_SD.PER='4'
FileNameC=KP_SD.KODF+sDT
PeriodTxtC=YearC+',Г'
otherwise
FileNameC=''
PeriodTxtC=''
ENDCASE
&&---------------------------------------------------------------------------------------------------------------
DO CASE
CASE kp_sd.per='2'
nperN=int((_sysMonthN-1)/3)+1
CASE kp_sd.per='3'
nperN=iif(_sysMonthN>6,2,1)
CASE kp_sd.per='4'
nperN=1
OTHERWISE
nperN=_sysMonthN
ENDCASE
&&-------------------------------------------------------------------------------------------------------------------
if empty(kp_sd)
do getmper with kp_sd.kodf,_sysYearN,kp_sd.per,nperN
else
do getmper with left(kp_sd.prvlog,2),_sysYearN,kp_sd.per,nperN
endif
DO CASE
CASE mperiod.period='2'
KvartC=str(int((sPERIO-1)/3)+1,1)
PeriodTxtC=YearC+',К'+KvartC
CASE mperiod.period='3'
YerHlfC=iif(sPERIO>6,'2','1')
KvartC=iif(sPERIO>6,'4','2')
PeriodTxtC=YearC+',К'+KvartC
CASE mperiod.period='4'
PeriodTxtC=YearC+',Г'
OTHERWISE
PeriodTxtC=YearC+',М'+alltrim(str(sPERIO,2))
ENDCASE
&& получаем список переменных строк----------------------------------------------------------------------------
flykodC=''
SELECT 0
IF docwdataD=kp_sd.wdata
USE (_bases+kp_sd.kodf+'_POK') ALIAS pok
SET ORDER TO TAG pok
SET FILTER TO inlist(left(alltrim(kods),1),':','~')
ELSE
USE (_bases+'POK')
SET ORDER TO TAG pok
SET FILTER TO kodf=kp_sd.kodf ;
AND wdata=docwdataD ;
AND inlist(left(alltrim(kods),1),':','~')
ENDIF
GO TOP
DO WHILE NOT eof()
flykodC=flykodC+alltrim(str(pok.ykod,3))+';'
SKIP
ENDDO
USE IN pok
select 0
use (___user+FileNameC) alias XXZZYY
select 0
&& получаем список уточнений------------------------------------------------------------------------------------------
select max(val(UT)) AS utn ;
from XXZZYY ;
into table (old_vtemp+'AllUT')
select AllUT
go top
do while not eof()
&& заполняем список документов------------------------------------------------------------------------------------
if _UseKND
KNDTxtC=iif(empty(alltrim(KP_SD.KND)) or (alltrim(KP_SD.KND)=='0'),'1150000',KP_SD.KND)
else
KNDTxtC=KP_SD.KODF
endif
select HaveDoc
append blank
replace KODF with KP_SD.KODF, ;
UT with str(AllUt.UTn,2), ;
NAIM with KP_SD.NAIM, ;
FileName with FileNameC, ;
SDWDATA with KP_SD.WDATA, ;
PERIODTXT with PERIODTXTC, ;
KNDTXT with KNDTxtC, ;
wdata WITH docwdataD, ;
flykod WITH flykodC, ;
prvlog WITH kp_sd.prvlog, ;
prd WITH kp_sd.prd, ;
_knd WITH kp_sd.knd, ;
prmnog WITH kp_sd.prmnog
select AllUt
skip
enddo
select AllUt
use
select XXZZYY
use
endif
select KP_SD
skip
enddo
wait clear
if DocList.WDATA=DocList.SDWDATA
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000101', ;
FieldName with 'KOMM'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000201', ;
FieldName with 'RASSH'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000301', ;
FieldName with 'C257N'
SELECT 0
USE (_bases+doclist.kodf+'_POK') alias pok
set order to tag POK
go top
do while not eof()
if not empty(KODS) and (not (alltrim(KODS)=='0'))
select kp_sgr
set filter to KODF=DocList.KODF and KODP=POK.KODP and RGR<>0
go top
do while not eof()
scrC=subdat1(pok.twd,kp_sgr.rgr)
IF NOT empty(scrC)
typeC=substr(scrC,1,1)
sc1N=at('(',scrC)
sc2N=at(')',scrC)
zpN=at(',',scrC)
IF zpN=0
lenN=val(substr(scrC,sc1N+1,sc2N-sc1N-1))
decN=0
ELSE
lenN=val(substr(scrC,sc1N+1,zpN-sc1N-1))
decN=val(substr(scrC,zpN+1,sc2N-zpN-1))
ENDIF
ENDIF
YKodN=POK.YKOD
KodPN=POK.KODP
KodSC=strtran(POK.KODS,':','')
KodGN=kp_SGR.KODGR
RGRN=kp_SGR.RGR
GNIN=iif(kp_SGR.GNI=1,1,0)
TxtPokC='П'
TxtPokC=TxtPokC+iif(KodPN>=10,str(KodPN,2),'0'+str(KodPN,1))
TxtPokC=TxtPokC+replicate('0',5-len(alltrim(KodSC)))+alltrim(KodSC)
TxtPokC=TxtPokC+iif(KodGN>=10,str(KodGN,2),'0'+str(KodGN,1))
FieldNameC=DocList.KODF+alltrim(str(YKodN,3))+'_'+alltrim(str(RGRN,2))
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with TxtPokC, ;
FieldName with FieldNameC, ;
type WITH typeC, ;
len WITH lenN, ;
dec WITH decN
select kp_SGR
skip
enddo
endif
select POK
skip
enddo
USE IN pok
else
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000101', ;
FieldName with 'KOMM'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000201', ;
FieldName with 'RASSH'
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with 'П000000301', ;
FieldName with 'C257N'
SELECT 0
USE (_bases+'POK')
set order to tag POK
set filter to KODF=DocList.KODF and WDATA=DocList.WDATA
go top
do while not eof()
if not empty(KODS) and (not (alltrim(KODS)=='0'))
select SGR
set filter to KODF=DocList.KODF and KODP=POK.KODP and WDATA=DocList.WDATA and RGR<>0
go top
do while not eof()
scrC=subdat1(pok.twd,sgr.rgr)
IF NOT empty(scrC)
typeC=substr(scrC,1,1)
sc1N=at('(',scrC)
sc2N=at(')',scrC)
zpN=at(',',scrC)
IF zpN=0
lenN=val(substr(scrC,sc1N+1,sc2N-sc1N-1))
decN=0
ELSE
lenN=val(substr(scrC,sc1N+1,zpN-sc1N-1))
decN=val(substr(scrC,zpN+1,sc2N-zpN-1)) ENDIF
ELSE
IF pok.td='U'
typeC=substr(pok.td1,sgr.rgr,1)
ELSE
typeC=pok.td
ENDIF
DO CASE
CASE typeC='C'
lenN=15
decN=0
CASE typeC='D'
lenN=8
decN=0
OTHERWISE
typeC='N'
lenN=15
decN=3
ENDCASE
ENDIF
if pok.td=='U'
if len(alltrim(pok.td1))>=SGR.RGR
TypeC=substr(pok.td1,SGR.RGR,1)
else
TypeC='N'
endif
else
TypeC=pok.td
endif
YKodN=POK.YKOD
KodPN=POK.KODP
KodSC=strtran(POK.KODS,':','')
KodGN=SGR.KODGR
RGRN=SGR.RGR
GNIN=iif(SGR.GNI=1,1,0)
TxtPokC='П'
TxtPokC=TxtPokC+iif(KodPN>=10,str(KodPN,2),'0'+str(KodPN,1))
TxtPokC=TxtPokC+replicate('0',5-len(alltrim(KodSC)))+alltrim(KodSC)
TxtPokC=TxtPokC+iif(KodGN>=10,str(KodGN,2),'0'+str(KodGN,1))
FieldNameC=DocList.KODF+alltrim(str(YKodN,3))+'_'+alltrim(str(RGRN,2))
select ExpDcPok
append blank
replace KODF with DocList.KODF, ;
WDATA with DocList.WDATA, ;
TxtPok with TxtPokC, ;
FieldName with FieldNameC, ;
type WITH typeC, ;
len WITH lenN, ;
dec WITH decN
select SGR
skip
enddo
endif
select POK
skip
enddo
USE IN pok
endif
&&-----------------------------------------------------------------
aPath=alltrim(upper(bPath))
if right(aPath,1)<>'\'
aPath=aPath+'\'
endif
aDrv=left(aPath,1)
if !cdrv(aDrv)
if aDrv='A' .or. aDrv='B'
do while !cdrv(aDrv)
if MESSAGEBOX('Вставьте диск в дисковод '+aDrv+':',64+1)<>1
RETURN .F.
endif
enddo
else
MESSAGEBOX('Диск '+aDrv+': не существует.', 16)
RETURN .F.
endif
endif
isOkPath=.t.
PRIVATE olderrC
olderrC=ON('ERROR')
on error isOkPath=.f.
SetDefault(aPath) &&&&set default to &aPath
ON ERROR &olderrC
SetDefault(root_dir) &&&&set default to &root_dir
if !isOkPath
MESSAGEBOX('Неправильный путь к файлу.', 16)
RETURN .F.
endif
&& формирование текстового файла
wait window nowait 'Идет подготовка файла'
define window wtxt from 24,79 to 24,79 none
activate window wtxt noshow
set alternate to (old_vtemp+aFileName)
set alternate on
set console off
?? 'ИдФайл:'+alltrim(sIdOtp)
? 'ТипИнф:'+alltrim(sType)
? 'НаимОтпрЮл:'+alltrim(sDan)
? 'ТелОтпр:'+alltrim(sTel)
? 'ДолжнОтпр:'+alltrim(sDol)
? 'ФИООтпр:'+alltrim(sFIO)
? 'КолДок:1'
? 'ВерсПрог:'+alltrim(sVer)
? '@@@'
? 'ИдДок:'+alltrim(sIdDoc)
isOkAll=.f.
do AddDoc
? '@@@'
? '==='
release window wtxt
set alternate to
set console on
wait clear
if !isOkAll
MESSAGEBOX('Нет передаваемых показателей во всех передаваемых документах. Копируемый файл не создан', 16)
else
wait window nowait 'Выполняется копирование файла'
DO WinToDos IN _bin+'oninit.prg' WITH old_vtemp+aFileName, aPath+aFileName
wait clear
messagebox('Выгрузка завершена.', 64)
endif
clear read
SELECT 0
USE (_bases+'NOMFILE')
LOCATE FOR year=_sysYearN
REPLACE nomfile WITH nomfile+1
USE
return .t.
&&-----------------------------------------------------------------
procedure AddDoc
select DocList
go topdo while not eof()
wait wind nowait 'Идет подготовка данных'
select ExpDcPok
set filter to KODF=DocList.KODF and WDATA=DocList.WDATA
count to PkCntN
if PkCntN>0
isOkAll=.t.
do AddDoc01
else
MESSAGEBOX('Документ: '+DocList.NAIM + CHR(13) +;
'Уточнение: '+iif(val(DocList.UT)=0,'Основной расчет',DocList.UT+' уточнение')+;
'Нет передаваемых показателей. Документ будет пропущен.',64)
endif select DocList
skip
enddo
wait clear
return
|
0 комментариев