Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 20:10

Таблица значений и Тонкий клиент

Автор Начинающий 1с, 11 окт 2013, 15:42

0 Пользователей и 1 гость просматривают эту тему.

Начинающий 1с




Подскажите пожалуйста, может уже кто то писал но я не нашел на  форуме.

УП , я хочу заполнить ТЗ на клиенте, но там она не доступна, как же ее создать на сервер и передать на клиент, где она заполняется

Besart

&НаКлиенте
Процедура Заполнить(Команда)
ЗаполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере()
//получаете здесь ВашуТаблицуЗначений
Объект.ВашаТабличнаяЧасть.Загрузить(ВашаТаблицаЗначений);
КонецПроцедуры // ЗаполнитьНаСервере()

Начинающий 1с

я наверное не совсем ясно выразился, дело в том что данные для ТЗ находятся на клиенте я их получаю через ком объект, ком объект передать НаСервер нельзя, так же как и получить ТЗ НаКлиенте.
Мне нужно данными перебираея (строки экселя) из тонкого клиента заполнить ТЗ

Besart

COMОбъект (COMObject)
Конструкторы:

По имени приложения

Описание:

Создает COM-объект (например, Word, Excel и т.д.). Методы и свойства СОМ-объектов в дальнейшем становятся доступными через данный объект.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.


Начинающий 1с

да все верно в СП смотрел, но

СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+Объект.Путь;
   СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";";
   
   Об_Конект = Новый COMОбъект("ADODB.Connection");
   
   Попытка
      Об_Конект.Open(СтрокаПодключения);
   Исключение
      Сообщить ("Невозможно подключится к Microsoft Excel" + ОписаниеОшибки());
      Возврат Неопределено;
   КонецПопытки;
   
     RS = Новый COMОбъект("ADODB.Recordset");
    
     ТекстЗапроса =
     "SELECT
     |    Лист.*
     |FROM
        |    [Лист1$] as Лист";
   
    Попытка
       RS.Open(ТекстЗапроса, Об_Конект);
    Исключение
       Сообщить ("Проблемы с выполнением запроса");
       Возврат Неопределено;
   КонецПопытки;

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


Besart

передайте COMОбъект в серверную процедуру, или получайте COMОбъект сразу в серверной процедуре

&НаКлиенте
Процедура Заполнить(Команда)
// получаете COMОбъект
   ЗаполнитьНаСервере(COMОбъект);
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере(COMОбъект )
   // выполняете с COMОбъект необходимые действия
КонецПроцедуры // ЗаполнитьНаСервере()

Начинающий 1с

я сначала так и делал, получал все НаСервере и там все заполнял, но данный  код хорошо отработал в файловом варианте, а на клиент - серверном эти ком объекты не сработали, не хотят открывать файл, поэтому я начал делать НаКлиенте

Besart

тогда ХЗ, может дело в сервере?

Начинающий 1с

может быть, наверное на него нужно поставить драйвер  Microsoft.ACE.OLEDB.12.0,
"Спасибо" нажал
Добавлено: 11 окт 2013, 18:08


или я не верно пишу параметры для  SQL  сервера

Dethmontt

Не помню точно... Но разве такая конструкция не работает?
&НаКлиенте
Процедура ПодключитьсяИЗаполнить(Команда)

   Об_Конект = Новый COMОбъект("ADODB.Connection");
   Попытка
      Об_Конект.Open(СтрокаПодключения);
   Исключение
      Сообщить ("Невозможно подключится к Microsoft Excel" + ОписаниеОшибки());
      Возврат;
   КонецПопытки;
   ПередатьУправлениеНаСервер(Об_Конект);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПередатьУправлениеНаСервер(Об_Конект)

   RS = Новый COMОбъект("ADODB.Recordset");
     
      ТекстЗапроса =
      "SELECT
      |    Лист.*
      |FROM
        |    [Лист1$] as Лист";
   
    Попытка
       RS.Open(ТекстЗапроса, Об_Конект);
    Исключение
       Сообщить ("Проблемы с выполнением запроса");
       Возврат;
    КонецПопытки;

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

   
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск