Rusxaker

Обмен 1С С Внешними Таблицами

В теме 1 сообщение

Для администраторов и программистов может быть полезно. Бывает необходимо настроить обмен с внешними системами, пример соединения с SQL.

 

Вот так мы можем выгрузит данные из 1С

//Устанавливаем параметры подключения
СтрокаПодключения = "DRIVER={SQL Server};
|SERVER=" + Сервер + ";
|UID=" + Пользователь + ";
|PWD=" + Пароль + ";
|DATABASE=" + База;


// Соединяемся с sql
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionTimeOut = 600;

Попытка
   Соединение.Open(СтрокаПодключения);
Исключение
   Сообщить(ОписаниеОшибки());
КонецПопытки;


// при необходимости удаляем старые записи
Соединение.Execute("delete from Export") ;


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

Для каждого СтрокаТЗ Из ТЗРезультат Цикл


Команда = "
|INSERT INTO [dbo].[Export]
|([divId],
|[nickId],
|[DateK],
|[NomerDok])
|VALUES
|('" + СтрокаТЗ.Код + "',
|'" + СтрокаТЗ.Номер+ "',
|'" + Формат(СтрокаТЗ.Период, "ДФ=yyyy-MM-dd") + "',
|'" + СтрокаТЗ.Документ + "')";

//Передаем запрос в sql
Соединение.Execute(Команда);

КонецЦикла;

//закрываем соединение
Соединение.Close(); 

А вот код для загрузки данных из SQL в 1С

 

//Устанавливаем параметры подключения
СтрокаПодключения = "DRIVER={SQL Server};
|SERVER=" + Сервер + ";
|UID=" + Пользователь + ";
|PWD=" + Пароль + ";
|DATABASE=" + База;


// Соединяемся с sql
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionTimeOut = 600;

Попытка
Соединение.Open(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;


//Выполняем запрос для получения данных
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Соединение;
Command.CommandText ="SELECT * FROM [dbo].[Int_Payment]";
Command.CommandType = 1;

RecordSet = Новый ComОбъект("ADODB.RecordSet");
RecordSet = Command.Execute();

КолвоПолей = RecordSet.Fields.Count - 1;


//Очищаем таблицу значений в 1С
ТЗ.Очистить();
ТЗ.Колонки.Очистить();

//Заполняем колонки формы в 1С
Для Инд = 1 По 6 Цикл
ТЗ.Колонки.Добавить("Колонка_" + Инд);
КонецЦикла; 

Пока RecordSet.EOF() = 0 Цикл
СтрокаТЧ = ТЗ.Добавить();

СтрокаТЧ.Колонка_2 = RecordSet.Fields("Number").Value;
СтрокаТЧ.Колонка_3 = "" + RecordSet.Fields("Date").Value;
СтрокаТЧ.Колонка_4 = RecordSet.Fields("Time").Value;
СтрокаТЧ.Колонка_5 = RecordSet.Fields("Result").Value;
СтрокаТЧ.Колонка_6 = "" + RecordSet.Fields("Date2").Value;

RecordSet.MoveNext();
КонецЦикла;

//Закрываем соединение
Соединение.Close();

ЭлементыФормы.ТЗ.СоздатьКолонки();

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти