helpf.pro
Регистрация

остатки по регистру накопления за каждый день

bunny
25.10.2010 15:47Прочитано: 9731
где-то ошибка. не вижу где. помогите. кас.книга за каждый день, но остатки не выводит

Код 1C v 8.х
 // формирует отчет в виде табличного документа
//
// Параметры
// ДокРезультат – ТабличныйДокумент или ПолеТабличногоДокумента
//
// Возвращаемое значение:
// ДокРезультат - ТабличныйДокумент
//
Функция СформироватьТабличныйДокумент (ДокРезультат=Неопределено) Экспорт
Если ТипЗнч(ДокРезультат) <> Тип("ПолеТабличногоДокумента") И ТипЗнч(ДокРезультат) <> Тип("ТабличныйДокумент") Тогда
ДокРезультат = Новый ТабличныйДокумент();
Иначе ДокРезультат.Очистить();
КонецЕсли;

Если (Месяц(ДатаНачала) = Месяц(ДатаКонца))
И (Год(ДатаНачала) = Год(ДатаКонца)) Тогда
МесяцОтчета = МассивМесяцев[Месяц(ДатаНачала)];
КонецЕсли;

// получим макеты для результата и обложки
МакетОтчета = ПолучитьМакет("КассоваяКнига");
МакетОбложки = ПолучитьМакет("Обложка");

Многовалютная = КассаКомпании.МноговалютнаяКасса;
НомерЛиста = Неопределено;
ДатаНачала = НачалоДня(ДатаНачала);
ДатаКонца = КонецДня(ДатаКонца);

// получим итоги по дням
ЗапросИтоги = Новый Запрос();
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| НАЧАЛОПЕРИОДА(ДенежныеСредстваКомпанииОстаткиИОбороты.Период, ДЕНЬ) КАК Период,
| ДенежныеСредстваКомпанииОстаткиИОбороты.Валюта КАК Валюта,
| ДенежныеСредстваКомпанииОстаткиИОбороты.СуммаНачальныйОстаток КАК НачальныйОстаток,
| ДенежныеСредстваКомпанииОстаткиИОбороты.СуммаКонечныйОстаток КАК КонечныйОстаток,
| ДенежныеСредстваКомпанииОстаткиИОбороты.СуммаПриход КАК ПриходЗаДень,
| ДенежныеСредстваКомпанииОстаткиИОбороты.СуммаРасход КАК РасходЗаДень,
| ДенежныеСредстваКомпанииОстаткиИОбороты.СтруктурнаяЕдиница КАК КассаКомпании
|ИЗ
| РегистрНакопления.ДенежныеСредстваКомпании.ОстаткиИОбороты(&ДатаНачала, &ДатаКонца, День, , СтруктурнаяЕдиница = &КассаКомпании) КАК ДенежныеСредстваКомпанииОстаткиИОбороты
|
|УПОРЯДОЧИТЬ ПО
| Период,
| Валюта
|ИТОГИ
| СУММА(НачальныйОстаток),
| СУММА(КонечныйОстаток),
| СУММА(ПриходЗаДень),
| СУММА(РасходЗаДень)
|ПО
| КассаКомпании,
| Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНачала, &ДатаКонца),
| Валюта";
ЗапросИтоги.Текст = ТекстЗапроса;
ЗапросИтоги.УстановитьПараметр("ДатаНачала",ДатаНачала);
ЗапросИтоги.УстановитьПараметр("ДатаКонца",ДатаКонца);
ЗапросИтоги.УстановитьПараметр("КассаКомпании",КассаКомпании);
ВыборкаИтогиДни = ЗапросИтоги.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

Результат = ЗапросИтоги.Выполнить();
ТЗВременная = Результат.Выгрузить();
ТЗВременная.Очистить();

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

