Как подключиться к 1с через excel

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

#1

15.06.2017 17:22:15

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

Код
Set conn = CreateObject("V83.COMConnector")
Set bd = conn.Connect("Srvr=""Zeus:1687"";Ref=""moto_sup""")
Set Запрос = bd.NewObject("Запрос") 
Запрос.Текст = "Здесь текст консольного запроса к БД 1С"

Хочу также тащить себе таблички в PQ. Это возможно вообще? Если да, то хотя бы натолкните на мысль, где копать?

Изменено: PooHkrd10.12.2021 07:36:44

Вот горшок пустой, он предмет простой…

 

Denis87

Пользователь

Сообщений: 107
Регистрация: 23.06.2016

Инициалы сервера на ваши пробовали менять?

 

1C хранит данные (обычно) в SQL, насколько я понимаю. Так что можно цепляться хоть напрямую, если знаете, как эта база устроена. Если не знаете — лучше не надо (да и доступа к ней у вас не будет в таком случае, скорее всего)

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

Denis87, Я всего лишь хотел узнать какой функцией в PQ я могу настроить такое же COM соединение и транслировать в неё запрос на формирование таблицы, которую дальше буду обрабатывать в PQ.
Максим Зеленский, Макрос обращается к БД запросом на её родном языке, как это представлено в примере. Запрос в консольке 1С сляпать в конструкторе вообще не проблема. Есть тестовая БД, так что ничего не поломаю.
Просто подскажите функцию PQ  для установления соединения по аналогии с VBA, а дальше буду сам тыкаться в макете. Ну а если так нельзя, то так и скажите, буду придумывать костыли.

Изменено: PooHkrd13.04.2022 16:42:14

Вот горшок пустой, он предмет простой…

 

Не знаю, можно ли. COM — это же не ODBC.
доступные функции соединения PQ:

https://msdn.microsoft.com/en-us/library/mt296615.aspx

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Насколько помню без танцев с бубном из PQ к 1С еще ни у кого не получилось подключиться. Нет там такого соединения. Пока что. Если поискать в сети — можно найти всякие грабли через установку доп.приложений для коннекта.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

Грабли для коннекта через сторонний (не MS) софт не подойдут — замучаюсь согласовывать их установку на корпоративный комп. А значит данные придется тащить макросом, а потом обрабатывать через PQ.
Всем спасибо.

Изменено: PooHkrd08.11.2021 16:25:37

Вот горшок пустой, он предмет простой…

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

Описанный в #1 способ работает, можно получить список Контрагентов, Номенклатуры, … Можно изменять данные методами 1С (для этого объекта: conn = CreateObject(«V83.COMConnector»)) для того этот CОM и писали.
PQ так не подключишь, т.к. он не поддерживает COM объекты (во всяком случае в для 2010).

PS Да при авторизации могут быть проблемы, не всегда удается ее пройти успешно. Для УПП на 8.2  мне удавалось открыть соединение только после 18-00, когда большинство пользователей покидали систему. Причину выявить не удалось.

Неизлечимых болезней нет, есть неизлечимые люди.

 

Может легче в 1с настроить необходимую выгрузку файла в формат эксель настроить?

 

surkenny

Пользователь

Сообщений: 2367
Регистрация: 13.06.2014

Василий Нисс, а если нужны текущие данные, а отчёт по всем клиентам/номенклатуре формируется 20 минут? Каждый раз залезать в отчёт или рассылку и менять отбор? А если отобрать нужно 50 товаров? :)

 

Тогда лучше делать это все сразу в 1с, минуя привязку к другим пирогам. Конечно, будут дополнительные расходы на запись дополнительных окон, но вся эта задача будет решаться в рамках одной только Иннески (1с). 1с очень гибкий для этого инструмент.  

 

Михаил Л

Пользователь

Сообщений: 2640
Регистрация: 19.02.2020

Василий Нисс, как быть если конфигуратор запоролен, а приходящий программист 1С с почасовой оплатой растягивает свою работу на пару дней?

 

surkenny

Пользователь

Сообщений: 2367
Регистрация: 13.06.2014

#13

10.12.2021 08:45:03

Цитата
Михаил Л написал:
приходящий программист 1С с почасовой оплатой растягивает свою работу на пару дней?

Ха!
Программисты свои. Доработки согласовываются от месяца до трех. Реализация доработок (не совсем тривиальных) от 6 месяцев после согласования. Через 9 месяцев меняется бизнес логика — нахер не нужна доработка :)

 

Михаил Л

Пользователь

Сообщений: 2640
Регистрация: 19.02.2020

surkenny,  поэтому мне легче осторожно подключиться из PQ

 

surkenny

Пользователь

Сообщений: 2367
Регистрация: 13.06.2014

Михаил Л, я запрашивал доступ к БД — отказали, ссылаясь на нарушение лицензии 1С и очень сложную структуру данных, в которой не разберусь. Есть свой API, который изначально для qlick делали, но там не использовали. Но при проверке оказалось, что почему-то не работает. В общем, сижу и жду, пока рассылка выполнится :).

Изменено: surkenny10.12.2021 09:03:26

 

Vladimir Chebykin

Пользователь

Сообщений: 1225
Регистрация: 15.01.2015

#16

10.12.2021 09:20:50

Цитата
surkenny написал:
ссылаясь на нарушение лицензии 1С и очень сложную структуру данных, в которой не разберусь

Есть такой очень интересный инструмент: ATK Biview вроде называется. Так вот, он позволяет все 1С-ые таблицы с атрибутами «расшифровать» в читаемые названия. Что позволяет легко найти нужную информацию без посторонней помощи. Про нее даже не все программисты 1С знают, что существует такая удобная программа. Не помню, есть там trial версия или нет.

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

#17

10.12.2021 09:24:32

Цитата
написал:
как быть если конфигуратор запоролен, а приходящий программист 1С с почасовой оплатой растягивает свою работу на пару дней?

Использовать внешнюю обработку для формирования отчета, итог выгружать в CSV.

Цитата
написал:
я запрашивал доступ к БД — отказали, ссылаясь на нарушение лицензии 1С и очень сложную структуру данных, в которой не разберусь.

Не очень понятно, что именно Вы запрашивали. Странно, если база данных запрещает доступ к своей структуре данных. В 1С есть проблема модификации типового решения, т.е. если ВЫ изменяете какой-либо объект метаданных, то теряете поддержку вендора на этот объект. Но Вам то надо просто прочитать данные, менять ничего не надо.

Неизлечимых болезней нет, есть неизлечимые люди.

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

#18

10.12.2021 09:27:07

Цитата
написал:
а если нужны текущие данные, а отчёт по всем клиентам/номенклатуре формируется 20 минут? Каждый раз залезать в отчёт или рассылку и менять отбор? А если отобрать нужно 50 товаров?

Всегда есть способ оптимизировать время выполнения.  

Неизлечимых болезней нет, есть неизлечимые люди.

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

#19

10.12.2021 09:29:27

Цитата
написал:
Есть такой очень интересный инструмент: ATK Biview вроде называется. Так вот, он позволяет все 1С-ые таблицы с атрибутами «расшифровать» в читаемые названия.

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

Неизлечимых болезней нет, есть неизлечимые люди.

 

Owlet

Пользователь

Сообщений: 191
Регистрация: 12.10.2020

surkenny, , поделитесь, как вы тогда тянете данные из 1с, если доступ к БД запретили?

 

surkenny

Пользователь

Сообщений: 2367
Регистрация: 13.06.2014

#21

10.12.2021 10:05:22

Цитата
Owlet написал:
как вы тогда тянете данные из 1с

Рассылка по расписанию/ручному запуску с сохранением в .txt

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

#22

10.12.2021 10:25:23

Цитата
TheBestOfTheBest написал:
Тогда речь пойдет уже о подключении к SQL, а не к 1С.

Вот именно прямое подключение к SQL и нарушает лиц. соглашение с 1С. Ну или мне так объясняли. Может врут, мне некогда углубляться в юридические тонкости.
По сути известных мне вариантов взять данные из серверной 1с их 4:
Обращение к SQL расшифровав названия таблиц и их полей
Выгрузки (автоматизированные и не очень) в файлы
Выгрузка нужных данных в хранилище/куб и потом тащить оттуда обычным коннектором
Настроить OData, но это только для маленьких объемов. Собcтвенно Odata часто и используется чтобы тащить данные маленькими порциями в хранилище.

Вот горшок пустой, он предмет простой…

 

Михаил Л

Пользователь

Сообщений: 2640
Регистрация: 19.02.2020

Слушайте
Есть ли у кого доступ для скачивания 1С обработок?
Нужно обработка для перевода запроса в SQL. Примерно

такая

желательно для 8.1
Вот еще

ссылка

о чем речь

Изменено: Михаил Л10.12.2021 20:28:12

 

Александр L

Пользователь

Сообщений: 414
Регистрация: 16.02.2015

Александр

#24

11.12.2021 19:46:46

Цитата
написал:
Вот именно прямое подключение к SQL и нарушает лиц. соглашение с 1С. Ну или мне так объясняли. Может врут, мне некогда углубляться в юридические тонкости.

Честно впервые такое слышу, мне кажется просто не хотят что то раскрывать,  я ежедневно выгружал так из базы и всё прекрасно, потом наделали вьюх и через них PQ прекрасно забирает

 

Александр L

Пользователь

Сообщений: 414
Регистрация: 16.02.2015

Александр

#25

11.12.2021 19:48:33

Цитата
написал:
Нужно обработка для перевода запроса в SQL. Примерно  такая  желательно для 8.1

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

 

Михаил Л

Пользователь

Сообщений: 2640
Регистрация: 19.02.2020

#26

