Загрузка текстовых файлов

WEB-приложение Сведение отчетности (29.04.2026) | (одним файлом) (cсылка)
Загрузка текстовых файлов
В дополнение к ранее описанным объектам, скрипт загрузки текстового файла имеет доступ к следующему: Переменная 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