WEB-приложение Сведение отчетности  (21.11.2024)
Загрузка текстовых файлов
В дополнение к ранее описанным объектам, скрипт загрузки текстового файла имеет доступ к следующему:
  • Переменная StringCount : Integer (только для чтения) содержит количество строк в загружаемом текстовом файле.
  • Функция Strings(Index: Integer) : string возвращает строку загружаемого файла с номером Index. Строки нумеруются с нуля. Попытка обратиться к несуществующей строке приведет к ошибке.
Пример
Ниже приведен откомментированный пример скрипта загрузки текстового файла:
001'Так можно и нужно анализировать строки пришедшего текстового файла.
002'Количество строк - StringCount, строка с номером I - Strings(I), нумерация с 0.
003
004'Фактически здесь написано: если на четвертой (с номером 3) строке написано что-то,
005'отличное от "Форма 160/128q", то это не "наш" текстовый файл, его не надо обрабатывать.
006if StringCount < 4 then
007  'Количество строк меньше четырех. Это точно не "нащ" файл.
008  InvalidData = True
009elseif Strings(3) <> "Форма 160/128q" then
010  'Текстовый файл не признан "своим".
011  InvalidData = True
012else
013  'Следите за отступами.
014
015  Message("Анализируем файл.") 'Сообщение пользователю в протокол загрузки.
016
017  '1. Создание корневого элемента REPORTS
018  set xml.documentElement = xml.createElement("REPORTS")
019
020  '2. Создание элемента-отчета. Повторять столько раз, сколько нужно отчетов.
021  with xml.documentElement.appendChild(xml.createElement("REPORT"))
022
023    '3. Атрибуты отчета
024
025    .appendChild(xml.createElement("AGENT")).appendChild(xml.createTextNode("Мнемокод контрагента"))
026    .appendChild(xml.createElement("FORM")).appendChild(xml.createTextNode("Мнемокод формы"))
027    .appendChild(xml.createElement("BDATE")).appendChild(xml.createTextNode("Дата в формете YYYY-MM-DD"))
028    .appendChild(xml.createElement("NOTE")).appendChild(xml.createTextNode("Примечание!!!"))
029    .appendChild(xml.createElement("KIND")).appendChild(xml.createTextNode("0")) '0-первичный, 1-сводный
030
031    'Также можно установить дополнительные атрибуты отчета:
032    '.appendChild(xml.createElement("CATALOG")).appendChild(xml.createTextNode("Наименование каталога"))
033    '.appendChild(xml.createElement("CHECKED")).appendChild(xml.createTextNode("1"))
034    '.appendChild(xml.createElement("STATE")).appendChild(xml.createTextNode("2"))
035    '.appendChild(xml.createElement("SENT")).appendChild(xml.createTextNode("1"))
036
037    '4. Список подотчетов
038    with .appendChild(xml.createElement("SUBREPORTS"))
039
040      '5. Главный подотчет (без мнемокода)
041      with .appendChild(xml.createElement("SUBREPORT"))
042
043        '6. Список значений
044        with .appendChild(xml.createElement("VALUES"))
045
046          'Создать столько значений, сколько нужно.
047          '7. Значение числового показателя
048          with .appendChild(xml.createElement("VALUE"))
049            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
050            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
051          end with
052
053          '8. Значение строкового показателя
054          with .appendChild(xml.createElement("VALUE"))
055            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
056            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
057          end with
058
059          '9. Значение показателя типа "дата".
060          with .appendChild(xml.createElement("VALUE"))
061            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
062            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
063          end with
064
065        end with
066
067        '10. Таблицы показателей - если редакция содержит таблицы показателей.
068        with .appendChild(xml.createElement("TABLES"))
069
070          '11. Таблица. Повторять столько раз, сколько нужно таблиц.
071          with .appendChild(xml.createElement("TABLE"))
072
073            '12. Наименование таблицы
074            .appendChild(xml.createElement("NAME")).appendChild(xml.createTextNode("Наименование таблицы"))
075
076            '13. Строки таблицы
077            with .appendChild(xml.createElement("ROWS"))
078
079              '14. Строка таблицы
080              with .appendChild(xml.createElement("ROW"))
081
082                '15. Значение строкового показателя
083                with .appendChild(xml.createElement("VALUE"))
084                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
085                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
086                end with
087
088                with .appendChild(xml.createElement("VALUE"))
089                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
090                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
091                end with
092
093              end with
094
095              '16. Строка таблицы
096              with .appendChild(xml.createElement("ROW"))
097
098                '17. Значение строкового показателя
099                with .appendChild(xml.createElement("VALUE"))
100                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Показатель в составе талицы"))
101                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
102                end with
103
104                with .appendChild(xml.createElement("VALUE"))
105                  .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Другой показатель в составе талицы"))
106                  .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
107                end with
108
109              end with
110
111            end with
112
113          end with
114
115        end with
116
117      end with
118
119      '18. Подотчет. Повторять столько раз, сколько нужно подотчетов.
120      with .appendChild(xml.createElement("SUBREPORT"))
121
122        '19. Мнемокод разреза подотчета
123        .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод разреза"))
124
125        '20. Список занчений
126        with .appendChild(xml.createElement("VALUES"))
127
128          'Создать столько значений, сколько нужно.
129          '21. Значение числового показателя
130          with .appendChild(xml.createElement("VALUE"))
131            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод числового показателя"))
132            .appendChild(xml.createElement("NVAL")).appendChild(xml.createTextNode("100.10"))
133          end with
134
135          '22. Значение строкового показателя
136          with .appendChild(xml.createElement("VALUE"))
137            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод строкового показателя"))
138            .appendChild(xml.createElement("SVAL")).appendChild(xml.createTextNode("Строковое значение"))
139          end with
140
141          '23. Значение показателя типа "дата".
142          with .appendChild(xml.createElement("VALUE"))
143            .appendChild(xml.createElement("CODE")).appendChild(xml.createTextNode("Мнемокод показателя типа дата"))
144            .appendChild(xml.createElement("DVAL")).appendChild(xml.createTextNode("2020-01-01"))
145          end with
146
147        end with
148
149        'Создать таблицы, если они нужны.
150
151      end with
152
153    end with
154  end with
155end if