Как выгрузить файл Excel в таблицу значений, которая находится на форме?

```1c
    &НаКлиенте
    Процедура ФайлДляЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

    ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
    ДиалогВыбораФайла.Фильтр = "Лист Excel (*.xls; *.xlsx)|*.xls; *.xlsx|";

    Если ДиалогВыбораФайла.Выбрать() Тогда

    Если ФайлДляЗагрузки <> ДиалогВыбораФайла.ПолноеИмяФайла Тогда

    мНомерЕдиницыИзмерения = 0;
    КонецЕсли;

    ФайлДляЗагрузки = ДиалогВыбораФайла.ПолноеИмяФайла;

    //ЗагрузитьСодержимоеExcel();
    Если ЗначениеЗаполнено(ФайлДляЗагрузки) Тогда

    ФайлНаДиске = Новый Файл(ФайлДляЗагрузки);

    Если ФайлНаДиске.Существует() Тогда

    Попытка

    ТабличныйДокумент = Новый ТабличныйДокумент;

    ТабличныйДокумент.Прочитать(ФайлДляЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Значение);

    //вывод в таблицу значений

    ПЗ = Новый ПостроительЗапроса;

    ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

    ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

    ПЗ.ЗаполнитьНастройки();

    ПЗ.Выполнить();

    БазовыеЦены = ПЗ.Результат.Выгрузить();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;

    Иначе
    Сообщить("Файл "" + ФайлДляЗагрузки + "" не существует!");
    КонецЕсли;

    КонецЕсли;

    КонецЕсли;

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

Выдает ошибку: Ошибка при установке значения атрибута контекста (БазовыеЦены): Нельзя изменять поле, содержащее объект данных формы
---
БазовыеЦены = ПЗ.Результат.Выгрузить();
Нельзя присвоить значение таким образом.
Можно построчно добавлять данные в ТЗ:

```1c
    тз_= ПЗ.Результат.Выгрузить();
    Для каждого СтрокаТЗ Из тз_ Цикл
    СтрокаТЗ_БазовыеЦены = БазовыеЦены .ДобавитьСтроку()
    ЗаполнитьЗначениеСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
    КонецЦикла
```

Типа того
---
так на клиенте работает

```1c
    тз_= ПЗ.Результат.Выгрузить();
    Для каждого СтрокаТЗ Из тз_ Цикл
    СтрокаТЗ_БазовыеЦены = БазовыеЦены .Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
    КонецЦикла
```
---
БазовыеЦены = ПЗ.Результат.Выгрузить();
Нельзя присвоить значение таким образом.
Можно построчно добавлять данные в ТЗ:

```1c
    тз_= ПЗ.Результат.Выгрузить();
    Для каждого СтрокаТЗ Из тз_ Цикл
    СтрокаТЗ_БазовыеЦены = БазовыеЦены .ДобавитьСтроку()
    ЗаполнитьЗначениеСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
    КонецЦикла
```

Типа того
---
на сервере нужно сделать?
---
Можно на клиенте, можно на сервере, разницы нет
---
Ну как вы на сервере будете файл открывать , лежащий на своем компе?
таблица должна быть у объекта, котрый на сервере, чтобы сохранились данные...
А вот заполнять ее нужно на форме , но &НаСервере

У вас же есть БазовыеЦены у объекта! зачем вы еще одну таблицу создали как реквизит формы?
Вот вам и проблемы...
---
А кто сказал ,что файл обязан лежать на своем компе? да и если лежит на своем компе никто не мешает скопировать его на сервер, если требуют обстоятельства
---
рядовые пользователи в 99% не имеют доступа к серверам и это правильно!
так что давайте не будем рассматривать бредовые ситуации, а будем решать все же реальные жизненные ...
---
Ну вы конечно чуток переборщили про 99% (может это у вас в компании, тогда не спорю) и как-то уж слишком обобщили "Не имеют доступа к серверам", я бы немного дополнил - хотелось бы, чтобы пользователи имели доступ к определенным ресурсам (серверам, каталогам) с определенными правами (сервер приложений, сервер или каталог файлообменник и т.п.). И я уже не говорю про небольшие компании, где не то что программиста, сисадмина не существует, есть сервак, несколько рабочих мест, удаленка. И кто сказал, что так работать нельзя? Да, есть риски на которые идут осознанно или просто о них не знают. Вот вам что не есть а жизненная ситуация.
---
А вот заполнять ее нужно на форме , но &НаСервере
И почему, интересно именно &НаСервере?
ДанныеФормыКоллекция - Предназначен для моделирования коллекций в данных управляемой формы.
Метод Добавить() - Добавляет элемент в конец коллекции и возвращает его в качестве результата метода.
---
так на клиенте работает

```1c
    тз_= ПЗ.Результат.Выгрузить();
    Для каждого СтрокаТЗ Из тз_ Цикл
    СтрокаТЗ_БазовыеЦены = БазовыеЦены .Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
    КонецЦикла
```
---
скорее всего управляемые формы
нельзя заполнять таблицу формы на клиенте
надо заполнять ее на сервере
---
Да,управляемые формы
---
ТЗ можно заполнять на клиенте, ТЗ на клиенте представляется как "ДанныеФормыКоллекция"
---
Почему нельзя?
ДанныеФормыКоллекция - Предназначен для моделирования коллекций в данных управляемой формы.
Метод Добавить() - Добавляет элемент в конец коллекции и возвращает его в качестве результата метода.
---
хммм.... век живи, век учись
вот как-то столкнулся с тем, что на клиенте не смог работать с коллекцией формы, с тех пор и делаю все на сервере
приму к сведению
---
выгрузить файл Excel в таблицу значений

НИКАК!

Можно только ЗАГРУЗИТЬ.
---
Зачем рядовому пользователю иметь доступ к серверу SQL и 1C вне платформы 1С ?
Я вообще не вижу ни одно причины....
Если вы озвучите мнение хоть одного Системного Администратора, который считает, что рядовые пользователи должны иметь доступы к этим серверам,
я пожалуй пересмотрю свои взгляды.

Вот уж 100% всех задач этих рядовых можно решить без такого доступа!
Если у вас есть любая задача, которая требует по вашему такого доступа - озвучьте ее пожалуйста... ;-)