Tooprogram.ru

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access и 1с

Универсальный механизм выгрузки данных из 1С в БД access

  1. Файл базы данных можно создавать отдельно от данных.
  2. Таблица в БД файле можно создавать отдельно от данных.
  3. Типы данных преобразуются в совместимые с access.
  4. Значения равные пустой дате, строке преобразуются в null.
  5. Не примитивные и не строковые типы данных (ссылочные) обрезаются по длине до 255 символов.
  6. Строковые типы данных адаптируются по длине строки для экономии объёмов.
  7. Символ одинарной кавычки ‘ запишется в базу с помощью функции запроса char().
  8. Автоматическое добавление первичного индекса (счётчик строк).
  1. Работает только с таблицей значений в качестве источника данных.
  2. Механизм работает только в режиме толстого клиента. Это связанно с использованием библиотеки ADO и таблицы значений одновременно.
  3. Работа возможна только на windows системах.

Сам механизм состоит из трёх блоков:

  1. Функция создания файла БД.
  2. Функция создания таблицы БД.
  3. Функция записи данных в таблицу БД.

Схематично работа механизма выглядит так:

Исходный код функции создания файла БД:

Функция получает 2 параметра:

  1. Имя файла будущей БД — строка. Это полный путь к файлу, если его не передать, процедура завершит работу.
  2. Перезаписывать файл — булево. Это булево флажок, который использует механизм перезаписи файла.

Сначала выполняется проверка полного имени файла. Дальше отрабатывает механизм перезаписи файла. В случае необходимости существующий файл удаляется. После чего процедура переходит к созданию пустого файла БД. Делается это с помощью объекта ADOX.Catalog . Для разбора тонкостей работы ADOX.Catalog рекомендую поискать соответствующую информацию на сайте Microsoft.

Вторая «шестерёнка» механизма выгрузки в access реализует создание таблицы в файле БД. Для создания таблиц используется всё тот же объект ADOX.Catalog.

Исходный код процедуры создания новой таблицы в БД:

Функция получает 3 параметра:

  1. СтруктураОписанияТаблицы – структура содержащая описание самой таблицы и её полей. Формируется вспомогательной функцией, которую я приведу ниже.
  2. ИмяФайла – строка имя файла БД.
  3. УдалятьСуществующуюТаблицу – флажок, определяющий поведение функции в отношении уже существующих одноименных таблиц.

Получив управление, функция открывает файл БД. При удачном подключении создается объект «ADOX.Catalog» (каталог таблиц), который в первую очередь проверяет существование таблицы в соответствии с параметром функции №3. Следующим действием создаётся новая таблица. К таблице добавляется ключевое поле (индекс). Далее на основании параметра функции №2 создаются поля таблицы соответствующих типов. По завершении вновь созданная таблица добавляется в каталог и соединение закрывается.

Разумеется вручную собирать параметр функции №2 достаточно трудоёмко, для облегчения я написал функцию, которая на основании таблицы значений с данными формирует структуру описания таблицы.

Исходный код функции составление структуры описания полей:

Функция получает 2 параметра:

  1. ТаблицаДанных – таблица значений с данными. Из этого параметра функция формирует описание типов данных будущих полей. Рекомендую создавать эту таблицу значений через запрос, так как в этом случае все поля ТЗ будут типизированны.
  2. ИмяТаблицы – строка имя будущей таблицы access.

Первоначально создается структура с описанием самой БД, после чего добавляется массив, который буде содержать в себе другие структуры с описанием полей. В процессе цикла по колонкам таблицы значений заполняется массив описания полей. Структура описания поля содержит 4 основных свойства:

  1. Имя – строка имени будущего поля. Не должно содержать пробелов или несовместимых символов. Если таблицу значений вы формируете запросом, то проблем возникнуть не должно, но в случае самостоятельного заполнения таблицы значений ответственность полностью ложится на вас.
  2. Тип – строка, это константа Microsoft. В нашем случае используются только: число целое, число дробное, строка (различной длины), булево и дата.
  3. Длина – число, для строковых типов.
  4. Синоним – строка, текстовое описание поля.
Читать еще:  Создание формы в access 2020 пошагово

Закончив формирование структуры, оная возвращается.

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

Исходный код функции внесение данных в таблицу:

Функция получает 3 параметра:

  1. ИмяФайла – строка имя файла базы данных.
  2. ТаблицаДанных – таблица значений, содержащая данные.
  3. ОписаниеТаблицы – структура, описывающая поля таблицы и имя.

Для работы с БД создаётся уже знакомое нам подключение. Подключившись, создаём объект, отвечающий за исполнение sql инструкций. Далее организуем цикл по строкам таблицы значений (параметр функции №2) и вложенный цикл по колонкам таблицы. Счётчик строк будет использоваться для индексирования строк. Счётчик колонок будет использоваться для поиска описания поля в структуре описания таблицы (параметр №3). Перебирая колонки очередной строки, анализируем их типы (по описанию таблицы) и выполняем соответствующие преобразования. В итоге у нас оказывается готовая команда sql для записи строки в БД. Применяем полученную sql инструкцию, объектом ADODB.Command. По окончании процесса закрываем подключения и очищаем память.

К сожалению на этом сайте я не смог прикрепить обработку для толстого клиента, которая может выгружать любые справочники в базу access. Но на яндекс диске её можно загрузить: http://yadi.sk/d/UzK_PAsJ3vjTS . В данной обработке задействованы все детали универсального механизма выгрузки. Конечно данной обработкой, этот механизм не ограничивается. Его можно смело копировать как в отдельный модуль, так и в свои обработки. Я не исключаю ошибочных ситуаций, которые могу привести к краху выгрузки, но это не коммерческий проект. Вы вольны доработать данный механизм под свои нужды. Ниже следуют 2 приложения с описанием констант adox. Надеюсь, данный механизм будет вам полезным. Желаю вам успехов на профессиональном поприще!

Приложение 1 список дополнительных свойств поля таблицы access:

Задает тип поля «Счетчик» с автоматическим увеличением значения при добавлении записи.

Значение поля по умолчанию.

Определяет ,будет поле фиксированой длины или переменой.

Значение, на которое будет увеличиваться поле типа «счетчик».

Определяет, может ли поле не содержать никакого значения, иными словами должно ли это поле быть обязательным для заполнения.

Значение, с которого начнется отсчет в первой записи для поля типа «счетчик».

Jet OLEDB:Allow Zero Length

Определяет, могут ли текстовые поля содержать строки нулевой длины. Игнорируется для несимвольных полей.

Определяет, будет ли автоматически генерироваться новое значение GUID для полей типа adGUID.

Jet OLEDB:Column Validation Rule

Выражение, определяющее правильность записываемого в поле значения, должно быть написано в формате SQL WHERE но без ключевого слова WHERE.

Jet OLEDB:Column Validation Text

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

Jet OLEDB:Compressed UNICODE Strings

Определяет, будет ли Microsoft Jet сжимать UNICODE строки при записи на диск. Игнорируется, если база данных не в формате Microsoft Jet version 4.0.

Определяет, что данные в поле являются гиперссылкой. Игнорируется для полей с типом отличным от adLongVarWChar.

Jet OLEDB:IISAM Not Last Column

For Installable-ISAMs, this property informs the I-ISAM that there are more columns that are going to be added to the table after this one. If you are using ITableDefinition::AddColumn or ITableDefintion::CreateTable, it is required that you set this property for every.

Jet OLEDB:One BLOB per Page

Определяет, должны ли данные хранится в раздельных страницах (True) или могут использовать общие страницы базы данных, для экономии места на диске. Работает только с полями типа adLongVarBinary.

Читать еще:  Запрос на выборку в ms access

Приложение 2 список типов значений применяемых в ADOX

adDouble, type 5 — дробное число

adDate, type 7 — дата/время

adCurrency, type 6 — целое число

adInteger, type 3 — беззнаковое целое число

adBoolean, type 11 — булево

adVarWChar, type 202 — строка unicode длиной 255 символов

adLongVarWChar («memo»), type 203 — строка unicode неограниченная строка

Access и 1С

Не подскажите как можно к 1С подключить mdb файлы.

То есть, есть необходимость из Access вытащить данные и подкачать их в 1С.

Никак. Только через DBF-ы.

«Можно через OLE или ADO. Последнее в данном случае гораздо лучше.

Перем БДАКС, ПутьКФайлу, ЗапросACCESS, НазвЗапроса;

/*Нужно указать провайдера вашего компа, у меня Microsoft.Jet.OLEDB.4.0*/

/*открываем запрос или таблицу из базы ACCESS*/

/*Далее применяя к ЗапросACCESS методы MoveFirst(), MoveNext(), Fields(НазваниеПоля).Value бегаем по табличке и скачиваем из нее данные в объекты 1С (таблицу значений, справочник и т.д.).

Потом нужно все закрыть за собой*/

Если что непонятно — пишите.

В Access экспортируй файл в DBF и работай в 1С с DBF форматом благо функций и процедур в для работы с DBF куча.

Читают тему:

Мероприятия

  • Где купить СОФТ
  • Вакансии фирм-партнеров «1С»
  • Центры Сертифицированного Обучения
  • Интернет курсы обучения «1С»
  • Самоучители
  • Учебный центр № 1
  • Учебный центр № 3
  • Сертификация по «1С:Профессионал»
  • Организация обучения под заказ
  • Книги по 1С:Предприятию

1С бесплатно 1С-Отчетность 1С:ERP Управление предприятием 1С:Бесплатно 1С:Бухгалтерия 8 1С:Бухгалтерия 8 КОРП 1С:Бухгалтерия автономного учреждения 1С:Бухгалтерия государственного учреждения 1С:Бюджет муниципального образования 1С:Бюджет поселения 1С:Вещевое довольствие 1С:Деньги 1С:Документооборот 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 1С:Зарплата и управление персоналом 1С:Зарплата и управление персоналом КОРП 1С:Комплексная автоматизация 8 1С:Лекторий 1С:Предприятие 1С:Предприятие 7.7 1С:Предприятие 8 1С:Розница 1С:Управление нашей фирмой 1С:Управление производственным предприятием 1С:Управление торговлей 1СПредприятие 8

  • WWW.1С.ru
  • 1С:Предприятие 8
  • 1С Отраслевые решения
  • Образовательные программы
  • 1С:Линк
  • 1С:Консалтинг
  • 1С:Дистрибьюция
  • 1С для торговли
  • 1С-Онлайн
  • 1С Интерес
  • 1С:Образование

При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.

Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.

Редакция уважает мнение авторов, но не всегда разделяет его.

На указанный в форме e-mail придет запрос на подтверждение регистрации.

Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.

Access и 1С

Не подскажите как можно к 1С подключить mdb файлы.

То есть, есть необходимость из Access вытащить данные и подкачать их в 1С.

Никак. Только через DBF-ы.

«Можно через OLE или ADO. Последнее в данном случае гораздо лучше.

Перем БДАКС, ПутьКФайлу, ЗапросACCESS, НазвЗапроса;

/*Нужно указать провайдера вашего компа, у меня Microsoft.Jet.OLEDB.4.0*/

/*открываем запрос или таблицу из базы ACCESS*/

/*Далее применяя к ЗапросACCESS методы MoveFirst(), MoveNext(), Fields(НазваниеПоля).Value бегаем по табличке и скачиваем из нее данные в объекты 1С (таблицу значений, справочник и т.д.).

Потом нужно все закрыть за собой*/

Если что непонятно — пишите.

В Access экспортируй файл в DBF и работай в 1С с DBF форматом благо функций и процедур в для работы с DBF куча.

Читают тему:

Мероприятия

  • Где купить СОФТ
  • Вакансии фирм-партнеров «1С»
  • Центры Сертифицированного Обучения
  • Интернет курсы обучения «1С»
  • Самоучители
  • Учебный центр № 1
  • Учебный центр № 3
  • Сертификация по «1С:Профессионал»
  • Организация обучения под заказ
  • Книги по 1С:Предприятию

1С бесплатно 1С-Отчетность 1С:ERP Управление предприятием 1С:Бесплатно 1С:Бухгалтерия 8 1С:Бухгалтерия 8 КОРП 1С:Бухгалтерия автономного учреждения 1С:Бухгалтерия государственного учреждения 1С:Бюджет муниципального образования 1С:Бюджет поселения 1С:Вещевое довольствие 1С:Деньги 1С:Документооборот 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 1С:Зарплата и управление персоналом 1С:Зарплата и управление персоналом КОРП 1С:Комплексная автоматизация 8 1С:Лекторий 1С:Предприятие 1С:Предприятие 7.7 1С:Предприятие 8 1С:Розница 1С:Управление нашей фирмой 1С:Управление производственным предприятием 1С:Управление торговлей 1СПредприятие 8

  • WWW.1С.ru
  • 1С:Предприятие 8
  • 1С Отраслевые решения
  • Образовательные программы
  • 1С:Линк
  • 1С:Консалтинг
  • 1С:Дистрибьюция
  • 1С для торговли
  • 1С-Онлайн
  • 1С Интерес
  • 1С:Образование

При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.

Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.

Редакция уважает мнение авторов, но не всегда разделяет его.

На указанный в форме e-mail придет запрос на подтверждение регистрации.

Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.

Как связать БД 1С и Access?

Есть задача. Как связать базу данных 1С и АCCESS.

Желательно через буферный файлик, в который 1С будет выгружать данные, а ACCESS из него будет подбирать?

Конечная цель, вообще то, составление калькуляций на производство мебели.
Номенклатуру и цены должен давать 1С.
А в 1С редактируются данные, количество и т.д. на основании данных ACCESS.

28.09.2014, 11:13

Как связать 2 таблички в Access?
Как связать 2 таблички в Access?

Access SAP R/3 как связать?
У меня тоже вопрос: Как вызвать из Access SAP R/3 и заставить ее выполнять некие действия? Excel.

Как правильно связать таблицы БД в access
День добрый! Создаю свою первую базу данных, раньше этим не занимался. Базу данных создаю для.

Подскажите как связать две Формы в Access
Здравствуйте! не получается сделать, помогите есть 2 таблицы (Еда и КМ) и 2 формы к ним (Еда и.

28.09.2014, 11:392
Желательно через буферный файлик, в который 1С будет выгружать данные(Номенклатуру и цены), а ACCESS из него будет подбирать?пока понятно
что делает аксесснет информации
Конечная цель, вообще то, составление калькуляций на производство мебели.почему не в 1с
А в 1С редактируются данные, количество и т.д. на основании данных ACCESS.каких, вводится ли инфа из аксесс-файлика в 1с или просто в 1с не можете сосчитать калькуляцию и поэтому корректируете Номенклатуру, цены, количество 1с по готовому отчету из аксесс
28.09.2014, 13:00328.09.2014, 18:25 [ТС]4

Здравствуйте еще раз))))
Я конструктор, и рассчитываю модели, количество материала.
А бухгалтер мне дает цены.
И не всегда правильные. А чтобы исключить человеческий фактор, так сказать, вот придумал сделать связь между 1С и аксом.
Хочется что бы ассес загружал цены из бухгалтерии и давал в бугалтерию расход материала.
Кстати расход будет появляться из Акада.
Мне надо будет только правильно нарисовать модель.
Это реально?

28.09.2014, 18:535

что такое-состав изделия знаю хорошо

например табуретка
—сидение
—4 ножки
—4 распорки(не всегда одинаковые)

сидение
—верхняя плита
—нижняя
—обивка
—крепление
.

материалы
—клей
—фанера 2000х1500ммх1,5мм
—брус 50х50ммх3м
.
сколько чего надо на план с учетом отбраковки из-за сучков дерева

=======
состав изделия(табуретки)сочиняете вы
сколько заготовок из листа фанеры —тоже вы

от 1с надо получит цену 1 единицы материала и готового крепежа(уникальный номер артикула,наименование,размеры,цена ) с возможностью обновления таблицы

а затем создать таблицу М-М
— НА ДЕТАЛЬ МОЖЕТ ИДТИ МНОГО МАТЕРИАЛОВ
—один материал во многих деталях разных изделий

Ссылка на основную публикацию
Adblock
detector