База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сохранить табличную часть в Excel без ошибки типов? › Ответ в теме: Как сохранить табличную часть в Excel без ошибки типов?
Ошибка «Несоответствие типов (параметр номер ‘1’)» при вызове ТабДок.Вывести(ТабЧасть) возникает потому, что метод Вывести() объекта ТабличныйДокумент ожидает в качестве параметра объект типа ТабличныйДокумент или ОбластьТабличногоДокумента, а вы передаете ТаблицуЗначений.
Метод Вывести() не умеет напрямую принимать ТаблицуЗначений.
Как правильно сохранить табличную часть в Excel:
1. Получить ТаблицуЗначений из табличной части (вы это делаете).
2. Создать ТабличныйДокумент.
3. Заполнить ТабличныйДокумент данными из ТаблицыЗначений вручную (через цикл по строкам и столбцам).
4. Сохранить ТабличныйДокумент в файл.
Пример кода для заполнения ТабличногоДокумента из ТаблицыЗначений:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
&НаКлиенте Процедура СохранитьНеНайденное(Команда) // Получаем ТаблицуЗначений с данными ТабЧасть = ПроверкаТабЧасти(); // Создаем ТабличныйДокумент ТабДок = Новый ТабличныйДокумент; // Заполняем заголовки Для НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 Цикл ТабДок.Область(1, НомерКолонки + 1).Текст = ТабЧасть.Колонки[НомерКолонки].Имя; КонецЦикла; // Заполняем данные Для НомерСтроки = 0 По ТабЧасть.Количество() - 1 Цикл Для НомерКолонки = 0 По ТабЧасть.Колонки.Количество() - 1 Цикл Значение = ТабЧасть[НомерСтроки][НомерКолонки]; ТабДок.Область(НомерСтроки + 2, НомерКолонки + 1).Текст = ?(Значение = Неопределено, "", Строка(Значение)); КонецЦикла; КонецЦикла; // Диалог выбора файла Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx"; Диалог.ПолноеИмяФайла = "ТабличнаяЧасть.xlsx"; Если Диалог.Выбрать() Тогда ИмяФайла = Диалог.ПолноеИмяФайла; ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX); Сообщить("Данные успешно сохранены в файл: " + ИмяФайла); КонецЕсли; КонецПроцедуры &НаСервере Функция ПроверкаТабЧасти() Возврат Объект.НеТабличнаяЧасть.Выгрузить(); КонецФункции |
Объяснение:
— Метод Вывести() не подходит для ТаблицыЗначений.
— Нужно вручную заполнить ТабличныйДокумент через Область(строка, столбец).Текст.
— Заголовки берутся из имен колонок ТаблицыЗначений.
— Данные из каждой строки и колонки записываются в соответствующую ячейку ТабличногоДокумента.
— После заполнения вызывается Записать() для сохранения в файл Excel.
Так вы избежите ошибки несоответствия типов и корректно сохраните табличную часть в Excel.