11.12.2021 20:37:25

Цитата
Александр L написал:
там чего только нет

Вот именно, все ссылки ведут на Инфостат, а там чтобы скачать бесплатное все равно нужны мани
В принципе, я уже остыл к этому вопросу

НА МЯСО В ПРОФИЛЕ

 

Александр L

Пользователь

Сообщений: 414
Регистрация: 16.02.2015

Александр

#27

11.12.2021 21:19:39

Цитата
написал:
Вот именно, все ссылки ведут на Инфостат,

деньги странно ну и бог с ними. Тогда в телеграмме поискать группы 1С и там попросить программистов скинуть/поделиться, уверен у кого есть легко дадут.

 

Михаил Л

Пользователь

Сообщений: 2640
Регистрация: 19.02.2020

Александр L, нашел

тут

(нужна только регистрация).
Переводчик каку не переводит)

 

TheBestOfTheBest

Пользователь

Сообщений: 2366
Регистрация: 03.04.2015

Excel 2010 +PLEX +SaveToDB +PowerQuery

#29

13.12.2021 09:45:03

Цитата
написал:
Вот именно прямое подключение к SQL и нарушает лиц. соглашение с 1С. Ну или мне так объясняли. Может врут, мне некогда углубляться в юридические тонкости.

Практически у всех клиентов бэкап настроен через SQL и нечего, работают, никто их лицензии не лишает. Кроме этого, 1С не отвечает за внесенные данные, т.е. изменение структуры таблиц SQL — там да, поддержки лишитесь, а данные — гоняйте на здоровье.
В #24 — сделайте несколько представлений(view) на SQL и подключайтесь к ним стандартный драйвером PQ.

PS Да, только при любом обновлении релиза, 1С могут структуру данных поменять, и вьюхи придется править.

Изменено: TheBestOfTheBest13.12.2021 09:48:01

Неизлечимых болезней нет, есть неизлечимые люди.

 

gzakh

Пользователь

Сообщений: 1
Регистрация: 14.05.2014

#30

03.06.2022 21:28:00

Всем добрый вечер.
Может кто-нибудь, пожалуйста, рассказать по шагам, как подключиться к 1С через PQ?
Понятным несложным языком?

18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

1

13.09.2018, 13:28. Показов 25129. Ответов 30


Студворк — интернет-сервис помощи студентам

Доброго времени суток. Кто знает, скажите пожалуйста, как через excel происходит подключение к 1С, то есть как посредством запросов, VBA и прочего, минуя выгрузку CSV таблиц из 1C сразу обращаться к дужным данным в 1C? В excel есть вкладка данные (рисунок 1), в ней есть графа «Из базы данных SQL Server» (рисунок 2), которая открывает окно ввода сервера и инструкций (рисунок 3). Как я понимаю нужно туда подставить какие-то значения, но какие? У меня есть пользовательский логин и пароль для 1C, на вкладке 1С «О программе» есть тоже кое-какая информация (рисунок 4), и я так понимаю её тоже нужно куда-то вставить. Кто знает, помогите пожалуйста подключиться к 1С, два дня перерывал весь интернет, ничего не нашёл (или не понял). Очень нужно.



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

13.09.2018, 14:07

2

Лучший ответ Сообщение было отмечено ГарриНаФеррари как решение

Решение

Нужно посомтреть в агенте сервера 1с как называется сервер sql и база данных на sql и подставить эти значения в эксель видимо



1



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 14:10

 [ТС]

3

_ЕГОР_, а ты не подскажешь что такое агент сервера, из как туда зайти?



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

13.09.2018, 14:24

4

Лучший ответ Сообщение было отмечено ГарриНаФеррари как решение

Решение

Это типа связующее звео между 1с и sql сервером. Обычно ярлык запуска находится по пути C:Program Files1cv8common1CV8 Servers (x86-64).msc (зависит от разрядности ОС). там список баз которые подключены к sql серверу и реквизиты подключения



1



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 14:39

 [ТС]

5

_ЕГОР_, посмотри пожалуйста, там есть агент 1С

Миниатюры

Как через Excel подключиться к 1C
 



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

13.09.2018, 14:51

6

Лучший ответ Сообщение было отмечено ГарриНаФеррари как решение

Решение

нет. у вас серверная база?



1



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 14:54

 [ТС]

7

_ЕГОР_, Ну скорее всего да, потому что в компании все работаю на ноутбуках, сервер с 1С находится где-то в другом месте. К нему как-то удалённым доступом подключение происходит насколько я знаю. Честно-говоря не очень разбираюсь в этом



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

13.09.2018, 15:06

8

Лучший ответ Сообщение было отмечено ГарриНаФеррари как решение

Решение

ГарриНаФеррари, не так. базы могут быть серверными, и файлавыми. а даже находят на сервере, она все ровно может быть файловая. Здесь подробней



1



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 15:08

 [ТС]

9

