|
Не корректно работает выгрузка в Excel | ☑ | ||
---|---|---|---|---|
0
Alex70
07.08.18
✎
04:42
|
Всем привет! На форме есть кнопку "Выгрузить в Excel" по нажатию на которую открывается окно для выбора пути сохранения файла, после пользователь выбирает путь и вводит имя файла, жмет ОК после чего необходимо выгрузить структуру в Excel, документ формируется согласно макету созданному в 1С, но данные не загружает в ЕКСЕЛ. Тестировал запрос с помощью обработки "Консоль отчетов" все выводится. Что делаю не так подскажите?
________________________________________________________________ Процедура КоманднаяПанельТоварыВыгрузитьДеревоСпецификаций(Кнопка = Неопределено, ПутьКФайлу = "", Спецификация = Неопределено) Если НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); ДиалогВыбораФайла.Заголовок = "Задайте имя файла выгрузки"; ДиалогВыбораФайла.Фильтр = "Формат выгрузки(*.xls)|*.xls|Лист Excel 2007 (*.xlsx)|*.xlsx"; Если ДиалогВыбораФайла.Выбрать() Тогда ПолеИмениФайла = ДиалогВыбораФайла.ПолноеИмяФайла; КонецЕсли; Если НЕ ЗначениеЗаполнено(ПолеИмениФайла) Тогда Возврат; КонецЕсли; Иначе ПолеИмениФайла = ПутьКФайлу; КонецЕсли; // Получаем текущую строку ТекСтрока = ЭлементыФормы.Товары.ТекущаяСтрока; ТекущаяНоменклатура = ТекСтрока.Номенклатура; //ТекущееКоличество = ТекСтрока.Итого; ТабличныйДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("МакетДереваСпецификаций"); ОбластьШапкаОсновное = Макет.ПолучитьОбласть("Шапка|Основное"); ОбластьШапкаКолонка = Макет.ПолучитьОбласть("Шапка|Колонка"); ТабличныйДокумент.Вывести(ОбластьШапкаОсновное); ТабличныйДокумент.Присоединить(ОбластьШапкаКолонка); ОбходДереваСпецификаций(Макет, ТабличныйДокумент, 0, Спецификация = Неопределено, ТекущаяНоменклатура); Если Прав(ПолеИмениФайла,3) = "xls" Тогда ТабличныйДокумент.Записать(ПолеИмениФайла,ТипФайлаТабличногоДокумента.XLS); Иначе ТабличныйДокумент.Записать(ПолеИмениФайла,ТипФайлаТабличногоДокумента.XLSX); КонецЕсли; Книга = Неопределено; Попытка олеЕксель = новый COMОбъект("Excel.Application"); Книга = олеЕксель.Workbooks.Open(ПолеИмениФайла); Книга.Application.DisplayAlerts = False; Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Книга.Save(); Книга.Application.Quit(); КонецПроцедуры _________________________________________________________________ Процедура ОбходДереваСпецификаций(Макет, ТабличныйДокумент, Уровень, Спецификация = Неопределено, ТекущаяНоменклатура) // Определяем спецификацию поумолчанию Если Спецификация = Неопределено Тогда СпецификацияОбхода = УправлениеПроизводством.ОпределитьСпецификациюПоУмолчанию(ТекущаяНоменклатура,,ТекущаяДата()); // Узел.Номенклатура Иначе СпецификацияОбхода = Спецификация; КонецЕсли; Если Не ЗначениеЗаполнено(СпецификацияОбхода) Тогда Возврат; КонецЕсли; ЗапросПодборКомплектующих = Новый Запрос; ЗапросПодборКомплектующих.Текст = "ВЫБРАТЬ | СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура, | СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура.Артикул, | СпецификацииНоменклатурыИсходныеКомплектующие.Количество, | СпецификацииНоменклатурыИсходныеКомплектующие.НомерСтроки |ИЗ | Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие |ГДЕ | СпецификацииНоменклатурыИсходныеКомплектующие.Спецификация = &Спецификация"; ЗапросПодборКомплектующих.УстановитьПараметр("Спецификация", СпецификацияОбхода); ВыборкаПодборКомплектующих = ЗапросПодборКомплектующих.Выполнить().Выбрать(); Пока ВыборкаПодборКомплектующих.Следующий() Цикл Если Уровень = 0 Тогда ОбластьСтрокаОсновное = Макет.ПолучитьОбласть("Строка|ОсновноеСтрока"); ОбластьСтрокаКолонка = Макет.ПолучитьОбласть("Строка|КолонкаСтрока"); ИначеЕсли Уровень > 6 Тогда ОбластьСтрокаОсновное = Макет.ПолучитьОбласть("Строка7|ОсновноеСтрока7"); ОбластьСтрокаКолонка = Макет.ПолучитьОбласть("Строка7|КолонкаСтрока7"); Иначе ОбластьСтрокаОсновное = Макет.ПолучитьОбласть("Строка"+Уровень+"|ОсновноеСтрока"+Уровень); ОбластьСтрокаКолонка = Макет.ПолучитьОбласть("Строка"+Уровень+"|КолонкаСтрока"+Уровень); КонецЕсли; ОбластьСтрокаОсновное.Параметры.Номер = ВыборкаПодборКомплектующих.НомерСтроки; ОбластьСтрокаОсновное.Параметры.Наименование = ВыборкаПодборКомплектующих.Номенклатура; ОбластьСтрокаОсновное.Параметры.Артикул = ВыборкаПодборКомплектующих.Номенклатура.Артикул; ТабличныйДокумент.Вывести(ОбластьСтрокаОсновное); ОбластьСтрокаКолонка.Параметры.Количество = ВыборкаПодборКомплектующих.Количество;// Строка.Количество; //* Узел.Количество; ТабличныйДокумент.Присоединить(ОбластьСтрокаКолонка); ТабличныйДокумент.Показать(); //Если ВыборкаПодборКомплектующих.Строки.Количество() > 0 Тогда // // ТабличныйДокумент.НачатьГруппуСтрок(); // //КонецЕсли; ОбходДереваСпецификаций(Макет, ТабличныйДокумент, Уровень + 1, Спецификация = Неопределено, ТекущаяНоменклатура); //Если ВыборкаПодборКомплектующих.Строки.Количество() > 0 Тогда // // ТабличныйДокумент.ЗакончитьГруппуСтрок(); // //КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
hhhh
07.08.18
✎
23:36
|
(0) чего-то записываешь файл и тут же через наносекунду уже читаешь. Дай хоть ему время записаться.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |