Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 03:23

Материальный отчет

Автор E_x, 28 фев 2012, 09:17

0 Пользователей и 1 гость просматривают эту тему.

E_x

Добрый день. Пытаюсь сделать материальный отчет с расшифровкой по складам(указывается с какого склада и сколько ед. товара поступило(вместе со стоимостью само собой)).
Возникла проблема. При формировании по номеклатуре, "едет таблица". Т.е. если при выборке не найдено значений, то таблица как бы сдвигается влево. Можно ли как-нибудь реализовать выборку абсолютно всех значений, даже если они пустые, и выводить их?
Прикладываю таблицу, которая "едет". Данная таблица "едет" на 2 колонки влево(об этом понятно,по надписи "Приход всего"). Как это устранить можно? Заранее спасибо.

Файл обработки прикладываю.

E_x

Вообще мыслей никаких нет?!?!

sergeevds

у меня тут 8.2 нету, пришли лучше свой запрос, или как у тебя там формируется твоя таблица.

E_x

Процедура Отчет(ТабДок, Д1, Д2, Организация, Склад, Счет) Экспорт
п=0;
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Макет = ВнешняяОбработкаОбъект.ПолучитьМакет("Отчет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОбороты.КорСубконто1 КАК КорСубконто1,
| ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборотДт,
| ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт,
| ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
| ХозрасчетныйОбороты.КоличествоОборотДт КАК КоличествоОборотДт,
| ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоОборотКт,
| ХозрасчетныйОбороты.КорСчет КАК КорСчет,
| ВЫБОР
| КОГДА ХозрасчетныйОбороты.СуммаОборотДт > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК ПрихоодРасход,
| ВЫБОР
| КОГДА ХозрасчетныйОбороты.КорСчет В (&счПоступление)
| ТОГДА ""ПОСТ""
| ИНАЧЕ ВЫБОР
| КОГДА ХозрасчетныйОбороты.КорСчет В (&счАванс)
| ТОГДА ""Аванс""
| ИНАЧЕ ""Прочее""
| КОНЕЦ
| КОНЕЦ КАК Операции
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| &Д1,
| &Д2,
| Период,
| Счет = &Счет,
| ,
| Организация = &Организация
| И Субконто3 = &Склад,
| ,
| ) КАК ХозрасчетныйОбороты
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.КорСубконто1,
| ХозрасчетныйОбороты.СуммаОборотКт,
| ХозрасчетныйОбороты.Субконто1,
| ХозрасчетныйОбороты.КоличествоОборотДт,
| ХозрасчетныйОбороты.КоличествоОборотКт,
| ХозрасчетныйОбороты.КорСчет,
| ВЫБОР
| КОГДА ХозрасчетныйОбороты.СуммаОборотДт > 0
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ,
| ХозрасчетныйОбороты.СуммаОборотДт
|ИТОГИ
| СУММА(СуммаОборотДт),
| СУММА(СуммаОборотКт),
| СУММА(КоличествоОборотДт),
| СУММА(КоличествоОборотКт)
|ПО
| ОБЩИЕ,
| Субконто1,
| КорСчет,
| ПрихоодРасход,
| Операции,
| КорСубконто1";

Запрос.УстановитьПараметр("Д1", Д1);
Запрос.УстановитьПараметр("Д2", Д2);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Счет", Счет);
    счПоступление=новый СписокЗначений();
счПоступление.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками);
счПоступление.Добавить(ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами);
счПоступление.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПоставщикамиИПодрядчиками);
счПоступление.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПрочимиПокупателямиИЗаказчиками);
    счАванс=новый СписокЗначений();
счАванс.Добавить(ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами);

запрос.УстановитьПараметр("СчАванс",счАванс);
запрос.УстановитьПараметр("счПоступление",счПоступление);
Результат = Запрос.Выполнить();

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
ОбластьСубконто1 = Макет.ПолучитьОбласть("Субконто1");
// ОбластьКорСчет = Макет.ПолучитьОбласть("КорСчет");
// ОбластьКорСубконто1 = Макет.ПолучитьОбласть("КорСубконто1");
//----------------------------Объявление областей отчета---------------------------------//
    ШапкаНоменклатура=Макет.ПолучитьОбласть("ШапкаТаблицы | Номенклатура");
ШапкаПриходВсего=Макет.ПолучитьОбласть("ШапкаТаблицы | ПриходВсего");
ШапкаПриходСубконто1=Макет.ПолучитьОбласть("ШапкаТаблицы | ПриходСубконто1");
ШапкаОперация=Макет.ПолучитьОбласть("ШапкаТаблицы | Операция");
ОбщиеИтогиНоменклатура=Макет.ПолучитьОбласть("ОбщиеИтоги | Номенклатура");
ОбщиеИтогиПриходВсего=Макет.ПолучитьОбласть("ОбщиеИтоги | ПриходВсего");
ОбщиеИтогиПриходСубконто1=Макет.ПолучитьОбласть("ОбщиеИтоги | ПриходСубконто1");
ОбщиеИтогиОперация=Макет.ПолучитьОбласть("ОбщиеИтоги | Операция");
Субконто1Номенклатура=Макет.ПолучитьОбласть("Субконто1 | Номенклатура");
Субконто1ПриходВсего=Макет.ПолучитьОбласть("Субконто1 | ПриходВсего");
Субконто1ПриходСубконто1=Макет.ПолучитьОбласть("Субконто1 | ПриходСубконто1");
Субконто1Операция=Макет.ПолучитьОбласть("Субконто1 | Операция");
//----------------------------Объявление областей отчета---------------------------------//
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);

//-------------------------------------------Заголовок!------------------------------------------------------//
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    ВыборкаОбщийИтог.Следующий(); // Общий итог
ТабДок.Вывести(ШапкаНоменклатура);
ВыборкаКорСчет = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Операции");
Пока ВыборкаКорСчет.Следующий() Цикл
ШапкаОперация.Параметры.Заполнить(ВыборкаКорСчет);
        ТабДок.Присоединить(ШапкаОперация);
Если ВыборкаКорСчет.Операции = "ПОСТ" тогда
Кон = ВыборкаКорСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"КорСубконто1");

пока кон.Следующий() цикл
ШапкаПриходСубконто1.Параметры.Заполнить(кон);
ТабДок.Присоединить(ШапкаПриходСубконто1);
конеццикла;
КонецЕсли;
КонецЦикла;
ТабДок.Присоединить(ШапкаПриходВсего);
ТабДок.НачатьАвтогруппировкуСтрок();
//-------------------------------------------Заголовок!------------------------------------------------------//

//-----------------------------------------Общие Итоги------------------------------------------------------//

ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  ВыборкаОбщийИтог.Следующий(); // Общий итог
ТабДок.Вывести(ОбщиеИтогиНоменклатура);
ВыборкаКорСчет = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Операции");
    Пока ВыборкаКорСчет.Следующий() Цикл
ОбщиеИтогиОперация.Параметры.Заполнить(ВыборкаКорСчет);
ТабДок.Присоединить(ОбщиеИтогиОперация);
Если ВыборкаКорСчет.Операции = "ПОСТ" тогда
Кон = ВыборкаКорСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока кон.Следующий() цикл
ОбщиеИтогиПриходСубконто1.Параметры.Заполнить(кон);
ТабДок.Присоединить(ОбщиеИтогиПриходСубконто1);
КонецЦикла;
КонецЕсли;

КонецЦикла;
ТабДок.Присоединить(ОбщиеИтогиПриходВсего);

//-----------------------------------------Общие Итоги------------------------------------------------------//

//--------------------------------------------Субконто------------------------------------------------------//

ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  ВыборкаОбщийИтог.Следующий(); // Общий итог
ВыборкаСубконто1 = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Субконто1");
    Пока ВыборкаСубконто1.Следующий() Цикл
Субконто1Номенклатура.Параметры.Заполнить(ВыборкаСубконто1);
ТабДок.Вывести(Субконто1Номенклатура);
ВыборкаКорСчет = ВыборкаСубконто1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Операции");
Пока ВыборкаКорСчет.Следующий() Цикл             
////Если ВыборкаКорСчет.СуммаОборотДт = 0 тогда Субконто1Операция.Параметры.СуммаОборотДт = "0";
//// иначе
Субконто1Операция.Параметры.Заполнить(ВыборкаКорСчет);
////КонецЕсли;
          //Субконто1Операция.Параметры.Заполнить(ВыборкаКорСчет);
ТабДок.Присоединить(Субконто1Операция);
Если ВыборкаКорСчет.Операции = "ПОСТ" тогда
//Кон = ВыборкаКорСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Кон = ВыборкаКорСчет.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"КорСубконто1","Субконто1");
Пока кон.Следующий() цикл
Если кон.СуммаОборотДт = Null тогда Субконто1ПриходСубконто1.Параметры.СуммаОборотДт = "0";
иначе
Субконто1ПриходСубконто1.Параметры.Заполнить(кон);
КонецЕсли;
ТабДок.Присоединить(Субконто1ПриходСубконто1);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ШапкаПриходВсего.Параметры.Заполнить(ВыборкаСубконто1);
ТабДок.Присоединить(Субконто1ПриходВсего);
КонецЦикла;
//--------------------------------------------Субконто------------------------------------------------------//

ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);

//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
КонецПроцедуры

Вот оно )

E_x

да что же это такое?! в предварительном просмотре все нормально.. а тут понаделал html-тэгов..:(

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск