Подключение к access из 1с

Обновлено: 04.07.2024

. дык, а в чём вопрос ?
через автоматизацию - работать с 1С ?
или как "полазить" по 1С-таблицам ?

если 1-ое
если 2-ое - курить файл 1Cv7.DDS в каталоге 1це

Версия ГЛОНАС 1.23 build 641 + версия движка Лады Калины 1.3.самая_дырявая.4. Требуется через ADO подкючиться к системе ГЛОНАС, через систему найти модеров этого форума и ударить из космоса лазерной пушкой. Если у кого есть пример кода через DAO, то тоже пойдет, мне не очень принципиально, а может кто-то вообще строку подключения к ГЛОНАСу подскажет, буду очень при очень приблагодарен.

Версия ГЛОНАС 1.23 build 641 + версия движка Лады Калины 1.3.самая_дырявая.4. Требуется через ADO подкючиться к системе ГЛОНАС, через систему найти модеров этого форума и ударить из космоса лазерной пушкой. Если у кого есть пример кода через DAO, то тоже пойдет, мне не очень принципиально, а может кто-то вообще строку подключения к ГЛОНАСу подскажет, буду очень при очень приблагодарен.

Можно попробовать вот так:

Версия ГЛОНАС 1.23 build 641 + версия движка Лады Калины 1.3.самая_дырявая.4. Требуется через ADO подкючиться к системе ГЛОНАС, через систему найти модеров этого форума и ударить из космоса лазерной пушкой. Если у кого есть пример кода через DAO, то тоже пойдет, мне не очень принципиально, а может кто-то вообще строку подключения к ГЛОНАСу подскажет, буду очень при очень приблагодарен.

Можно попробовать вот так:

Это код от самих разработчико Лады Калина.
Удачи!

Гиббон завёлся на сайте практически сразу же с момента открытия. Знаете, как это бывает: у одних людей на дачах заводятся подозрительные коты, у других, уже в городе, в гости иногда прибегают любознательные насекомые, третьи спасу не знают от запасливых мышей, а тут — гиббон.

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

Сморчок. Вечно простужен. Своим чиханием отпугивает птиц. Обнаружить его в лесу можно по куче засморканных платков.

Строчок. Гриб-графоман. Пишет беспрерывно. Все редакции уже от него стонут. Кляузами и анонимками тоже не брезгает.

Груздь. Грузен, солиден и зануден. При встрече берёт вас за пуговицу и нудит, нудит, нудит… Грузит вас, короче своими проблемами.

Мокруха еловая. Ну, понятно. Серьёзный гриб. Убийца и отморозок. За ствол хватается при любом конфликте. Вы со своим грибным ножичком не особо-то… Кто кого первым завалит – ещё вопрос.

Сыроежка. Свихнулась на здоровом образе жизни. Вегетарианство, сыроедение, ежедневные клизмы, бег трусцой и так далее…

Лисичка. Гроза курятников. Стаей способны загрызть сторожевую собаку.

Свинушка. Ну, по названию всё ясно. Уши не моет. Ноги – тоже. Сплошной развал, срач и антисанитария. Помойки в лесу приходилось видеть? Её работа.

Дождевик. Он же макинтош. На вкус – как прорезиненная ткань.

Трюфель. Вырастает сразу с орешком внутри и завёрнутый в блестящий фантик. Лучшие трюфели вырастают на кондитерской фабрике «Рот Фронт»

Вёшенка. Мутировавшая вишенка. Вешается где ни попадя. Напоминает холодные уши.

Шампиньон. Косит под француза. Пьёт шампанское, моется шампунем. Может наоборот. Ему пофиг. Гриб же.

Бледная поганка. Чахлое и анемичное создание. Томная бледность. Часто падает в обмороки. Замуж ей надо, и поскорее.

Рыжик. Постоянно мелькает в рекламных роликах. Рекламирует краску для волос.

Маслёнок. Улыбчивый, приставучий, липкий. Вы ему не очень-то доверяйте. Он без мыла куда угодно влезет. Некоторые его в этом качестве и используют.

Моховик. Не путать с маховиком. А также с гироскопом, крыльчаткой и кривошипно-шатунным механизмом.

Козлёнок. Ну, пока маленький – ещё туда-сюда. А вырастает – козёл козлом.

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

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


Коллеги, Вы только вспомните сколько было сделано выгрузок из 1С в Excel! Сколько человеко-часов на это было потрачено!

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

Но если все так хорошо, то почему статья будет про Access? Неужели им кто-то еще пользуется? И на самом деле пользуется!

Excel vs. Access

Эпичной битвы не будет! Мы просто сравним два отличных инструмента по 9 критериям и опишем ситуации, когда Access может быть более подходящим вариантом.

Критерий Excel Access
Назначение Создание графиков, диаграмм и различных моделей данных. Приложение базы данных для сбора и сортировки данных.
Использование Построение финансовых, статистических и других моделей, а также возможность проверки данных при вводе. Сбор, сортировка и изменение информации в базах данных.
Размер хранилища Имеет ограничения по количеству строк (1 048 576) и столбцов (16 384), а также другие ограничения. Подробнее смотреть здесь. Ограничения на макс. размер базы (2 ГБ) и другие. Подробнее смотреть здесь.
Возможность доработки Очень просто. Это может сделать любой пользователь Excel, конечно, если дело не касается макросов или других специфичных вещей. Сложно, поскольку требуются знания по построению баз данных и других особенностей.
Применимость Больше всего подходит для анализа данных (финансовых, статистических или любых других). Больше подходит для хранения данных. Ориентировано больше на малый бизнес.
Изучение Прост в изучении. Тяжелее в изучении по сравнению с Excel.
Реляционный или линейный Не реляционное хранилище данных. Для хранения используется реляционная модель.
Знание программирования В большинстве случаев знания программирования не нужны. Знания программирования обязательны для работы с базами данных Access.

И так, Access меньше ограничен в объемах выгрузки данных и позволяет строить реляционную модель хранения информации. Кроме того, можно делать произвольные SQL-запросы к таблицам для обработки данных. Во всем остальном Excel удобнее и эффективнее. Это если смотреть общую информацию, поэтому поклонников Access прошу не идти на несанкционированный митинг в комментариях! Тем более никто не мешает подключиться к базе Access из Excel и работать в последнем.

Таким образом, когда нужно выгрузить информацию из базы 1С в большом объеме и при этом у конечного потребителя нет навороченной СУБД, или просто стандарт работы через Access, или же есть реализованная на нем бизнес-логика, то почему бы не использовать его? Также иногда нужно обойти ограничение Excel в 1 миллион строк и выгрузить данные одним набором. В последнем случае база данных Access также может быть хорошим выбором.

Да начнется холивар

Конечно, вместо Excel или Access есть масса других вариантов, но в зависимости от требований они не всегда могут подходить:

  • CSV-файлы - их трудно анализировать, да и подходит это больше для последующей загрузки в другой источник данных.
  • База SQL Server / PostgreSQL - отличный вариант, вот только не все конечные пользователи могут позволить себе настройку этого ПО.
  • Разбить выгрузку Excel на несколько файлов? Отлично! Попробуйте собрать отчетность из 15 файлов Excel по 1 миллиону записей, тогда и поговорим!
  • И др.

Далее поверхностно пробежимся по вопросу лицензирования и наконец-то перейдем к разработке.

Немного про лицензии

Этот вопрос очень важный, поскольку можно здорово напортачить, от чего в будущем могут быть проблемы из-за нарушения лицензионного соглашения Microsoft на их ПО. Дело тут вот в чем.

Выгрузка или другие действия в 1С должны выполняться на стороне сервера 1С, т.к. только там мы можем работать с запросами, таблицами значений или с системой компоновки данных. Конечно, есть еще толстый клиент и файловые базы, но сейчас они не представляют особого интереса, ведь тонкий клиент более предпочтительный вариант для прикладных решений. А для файловых баз проблема лицензирования офиса вообще не стоит, т.к. обычно все кто с этой базой работают уже имеют установленный офисный пакет. Получается, что для того, чтобы сервер 1С мог работать с базами данных Access нужно выполнить одно из следующих действий на сервере 1С:

  • Установить полный пакет Microsoft Access.
  • Установить пакет "Microsoft Access Database Engine 2016 Redistributable".
  • И последний вариант - установить "Microsoft Access 2016 Runtime".

Самым простым вариантом выглядит установка полного пакета приложения MS Access на сервере, но это сильно нарушает лицензионное соглашение. В этом случае потребуется покупка лицензий на Office не только для сервера, но и клиентские лицензии для всех пользователей, которые работают с этим сервером. В нашем случае для всех, кто работает в 1С на этом сервере. А если пользователей 1000? И их становится все больше? Докупать лицензии? Это будет не дешево. В некоторых случаях лицензия может вообще запрещать такое развертывание, но на подробностях уже не будем останавливаться.

Второй вариант - это установка только ODBC-драйвера в пакете Microsoft Access Database Engine 2016 Redistributable. Да, это будет работать! Access устанавливать не нужно, а мы сможем работать с базой данных Access через ADO-соединение. Но и тут не все просто! Если перейти по ссылке и посмотреть детальную информацию, то там черным по белому написано, что этот пакет не может использоваться для:


  • Для замены Ace (нас это сейчас не интересует).
  • Для замены Jet OLEDB (из 1С тоже можно работать через Jet с базами Access, но это уже другая история).
  • Как замена основных систем управления базами данных, электронными таблицами или документами.
  • И самый главный пункт - использоваться как системная служба или программа серверной части приложения.

Фактически, этот пакет предназначен для клиентских компьютеров, которые подключаются к различным источникам данных

Третий вариант - установка Microsoft Access 2016 Runtime. Согласно информации на странице, для установки и распространения не требуется покупка дополнительных лицензий, т.к. этот пакет содержит лишь среду выполнения, которая используется для запуска уже готовых решений. Средства разработки в ней отсутствуют. При этом в состав пакета также входит установщик ODBC-драйвера, который нам и нужен.

На практике видел использование второго и третьего варианта, причем аудит от Microsoft не выявлял в этом случае никаких нарушений. Возможно, установка Microsoft Access Database Engine 2016 Redistributable формально и может являться нарушением соглашения, но по факту его никто не проверяет.

Все вышесказанное относится и к другим продуктам MS Office, в том числе и Excel, Word и т.д. Интересная информация по лицензированию есть здесь, можете прочитать там про "Access Runtime".

Нашли ошибку или не согласны что лицензирование работает именно так? Пишите в комментариях!

Простые примеры

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

Все просто - создаем соединение с базой данных Access через ADO, создаем команду чтений данных в виде набора и обрабатываем его. После освобождаем ресурсы.

С выгрузкой данных все куда интересней, потому что проблемы сложнее:

  1. ODBC-драйвер не позволяет создать пустую базу. Тут либо иметь уже готовый файл с нужными таблицами или придумывать альтернативный вариант (что и было сделано, но об этом позже).
  2. При выгрузке всегда одного набора данных задача упрощается, но что если нужно выгружать каждый раз разные наборы. Например, нужно выгружать отчет на СКД и учитывать, что настройки (выводимые поля) пользователь может изменять. То есть нам нужно научиться создавать таблицы в Access, сопоставляя типы 1С с доступными типами MS Access.
  3. Нужно учесть ограничения базы Access на различные типы, а также на сам ODBC-драйвер. Например, что выгрузка в Access не поддерживает даты меньше 1753 года, если используется ODBC-драйвер.
  4. Также необходимо учитывать максимальный размер базы данных в 2 ГБ. Тут в качестве решения может быть настройка максимального количества выгружаемых записей для одной базы. В случае необходимости выгрузка будет выполняться в несколько порций.

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

Но вернемся все же к реальным требованиям. Для упрощения разработки и сопровождения сделаем прокси-функцию, которая позволит выгружать в Access таблицы значений, запросы и результаты СКД.

Прокси, прокси, прокси

Начнем с описания что в итоге нужно получить. Интерфейс выгрузки будет представлен тремя функциями:

  • ВыгрузитьТаблицуЗначений(КаталогВыгрузки, ИсточникДанных)
  • ВыгрузитьЗапрос(КаталогВыгрузки, ИсточникДанных)
  • ВыгрузитьРезультатКомпоновки(КаталогВыгрузки, СхемаКомпоновкиДанных, Настройки)

Примеры работы с ними ниже под спойлером.

Все функции находятся в общем серверном модуле "РаботаСAccessСервер" и возвращают структуру результата выгрузки с количеством выгруженных записей.

Есть какая-то стандартная функция, возвращающая соединение к SQL собственной базы? Надо UPDATE запустить. Типовая вещь должна быть вроде.

Но для этого нужны 5 секунд поиска и 1 примитивнейший запрос в поисковик

