Извлечение данных
Для удобного извлечения данных 1С в хранилище данных: автоматической генерации SQL-представлений с именами в терминах 1С, разрешением ссылочных полей и другими преобразованиями необходимо установить ATK BiView.
|
Для начала импортируйте необходимые библиотеки - Pandas для работы с таблицами и Pymssql для работы с СУБД MsSql.
import pandas as pd
import pymssql
|
Далее нужно подключиться к базе данных с помощью pymssql.connect().
con = pymssql.connect(server='server',
user='user',
password='password',
database='database')
cur = con.cursor()
|
Если вы не знаете точное название таблицы, которая вам нужна, можно получить список доступных таблиц, используя следующий скрипт.
cur.execute('SELECT * FROM INFORMATION_SCHEMA.TABLES')
tables = cur.fetchall()
tables
|
Чтобы выгрузить таблицу из базы данных можно использовать следующий шаблон, в котором вместо user и TableName нужно вписать имя пользователя, указанное в параметрах подключения к СУБД и название нужной вам таблицы из списка доступных таблиц соответственно:
cur.execute("SELECT * FROM [database].[dbo].[TableName]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='TableName'")
columns=cur.fetchall()
|
Пример получения таблицы со списком сотрудников:
cur.execute("SELECT * FROM [database].[dbo].[Справочники.Сотрудники]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Справочники.Сотрудники'")
columns=cur.fetchall()
staff=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
Пример получения таблицы со списком подразделений:
cur.execute("SELECT * FROM [database].[dbo].[Справочники.ПодразделенияОрганизаций]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Справочники.ПодразделенияОрганизаций'")
columns=cur.fetchall()
divisions=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
Пример получения таблицы с окладами сотрудников:
cur.execute("SELECT * FROM [database].[dbo].[Документы.НачислениеЗарплаты.НачисленияПоДоговорам]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.НачислениеЗарплаты.НачисленияПоДоговорам'")
columns=cur.fetchall()
salary=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
Пример получения таблиц с начислениями зарплаты, ндфл, взносами:
cur.execute("SELECT * FROM [database].[dbo].[Документы.НачислениеЗарплаты.Начисления]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.НачислениеЗарплаты.Начисления'")
columns=cur.fetchall()
accruals=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
cur.execute("SELECT * FROM [database].[dbo].[Документы.НачислениеЗарплаты.НДФЛ]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.НачислениеЗарплаты.НДФЛ'")
columns=cur.fetchall()
ndfl=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
cur.execute("SELECT * FROM [database].[dbo].[Документы.НачислениеЗарплаты.Взносы]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.НачислениеЗарплаты.Взносы'")
columns=cur.fetchall()
contributions=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
Пример получения таблицы с информацией об отпусках сотрудников организации:
cur.execute("SELECT * FROM [database].[dbo].[Документы.Отпуск]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.Отпуск'")
columns=cur.fetchall()
vacations=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
Пример получения таблицы с контрагентами:
cur.execute("SELECT * FROM [database].[dbo].[Справочники.Контрагенты]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Справочники.Контрагенты'")
columns=cur.fetchall()
counterparties=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
Пример получения таблиц с банковскими выписками:
cur.execute("SELECT * FROM [database].[dbo].[Документы.ПоступлениеНаРасчетныйСчет]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.ПоступлениеНаРасчетныйСчет'")
columns=cur.fetchall()
receipt=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
cur.execute("SELECT * FROM [database].[dbo].[Документы.ПоступлениеТоваровУслуг]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.ПоступлениеТоваровУслуг'")
columns=cur.fetchall()
goods=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
Пример получения таблицы с поступлением товаров и услуг:
cur.execute("SELECT * FROM [database].[dbo].[Документы.ПоступлениеНаРасчетныйСчет]")
tupples = cur.fetchall()
cur.execute("SELECT COLUMN_NAME AS [columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='Документы.ПоступлениеНаРасчетныйСчет'")
columns=cur.fetchall()
receipt=pd.DataFrame(tupples, columns=pd.DataFrame(columns)[0])
|
