Доступ к данным 1С: Предприятия из Microsoft Excel

Данная статья предназначена для опытных пользователей и разработчиков, которых хотят получать отчетность из 1С в Excel. Кроме того, данная статья затрагивает вопросы безопасности в подобных решениях.

Доступ к данным 1С: Предприятия
из Microsoft Excel

Используя Excel можно получать из 1С различные отчеты.

Excel при доступе к данным DBF не требует авторизации, т.е. может быть использован для взлома.

О доступе в 1С через Excel администраторам и опытным пользователям

Данная статья предназначена для опытных пользователей и разработчиков, которых хотят получать отчетность из 1С в Excel. Кроме того, данная статья затрагивает вопросы безопасности в подобных решениях.

Доступ к данным локальной и сетевой версии 1С (DBF-версия)

Для получения данных из 1С в Excel настраивают Microsoft Query для чтения файлов 1С. Сам Microsoft Query входит в состав Microsoft Office. Единственная загвоздка это кодировка базы 1С. Для ее устранения нужно с помощью программы regedit.exe исправить значение ключа реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet3.5EnginesXbase

на ANSI. Затем в файле 1CV7.DD смотрят описание таблиц с данным 1С. В конце составляют запрос для получения нужной информации из 1С через ODBC-драйвер FoxPro. Например, для получения информации о приходных накладных нужен примерно такой запрос:

SELECT dh434.IDDOC, dh434.SP440, dh434.SP910, dh434.SP441, dh434.SP453, sc46.DESCR, sc33.DESCR, dt434.SP449, dt434.SP451, dt434.SP453 FROM dh434.dbf dh434, dt434.dbf dt434, sc33.dbf sc33, sc46.dbf sc46 WHERE sc46.ID = dh434.SP437 AND dh434.IDDOC = dt434.IDDOC AND dt434.SP448 = sc33.ID

Для создания запроса не обязательно знать язык SQL, его можно построить с помощью мастера запросов Microsoft Query, приведенный запрос был сделан именно так. Полученные данные из можно Microsoft Query можно анализировать в Excel, если вызвать Microsoft Query из пункта меню "Данные/ Импорт внешних данных/ Создать запрос".

Замечания по безопасности.

Как видим, DBF-файлы в принципе не подразумевают авторизацию при доступе к данным. Таким образом, любой пользователь 1С используя данный метод может получить полный доступ к данным в 1С. Серьезных мер противодействия этому нет, но есть несколько методических мер, которые могут смягчить проблему:

- Не раскидывайте Excel-отчеты предназначенные для работы с 1С где попало. Устанавливайте их только тем пользователям, которым они нужны.

- Используйте средства Windows Trusted Security, для изоляции разных баз друг от друга.

- Не устанавливайте Microsoft Query и ODBC-драйверы для DBF-файлов обычным операторам БД.

Доступ к данным версии 1С для SQL

Доступ организуются аналогично как для DBF и даже проще, т.к. реестр править не нужно. Запрос для получения информации из приходных накладных для базы 1С под MS SQL выглядит примерно так:

SELECT dh434.IDDOC, dh434.SP440, dh434.SP910, dh434.SP441, dh434.SP453, sc46.DESCR, sc33.DESCR, dt434.SP449, dt434.SP451, dt434.SP453

FROM dh434, dt434, sc33, sc46 WHERE sc46.ID = dh434.SP437 AND dh434.IDDOC = dt434.IDDOC AND dt434.SP448 = sc33.ID

По сравнению с анализом DBF-базы запрос имеет несущественные отличия в разделе FROM и для составления запроса следует пользоваться описанием базы в разделе 1CV7.DDS.

Замечания по безопасности

В случае MS SQL для получения данных требуется авторизация на сервере. Рекомендуем использовать метод Trusted Security для входа в MS SQL. Это позволяет не хранить пароли в настройках системы и блокирует атаку через подбор пароля (password attack). Следует помнить, что если пользователи смогут скопировать файл 1CV7.DBA, то довольно легко они смогут расшифровать пароль MS SQL с помощью таких программ как unsql.exe. Надежная защита от такого взлома строится с помощью таких продуктов как "Защита 1С: Предприятия для SQL".

Комментарии

6
  • Хранитель_врат
    а, собссно на майкрософте лежит обновление к экселю. Это не тоже самое? Вроде обещают совместимость этих двух программ...