Запрос = Новый Запрос;
//МВТ = Новый МенеджерВременныхТаблиц;
//Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.Текст =
"ВЫБРАТЬ
| ВременнаяТаблица.КассаКомпании,
| ВременнаяТаблица.Период КАК Период,
| ВременнаяТаблица.НачальныйОстаток,
| ВременнаяТаблица.ПриходЗаДень,
| ВременнаяТаблица.РасходЗаДень,
| ВременнаяТаблица.КонечныйОстаток
|ПОМЕСТИТЬ Таб_Остатки
|ИЗ
| &ТаблицаПараметр КАК ВременнаяТаблица
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(ДенежныеСредстваКомпании.Период, ГОД) КАК ГОД,
| НАЧАЛОПЕРИОДА(ДенежныеСредстваКомпании.Период, МЕСЯЦ) КАК МЕСЯЦ,
| НАЧАЛОПЕРИОДА(ДенежныеСредстваКомпании.Период, ДЕНЬ) КАК Период,
| ДенежныеСредстваКомпании.СтруктурнаяЕдиница КАК КассаКомпании,
| ДенежныеСредстваКомпании.Регистратор КАК Документ,
| ДенежныеСредстваКомпании.Регистратор.Номер КАК НомерДок,
| ВЫБОР
| КОГДА ДенежныеСредстваКомпании.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
| ТОГДА ""Принято от ""
| КОГДА ДенежныеСредстваКомпании.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер
| ТОГДА ""Выдано ""
| ИНАЧЕ ДенежныеСредстваКомпании.СтатьяДДС
| КОНЕЦ КАК СтрокаДДС,
| ДенежныеСредстваКомпании.Регистратор.Контрагент КАК Контрагент,
| ДенежныеСредстваКомпании.Регистратор.Основание КАК Основание,
| ДенежныеСредстваКомпании.Регистратор.ВалютаДокумента КАК Валюта,
| ДенежныеСредстваКомпании.Регистратор.СтатьяДДС.КоррСчет КАК КоррСчет,
| ВЫБОР
| КОГДА ДенежныеСредстваКомпании.ВидДвижения = &Приход
| ТОГДА ДенежныеСредстваКомпании.Сумма
| ИНАЧЕ 0
| КОНЕЦ КАК Приход,
| ВЫБОР
| КОГДА ДенежныеСредстваКомпании.ВидДвижения = &Расход
| ТОГДА ДенежныеСредстваКомпании.Сумма
| ИНАЧЕ 0
| КОНЕЦ КАК Расход,
| ВЫБОР
| КОГДА ДенежныеСредстваКомпании.ВидДвижения = &Приход
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоПриходных,
| ВЫБОР
| КОГДА ДенежныеСредстваКомпании.ВидДвижения = &Расход
| ТОГДА 1
| ИНАЧЕ 0
| КОНЕЦ КАК КоличествоРасходных
|ПОМЕСТИТЬ Таб_Документы
|ИЗ
| РегистрНакопления.ДенежныеСредстваКомпании КАК ДенежныеСредстваКомпании
|ГДЕ
| ДенежныеСредстваКомпании.СтруктурнаяЕдиница = &КассаКомпании
| И ДенежныеСредстваКомпании.Период МЕЖДУ &НачПериода И &КонПериода
| И (НЕ ДенежныеСредстваКомпании.Регистратор ССЫЛКА Документ.ПереоценкаВалютныхСредств)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Таб_Остатки.КассаКомпании КАК КассаКомпании,
| Таб_Остатки.Период КАК Год,
| Таб_Остатки.Период КАК Месяц,
| Таб_Остатки.Период КАК Период,
| Таб_Остатки.НачальныйОстаток КАК НачальныйОстаток,
| Таб_Остатки.ПриходЗаДень КАК ПриходЗаДень,
| Таб_Остатки.РасходЗаДень КАК РасходЗаДень,
| Таб_Остатки.КонечныйОстаток КАК КонечныйОстаток,
| Таб_Документы.Документ КАК Документ,
| Таб_Документы.НомерДок,
| Таб_Документы.СтрокаДДС,
| Таб_Документы.Контрагент,
| Таб_Документы.Основание КАК Основание,
| Таб_Документы.Валюта,
| Таб_Документы.КоррСчет,
| Таб_Документы.КоличествоПриходных КАК КоличествоПриходных,
| Таб_Документы.КоличествоРасходных КАК КоличествоРасходных,
| Таб_Документы.Приход,
| Таб_Документы.Расход
|ИЗ
| Таб_Остатки КАК Таб_Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ Таб_Документы КАК Таб_Документы
| ПО Таб_Остатки.КассаКомпании = Таб_Документы.КассаКомпании
| И Таб_Остатки.Период = Таб_Документы.Период
|
|УПОРЯДОЧИТЬ ПО
| Период
|ИТОГИ
| СУММА(КоличествоПриходных),
| СУММА(КоличествоРасходных)
|ПО
| Год,
| Месяц,
| Период";
Запрос.УстановитьПараметр("НачПериода" , ДатаНачала);
Запрос.УстановитьПараметр("КонПериода" , ДатаКонца);
Запрос.УстановитьПараметр("КассаКомпании" , КассаКомпании);
Запрос.УстановитьПараметр("Приход" , ВидДвиженияНакопления.Приход);
Запрос.УстановитьПараметр("Расход" , ВидДвиженияНакопления.Расход);
Запрос.УстановитьПараметр("ТаблицаПараметр", ТЗВременная);

//Запрос.Выполнить().Выгрузить().ВыбратьСтроку();

// Получим нужные области макета
ИмяОбласти = ?(ВыводитьОснования,"Широкая","") + ?(Многовалютная,"Многовалютная","");
ОбластьМакетаВкладнойЛист = МакетОтчета.ПолучитьОбласть("ВкладнойЛист|Отчет");
ОбластьМакетаОтчетКассира = МакетОтчета.ПолучитьОбласть("ОтчетКассира|Отчет");
ОбластьМакетаШапка = МакетОтчета.ПолучитьОбласть("Шапка|Отчет");
ОбластьМакетаОстатокНаНД = МакетОтчета.ПолучитьОбласть("ОстатокНаНД|Отчет");
ОбластьМакетаСтрока = МакетОтчета.ПолучитьОбласть("Строка" + ИмяОбласти + "|Отчет");
ОбластьМакетаПеренос = МакетОтчета.ПолучитьОбласть("Перенос|Отчет");
ОбластьМакетаОборот = МакетОтчета.ПолучитьОбласть("Оборот|Отчет");
ОбластьМакетаОборотРуб = МакетОтчета.ПолучитьОбласть("ОборотРуб|Отчет");
ОбластьМакетаОборотВал = МакетОтчета.ПолучитьОбласть("ОборотВал|Отчет");
ОбластьМакетаКонечныйОстаток = МакетОтчета.ПолучитьОбласть("КонечныйОстаток|Отчет");
ОбластьМакетаПодвал = МакетОтчета.ПолучитьОбласть("Подвал|Отчет");
ОбластьМакетаЛистовЗаМесяц = МакетОтчета.ПолучитьОбласть("ЛистовЗаМесяц|Отчет");
ОбластьМакетаЛистовЗаГод = МакетОтчета.ПолучитьОбласть("ЛистовЗаГод|Отчет");
ОбластьМакетаВТомЧисле = МакетОтчета.ПолучитьОбласть("ВТомЧисле|Отчет");
ОбластьМакетаОстаток = МакетОтчета.ПолучитьОбласть("Остаток|Отчет");
ОбластьМакетаВалОстаток = МакетОтчета.ПолучитьОбласть("ВалОстаток|Отчет");

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

счИтоги = 0;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаГоды = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Год");
Количество = РезультатЗапроса.Выбрать().Количество();

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

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

Пока ВыборкаДни.Следующий() Цикл
счДеньГода = счДеньГода + 1;
счДеньМесяца = счДеньМесяца + 1;

// Выведем параметры "дня"
ОбластьМакетаВкладнойЛист.Параметры.ЗаголовокЛиста = "КАССА за " + Формат(ВыборкаДни.Период,"ДФ=dd.MM.yyyy");
ДокРезультат.Вывести(ОбластьМакетаВкладнойЛист);
ОбластьМакетаОтчетКассира.Параметры.ЗаголовокЛиста = "КАССА за " + Формат(ВыборкаДни.Период,"ДФ=dd.MM.yyyy");
ДокРезультат.Присоединить(ОбластьМакетаОтчетКассира);
ОбластьМакетаШапка.Параметры.ТекстНомерЛиста = НомерЛиста;
ДокРезультат.Вывести(ОбластьМакетаШапка);
ДокРезультат.Присоединить(ОбластьМакетаШапка);

//Выведем параметры "дня"
ОбластьМакетаОстатокНаНД.Параметры.НачальныйОстаток = ВыборкаДни.НачальныйОстаток;
ДокРезультат.Вывести(ОбластьМакетаОстатокНаНД);
ДокРезультат.Присоединить(ОбластьМакетаОстатокНаНД);

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

//Выведем все обороты по валютам
ОбластьМакетаОборот.Параметры.ПриходЗаДень = ВыборкаДни.ПриходЗаДень;
ОбластьМакетаОборот.Параметры.РасходЗаДень = ВыборкаДни.РасходЗаДень;
ДокРезультат.Вывести(ОбластьМакетаОборот);
ДокРезультат.Присоединить(ОбластьМакетаОборот);

//Выведем все остатки на конец дня по валютам
ОбластьМакетаКонечныйОстаток.Параметры.ОстатокКонец = ВыборкаДни.КонечныйОстаток;
ДокРезультат.Вывести(ОбластьМакетаКонечныйОстаток);
ДокРезультат.Присоединить(ОбластьМакетаКонечныйОстаток);

ДокРезультат.Вывести(ОбластьМакетаПодвал);
ДокРезультат.Присоединить(ОбластьМакетаПодвал);

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

КонецФункции // СформироватьТабличныйДокумент()
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
25.10.2010 16:55Ответ № 1
на первый взгляд ничего не видно, нужно смотреть каждый запрос в консоли
bunny
26.10.2010 12:51Ответ № 2
[url=http://s008.radikal.ru/i303/1010/4f/f61aa017683f.jpg][/url]

картинка с результатом последнего запроса
E_Migachev
26.10.2010 13:41Ответ № 3
т.е. запрос выполняется ) а отладчиком выборку проверяла?
bunny
26.10.2010 15:21Ответ № 4
ошибка - не на том уровне брала начальный остаток)
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.