как дописать xls файл
01.12.2011
05:41
#1
"сможете помочь есть такая процедура она выгружает остатки и создает несколько файлов по складам а как сделать чтобы все остатки загружались в один файл
Процедура КнопкаВыгрузитьНажатие(Кнопка) КаталогНаДиске = Новый Файл(ПапкаВыгрузки);
Если НЕ КаталогНаДиске.Существует() Тогда
Ответ = Вопрос( "Каталог """"" + ПапкаВыгрузки + """"" не существует. Создать?",
РежимДиалогаВопрос.ДаНет, 10, КодВозвратаДиалога.Нет, , КодВозвратаДиалога.Нет);
Если Ответ = КодВозвратаДиалога.Да Тогда
СоздатьКаталог(ПапкаВыгрузки);
Иначе Возврат;
КонецЕсли;
КонецЕсли;
Макет = ПолучитьМакет("Макет");
ОбластьСклад = Макет.ПолучитьОбласть("Склад");
ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата",ТекущаяДата());
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто2 КАК Склад,
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| СУММА(ХозрасчетныйОстатки.КоличествоОстатокДт) КАК Количество,
| ХозрасчетныйОстатки.Субконто1.БазоваяЕдиницаИзмерения КАК Единица
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(
| &Дата,
| Счет.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы)
| И (НЕ Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.МатериалыПереданныеВПереработку))
| И (НЕ Счет.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации)),
| ,
| Организация = &Организация) КАК ХозрасчетныйОстатки
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто2,
| ХозрасчетныйОстатки.Субконто1
| |УПОРЯДОЧИТЬ ПО
| Склад,
| Номенклатура |ИТОГИ ПО
| Склад"; РезультатЗапроса = Запрос.Выполнить();
ВыборкаПоСкладам = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСкладам.Следующий() Цикл ТабДокумент = Новый ТабличныйДокумент;
ОбластьСклад.Параметры.Дата = Формат(ТекущаяДата(),"ДЛФ=DD");
ОбластьСклад.Параметры.Заполнить(ВыборкаПоСкладам);
ТабДокумент.Вывести(ОбластьСклад);
Выборка = ВыборкаПоСкладам.Выбрать();
Пока Выборка.Следующий() Цикл ОбластьНоменклатура.Параметры.Заполнить(Выборка);
ТабДокумент.Вывести(ОбластьНоменклатура);
КонецЦикла;
ТабДокумент.ФиксацияСверху = 5;
ТабДокумент.Записать(ПапкаВыгрузки + СокрП(ВыборкаПоСкладам.Склад) + ".xls",ТипФайлаТабличногоДокумента.XLS97);
КонецЦикла;
КонецПроцедуры"
Процедура КнопкаВыгрузитьНажатие(Кнопка) КаталогНаДиске = Новый Файл(ПапкаВыгрузки);
Если НЕ КаталогНаДиске.Существует() Тогда
Ответ = Вопрос( "Каталог """"" + ПапкаВыгрузки + """"" не существует. Создать?",
РежимДиалогаВопрос.ДаНет, 10, КодВозвратаДиалога.Нет, , КодВозвратаДиалога.Нет);
Если Ответ = КодВозвратаДиалога.Да Тогда
СоздатьКаталог(ПапкаВыгрузки);
Иначе Возврат;
КонецЕсли;
КонецЕсли;
Макет = ПолучитьМакет("Макет");
ОбластьСклад = Макет.ПолучитьОбласть("Склад");
ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата",ТекущаяДата());
Запрос.УстановитьПараметр("Организация",Организация);
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто2 КАК Склад,
| ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
| СУММА(ХозрасчетныйОстатки.КоличествоОстатокДт) КАК Количество,
| ХозрасчетныйОстатки.Субконто1.БазоваяЕдиницаИзмерения КАК Единица
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(
| &Дата,
| Счет.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы)
| И (НЕ Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.МатериалыПереданныеВПереработку))
| И (НЕ Счет.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации)),
| ,
| Организация = &Организация) КАК ХозрасчетныйОстатки
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто2,
| ХозрасчетныйОстатки.Субконто1
| |УПОРЯДОЧИТЬ ПО
| Склад,
| Номенклатура |ИТОГИ ПО
| Склад"; РезультатЗапроса = Запрос.Выполнить();
ВыборкаПоСкладам = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСкладам.Следующий() Цикл ТабДокумент = Новый ТабличныйДокумент;
ОбластьСклад.Параметры.Дата = Формат(ТекущаяДата(),"ДЛФ=DD");
ОбластьСклад.Параметры.Заполнить(ВыборкаПоСкладам);
ТабДокумент.Вывести(ОбластьСклад);
Выборка = ВыборкаПоСкладам.Выбрать();
Пока Выборка.Следующий() Цикл ОбластьНоменклатура.Параметры.Заполнить(Выборка);
ТабДокумент.Вывести(ОбластьНоменклатура);
КонецЦикла;
ТабДокумент.ФиксацияСверху = 5;
ТабДокумент.Записать(ПапкаВыгрузки + СокрП(ВыборкаПоСкладам.Склад) + ".xls",ТипФайлаТабличногоДокумента.XLS97);
КонецЦикла;
КонецПроцедуры"
01.12.2011
07:24
#2
"Перепишите код таким образом, чтобы создание и запись табличного документа были вне цикла
ТабДокумент = Новый ТабличныйДокумент;"
Пока ВыборкаПоСкладам.Следующий() Цикл
ОбластьСклад.Параметры.Дата = Формат(ТекущаяДата(),"ДЛФ=DD");
ОбластьСклад.Параметры.Заполнить(ВыборкаПоСкладам);
ТабДокумент.Вывести(ОбластьСклад);
Выборка = ВыборкаПоСкладам.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьНоменклатура.Параметры.Заполнить(Выборка);
ТабДокумент.Вывести(ОбластьНоменклатура);
КонецЦикла;
КонецЦикла;
ТабДокумент.ФиксацияСверху = 5;
ТабДокумент.Записать(ПапкаВыгрузки + СокрП(ВыборкаПоСкладам.Склад) + ".xls",ТипФайлаТабличногоДокумента.XLS97);
КонецПроцедуры
01.12.2011
10:10
#4
"> так он тогда сохранит только последний склад и все
Почему? Сохранятся все склады. Единственное, убрать из имени файла название склада:
ТабДокумент.Записать(ПапкаВыгрузки + "ОстаткиПоСкладам.xls",ТипФайлаТабличногоДокумента.XLS97);"
Почему? Сохранятся все склады. Единственное, убрать из имени файла название склада:
ТабДокумент.Записать(ПапкаВыгрузки + "ОстаткиПоСкладам.xls",ТипФайлаТабличногоДокумента.XLS97);"
01.12.2011
10:58
#5
так он же в цикле берет данные и ни куда их не записывает и при следующем цикле берет другие данные и в итоге после цикла остаются данные с последнего склада
Читают тему
(гостей: 1)