_ЕГОР_, подскажи пожалуйста, а где-то в 1С или на своём компьютере я могу это узнать?



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

13.09.2018, 15:10

10

Лучший ответ Сообщение было отмечено ГарриНаФеррари как решение

Решение

О программе — Режим

Добавлено через 21 секунду
ой блин на первом скрине ведь видно что серверная

Добавлено через 32 секунды
значит агент сервера по любому есть



1



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 15:20

 [ТС]

11

_ЕГОР_, посмотри пожалуйста эти скрины, здесь есть агент сервера?



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

13.09.2018, 15:26

12

Лучший ответ Сообщение было отмечено ГарриНаФеррари как решение

Решение

Это все папки? не вижу в принципы чтобы здесь 1с была установлена.



1



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 15:41

 [ТС]

13

_ЕГОР_, Прошу прощения, вылетело из головы, 1С у нас установлена на виртуальной машине. Когда я зашёл в диск С через виртуальную машину, то там нашёл вот эти папки, но всё-равно не понятно, что есть что



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

13.09.2018, 15:47

14

Лучший ответ Сообщение было отмечено ГарриНаФеррари как решение

Решение

ну заходите в папку 1cv8, там должен быть 1CV8 Servers (x86-64).msc или как то так



1



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 16:05

 [ТС]

15

_ЕГОР_, насколько я понял, там такого нет (но может я и не прав). Но на панели быстрого доступа есть «диспетчер серверов». Посмотри пожалуйста скрины, там есть то, что нужно?



0



7 / 7 / 3

Регистрация: 09.01.2018

Сообщений: 210

13.09.2018, 16:56

16

Уважаемый, а у Вас есть опыт подключения Excel-я к MS SQL Server?



0



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 17:07

 [ТС]

17

vpivo, нет, первый раз пробую подключиться. Раньше excel даже к access не пробовал подключять



0



7 / 7 / 3

Регистрация: 09.01.2018

Сообщений: 210

13.09.2018, 17:12

18

Вот так это выглядит в экселе:
Provider=SQLOLEDB.1;Password=бла-бла-бла;Persist Security Info=True;User ID=логин;Initial Catalog=ИмяБД;Data Source=123.456.789.65ИмяИнстансаСервера,Порт;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=Имя машины;Use Encryption for Data=False;Tag with column collation when possible=False

По большому счету, Вы должны зайти на виртуальную машину и посмотреть имя инстанса и имя машины. А вот что Вы будете делать дальше — непонятно. Вы знаете имена БД, таблиц Вашей 1С?

Добавлено через 3 минуты
Увидел Ваш ответ и понял, что для начала Вы поставьте у себя SQL Server Management Studio (это штатный менеджер сервера). Как только Вы сможете подключиться им к SQL СЕРВЕРУ на виртуалке — сразу увидите, что на нем есть и что Вам нужно. Запросы отладите, прежде чем в этого монстра под названием Эксель их пихать.



0



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 17:37

 [ТС]

19

vpivo, скажи пожалуйста, а где посмотреть имя инстанса и имя машины (примерно где). Я открыл снова диспетчер серверов (он в панели быстрого доступа), там кажется ничего нужного (скрин скинул), открыл сведения о системе (это уже внутри виртуальной машины), там что-то написано, но насколько это полезно неизвестно (скрин скинул). И ещё, когда открываю виртуальную машину, она представляется в виде окна, в верху которого написано «terminal2.domain.local», может это и есть имя машины?

Добавлено через 1 минуту
По поводу SQL Server Management Studio, подскажи пожалуйста, где его взять можно?



0



18 / 20 / 2

Регистрация: 04.03.2017

Сообщений: 199

13.09.2018, 17:45

 [ТС]

20

Вот скрины

Миниатюры

Как через Excel подключиться к 1C
 

Как через Excel подключиться к 1C
 



0



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

Подключение к 1С v.8 через COMConnector

Внешнее соединение с приложением 1С v.8 может осуществляться двумя способами — через объекты OLEAutomation и COMConnection.
Основное отличие — первый вариант обращается к полноценному приложению, включая интерфейсные объекты (окно приложения, формы, табло и т.п.). Второй вариант предназначен для работы с данными без обращения к интерфейсу. Второй вариант гораздо производительнее и требует меньше ресурсов.
Поскольку мне в работе приходится обращаться к 1С именно через COMConnection, я буду приводить примеры работы именно через этот механизм. Язык программирования — VBA.

Итак, первый код. Получаем подключение к 1С.
Подключаем к проекту VBA ссылку на библиотеку 1CV81 COMConnector Tipe Library (меню Tools — Refernces).
Копируем в модуль код:

Public v8 As Object
Dim v8con As New V81.COMConnector

Public Sub v8connect()

'Версия для файлового варианта 1С
'Set v8 = v8con.Connect("File=""C:Путь к папке с конфигурацией""; Usr =""ИмяПользователя"";Pwd=""Пароль""")

