1с адо что это

Обновлено: 07.07.2024

Пришлось недавно ближе поработать с объектами ADODB. Давно этого не делал, так что пришлось снова смотреть в старый код, а что-то и в интернете поискать. Решил скомпоновать базу здесь, в блоге - для дальнейшего возвращения.

ADODB.Connection
Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения.

Provider - Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info - необходимость использования шифрованого канала
User ID - Имя пользователя внешнего источника
Password - Пароль пользователя
Initial Catalog - Имя базы внешного источника
Data Source - Имя сервера

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

RecordSet.Open(Источник, Соединение, ТипКурсора, ТипБлокировки, Параметры)
В приведенном ниже примере набор данных открывается с параметрами
Источник - "IMPORT_PRODUCTS"
Соединение - мADOСоединение
ТипКурсора - "0" (adOpenForwardOnly)
ТипБлокировки - "2" (adLockPessimistic)
Параметры - "2" (adCmdTable)


Открытие набора данных по запросу (использование дополнительных параметров вызывает исключения)

Заполнение внешней таблицы

При необходимости очистить таблицу внешнего источника данных, и загрузить туда обновленные данные.


Устанавливаем новый запрос, который запишет в таблицу отобранные данные, и выполняем его.

Выборка данных и запись

Вариант ситуации, когда необходимо выполнить выборку данных, и записать результат для дальнейшей обработки. (Не забываем создавать объект Connection)
В данном случае используется объект ADODB.Recordset, который позволяет получить набор записей.


Кстати, советую пользоваться функцией EOF вместо RecordCount, так как последняя очень не надежна, неопределенная во времени выполнения и может привести к "залипанию" процесса - подробнее можно почитать на форумах.

Использование хранимых процедур

Хранимые процедуры можно вызвать просот из запроса, вписав в начале текста слово "exec", либо указав соответствующий CommandType и название хранимой процедуры в CommandText.

Создаем параметр посредством объекта Parameter (на перевес этому можно воспользоваться методом CreateParameter), и добавляем его методом Append в наше подключение.


Переводим файл, который хотим передать в двоичный поток, создаем и добавляем параметр

В данной статье будет рассмотрено взаимодействие 1С и ADOdb. Но вначале вкратце опишем, что из себя представляет ADOdb. Итак, ADOdb – это библиотека-функция для программного обеспечения, которая создает прикладной интерфейс для способа доступа к базам данных таких языков, как Python и PHP. Данная библиотека даёт разработчику инструменты, которые позволяют делать приложения не программируя каждый возможный тип источника данных. Также используя ADOdb, программист 1С получает возможность перемены в СУБД (Система управления базами данных), не внося исправлений в главную часть кода.

ADOdb может применяться совместно с системами 1С, например, для получения доступа к таблицам в базе данных 1С при помощи методов ADO. Методы ADO и SQL-DMO разрешают исполнять командование доступом и модификацию данных при помощи функций T-SQL (расширение SQL). В обоих случаях порядок действий будет одинаковым. Рассмотрим же его подробнее!

1. Формирование объекта ADOdb.Connection

формирование объекта в ADOdb.Connection

Формирование объекта ADOdb.Connection

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

2. Отправка команды серверу

Привязка объекта ADOdb.Connection к соединению

Привязка объекта ADOdb.Connection к соединению

Далее задаётся непосредственно команда:

 ADOdb.Connection тип команды

Команда для объекта ADOdb.Connection

Текст в команде – это некий оператор из T-SQL или имя процедуры из нашей базы данных.

Чтобы работа программы стала быстрее? можно отметить для объекта ADOdb тип команды (функция «ТипКомандыАдо()»).

Как отметить для объекта ADOdb.Connection тип команды

Как отметить для объекта ADOdb.Connection тип команды



Тип команды по умолчанию для объекта ADOdb.Connection

«CreateParamerer (Name, Value Type, Param type, Param Value)», где:

· Name – название параметра (точно так же, как указано в процедуре, в которой он хранится);

· Value Type – значение параметра по типу, определяем при помощи КонстантаАДО();

· Param Type – тип в параметре («Output» или «Input»), определяем при помощи функции ТипПарамедраАДО();

· Param Value – само значение.

создание в объекте ADOdb.Command

Функция CreateParameter в объекте ADOdb.Command

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

Примечание: параметры с типом Numeric нужно будет конвертировать в строки, а только потом передавать.

3. Получение и обработка результата работы команды

Можно вывести результаты двумя способами:

· как обособленные значения, которые можно передать из той процедуры, где они хранятся, по параметрам с типом OUTPUT.

Выведение результатов работы ADOdb.Command

Стоит обратить внимание, что параметры нумеруются начиная со значения «0». Параметры можно использовать ещё раз, если присвоить им значения через опцию Value.

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

Обработка набора с начала и до конца года

Обработка набора с начала и до конца года

Когда записи стали не нужными, закрываем их с помощью Rs.Close.

Таким образом, соединив 1С и методы ADOdb, мы получили набор записей при работе с базой данных SQL.

На последней платформе 1С 8.3 для управления правами доступа пользователей, используется отдельный объект метаданных. Называется объект «Роли» и находится в конфигураторе, в ветке Общие/Роли. Роль определяет список прав пользователя.

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

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

Окно создания роли доступа пользователя, в нем есть область «Объекты», область «Права», область «Ограничения доступа к данным».

Окно создания роли доступа пользователя

Окно создания роли доступа пользователя

Область «Объекты» – это перечень объектов конфигурации, на которые будут настраиваться права.

Область «Права» – это набор прав, которые доступны для данного объекта конфигурации.

«Устанавливать права для новых объектов» – данная настройка означает, что при создании новых объектов пользователю автоматически будут присваиваться права для работы с ними.

«Устанавливать права для реквизитов и табличных частей по умолчанию» – данная означает, что реквизиты и табличные части объекта унаследуют права владельца.

«Независимые права подчиненных объектов» – при определении прав на объект система использует права на родительский объект.

2. Функции в программном коде 1С

Узнать, достаточно ли прав у пользователя в 1С 8.3 можно при помощи функций, предусмотренных программным кодом 1С.

Функция РольДоступна() определяет, доступна ли данная роль доступа пользователю.

Если РольДоступна("ПолныеПрава") Тогда Сообщить("У вас достаточный набор прав!");

Иначе Сообщить("У вас недостаточный набор прав!");

Функция ПравоДоступа() позволяет определить права на объект при обращении пользователя к объекту метаданных.

Справочник=Справочники. Контрагенты;
Если Не ПравоДоступа ("Чтение",Справочник) Тогда
Сообщить ("Доступ к данномусправочникузакрыт!");

Функция ПараметрыДоступа() определяет права и ограничения на заданный объект метаданных для указанного пользователя.

Для Каждого Роль Из Метаданные.Роли Цикл
Для Каждого ОбъектОбработка Из Метаданные.Обработки Цикл
ОбластьСтрока.Параметры.Редактирование = ?(ПараметрыДоступа("Использование" , ОбъектОбработка, , Роль).Доступность, "Да", "Нет");
ОбластьСтрока.Параметры.Просмотр = ?(ПараметрыДоступа("Просмотр",ОбъектОбработка, , Роль).Доступность, "Да", "Нет");
ОбластьСтрока.Параметры.Роль = Роль.Синоним;
ОбластьСтрока.Параметры.Объект = ОбъектОбработка.Синоним;
ТаблДокумент.Вывести(ОбластьСтрока);

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

Интерактивные – это интерфейсные права из формы списка\элемента. Например, для объекта не выбрано право «интерактивное добавление», тогда из формы списка добавить новый элемент не будет возможности. Существуют два типа прав: права на форму и права на объект.

Права на объект – это ограничения, которые накладываются на сам объект в базе во время его изменения (создание, изменение, удаление) или чтения именно в физической таблице.

Пример: создаём новый, читаем, редактируем, удаляем элемент, при этом проверка на доступ проходит на уровне объекта.

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

3. Настройки 1C RLS

В последней платформе 1С 8.3, есть возможность настроить права пользователей на уровне отдельных записей. Данный механизм называется RLS (ограничение прав на уровне записей). Работает механизм на объектном уровне. Например, можно использовать запрос в котором запрещается редактирование (чтение, удаление, добавление и т.д.) не всех контрагентов, а только выбранных элементов.

Самый распространенный вариант настройки в 1C RLS – это настройка ограничения видимости объектов системы пользователя в разрезе, например, организаций (пользователь видит лишь «свои» данные). Недостаток 1С RLS заключаются в том, что настройка и отладка данного функционала – весьма трудоемкий процесс, кроме того, сказывающийся на производительности программы.

На последней платформе 1С 8.3 для управления правами доступа пользователей, используется отдельный объект метаданных. Называется объект «Роли» и находится в конфигураторе, в ветке Общие/Роли. Роль определяет список прав пользователя.

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

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

Окно создания роли доступа пользователя, в нем есть область «Объекты», область «Права», область «Ограничения доступа к данным».

Окно создания роли доступа пользователя

Окно создания роли доступа пользователя

Область «Объекты» – это перечень объектов конфигурации, на которые будут настраиваться права.

Область «Права» – это набор прав, которые доступны для данного объекта конфигурации.

«Устанавливать права для новых объектов» – данная настройка означает, что при создании новых объектов пользователю автоматически будут присваиваться права для работы с ними.

«Устанавливать права для реквизитов и табличных частей по умолчанию» – данная означает, что реквизиты и табличные части объекта унаследуют права владельца.

«Независимые права подчиненных объектов» – при определении прав на объект система использует права на родительский объект.

2. Функции в программном коде 1С

Узнать, достаточно ли прав у пользователя в 1С 8.3 можно при помощи функций, предусмотренных программным кодом 1С.

Функция РольДоступна() определяет, доступна ли данная роль доступа пользователю.

Если РольДоступна("ПолныеПрава") Тогда Сообщить("У вас достаточный набор прав!");

Иначе Сообщить("У вас недостаточный набор прав!");

Функция ПравоДоступа() позволяет определить права на объект при обращении пользователя к объекту метаданных.

Справочник=Справочники. Контрагенты;
Если Не ПравоДоступа ("Чтение",Справочник) Тогда
Сообщить ("Доступ к данномусправочникузакрыт!");

Функция ПараметрыДоступа() определяет права и ограничения на заданный объект метаданных для указанного пользователя.

Для Каждого Роль Из Метаданные.Роли Цикл
Для Каждого ОбъектОбработка Из Метаданные.Обработки Цикл
ОбластьСтрока.Параметры.Редактирование = ?(ПараметрыДоступа("Использование" , ОбъектОбработка, , Роль).Доступность, "Да", "Нет");
ОбластьСтрока.Параметры.Просмотр = ?(ПараметрыДоступа("Просмотр",ОбъектОбработка, , Роль).Доступность, "Да", "Нет");
ОбластьСтрока.Параметры.Роль = Роль.Синоним;
ОбластьСтрока.Параметры.Объект = ОбъектОбработка.Синоним;
ТаблДокумент.Вывести(ОбластьСтрока);

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

Интерактивные – это интерфейсные права из формы списка\элемента. Например, для объекта не выбрано право «интерактивное добавление», тогда из формы списка добавить новый элемент не будет возможности. Существуют два типа прав: права на форму и права на объект.

Права на объект – это ограничения, которые накладываются на сам объект в базе во время его изменения (создание, изменение, удаление) или чтения именно в физической таблице.

Пример: создаём новый, читаем, редактируем, удаляем элемент, при этом проверка на доступ проходит на уровне объекта.

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

3. Настройки 1C RLS

В последней платформе 1С 8.3, есть возможность настроить права пользователей на уровне отдельных записей. Данный механизм называется RLS (ограничение прав на уровне записей). Работает механизм на объектном уровне. Например, можно использовать запрос в котором запрещается редактирование (чтение, удаление, добавление и т.д.) не всех контрагентов, а только выбранных элементов.

Самый распространенный вариант настройки в 1C RLS – это настройка ограничения видимости объектов системы пользователя в разрезе, например, организаций (пользователь видит лишь «свои» данные). Недостаток 1С RLS заключаются в том, что настройка и отладка данного функционала – весьма трудоемкий процесс, кроме того, сказывающийся на производительности программы.

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