Имя: Пароль:
1C
1С v8
Табдок.записать не работает
0 Camous
 
11.09.13
18:55
Пытался сохранить отчет в файл xls, но ниче не получается. скопировал из модуля менеджера

&НаКлиентеСервере
Процедура СохранитьОтчетВExcel(Команда)
    // Вставить содержимое обработчика.
    Макет = УправлениеПечатью.ПолучитьМакет("Документ.ОтчетОРозничныхПродажах.ПФ_MXL_ОтчетОРозничныхПродажах");
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Чек_Накладная";
    
    Для каждого ЧекККМ Из МассивОбъектов Цикл
        
        НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
        
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ТекущийДокумент", ЧекККМ.Ссылка);
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ОтчетОРозничныхПродажах.Номер КАК Номер,
        |    ОтчетОРозничныхПродажах.Дата КАК Дата,
        |    ОтчетОРозничныхПродажах.КассаККМ КАК КассаККМ,
        |    ОтчетОРозничныхПродажах.ВалютаДокумента КАК Валюта,
        |    ОтчетОРозничныхПродажах.КассаККМ.Представление КАК Покупатель,
        |    ОтчетОРозничныхПродажах.Организация КАК Организация,
        |    ОтчетОРозничныхПродажах.Организация.Префикс КАК Префикс,
        |    ОтчетОРозничныхПродажах.Организация.Представление КАК Поставщик,
        |    ОтчетОРозничныхПродажах.СуммаДокумента КАК СуммаДокумента,
        |    ОтчетОРозничныхПродажах.СуммаВключаетНДС КАК СуммаВключаетНДС,
        |    ОтчетОРозничныхПродажах.Запасы.(
        |        НомерСтроки КАК НомерСтроки,
        |        Номенклатура КАК Номенклатура,
        |        Номенклатура.Представление КАК Запас,
        |        Номенклатура.НаименованиеПолное КАК ЗапасПолноеНаименование,
        |        Номенклатура.Код КАК Код,
        |        Номенклатура.Артикул КАК Артикул,
        |        Характеристика КАК Характеристика,
        |        Количество КАК Количество,
        |        ЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |        Цена КАК Цена,
        |        Сумма КАК Сумма,
        |        СуммаНДС КАК СуммаНДС,
        |        ПроцентСкидкиНаценки,
        |        ВЫБОР
        |            КОГДА ОтчетОРозничныхПродажах.Запасы.ПроцентСкидкиНаценки <> 0
        |                ТОГДА 1
        |            ИНАЧЕ 0
        |        КОНЕЦ КАК ЕстьСкидка
        |    )
        |ИЗ
        |    Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
        |ГДЕ
        |    ОтчетОРозничныхПродажах.Ссылка = &ТекущийДокумент";
        
        Шапка = Запрос.Выполнить().Выбрать();
        Шапка.Следующий();
        
        СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата, ,);
        
        Если Шапка.Дата < Дата('20110101') Тогда
            НомерДокумента = УправлениеНебольшойФирмойСервер.ПолучитьНомерНаПечать(Шапка.Номер, Шапка.Префикс);
        Иначе
            НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Шапка.Номер, Истина, Истина);
        КонецЕсли;        
            
        // Выводим шапку накладной.
        ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
        ОбластьМакета.Параметры.ТекстЗаголовка =
            "Отчет о розничных продажах № "
          + НомерДокумента
          + " от "
          + Формат(Шапка.Дата, "ДЛФ=DD");
        
        ТабДокумент.Вывести(ОбластьМакета);
        
        ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
        ПредставлениеПоставщика = УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
        ОбластьМакета.Параметры.Поставщик = Шапка.Организация;
        ТабДокумент.Вывести(ОбластьМакета);
        
        ЕстьСкидки = Шапка.Запасы.Выгрузить().Итог("ЕстьСкидка") <> 0;
        
        ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
        ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
        ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
        
        ТабДокумент.Вывести(ОбластьНомера);
        
        ТабДокумент.Присоединить(ОбластьДанных);
        Если ЕстьСкидки Тогда
            ТабДокумент.Присоединить(ОбластьСкидок);
        КонецЕсли;
        ТабДокумент.Присоединить(ОбластьСуммы);
        
        ОбластьКолонкаЗапас = Макет.Область("Запас");
        
        Если Не ЕстьСкидки Тогда
            ОбластьКолонкаЗапас.ШиринаКолонки = ОбластьКолонкаЗапас.ШиринаКолонки
                                              + Макет.Область("СуммаБезСкидки").ШиринаКолонки
                                              + Макет.Область("СуммаСкидки").ШиринаКолонки;
        КонецЕсли;
        
        ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
        ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
        ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");
        
        Сумма          = 0;
        СуммаНДС       = 0;
        ВсегоСкидок    = 0;
        ВсегоБезСкидок = 0;
        
        ВыборкаСтрокЗапасы = Шапка.Запасы.Выбрать();
        Пока ВыборкаСтрокЗапасы.Следующий() Цикл
            
            Если НЕ ЗначениеЗаполнено(ВыборкаСтрокЗапасы.Номенклатура) Тогда
                Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
                Продолжить;
            КонецЕсли;
            
            ОбластьНомера.Параметры.Заполнить(ВыборкаСтрокЗапасы);
            ТабДокумент.Вывести(ОбластьНомера);
            
            ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокЗапасы);
            ОбластьДанных.Параметры.Запас = УправлениеНебольшойФирмойСервер.ПолучитьПредставлениеНоменклатурыДляПечати(
                ВыборкаСтрокЗапасы.Запас,
                ВыборкаСтрокЗапасы.Характеристика,
                ВыборкаСтрокЗапасы.Артикул
            );
            
            ТабДокумент.Присоединить(ОбластьДанных);
            
            Скидка = 0;
            
            Если ЕстьСкидки Тогда
                Если ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки = 100 Тогда
                    Скидка = ВыборкаСтрокЗапасы.Цена * ВыборкаСтрокЗапасы.Количество;
                    ОбластьСкидок.Параметры.Скидка         = Скидка;
                    ОбластьСкидок.Параметры.СуммаБезСкидки = Скидка;
                ИначеЕсли ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки = 0 Тогда
                    ОбластьСкидок.Параметры.Скидка         = 0;
                    ОбластьСкидок.Параметры.СуммаБезСкидки = ВыборкаСтрокЗапасы.Сумма;
                Иначе
                    Скидка = ВыборкаСтрокЗапасы.Сумма * ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки / (100 - ВыборкаСтрокЗапасы.ПроцентСкидкиНаценки);
                    ОбластьСкидок.Параметры.Скидка         = Скидка;
                    ОбластьСкидок.Параметры.СуммаБезСкидки = ВыборкаСтрокЗапасы.Сумма + Скидка;
                КонецЕсли;
                ТабДокумент.Присоединить(ОбластьСкидок);
            КонецЕсли;
            
            ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокЗапасы);
            ТабДокумент.Присоединить(ОбластьСуммы);
            Сумма          = Сумма + ВыборкаСтрокЗапасы.Сумма;
            ВсегоСкидок    = ВсегоСкидок + Скидка;
            ВсегоБезСкидок = Сумма + ВсегоСкидок;
            
            СуммаНДС = СуммаНДС + ВыборкаСтрокЗапасы.СуммаНДС;

        КонецЦикла;
        
        // Вывести Итого.
        ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
        ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
        ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");
        
        ТабДокумент.Вывести(ОбластьНомера);
        
        ТабДокумент.Присоединить(ОбластьДанных);
        Если ЕстьСкидки Тогда
            ОбластьСкидок.Параметры.ВсегоСкидок    = ВсегоСкидок;
            ОбластьСкидок.Параметры.ВсегоБезСкидок = ВсегоБезСкидок;
            ТабДокумент.Присоединить(ОбластьСкидок);
        КонецЕсли;
        ОбластьСуммы.Параметры.Всего = Сумма;
        ТабДокумент.Присоединить(ОбластьСуммы);
        
        // Вывести Сумму прописью.
        ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
        СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);                                      
        ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований "
                                                    + Строка(ВыборкаСтрокЗапасы.Количество())
                                                    + ", на сумму "
                                                    + УправлениеНебольшойФирмойСервер.ФорматСумм(СуммаКПрописи,
                                                        Шапка.Валюта);
                                                                                          
        ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи,
                                                                                                        Шапка.Валюта);
        ТабДокумент.Вывести(ОбластьМакета);
    
        // Вывести подписи.
        ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
        ОбластьМакета.Параметры.Заполнить(Шапка);
        ТабДокумент.Вывести(ОбластьМакета);
        
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ЧекККМ);
        
    КонецЦикла;

ТабДокумент.Записать("C:\ОтчетОРознице12.09.13.xls","xls"); //не работает((

        
    

КонецПроцедуры
1 Нуф-Нуф
 
11.09.13
19:00
а что значит не работает?
2 Camous
 
11.09.13
19:08
Желаемый файл не появляется
3 Camous
 
11.09.13
19:09
Пытаюсь получить отчет в xls
4 Нуф-Нуф
 
11.09.13
19:11
режим управляемый? база файловая?
5 Camous
 
11.09.13
19:14
Да
6 Лефмихалыч
 
11.09.13
20:04
(2) чудес не бывает. он появлется, но не на твоем компе, а на сервере приложений
7 Лефмихалыч
 
11.09.13
20:06
и я бы на твоем месте запрос из цикла так вынес