(0) С чего это типовая вещь и почему она должна быть? 1С в клиент-сервере - это трехзвенка, доступ до СУБД никто не обещал.

В общем за все эти годы одинэсники даже самое простое не написали.

(7) Ага. Извини, пожалуйста - придется тебе самому. Справишся?

(7) Они написали самое простое. То, что обычно не читают. Называется "лицензионное соглашение".

(11) И что тебе в этой статье не понятно? Там же всё черным по белому расписано.

(11) Готовой функции ПолучитьЗначениеИзБазы нет в статье. Написано что есть ADODB или SQLOLEDB или. А готового нет.
Зачем понятия подменять? при чем тут "понятно" и "есть готовое"?
Там написано "Учимся получать доступ к СУБД из 1С." Чем оно готовое? Как раз наоборот.

В статье тоже не готовое. Хотя на готовое ПолучитьЗначениеИзБазы в примерах ссылает.

Как это связано с тем, что ПолучитьЗначениеИзБазы нет?

Штаны тоже можно научиться шить самому, все разжевано. Бурда моден а не среда.

"Есть какая-то стандартная функция, возвращающая соединение к SQL собственной базы?" - и каждый как обычно разговаривает что-то свое. А по теме нечего сказать?

864666 попытка завести тематическую ветку.
"Видимо, место здесь такое" (с) Жмурки

(21) Значит автор и ему подобные врут про ПолучитьЗначениеИзБазы(ТекстЗапросаSQL)?

+(23) есть в открытой публикации хоть одна такая функция?
(24) Не Жужжите.

(0) Доступ к БД иначе как средствами 1С запрещен лицензионным соглашением. А 1С не предоставляет прямого доступа к базе, потому что 90% 1Сников положат базу, будь у них такая возможность. Запускать UPDATE при работающем серверном процессе - вообще за гранью добра и зла. У сервера есть свой кеш, и он не рассчитан на то, что кто-то будет запускать UPDATE в базе.

(26) В соседней ветке один друг пытается 470 000 пачек сигарет отгрузить одной фурой и у каждой пачки своя марка. А после этого ему надо базу 1С свернуть по прошлым периодам. Что же будет делать 1С в связи с этим?

(27) Доработает интерфейс программы, чтобы коробки лучше продавались.

(28) Какой интерфейс? Будут блокнотики и карандашик в коробку вкладывать? Скажут "работайте на мягких регистрах".

(31) ну иди в фузину. Зачем в 1с пришел? Изначально же понятно, что это тормоза?

(27) 1С тут не лимитирующий фактор. Ведь эти коды надо еще сосканировать каждый ;)

(0) Чего сложного через ADODB.Connection порубиться, и делай что хочешь.

(35) Да, давно пора перевести на rfid. А потом заказать в Китае сканеры, которые полмиллиона кодов за раз берут. Кетайцы оху@ют и пришлют две деревни крестьян в контейнере.
(36) Чего сложного написать свою ОС на ассемблере.
были люди в наше время, Не то, что нынешнее племя: Богатыри — не вы! Плохая им досталась доля:

(37) Да, Вася. Тебе до твоего тёзки - как Маску до Альфы Кассиопеи в позе гордого моллюска.

(37)обычно говорят я делал то-то и то-то.Что не получилось. А ты ничего не сделал, не попробовал, а просто требуешь готовое. "А кушать вы за меня тоже будете?" Ага!

(38) Одинэсу до консоли скуля видимо ближе.
(39) Кто кому говорят? В смысле чтобы функция появилась нужно позаклинать?

Человеку нужно соединение с БД на прямую, для которого и через ADODB.Connection нужены Логин/Пароль на SQL, не говоря уже о адресе сервера и имени БД, которые можно получить средствами 1С.
Логин/Пароль нельзя получить из снеговика.

(39) Точно.
(40) Нет, заклинанание не надо. Надо миллион долларов и личная встреча с братьями Нуралиевмыи, чтобы они за эти деньги дали команду своим наемным работникам добавить в платформу "1С:Предприятие 8" ту функциональность, что тебе нужно.
ПыСы: сумма взята с потолка, реальная сумма выяснится после того, как сторгуешься с братьями Нуралиевмыи

+(42) Читать: братья Нуралиевы. Это была опечатка, а не коверкание.

(41) У снеговика оно все уже есть. Иначе как он в скуль ходит?
(44) Сестры сделали матрицу, а у этих сплошное дежавю. Все чего-то меняют.
(45) Ни разу пока.
(47) Нет, их в муках рожают.
(48) Не подсказывай.

(48) восхищённый зритель видит чудо, и радуется
а где-то в сторонке кто-то читает заклинание. потому и магия.

(50) А где функция-то? Расскажите подробнее чего Нуралиевы читают.

У майкрософта консоль, у оракла SQL*Plus, а у 1С - лицензионное соглашение.

(52) У 1са тоже есть консоль. И не одна. Для своего языка.

Который за 100 часов делает то, что напрямую выполняется за 25 секунд..

(54) А напрямую ты все обработчики Перед и При записи вызвал? А подписки?

(60) Пруф на что? На то, что 1с работает через объектную модель и у каждой записи могут быть обработчики событий? Так это тебе в книжки для начинающих.

(61) В книжках есть про внешний источник данных (ВИД). Там никаких событий вроде нет, но ограничения на изменение данных. Никакой объектной модели. Как раз чтобы её не обошли и не построили на ВИД свои быстрые регистры и прочее введено ограничение, а так же Лицензионным соглашением. Не может одинэска конкурировать с другими решениями по скорости.

(62) Совсем запутал. Ты же вроде хотел получить программный доступ до таблиц самой базы, а теперь говоришь о внешних источниках данных. Чего в итоге-то ты хочешь? Или ты просто стебешься тут на форуме?

(62) Вот интересно. А почему ты не хочешь записать в базу SQL напрямую, редактируя секторы на диске? Это ж какая скорость получается!

Какие можно выделить преимущества 1С над Access?

В БД сейчас у него работает 3 юзера, в дальнейшем будет 5, в дальнейшем он хочет заходить из дома в БД удаленно. А потом потом хочет объединить местный офис с рижским.

Как человека уговорить? Помогите!

(0) если уже всё работает, то зачем юзеру "платить больше"?

яхты это лакшари, а 1С намного гламурней Access, круче 1С только SAP

(7) Читаем (0) "В БД сейчас у него работает 3 юзера, в дальнейшем будет 5"

Т.е. клиент доволен.. У него всё работает.. Так?

Ассеss работает пока база не дорастет до определенного размера, потом начинаются очень сильные тормоза незавивимо от версии access.
(0) Если ты сам, общаясь непосредственно с клиентом, не в состоянии сформулировать что конкретно тот получит от внедрения 1С, то что ты ждешь от мистян? Очередного сеанса группового телепатирования и чтения мыслей твоего клиента на расстоянии?
(0). хочет, чтобы я покритиковал Access - программы на Access пишут студенты
а на 1С - настоящие бизнес-аналитики
(11) Он не доволен. Не доволен функционалом, интерфейсом. Да и его друг программист исчез. И тут появился я. Такой растакой. Но в ацессе кодить не умею. Предложил ему 1С
(16) вот за это и цепляйся - программистов 1С легион и они постоянно будут развивать его решение.
Можно ли сделать удаленный доступ в файловом варианте 1С?
Скажи ему, что все его конкуренты уже давно на 1с работают :)

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

А без этого всё здесь сказанное будет лишь обсуждением, кто сильней - слон или кит.

(19) Легко! Удаленный доступ через (23). Причем не только к 1С, но и к Ацессу.
(25)
1. Какая скорость инета должна быть чтобы люди работали в БД локально (3-5 человек) и удаленно (5-7)
2. Отчеты будут выполняться также быстро?
3. Файловый вариант точно потянет? Зачем тогда нужен клиент-серверный вариант
(26) с таким отвратительным знанием предмета вы впариваете (по другому не скажешь) клиенту 1С?
У меня нет слов.

(26) Очередные вопросы "ни о чём". Говорить о производительности системы можно только зная о ней хоть что-нибудь. Например, какая конфигурация (типовая или самописка), если типовая, то какая именно (УТ и УПП весьма разнятся по производительности), какой объем информации (ежедневный объем документооброта, размеры основных аналитических таблиц типа Номенклатуры, Контрагенты или что там у него будет). Вторым вопросом встает производительность железа, на котором это всё будет жить.

Короче разговор о сферических конях.

(26) >> Зачем тогда нужен клиент-серверный вариант

Он не нужен. Его 1С придумала, чтобы бабло стричь с доверчивых лохов.

Читайте также: