helpf.pro
Регистрация
 +1 
Распечатать

Заполнение табличного поля данными таблицы значений, полученной из SQL - Запроса

Код 1C v 8.х
 Процедура ЗаполнитьНажатие(Элемент)
запрос = СоставитьЗапрос(); //Функция СоставитьЗапрос() возвращает строку запроса
ТаблицаВывода = Новый ТаблицаЗначений;
ТаблицаВывода.Очистить();
ТаблицаВывода = ЗапросКСкуль(CRM_MSSQL_Сервер,CRM_MSSQL_БазаДанных,CRM_MSSQL_Логин,CRM_MSSQL_Пароль,Запрос);

ТабличноеПоле.Очистить();
ЭлементыФормы.ТабличноеПоле.Значение=ТаблицаВывода;
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();

КонецПроцедуры

Функция ЗапросКСкуль(SQLServer,DSN,Login,Password,txtSQL)
Соединение = Новый COMОбъект("ADODB.Connection");
НаборЗаписей = Новый ComObject("ADODB.RecordSet");
Команда = Новый COMОбъект("ADODB.Command");

Соединение.ConnectionString = ("Provider=SQLOLEDB; Data Source = ") + SQLServer +
    (";Initial Catalog=") + DSN + (";UID=") + Login + ("; PWD=") + Password + (";");
Соединение.ConnectionTimeOut = 15;
//Попытка
 Соединение.Open();
// Сообщить("Connect");
//Исключение
// Сообщить("No connect");
//КонецПопытки;

Команда.ActiveConnection = Соединение;
Команда.CommandText = txtSQL;
//Попытка
 НаборЗаписей = Команда.Execute ();
// Сообщить("Add record");
//Исключение
// Сообщить("No I_nsert");
//КонецПопытки;

Таблица = Новый ТаблицаЗначений;
//Состояние ("Заполнение временной таблицы...");

Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count-1 Цикл   //Создание и добавление колонок во временную таблицу
 ИмяСтолбца =НаборЗаписей.Fields.Item(НомерСтолбца).Name;
 Таблица.Колонки.Добавить(ИмяСтолбца);
 //Сообщить(ИмяСтолбца);            // Тестовая строка
КонецЦикла;
 
Пока НЕ НаборЗаписей.EOF Цикл        // Заполнение созданной таблицы
 НоваяСтрока =  Таблица.Добавить();
 Для НомерСтолбца = 0 По НаборЗаписей.Fields.Count-1 Цикл
  НоваяСтрока.Установить(НомерСтолбца,НаборЗаписей.Fields(НомерСтолбца).Value);
  //Сообщить ("Test " + ЗаписиSQL.Fields(НомерСтолбца).Value +  ЗаписиSQL.Fields(НомерСтолбца).Name);
 КонецЦикла;
 НаборЗаписей.MoveNext();
КонецЦикла;

//Состояние ("Закрываем соединение с SQL...");
Соединение.Close();
Возврат Таблица;
КонецФункции   



Код 1C v 8.х
 Функция ЗапросSQL (SQLServer,Login,Password,ТекстSQL)   //Функция выборки данных из SQL сервера и передача во временную таблицу 1С

СтрокаСоединения = ("Provider=SQLOLEDB;Driver={SQL Server}; Deleted=No; Data Source = ") + SQLServer +
    (";UID=") + Login + ("; PWD=") + Password + (";");
              
   Подключение = Новый ComObject("ADODB.Connection");
Подключение.ConnectionString=СтрокаСоединения;
 Попытка
  Подключение.Open(СтрокаСоединения);
  Состояние ("Подключение к серверу SQL...");
 Исключение
  Сообщить(ОписаниеОшибки());
  Возврат Ложь;
 КонецПопытки;
 
СоединениеSQL = Новый COMObject("ADODB.Command");
СоединениеSQL.ActiveConnection = Подключение;
СоединениеSQL.NamedParameters = True;
СоединениеSQL.CommandText = ТекстSQL;
СоединениеSQL.CommandType = 1;
//СоединениеSQL.Prepared = Истина;

Param1 = СоединениеSQL.CreateParameter("n",3,1,1,1);
СоединениеSQL.Parameters.Append(Param1);

Param2 = СоединениеSQL.CreateParameter("ДатаПриходаС",200,1,8,Формат(НачалоПериода,"ДФ=ггггММдд"));//Формат(НачалоПериода,"ДФ=ггггММдд"));
СоединениеSQL.Parameters.Append(Param2);

Param3 = СоединениеSQL.CreateParameter("ДатаПриходаПо",200,1,8,Формат(КонецПериода,"ДФ=ггггММдд"));
СоединениеSQL.Parameters.Append(Param3);
   
СоединениеSQL.Parameters.Refresh();

Состояние ("Выполнение запроса SQL...");
ЗаписиSQL = Новый ComObject("ADODB.RecordSet");

ЗаписиSQL = СоединениеSQL.Execute();

 
Таблица = Новый ТаблицаЗначений;
Состояние ("Заполнение временной таблицы...");
Для НомерСтолбца = 0 По ЗаписиSQL.Fields.Count-1 Цикл //Создание и добавление колонок во временную таблицу
 ИмяСтолбца =ЗаписиSQL.Fields.Item(НомерСтолбца).Name;
 Таблица.Колонки.Добавить(ИмяСтолбца);
 Сообщить(ИмяСтолбца);
КонецЦикла;


Пока ЗаписиSQL.EOF = 0 Цикл // Заполнение созданной таблицы
 
 НоваяСтрока =  Таблица.Добавить();
 Для НомерСтолбца = 0 По ЗаписиSQL.Fields.Count-1 Цикл
  НоваяСтрока.Установить(НомерСтолбца,ЗаписиSQL.Fields(НомерСтолбца).Value);
  Сообщить ("Test " + ЗаписиSQL.Fields(ИмяСтолбца).Value + ИмяСтолбца);
 КонецЦикла;
       
 ЗаписиSQL.MoveNext();
 
КонецЦикла;

Состояние ("Закрываем соединение с SQL...");
   ЗаписиSQL.Close();
Подключение.Close();

Возврат Таблица;   // Возврат таблицы значений запроса SQL

КонецФункции   
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 26270
 +1 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 53
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C медленно работает по сети с базой на SQL Server 23
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
1Cv8.1CD - Файл данных достиг максимального размера! 9
1С выдает предупреждение " Файл данных достиг максимального размера" . Подскажите из - за чего это и как можно решить ? Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка
1С Предприятие что это? 13
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 2
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!