Требования к файлу *.xls

К файлам *.xls, как и к файлам *.dbf, программа СБиС++ также предъявляет минимальные, но необходимые требования, от выполнения которых зависит, правильно ли будет прочитан у вас тот или иной файл с данными.

А именно, для каждого файла *.xls необходимо создать специальный файл с шаблонами для чтения данных. Шаблоны представляют собой наборы параметров, которые задают порядок чтения данных из файла Excel.

Таким образом, теоретически можно прочитать данные из любого файла Excel, настроив соответствующим образом шаблоны для его чтения. Но более предпочтительно, чтобы файл Excel был формой отчётности, выгруженной из системы "Консультант Плюс".

Файл шаблонов

Файл шаблонов – текстовый файл (*.txt), который содержит шаблоны для чтения одного файла *.xls. C помощью шаблонов следует описать все данные, которые содержит данный  Excel-файл. Иначе программа не сможет его прочитать.

Порядок следования шаблонов в файле

Для каждого типа данных предусмотрены свои шаблоны – шаблон для листа (вкладки) книги Excel, шаблон для одиночного реквизита, шаблон для блока реквизитов. Все типы шаблонов рассмотрены чуть ниже по тексту.

Порядок следования шаблонов в файле такой же, как и порядок следования данных в файле Excel. Сначала идёт шаблон Листа (вкладки), за ним следуют шаблоны реквизитов данного Листа.  Далее начинаем читать следующий Лист – указываем шаблон для следующего листа и шаблоны реквизитов, которые он содержит, и т.д. Кроме шаблонов, никаких других знаков указывать в файле не требуется.

Размещение файлов шаблонов

Готовый файл шаблонов положите в каталог модулей, в папку соответствующей формы отчётности (там они будут находиться вместе с *.html и *.prg файлами данной формы).

Путь к папке формы: СБиС++\ Модули\ !Электронная отчетность\ Формы отчетности\…\<Папка с названием формы отчетности>.

При установке программы в папках некоторых форм (например, Прибыли) автоматически создаются образцы файлов шаблонов. Файлы образцов шаблонов находятся в каталоге модулей, в папках соответствующих форм. Вы можете использовать эти файлы для создания своих шаблонов.



Таким образом, в папке формы отчётности могут находиться несколько файлов шаблонов. По умолчанию программа использует последний по дате файл.

Имя файла шаблонов

Имя файла шаблонов имеет следующий формат:

<Имя формы отчётности><Пробел>формат Excel.txt

где <Имя формы отчётности> – имя формы отчётности в реестре СБиС++, после имени формы через пробел указать текст: "формат Excel".

Налоговая декларация по налогу на прибыль организаций (от 03.06.04 изм 24.03.05) формат Excel.txt



Настройки шаблонов

Рассмотрим шаблоны для каждого типа данных в файле Excel.

•  Шаблон для Листа

Шаблон для чтения Листа (вкладки) книги Excel. В файле шаблонов шаблон Листа должен предшествовать шаблонам для реквизитов этого листа.

Тип = ВыборВкладки
Имя = <Имя читаемого листа (вкладки) файла Excel>.

Пример:

Тип = ВыборВкладки
Имя = Стр.1-16 (разд.1, л.02, пр.1-7)

•  Шаблон для чтения одиночного реквизита

Тип = Реквизит
Обязательный = <Да/Нет>

– "Да" – реквизит является обязательным и должен присутствовать в файле, "Нет" – реквизит не является обязательным, его в файле может не быть. Определение обязательных и  необязательных реквизитов (разделов, блоков данных) приведено в электронных форматах соответствующих форм отчётности. Поскольку при чтении данных из файла Excel, СБиС++ исходит из полного набора реквизитов, этот параметр необходим, чтобы сообщить СБиС++ о присутствии или отсутствии соответствующих реквизитов в файле Excel. Параметр "Обязательный = Да/Нет" – необходимо указывать для каждого типа шаблона (за исключением шаблона для Листа).

Имя = <Код читаемого реквизита>

– код реквизита можно уточнить по электронному формату данной формы

Столбец = <Код столбца (графы) таблицы Excel, которая содержит данный реквизит>
Ключ.<Код столбца таблицы Excel, который содержит коды строк> = <Код строки, которая содержит данный реквизит>

Пример:

Тип = Реквизит
Обязательный = Да
Имя = П001010000100
Столбец = CC
Ключ.BR = 001

•  Шаблон для составного одиночного реквизита

Если значение реквизита вносится заполнением нескольких ячеек в форме Excel, такой реквизит мы назовем составным. Например, значение кода по ОКАТО в форме СБиС++ вносится сразу в одно поле, а в форме Excel для этого реквизита предусмотрено несколько ячеек. Чтобы прочитать такой реквизит в СБиС++, все позиции значения читаемого реквизита (заполненные ячейки) нумеруются по порядку.

Параметры шаблона составного одиночного реквизита:

Тип = Реквизит
Обязательный = <Да/Нет>
Имя = <Код читаемого реквизита>
Столбец.<Код столбца (графы) таблицы Excel, который содержит читаемый реквизит> = <Номер читаемой позиции значения реквизита>.
Ключ.<Код столбца таблицы Excel, который содержит коды строк> = <Код строки, которая содержит данный реквизит>

В качестве примера приведем шаблон для реквизита кода по ОКАТО (строка 010) декларации по налогу на прибыль организаций (форма по КНД 1151006).

Тип = Реквизит
Обязательный = Да
Имя = П001010001000
Столбцы.CC = 1
Столбцы.CG = 2
Столбцы.CK = 3
Столбцы.CO = 4
Столбцы.CS = 5
Столбцы.CW = 6
Столбцы.DA = 7
Столбцы.DE = 8
Столбцы.DI = 9
Столбцы.DM = 10
Столбцы.DQ = 11
Ключ.BR = 010

•  Шаблон для даты

В СБиС++ в качестве разделителя между составными частями даты используется точка (ДД.ММ.ГГГГ).

Если в форме Excel разделитель не указан, или указан, но не точка, необходимо добавить параметр: Суффикс.<Код столбца таблицы Excel> = . (в качестве значения параметра указать точку). Этот параметр служит для того, чтобы дата была корректно сформирована при чтении файла в СБиС++.

В качестве примера приведем шаблон для даты (строка 020) декларации по налогу на прибыль организаций (форма по КНД 1151006).

Тип = Реквизит
Обязательный = Да
Имя = П001010002000
Столбцы.CC = 1
Столбцы.CG = 2
Суффикс.CG = .
Столбцы.CO = 4
Столбцы.CS = 5
Суффикс.CS = .
Столбцы.DA = 7
Столбцы.DE = 8
Столбцы.DI = 9
Столбцы.DM = 10
Ключ.BR = 020

•  Шаблон для блока реквизитов

Если реквизиты однотипные, можно применить шаблон чтения диапазона реквизитов. В этом случае задаётся код, общий для всех реквизитов таблицы (код таблицы) и указывается диапазон строк и столбцов, данные из которых нужно прочитать.

Параметры для чтения диапазона реквизитов:

Тип = Реквизит
Обязательный = <Да/Нет>
ДиапазонПоиска = <Количество строк до первого реквизита>

– количество строк, которые необходимо просканировать программе в поисках первого реквизита (поскольку некоторые разделы не являются обязательными и могут отсутствовать в файле). Укажите номер строки таблицы Excel, которая содержит данный реквизит.

Таблица = <Код таблицы>

– код читаемой таблицы (пять знаков). Код таблицы задает префикс, общий для всех реквизитов данного блока. Например, если указать "Таблица = 00200", все реквизиты блока будут именоваться с префиксом "П00200".

ОтСтрока = <Код строки в столбце "Код", которая содержит первый реквизит читаемого диапазона>
ДоСтрока = <Код строки в столбце "Код", которая содержит последний реквизит читаемого диапазона>

– код должен содержать пять знаков, недостающие позиции заполняются нулями слева. Например, если код строки "041", следует указать "ОтСтрока = 00041".

Код = <Код столбца (графы) таблицы Excel, который содержит коды строк>
Столбцы.<Порядковый номер столбца в таблице (разделе формы), которого содержит читаемые реквизиты> = <Код столбца (графы) таблицы Excel, который содержит читаемые реквизиты>

– если в таблице несколько столбцов, реквизиты из которых требуется прочитать, следует указать все столбцы. Например:

Таблица = 00400
ОтСтрока = 00120
ДоСтрока = 00160
Код = CN
Столбцы.03 = CY
Столбцы.04 = CZ

Внимание! Пустая строка!

При чтении данных в СБиС++, программа перебирает все строки Excel-файла, в читаемой строке ищет код строки и читает реквизит из строки с этим кодом. Если программа встретит строку, в которой код строки отсутствует (строка с "пустым" кодом), то  чтение блока прервется, и данные не будут прочитаны.

Для того, чтобы избежать подобных ситуаций и прочитать все реквизиты,  необходимо в качестве диапазона задавать только те строки, коды которых следуют непрерывно.

В качестве примера приведём шаблон для чтения реквизитов таблицы раздела 00200 декларации по налогу на прибыль организаций (форма по КНД 1151006).

Тип = Блок
Обязательный = Нет
ДиапазонПоиска = 200

Таблица = 00200
ОтСтрока = 00010
ДоСтрока = 00040
Код = CN
Столбцы.03 = CY

Тип = Блок
Обязательный = Нет
Таблица = 00200
ОтСтрока = 00041
ДоСтрока = 00110
Код = CN
Столбцы.03 = CY
и т.д.

В примере мы читаем реквизиты таблицы "кусками", поскольку коды строк не следуют непрерывно – между строками 040 и 041, 090 и 110, 150 и 160 итд. есть строки с "пустым" кодом. Для каждой группы строк, коды которых следуют непрерывно, мы создали свой шаблон с типом "Блок".