PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
#1 15.06.2017 17:22:15 Добрый день.
Хочу также тащить себе таблички в PQ. Это возможно вообще? Если да, то хотя бы натолкните на мысль, где копать? Изменено: PooHkrd — 10.12.2021 07:36:44 Вот горшок пустой, он предмет простой… |
||
Denis87 Пользователь Сообщений: 107 |
Инициалы сервера на ваши пробовали менять? |
1C хранит данные (обычно) в SQL, насколько я понимаю. Так что можно цепляться хоть напрямую, если знаете, как эта база устроена. Если не знаете — лучше не надо (да и доступа к ней у вас не будет в таком случае, скорее всего) |
|
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
Denis87, Я всего лишь хотел узнать какой функцией в PQ я могу настроить такое же COM соединение и транслировать в неё запрос на формирование таблицы, которую дальше буду обрабатывать в PQ. Изменено: PooHkrd — 13.04.2022 16:42:14 Вот горшок пустой, он предмет простой… |
Не знаю, можно ли. COM — это же не ODBC. https://msdn.microsoft.com/en-us/library/mt296615.aspx |
|
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Насколько помню без танцев с бубном из PQ к 1С еще ни у кого не получилось подключиться. Нет там такого соединения. Пока что. Если поискать в сети — можно найти всякие грабли через установку доп.приложений для коннекта. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
Грабли для коннекта через сторонний (не MS) софт не подойдут — замучаюсь согласовывать их установку на корпоративный комп. А значит данные придется тащить макросом, а потом обрабатывать через PQ. Изменено: PooHkrd — 08.11.2021 16:25:37 Вот горшок пустой, он предмет простой… |
TheBestOfTheBest Пользователь Сообщений: 2366 Excel 2010 +PLEX +SaveToDB +PowerQuery |
Описанный в #1 способ работает, можно получить список Контрагентов, Номенклатуры, … Можно изменять данные методами 1С (для этого объекта: conn = CreateObject(«V83.COMConnector»)) для того этот CОM и писали. PS Да при авторизации могут быть проблемы, не всегда удается ее пройти успешно. Для УПП на 8.2 мне удавалось открыть соединение только после 18-00, когда большинство пользователей покидали систему. Причину выявить не удалось. Неизлечимых болезней нет, есть неизлечимые люди. |
Может легче в 1с настроить необходимую выгрузку файла в формат эксель настроить? |
|
surkenny Пользователь Сообщений: 2367 |
Василий Нисс, а если нужны текущие данные, а отчёт по всем клиентам/номенклатуре формируется 20 минут? Каждый раз залезать в отчёт или рассылку и менять отбор? А если отобрать нужно 50 товаров? |
Тогда лучше делать это все сразу в 1с, минуя привязку к другим пирогам. Конечно, будут дополнительные расходы на запись дополнительных окон, но вся эта задача будет решаться в рамках одной только Иннески (1с). 1с очень гибкий для этого инструмент. |
|
Михаил Л Пользователь Сообщений: 2640 |
Василий Нисс, как быть если конфигуратор запоролен, а приходящий программист 1С с почасовой оплатой растягивает свою работу на пару дней? |
surkenny Пользователь Сообщений: 2367 |
#13 10.12.2021 08:45:03
Ха! |
||
Михаил Л Пользователь Сообщений: 2640 |
surkenny, поэтому мне легче осторожно подключиться из PQ |
surkenny Пользователь Сообщений: 2367 |
Михаил Л, я запрашивал доступ к БД — отказали, ссылаясь на нарушение лицензии 1С и очень сложную структуру данных, в которой не разберусь. Есть свой API, который изначально для qlick делали, но там не использовали. Но при проверке оказалось, что почему-то не работает. В общем, сижу и жду, пока рассылка выполнится . Изменено: surkenny — 10.12.2021 09:03:26 |
Vladimir Chebykin Пользователь Сообщений: 1225 |
#16 10.12.2021 09:20:50
Есть такой очень интересный инструмент: ATK Biview вроде называется. Так вот, он позволяет все 1С-ые таблицы с атрибутами «расшифровать» в читаемые названия. Что позволяет легко найти нужную информацию без посторонней помощи. Про нее даже не все программисты 1С знают, что существует такая удобная программа. Не помню, есть там trial версия или нет. |
||
TheBestOfTheBest Пользователь Сообщений: 2366 Excel 2010 +PLEX +SaveToDB +PowerQuery |
#17 10.12.2021 09:24:32
Использовать внешнюю обработку для формирования отчета, итог выгружать в CSV.
Не очень понятно, что именно Вы запрашивали. Странно, если база данных запрещает доступ к своей структуре данных. В 1С есть проблема модификации типового решения, т.е. если ВЫ изменяете какой-либо объект метаданных, то теряете поддержку вендора на этот объект. Но Вам то надо просто прочитать данные, менять ничего не надо. Неизлечимых болезней нет, есть неизлечимые люди. |
||||
TheBestOfTheBest Пользователь Сообщений: 2366 Excel 2010 +PLEX +SaveToDB +PowerQuery |
#18 10.12.2021 09:27:07
Всегда есть способ оптимизировать время выполнения. Неизлечимых болезней нет, есть неизлечимые люди. |
||
TheBestOfTheBest Пользователь Сообщений: 2366 Excel 2010 +PLEX +SaveToDB +PowerQuery |
#19 10.12.2021 09:29:27
Здесь речь видимо о таблицах SQL сервера, там действительно таблицы имеют нечитаемые имена, не имеют внутренних связей. Тогда речь пойдет уже о подключении к SQL, а не к 1С. Неизлечимых болезней нет, есть неизлечимые люди. |
||
Owlet Пользователь Сообщений: 191 |
surkenny, , поделитесь, как вы тогда тянете данные из 1с, если доступ к БД запретили? |
surkenny Пользователь Сообщений: 2367 |
#21 10.12.2021 10:05:22
Рассылка по расписанию/ручному запуску с сохранением в .txt |
||
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
#22 10.12.2021 10:25:23
Вот именно прямое подключение к SQL и нарушает лиц. соглашение с 1С. Ну или мне так объясняли. Может врут, мне некогда углубляться в юридические тонкости. Вот горшок пустой, он предмет простой… |
||
Михаил Л Пользователь Сообщений: 2640 |
Слушайте такая желательно для 8.1 ссылка о чем речь Изменено: Михаил Л — 10.12.2021 20:28:12 |
Александр L Пользователь Сообщений: 414 Александр |
#24 11.12.2021 19:46:46
Честно впервые такое слышу, мне кажется просто не хотят что то раскрывать, я ежедневно выгружал так из базы и всё прекрасно, потом наделали вьюх и через них PQ прекрасно забирает |
||
Александр L Пользователь Сообщений: 414 Александр |
#25 11.12.2021 19:48:33
Посмотрите на Инфостате, там чего только нет. Но то что она есть это факт, на прошлой работе я пользовался помню.Но при уходе ничего не брал всё так там и осталось. |
||
Михаил Л Пользователь Сообщений: 2640 |
#26 11.12.2021 20:37:25
Вот именно, все ссылки ведут на Инфостат, а там чтобы скачать бесплатное все равно нужны мани НА МЯСО В ПРОФИЛЕ |
||
Александр L Пользователь Сообщений: 414 Александр |
#27 11.12.2021 21:19:39
деньги странно ну и бог с ними. Тогда в телеграмме поискать группы 1С и там попросить программистов скинуть/поделиться, уверен у кого есть легко дадут. |
||
Михаил Л Пользователь Сообщений: 2640 |
Александр L, нашел тут (нужна только регистрация). |
TheBestOfTheBest Пользователь Сообщений: 2366 Excel 2010 +PLEX +SaveToDB +PowerQuery |
#29 13.12.2021 09:45:03
Практически у всех клиентов бэкап настроен через SQL и нечего, работают, никто их лицензии не лишает. Кроме этого, 1С не отвечает за внесенные данные, т.е. изменение структуры таблиц SQL — там да, поддержки лишитесь, а данные — гоняйте на здоровье. PS Да, только при любом обновлении релиза, 1С могут структуру данных поменять, и вьюхи придется править. Изменено: TheBestOfTheBest — 13.12.2021 09:48:01 Неизлечимых болезней нет, есть неизлечимые люди. |
||
gzakh Пользователь Сообщений: 1 |
#30 03.06.2022 21:28:00 Всем добрый вечер. |
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 |
Тест 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 |
Тест 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С Миниатюры
0 |
Тест 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 |
Тест 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 |
Тест 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 |
Тест 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 |
Тест 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 |
Вот так это выглядит в экселе: По большому счету, Вы должны зайти на виртуальную машину и посмотреть имя инстанса и имя машины. А вот что Вы будете делать дальше — непонятно. Вы знаете имена БД, таблиц Вашей 1С? Добавлено через 3 минуты
0 |
18 / 20 / 2 Регистрация: 04.03.2017 Сообщений: 199 |
|
13.09.2018, 17:37 [ТС] |
19 |
vpivo, скажи пожалуйста, а где посмотреть имя инстанса и имя машины (примерно где). Я открыл снова диспетчер серверов (он в панели быстрого доступа), там кажется ничего нужного (скрин скинул), открыл сведения о системе (это уже внутри виртуальной машины), там что-то написано, но насколько это полезно неизвестно (скрин скинул). И ещё, когда открываю виртуальную машину, она представляется в виде окна, в верху которого написано «terminal2.domain.local», может это и есть имя машины? Добавлено через 1 минуту
0 |
18 / 20 / 2 Регистрация: 04.03.2017 Сообщений: 199 |
|
13.09.2018, 17:45 [ТС] |
20 |
Вот скрины Миниатюры
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 |
О доступе в 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С
- Подготовка данных
- Подключение внешнего загрузчика
- Загрузка данных
- Вопросы и ответы
Уже давно самой популярной программой среди бухгалтеров, планировщиков, экономистов и управленцев стало приложение 1C. Оно имеет не только разнообразное количество конфигураций для различных видов деятельности, но и локализации под стандарты учета в нескольких странах мира. Все больше предприятий переходят на ведение учета именно в этой программе. Но процедура переноса данных вручную из других программ учета в 1C — довольно долгое и скучное занятие, отнимающее массу времени. Если на предприятии велся учет с помощью Excel, то процесс переноса можно существенно автоматизировать и ускорить.
Производить перенос данных из Excel в 1С требуется не только на начальном периоде работы с данной программой. Иногда наступает необходимость подобного, когда по ходу деятельности нужно занести какие-то списки, хранящиеся в книге табличного процессора. Например, если требуется перенести прайс-листы или заказы из онлайн-магазина. В случае, когда списки небольшие, то их можно вбить и вручную, но что делать, если они содержат сотни наименований? Для того, чтобы ускорить процедуру, можно прибегнуть к некоторым дополнительным возможностям.
Для автоматической загрузки подойдут практически все типы документов:
- Список номенклатуры;
- Список контрагентов;
- Список прайсов;
- Перечень заказов;
- Информация о покупках или продажах и т.д.
Сразу нужно отметить, что в 1С нет встроенных инструментов, которые позволяли бы переносить данные из Эксель. Для этих целей нужно подключить внешний загрузчик, который представляет собой файл в формате epf.
Подготовка данных
Нам нужно будет подготовить данные в самой таблице Excel.
- Любой список, загружаемый в 1С, должен быть однородно структурирован. Нельзя выполнять загрузку при наличии в одном столбце или ячейке данных нескольких типов, например, имя человека и его телефонный номер. В этом случае, такие двойные записи обязательно следует разделять в разные столбцы.
- Не допускается наличия объединенных ячеек даже в заголовках. Это может привести к некорректным результатам при переносе данных. Поэтому, если объединенные ячейки имеются, их нужно разделить.
- Если исходную таблицу сделать максимально простой и понятной, без применения относительно сложных технологий (макросы, формулы, комментарии, сноски, лишние элементы форматирования и т.д.), то это поможет максимально предотвратить проблемы на дальнейших шагах переноса.
- Обязательно следует привести наименование всех величин к единому формату. Не допускается наличие обозначения, например, килограмм, отображаемого разными записями: «кг», «килограмм», «кг.». Программа будет их понимать как разные величины, поэтому нужно выбрать один вариант записи, а остальные исправить под этот шаблон.
- Обязательно наличие уникальных идентификаторов. В их роли может выступать содержимое любого столбца, которое не повторяется в других строках: индивидуальный налоговый номер, артикул и т.д. Если в существующей таблице нет столбца с подобным значением, то можно добавить дополнительную колонку и произвести там простую нумерацию. Это нужно для того, чтобы программа смогла идентифицировать данные в каждой строке отдельно, а не «сливала» их вместе.
- Большинство обработчиков файлов Эксель не работает с форматом xlsx, а только с форматом xls. Поэтому, если наш документ имеет расширение xlsx, то нужно его конвертировать. Для этого переходим во вкладку «Файл» и жмем на кнопку «Сохранить как».
Открывается окно сохранения. В поле «Тип файла» по умолчанию будет указан формат xlsx. Меняем его на «Книга Excel 97-2003» и жмем на кнопку «Сохранить».
После этого документ будет сохранен в нужном формате.
Кроме этих универсальных действий по подготовке данных в книге Эксель, нужно будет ещё привести документ в соответствие с требованиями конкретного загрузчика, который мы будем использовать, но об этом мы поговорим чуть ниже.
Подключение внешнего загрузчика
Подключить внешний загрузчик с расширением epf к приложению 1С можно, как до подготовки файла Эксель, так и после. Главное, чтобы к началу процесса выполнения загрузки оба этих подготовительных момента были решены.
Существует несколько внешних загрузчиков таблиц Эксель для 1С, которые созданы различными разработчиками. Рассматривать мы будем пример с использованием инструмента для обработки информации «Загрузка данных из табличного документа» для версии 1С 8.3.
- После того, как файл в формате epf скачан и сохранен на жестком диске компьютера, запускаем программу 1С. Если файл epf упакован в архив, то его предварительно нужно извлечь оттуда. На верхней горизонтальной панели приложения жмем на кнопку, запускающую меню. В версии 1С 8.3 она представлена в виде вписанного в оранжевую окружность треугольника, перевернутого углом вниз. В появившемся списке последовательно переходим по пунктам «Файл» и «Открыть».
- Запускается окно открытия файла. Переходим в директорию его расположения, выделяем тот объект и жмем на кнопку «Открыть».
- После этого загрузчик запустится в 1С.
Скачать обработку «Загрузка данных из табличного документа»
Загрузка данных
Одной из основных баз данных, с которыми работает 1C, является список номенклатуры товаров и услуг. Поэтому для описания процедуры загрузки из Excel остановимся на примере переноса именно этого типа данных.
- Возвращаемся к окну обработки. Так как мы будем загружать номенклатуру товаров, то в параметре «Загрузка в» переключатель должен стоять в позиции «Справочник». Впрочем, он так установлен по умолчанию. Переключать его следует только тогда, когда вы собрались переносить другой тип данных: табличную часть или регистр сведений. Далее в поле «Вид справочника» кликаем по кнопке, на которой изображено многоточие. Открывается выпадающий список. В нем нам следует выбрать пункт «Номенклатура».
- После этого обработчик автоматически расставляет те поля, которые программа использует в этом виде справочника. Нужно сразу отметить, что совсем не обязательно заполнять все поля.
- Теперь опять открываем переносимый документ Excel. Если наименование его колонок отличается от наименования полей справочника 1С, которые содержат соответствующие, то нужно переименовать эти столбцы в Экселе так, чтобы названия полностью совпадали. Если в таблице имеются столбцы, для которых в справочнике нет аналогов, то их следует удалить. В нашем случае такими столбцами являются «Количество» и «Цена». Также следует добавить, что порядок расстановки столбцов в документе должен строго совпадать с тем, который представлен в обработке. Если для некоторых столбцов, которые отображены в загрузчике, у вас нет данных, то эти колонки можно оставлять пустыми, но нумерация тех столбцов, где имеются данные, должна совпадать. Для удобства и быстроты редактирования можно применять специальную возможность Эксель для быстрого перемещения колонок местами.
После того, как данные действия произведены, жмем на значок «Сохранить», который представлен в виде пиктограммы, изображающей дискету в верхнем левом углу окна. Затем закрываем файл, нажав на стандартную кнопку закрытия.
- Возвращаемся в окно обработки 1С. Жмем на кнопку «Открыть», которая изображена в виде папки желтого цвета.
- Запускается окно открытия файла. Переходим в директорию, где расположен документ Эксель, который нам нужен. Переключатель отображения файлов по умолчанию установлен для расширения mxl. Для того чтобы показать нужный нам файл, его требуется переставить в позицию «Лист Excel». После этого выделяем переносимый документ и жмем на кнопку «Открыть».
- После этого содержимое открывается в обработчике. Чтобы проверить корректность заполнения данными, жмем на кнопку «Контроль заполнения».
- Как видим, инструмент контроля заполнения сообщает нам, что ошибки не найдены.
- Теперь перемещаемся во вкладку «Настройка». В «Поле поиска» ставим галочку в той строке, которая у всех наименований, заносимых в справочник номенклатуры, будет уникальная. Чаще всего для этого используют поля «Артикул» или «Наименование». Это нужно делать для того, чтобы при добавлении новых позиций в список, данные не задваивались.
- После того, как все данные внесены и настройки выполнены, можно переходить к непосредственной загрузке информации в справочник. Для этого кликаем по надписи «Загрузить данные».
- Выполняется процесс загрузки. После её завершения можно перейти в справочник номенклатуры и убедиться, что все нужные данные туда добавлены.
Урок: Как поменять столбцы местами в Excel
Мы проследили процедуру добавления данных в справочник номенклатуры в программе 1C 8.3. Для других справочников и документов загрузка будет проводиться по тому же принципу, но с некоторыми нюансами, с которыми пользователь сможет разобраться самостоятельно. Также нужно заметить, что у различных сторонних загрузчиков процедура может отличаться, но общий подход остается у всех одинаковый: сначала обработчик загружает из файла информацию в окно, где производится её редактирование, а уже потом она добавляется непосредственно в базу данных 1С.
Еще статьи по данной теме: