8.х Передача ТаблицыЗначений с сервера на клиент

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем MyNameNoName, 7 дек 2014.

  1. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Управляемое приложение.
    Добавил реквизит ТЗ - тип: таблица значений.
    На форму добавил кнопку Заполнить.
    Код:
    перем ТЗ;
    Процедура ЗагрузитьНаСервере()
    
        Попытка
            Эксель = Новый COMОбъект("Excel.Application"); // для v7 код будет: Эксель = СоздатьОбъект("Excel.Application");
        Исключение
            Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
            Возврат;
        КонецПопытки;
        Книга = Эксель.WorkBooks.Open("C:\Users\User\Desktop\file001.xls");
        Лист = Книга.WorkSheets(1);
    
        ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
        ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
      
        ТЗ=Новый ТаблицаЗначений;
        ТЗ.Колонки.Добавить("Дата");
      
        Для Строка = 2 По ВсегоСтрок Цикл
            Если СокрЛП(Лист.Cells(Строка,12).Value)<>"" Тогда
                Стр=ТЗ.Добавить();
                Стр.Дата=СокрЛП(Лист.Cells(Строка,2).Value);  
            КонецЕсли;
        КонецЦикла;
           
        Эксель.Quit();
          
    КонецПроцедуры
    
    &НаКлиенте
    Процедура Загрузить(Команда)
        ЗагрузитьНаСервере();
    КонецПроцедуры
    
    Если добавить ТЗ на клиент то:
    {Форма.Форма.Форма(105,25)}: Переменная не определена (ТЗ)
    Необходимо передавать значения в Массив? Тогда в моем случае проще сразу с массивом работать.
    Я видел что ТаблицаЗначений не доступна на клиенте. В этом причина? Как выкрутиться. С Таблицей значений удобнее чем с массивом работать.
    Не могу понять смысл этого нововведения.
  2. TopicStarter Overlay
    MyNameNoName
    Offline

    MyNameNoName Опытный в 1С

    Регистрация:
    17 май 2013
    Сообщения:
    931
    Симпатии:
    0
    Баллы:
    26
    Что вместо таблицы значений лучше в данном случае использовать? Табличный документ. Массив со вложенной структурой?
    Или можно и таблицу значений использовать для достижения наибольшей производительности?
    Спасибо.
    --- Объединение сообщений, 7 дек 2014 ---
    Или нужно как-то хитро создать реквизит, а затем сразу на клиенте все описывать?
    Уже весь вечер и все утро бьюсь, не могу решить данный вопрос.
    Последнее редактирование: 7 дек 2014
  3. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Ну, все правильно...Вы создали реквизит формы с типом "ТаблицаЗначений". Теперь добавьте колонку (рядом кнопочка) с именем "Дата" (т.е. реквизит формы должен повторять структуру той таблицы, которую вы создаете программно, т.е. имена колонок должны совпадать).
    Затем в конце процедуры после загрузки из Эксель "положите" загруженную ТЗ в созданный реквизит формы:
    Код:
    ЗначениеВРеквизитФормы(ТЗ, "ИмяТаблицыРеквизитФормы");
    MyNameNoName нравится это.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    А почему сразу нельзя работать с ТЗ, перейдя на сервер?
  5. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.949
    Симпатии:
    149
    Баллы:
    104
    Да, в общем-то, можно сразу добавлять строки в таблицу-реквизит формы. Если все имена колонок известны заранее.

Поделиться этой страницей