'Версия для серверного варианта 1С
Set v8 = v8con.Connect("Srvr=ИмяСервера1С;Ref=ИмяИнформационнойБазы;Usr =""ИмяПользователя"";Pwd=""Пароль""")

End Sub

В результате получаем публичную переменную v8 типа Object с активным подключением к заданной информационной базе.
Все параметры понятны интуитивно. Путь к базе, сервер и имя базы можно подсмотреть в окне запуска 1С.


#1




08.11.2010, 12:09

Последнее редактирование: 08.11.2010, 12:32 от Алексей Шмуйлович

Пример работы со справочником Контрагенты

'Получение ссылки на элемент справочника Контрагенты
'В системе 1С принято организациями назвать юрлица, бухгалтерский учет которых ведется в информационной системе (свои фирмы).
'Все остальные юрлица учитываются в справочнике Контрагенты. Причем организации также присутствуют в справочнике Контрагенты,
'но не наоборот.
'SpravContragent - функция возвращает логическое значение True, если удалось получить ссылку на элемент справочника Контрагенты
'v8 - объект COMConection, с установленным подключеннием к базе 1С
'INN - Строка ИНН для поиска элемента в справочнике
'Name - Строка Наименования для проверки на соответствие ИНН и наименования (некоторые госучреждения имеют одинаковый ИНН)
'Org - Срока с названием нашей организации. В случае добавления нового контрагента будет создан договор на эту организацию.
'Ref - в эту объектную переменную будет помещена ссылка на элемент справочника в случае успешного исполнения функции
'Message - Строка с сообщением об ошибках и прочих особых обстоятельствах
Public Function SpravContragent(v8 As Object, INN As String, Name As String, Org As String, Ref As Object, Message As String) As Boolean

       'Ищем элемент справочника
   Set Ref = v8.Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", INN)
   If Ref.Наименование = "" Then 'Если получили пустую ссылку, создаем нового контрагента
       Set Ref = v8.Справочники.Контрагенты.СоздатьЭлемент()
       Ref.Наименование = Name
       Ref.ИНН = INN
       'Предварительно создайте в справочнике Контрагенты папку (группу) "Новые контрагенты"
       Ref.Родитель = v8.Справочники.Контрагенты.НайтиПоНаименованию("Новые контрагенты")
       Ref.Записать
       Set Дог = v8.Справочники.ДоговорыКонтрагентов.СоздатьЭлемент()
       Дог.Наименование = "Основной договор"
       Дог.Владелец = Ref.ссылка
       Дог.Организация = v8.Справочники.Организации.НайтиПоНаименованию(Org)
       Дог.ВалютаВзаиморасчетов = v8.Справочники.Валюты.НайтиПоНаименованию("руб")
       Дог.ВидДоговора = v8.Перечисления.ВидыДоговоровКонтрагентов.Прочее
       Дог.ВедениеВзаиморасчетов = v8.Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом
       Дог.Записать
       Ref.ОсновнойДоговорКонтрагента = Дог
       Ref.Записать
       'Создаем задачу в системе 1С. Код процедуры CreateTask будет приведен позже. Пока эту строку нужно закомментировать
       'CreateTask v8, "Добавлен новый контрагент """ & Name & """. Проверьте правильность заполнения реквизитов.", Ref.ссылка
       SpravContragent = True
   Else
       If Ref.Наименование = Name Then
           'Определяем, что делать, если элемент помечен на удаление. Например, снимаем пометку.
           If Ref.ПометкаУдаления Then Ref.ПолучитьОбъект.УстановитьПометкуУдаления 0
           SpravContragent = True
      Else
           Message = "Сообщение менеджеру: Контрагент с указанным ИНН найден в справочнике, но его наименование не совпадает с запрошенным (""" & Name & """). Наименование в справочнике """ & Ref.Наименование & """. Свяжитесь с департаментом финансов."
           SpravContragent = False
       End If
   End If
End Function

'Пример использования
Sub testSpravContragent()
   Dim text As String
   Dim OutRef As Object

       If v8 Is Nothing Then v8connect

       'Замените параметры вызова функции на правильные наименования и ИНН, чтобы получить ссылку на существующий элемент
   If SpravContragent(v8, "Тестовое название", "123456789012", "Тестовая организация", OutRef, text) Then
       Debug.Print OutRef.Наименование
       Debug.Print text
       Debug.Print OutRef.ОсновнойДоговорКонтрагента.Наименование
   End If
End Sub


#2




08.11.2010, 12:30

Последнее редактирование: 08.11.2010, 12:33 от Алексей Шмуйлович

Получаем структуру данных документа для дальнейшего использования в коде

Код должен запускаться из VBA-модуля книги MS Excel.

Sub RunDocumentStructure()
   If v8 Is Nothing Then v8connect
   DocumentStructure v8.метаданные.Документы.ПлатежноеПоручениеВходящее
   DocumentStructure v8.метаданные.Документы.СчетНаОплатуПокупателю
   'DocumentStructure v8.метаданные.Документы...
End Sub

Sub DocumentStructure(Документ) 'Выводит структуру данных документа на лист Excel
'Dim Документ As Object, sht As Worksheet
If v8 Is Nothing Then v8connect
Set sht = ActiveWorkbook.Sheets.Add
sht.Name = Left(Документ.Имя & " Структура", 31)
On Error Resume Next

For Each рек In Документ.Реквизиты
   r = r + 1
   sht.Cells(r, 1) = "Документ." & рек.Имя
   sht.Cells(r, 1).InsertIndent -1
   sht.Cells(r, 1).Font.Bold = True
   sht.Cells(r, 2) = рек.Синоним
   sht.Cells(r, 3) = v8.String(рек.тип)
   If v8.String(рек.тип) = "Строка" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторыстроки.длина) & ")"
   If v8.String(рек.тип) = "Число" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторычисла.разрядность) & "," & v8.String(рек.тип.квалификаторычисла.разрядностьдробнойчасти) & ")"
Next
For Each тч In Документ.Табличныечасти
   r = r + 1
   sht.Cells(r, 1) = "Документ." & тч.Имя
   sht.Cells(r, 2) = "Табличная часть (подчиненная таблица)"
   sht.Cells(r, 1).InsertIndent -1
   sht.Cells(r, 1).Font.Bold = True
For Each рек In тч.Реквизиты
   r = r + 1
   sht.Cells(r, 1).InsertIndent 1
   sht.Cells(r, 1).Font.Bold = False
   sht.Cells(r, 1) = тч.Имя & "." & рек.Имя
   sht.Cells(r, 2) = рек.Синоним
   sht.Cells(r, 3) = v8.String(рек.тип)
   If v8.String(рек.тип) = "Строка" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторыстроки.длина) & ")"
   If v8.String(рек.тип) = "Число" Then sht.Cells(r, 3) = v8.String(рек.тип) & "(" & v8.String(рек.тип.квалификаторычисла.разрядность) & "," & v8.String(рек.тип.квалификаторычисла.разрядностьдробнойчасти) & ")"
Next
Next
sht.Columns("A:B").EntireColumn.AutoFit
End Sub


К примеру: Подключение к 1С v.8 через COMConnector

При таком способе у меня Excel аварийно завершает работу на строке подключения. Попробовал через позднее связывание, — выдаёт ошибку: «Method ‘Connect’ of object ‘IV8COMConnector3’ failed».

Public Sub v8connect()
 Set v8 = CreateObject("v81.COMConnector")
'Подключаемся через пользователя со всеми правами:
 ConnectionString = "File=""C:База81"";Usr=""Шпец"";Pwd=""12345"";"
 Set v8con = v8.Connect(ConnectionString)
End Sub

База создана с нуля. Есть идеи как пофиксить ошибку?

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли


Нужно проверить у пользователя конкретно право внешнего соединения.


Да, я посмотрел у себя в конфигурации. Ни одна роль, имеющаяся в типовой конфигурации, не имеет права внешнего подключения. У нас в конфигурацию добавлена роль, имеющая такое право. Право задается для самого верхнего объекта в дереве конфигурации, то есть для самой конфигурации.


ВБА для меня темный лес, в 1С постоянно что то изучаю и 95% нужной информации выгружаю через свои обработки :)


Ну и хорошо, будем обращаться за советом :)


Доброго времени суток!
Спасибо за статью! Очень помогла! Подключение, пример — все работает.

Подскажите где в 1С взять данные такие как для формирования Книги покупок (в частности по счет-фактурам).
С объектной моделью 1С незнаком.

Может подскажите где посмотреть объектную модель 1С?
Спасибо


Самые общие советы: посмотрите для начала в конфигураторе 1С дерево конфигурации, увидите какие бывают объекты, набор их свойств.
Там же есть синтакс-помощник, где системно описана структура объектной модели, свойства и методы языка.
Ваш вопрос относится к конкретному объекту конфигурации — документу Счета-фактуры полученные. Найдите его в дереве конфигурации, посмотрите набор реквизитов. В Синтакс помощнике посмотрите, какие методы существуют для документов.


Еще один вариант познакомиться со структурой конкретной конфигурации, а точнее структурой данных — изучить Консоль отчетов. Это универсальный инструмент, позволяющий в режиме Предприятия (не в конфигураторе) строить запросы к различным таблицам данных. Ищите консоль отчетов в меню Отчеты — Универсальные отчеты — Консоль отчетов.



Спасибо!
Уже рою в этом направлении.


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Другие офисные программы

  • 1C

  • Статья «Работа с 1С v.8 через COMConnector из 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».

Содержание

  • Перенос данных из Эксель в 1С
    • Подготовка данных
    • Подключение внешнего загрузчика
    • Загрузка данных
  • Вопросы и ответы

Загрузка из Microsoft Excel в 1С

Уже давно самой популярной программой среди бухгалтеров, планировщиков, экономистов и управленцев стало приложение 1C. Оно имеет не только разнообразное количество конфигураций для различных видов деятельности, но и локализации под стандарты учета в нескольких странах мира. Все больше предприятий переходят на ведение учета именно в этой программе. Но процедура переноса данных вручную из других программ учета в 1C — довольно долгое и скучное занятие, отнимающее массу времени. Если на предприятии велся учет с помощью Excel, то процесс переноса можно существенно автоматизировать и ускорить.

Производить перенос данных из Excel в 1С требуется не только на начальном периоде работы с данной программой. Иногда наступает необходимость подобного, когда по ходу деятельности нужно занести какие-то списки, хранящиеся в книге табличного процессора. Например, если требуется перенести прайс-листы или заказы из онлайн-магазина. В случае, когда списки небольшие, то их можно вбить и вручную, но что делать, если они содержат сотни наименований? Для того, чтобы ускорить процедуру, можно прибегнуть к некоторым дополнительным возможностям.

Для автоматической загрузки подойдут практически все типы документов:

  • Список номенклатуры;
  • Список контрагентов;
  • Список прайсов;
  • Перечень заказов;
  • Информация о покупках или продажах и т.д.

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

Подготовка данных

Нам нужно будет подготовить данные в самой таблице Excel.

  1. Любой список, загружаемый в 1С, должен быть однородно структурирован. Нельзя выполнять загрузку при наличии в одном столбце или ячейке данных нескольких типов, например, имя человека и его телефонный номер. В этом случае, такие двойные записи обязательно следует разделять в разные столбцы.
  2. Неправильная двоная запись в Microsoft Excel

  3. Не допускается наличия объединенных ячеек даже в заголовках. Это может привести к некорректным результатам при переносе данных. Поэтому, если объединенные ячейки имеются, их нужно разделить.
  4. Объединенная ячейка в Microsoft Excel

  5. Если исходную таблицу сделать максимально простой и понятной, без применения относительно сложных технологий (макросы, формулы, комментарии, сноски, лишние элементы форматирования и т.д.), то это поможет максимально предотвратить проблемы на дальнейших шагах переноса.
  6. Элементы форматирования и комментарии в Microsoft Excel

  7. Обязательно следует привести наименование всех величин к единому формату. Не допускается наличие обозначения, например, килограмм, отображаемого разными записями: «кг», «килограмм», «кг.». Программа будет их понимать как разные величины, поэтому нужно выбрать один вариант записи, а остальные исправить под этот шаблон.
  8. Неправильное оформелние единиц измерения в Microsoft Excel

  9. Обязательно наличие уникальных идентификаторов. В их роли может выступать содержимое любого столбца, которое не повторяется в других строках: индивидуальный налоговый номер, артикул и т.д. Если в существующей таблице нет столбца с подобным значением, то можно добавить дополнительную колонку и произвести там простую нумерацию. Это нужно для того, чтобы программа смогла идентифицировать данные в каждой строке отдельно, а не «сливала» их вместе.
  10. Уникальный идентификатор в Microsoft Excel

  11. Большинство обработчиков файлов Эксель не работает с форматом xlsx, а только с форматом xls. Поэтому, если наш документ имеет расширение xlsx, то нужно его конвертировать. Для этого переходим во вкладку «Файл» и жмем на кнопку «Сохранить как».
    Переход к сохранению файла в Microsoft Excel

    Открывается окно сохранения. В поле «Тип файла» по умолчанию будет указан формат xlsx. Меняем его на «Книга Excel 97-2003» и жмем на кнопку «Сохранить».

    Сохранение файла в Microsoft Excel

    После этого документ будет сохранен в нужном формате.

Кроме этих универсальных действий по подготовке данных в книге Эксель, нужно будет ещё привести документ в соответствие с требованиями конкретного загрузчика, который мы будем использовать, но об этом мы поговорим чуть ниже.

Lumpics.ru

Подключение внешнего загрузчика

Подключить внешний загрузчик с расширением epf к приложению 1С можно, как до подготовки файла Эксель, так и после. Главное, чтобы к началу процесса выполнения загрузки оба этих подготовительных момента были решены.

Существует несколько внешних загрузчиков таблиц Эксель для 1С, которые созданы различными разработчиками. Рассматривать мы будем пример с использованием инструмента для обработки информации «Загрузка данных из табличного документа» для версии 1С 8.3.

  1. После того, как файл в формате epf скачан и сохранен на жестком диске компьютера, запускаем программу 1С. Если файл epf упакован в архив, то его предварительно нужно извлечь оттуда. На верхней горизонтальной панели приложения жмем на кнопку, запускающую меню. В версии 1С 8.3 она представлена в виде вписанного в оранжевую окружность треугольника, перевернутого углом вниз. В появившемся списке последовательно переходим по пунктам «Файл» и «Открыть».
  2. Открытие файла обработки в 1С

  3. Запускается окно открытия файла. Переходим в директорию его расположения, выделяем тот объект и жмем на кнопку «Открыть».
  4. Открытие загрузчика в 1С

  5. После этого загрузчик запустится в 1С.

Загрузчик запустился в Microsoft Excel

Скачать обработку «Загрузка данных из табличного документа»

Загрузка данных

Одной из основных баз данных, с которыми работает 1C, является список номенклатуры товаров и услуг. Поэтому для описания процедуры загрузки из Excel остановимся на примере переноса именно этого типа данных.

  1. Возвращаемся к окну обработки. Так как мы будем загружать номенклатуру товаров, то в параметре «Загрузка в» переключатель должен стоять в позиции «Справочник». Впрочем, он так установлен по умолчанию. Переключать его следует только тогда, когда вы собрались переносить другой тип данных: табличную часть или регистр сведений. Далее в поле «Вид справочника» кликаем по кнопке, на которой изображено многоточие. Открывается выпадающий список. В нем нам следует выбрать пункт «Номенклатура».
  2. Установка типа данных в 1С

  3. После этого обработчик автоматически расставляет те поля, которые программа использует в этом виде справочника. Нужно сразу отметить, что совсем не обязательно заполнять все поля.
  4. Поля для справочника в 1С

  5. Теперь опять открываем переносимый документ Excel. Если наименование его колонок отличается от наименования полей справочника 1С, которые содержат соответствующие, то нужно переименовать эти столбцы в Экселе так, чтобы названия полностью совпадали. Если в таблице имеются столбцы, для которых в справочнике нет аналогов, то их следует удалить. В нашем случае такими столбцами являются «Количество» и «Цена». Также следует добавить, что порядок расстановки столбцов в документе должен строго совпадать с тем, который представлен в обработке. Если для некоторых столбцов, которые отображены в загрузчике, у вас нет данных, то эти колонки можно оставлять пустыми, но нумерация тех столбцов, где имеются данные, должна совпадать. Для удобства и быстроты редактирования можно применять специальную возможность Эксель для быстрого перемещения колонок местами.

    После того, как данные действия произведены, жмем на значок «Сохранить», который представлен в виде пиктограммы, изображающей дискету в верхнем левом углу окна. Затем закрываем файл, нажав на стандартную кнопку закрытия.

  6. Переименование шапки в Microsoft Excel

  7. Возвращаемся в окно обработки 1С. Жмем на кнопку «Открыть», которая изображена в виде папки желтого цвета.
  8. Переход к открытию файла в 1С

  9. Запускается окно открытия файла. Переходим в директорию, где расположен документ Эксель, который нам нужен. Переключатель отображения файлов по умолчанию установлен для расширения mxl. Для того чтобы показать нужный нам файл, его требуется переставить в позицию «Лист Excel». После этого выделяем переносимый документ и жмем на кнопку «Открыть».
  10. Открытие документа в 1С

  11. После этого содержимое открывается в обработчике. Чтобы проверить корректность заполнения данными, жмем на кнопку «Контроль заполнения».
  12. Контроль заполнения в 1С

  13. Как видим, инструмент контроля заполнения сообщает нам, что ошибки не найдены.
  14. Ошибок при переносе не выявлено в 1С

  15. Теперь перемещаемся во вкладку «Настройка». В «Поле поиска» ставим галочку в той строке, которая у всех наименований, заносимых в справочник номенклатуры, будет уникальная. Чаще всего для этого используют поля «Артикул» или «Наименование». Это нужно делать для того, чтобы при добавлении новых позиций в список, данные не задваивались.
  16. Установка уникального поля в 1С

  17. После того, как все данные внесены и настройки выполнены, можно переходить к непосредственной загрузке информации в справочник. Для этого кликаем по надписи «Загрузить данные».
  18. Переход к загрузки данных в справочник в 1С

  19. Выполняется процесс загрузки. После её завершения можно перейти в справочник номенклатуры и убедиться, что все нужные данные туда добавлены.

Наименования добавлены в справочник в 1С

Урок: Как поменять столбцы местами в Excel

Мы проследили процедуру добавления данных в справочник номенклатуры в программе 1C 8.3. Для других справочников и документов загрузка будет проводиться по тому же принципу, но с некоторыми нюансами, с которыми пользователь сможет разобраться самостоятельно. Также нужно заметить, что у различных сторонних загрузчиков процедура может отличаться, но общий подход остается у всех одинаковый: сначала обработчик загружает из файла информацию в окно, где производится её редактирование, а уже потом она добавляется непосредственно в базу данных 1С.

Еще статьи по данной теме:

Помогла ли Вам статья?

Понравилась статья? Поделить с друзьями:
  • Как подключить шаблоны в word
  • Как подключить шаблон к документу word
  • Как подключить формулы в word
  • Как подключить формулы в excel
  • Как подключить таблицу excel