Отображение каждой даты выбранного периода в таблице (в разных столбцах)

1. Mitay_D 13 29.09.09 10:01 Сейчас в теме
Отчет называется: "Складской учет МПЗ за период"!!! Он выдает только конечные суммы за весь период! Мне необходимо сделать так, чтобы он выдовал сумму за каждый день а потом отдельно сумму за весь период! вот как-то так!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. Mitay_D 13 29.09.09 14:01 Сейчас в теме
Процедура Сформировать(ФлагЗакрытияФормы = 0)
Перем ПериодДляШапкиОтчета;

Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет",?(ПустаяСтрока(РасположениеФайла()) = 1,"СкладскойУчетМПЗ",РасположениеФайла()));
Расшифровка.Установить("ДатаНач", ДатаНач);
Расшифровка.Установить("ДатаКон", ДатаКон);
Расшифровка.Установить("МоноУсловие1", МоноУсловие1);
Расшифровка.Установить("МоноУсловие2", МоноУсловие2);
Расшифровка.Установить("МоноУсловие3", МоноУсловие3);
Расшифровка.Установить("МоноУсловие4", МоноУсловие4);
Расшифровка.Установить("МоноУсловие5", МоноУсловие5);
Расшифровка.Установить("ФлажокУсловие1", ФлажокУсловие1);
Расшифровка.Установить("ФлажокУсловие2", ФлажокУсловие2);
Расшифровка.Установить("ФлажокУсловие4", ФлажокУсловие4);
Расшифровка.Установить("ФлажокУсловие3", ФлажокУсловие3);
Расшифровка.Установить("ФлажокУсловие5", ФлажокУсловие5);
Расшифровка.Установить("СписокУсловие1", СписокУсловие1);
Расшифровка.Установить("СписокУсловие2", СписокУсловие2);
Расшифровка.Установить("СписокУсловие3", СписокУсловие3);
Расшифровка.Установить("СписокУсловие4", СписокУсловие4);
Расшифровка.Установить("СписокУсловие5", СписокУсловие5);
Расшифровка.Установить("Группировки", Группировки);
Расшифровка.Установить("ВыводитьНачОст", ВыводитьНачОст);
Расшифровка.Установить("ВыводитьПриход", ВыводитьПриход);
Расшифровка.Установить("ВыводитьРасход", ВыводитьРасход);
Расшифровка.Установить("ВыводитьКонОст", ВыводитьКонОст);
Расшифровка.Установить("ВсеДаты", ВыводитьВсеДаты); // Дима Федосеев
Расшифровка.Установить("ВыбЕдИзм", ВыбЕдИзм);
Расшифровка.Установить("ВидОтчета",ВидОтчета);
Расшифровка.Установить("ТипыСуммы",ТипыСуммы.ТекущаяСтрока());
Расшифровка.Установить("ТипЦеныДляМатериалов",ТипЦеныДляМатериалов.ТекущаяСтрока());
Расшифровка.Установить("ТипЦеныДляНоменклатуры",ТипЦеныДляНоменклатуры);
Расшифровка.Установить("ТекПоказатьОстатки",ПоказатьОстатки.ТекущаяСтрока());
Расшифровка.Установить("ВыводитьОстаткиСЦенами",ВыводитьОстаткиСЦенами);

ТекРасшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Выгрузить(ТекРасшифровка);
Если ВыводитьОстаткиСЦенами =1 Тогда
Если (Группировки.Пометка(Группировки.НайтиЗначение("МПЗ")) = 0) Тогда
Предупреждение("Отчет по остаткам МПЗ со стоимотью может быть сформирован
|только при условии, что отмечена группировка ""МПЗ""!",5);
Возврат;
КонецЕсли;
КонецЕсли;
Заголовок = "";
СписокГруппировок = СоздатьОбъект("СписокЗначений");
Запрос = СоздатьОбъект("Запрос");

Если ПроверкаДат() = 0 Тогда
Возврат;
ИначеЕсли ДатаКон >= ПолучитьДатуТА() Тогда
ПериодПо = "";
ПериодДляШапкиОтчета = Формат(ДатаНач, "Д ДДММГГГГ") + " - " + Формат(ПолучитьДатуТА(), "Д ДДММГГГГ") + " " + ПолучитьВремяТА(,,);
Иначе
ПериодДляШапкиОтчета = ПериодСтр(ДатаНач, ДатаКон);
ПериодПо = " по ДатаКон";
КонецЕсли;
// Андрей Пономарёв
ПриВыбореЕдОстатков();
// Конец А П
Если ПоказатьОстатки.ТекущаяСтрока() = 2 Тогда
Текст = "//{{ЗАПРОС(Складской учет свободного остатка МПЗ)
// |Период с ДатаНач" + ПериодПо + ";
|Период с ДатаНач по ДатаКон;
|ВидМПЗ = Регистр.МестаХранения.ВидМПЗ;
|МестоХранения = Регистр.МестаХранения.МестоХранения, Регистр.Резервы.МестоХранения;
|МПЗ = Регистр.МестаХранения.МПЗ, Регистр.Резервы.Номенклатура;
//|КоэфОбъБРез = Регистр.Резервы.Номенклатура.ОсновнаяЕдиницаИзмерения.КоэфОбБетонаОбр;
//|КоэфОбъИРез = Регистр.Резервы.Номенклатура.ОсновнаяЕдиницаИзмерения.КоэффициентОбр;
|Владелец = Регистр.МестаХранения.Владелец;
|Качество = Регистр.МестаХранения.Качество;
|ТекДок = Регистр.МестаХранения.ТекущийДокумент;";
Если ВыбЕдИзм = 2 Тогда
Текст = Текст + "
|Количество = Регистр.МестаХранения.ОбъемИзд;";
//|Резерв = (Регистр.Резервы.Количество * КоэфОбъИРез);";
ИначеЕсли ВыбЕдИзм = 3 Тогда
Текст = Текст + "
|Количество = Регистр.МестаХранения.ОбъемБет;";
//|Резерв = (Регистр.Резервы.Количество * КоэфОбъБРез);";
Иначе//Если ВыбЕдИзм = 1 Тогда
Текст = Текст + "
|Количество = Регистр.МестаХранения.Количество;
|Резерв = Регистр.Резервы.Количество;";
КонецЕсли;
//Текст = Текст + "
//";
Иначе
Текст = "//{{Запрос(Складской учет МПЗ)
|Период с ДатаНач"+ ПериодПо + ";
|ВидМПЗ = Регистр.МестаХранения.ВидМПЗ;
|МестоХранения = Регистр.МестаХранения.МестоХранения;
|МПЗ = Регистр.МестаХранения.МПЗ;
|Владелец = Регистр.МестаХранения.Владелец;
|Качество = Регистр.МестаХранения.Качество;
|ТекДок = Регистр.МестаХранения.ТекущийДокумент; ";
Если ВыбЕдИзм = 2 Тогда
Текст = Текст + "
|Количество = Регистр.МестаХранения.ОбъемИзд;"
ИначеЕсли ВыбЕдИзм = 3 Тогда
Текст = Текст + "
|Количество = Регистр.МестаХранения.ОбъемБет;"
Иначе//Если ВыбЕдИзм = 1 Тогда
Текст = Текст + "
|Количество = Регистр.МестаХранения.Количество;"
КонецЕсли;
КонецЕсли;

// определяем количество и значения функций, и их условия
Текст = Текст + ?(ВыводитьНачОст = 1, "Функция КолНачОст = НачОст(Количество);", "");
Текст = Текст + ?(ВыводитьПриход = 1, "Функция КолПриход = Приход(Количество);", "");
Текст = Текст + ?(ВыводитьРасход = 1, "Функция КолРасход = Расход(Количество);", "");
Текст = Текст + ?(ВыводитьКонОст = 1, "Функция КолКонОст = КонОст(Количество);", "");
//Текст = Текст + ?(ВыводитьВсеДаты = 1, "Функция ВсеДаты = ВсеДаты(Количество);", ""); // Дима Федосеев

Если ПоказатьОстатки.ТекущаяСтрока() = 2 Тогда
Текст = Текст + ?(ВыводитьКонОст = 1, "Функция РезКонОст = КонОст(Резерв);", "");
КонецЕсли;

Заголовок = "Отмеченные группировки: " + УстановитьГруппировкиЗапроса(Текст);
Заголовок = Заголовок + РазделительСтрок + "Выбранные условия: ";
Если (ПоказатьОстатки.ТекущаяСтрока() <> 2) Тогда
УстановитьУсловиеЗапроса(1, ФлажокУсловие1, МоноУсловие1, СписокУсловие1, "ВидМПЗ", Текст, Заголовок);
КонецЕсли;
УстановитьУсловиеЗапроса(2, ФлажокУсловие2, МоноУсловие2, СписокУсловие2, "МестоХранения", Текст, Заголовок);
УстановитьУсловиеЗапроса(3, ФлажокУсловие3, МоноУсловие3, СписокУсловие3, "МПЗ", Текст, Заголовок);
УстановитьУсловиеЗапроса(5, ФлажокУсловие5, МоноУсловие5, СписокУсловие5, "Качество", Текст, Заголовок);

Если ПоказатьОстатки.ТекущаяСтрока() = 2 Тогда
Текст = Текст + "Условие (Владелец = ПустойКонтрагент);"
Иначе
УстановитьУсловиеЗапроса(4, ФлажокУсловие4, МоноУсловие4, СписокУсловие4, "Владелец", Текст, Заголовок);
КонецЕсли;
Если Прав(Заголовок, 19) = "Выбранные условия: " Тогда
Заголовок = Заголовок + "нет.";
Иначе
Заголовок = Заголовок + ".";
КонецЕсли;

ПозМПЗ = СписокГруппировок.НайтиЗначение("МПЗ");
Если (ВидОтчета = 2) и (ПоказатьОстатки.ТекущаяСтрока() >= 3) Тогда
Если (ПозМПЗ = 0) Тогда
Предупреждение("Не выбрана группировка МПЗ!");
Возврат;
КонецЕсли;
КонецЕсли;

Запрос.Выполнить(Текст);

ИнформацияОСуммах = ""; // текст информации над таблицей
ТекстПредупреждения = ""; // текст предупреждения под таблицей
ЕстьПредупреждение = 0;


Если ВидОтчета = 2 Тогда
ПредставлениеПоказатьОстатки = "";
ПоказатьОстатки.ПолучитьЗначение(ПоказатьОстатки.ТекущаяСтрока(),ПредставлениеПоказатьОстатки);
Заголовок = Заголовок + РазделительСтрок + "Остаток на конец периода: " + ПредставлениеПоказатьОстатки + ".";
КонецЕсли;

// Для получения остатков с ценами.
Если ВыводитьОстаткиСЦенами = 1 Тогда

ТабИт = СоздатьОбъект("ТаблицаЗначений");
СписокОстМПЗ = СоздатьОбъект("СписокЗначений");
Запрос.Выгрузить(ТабИт, 0);
ТабИт.Свернуть("МПЗ", "");
ТабИт.Выгрузить(СписокОстМПЗ,,,"МПЗ");

ТаблицаСумм = 0;

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

// строка действия, описание см выше.
Действие = СформироватьТаблицуОстатковСЦенами(СписокОстМПЗ)+" ";

ПредставлениеТипыСуммы = "";
ТипыСуммы.ПолучитьЗначение(ТипыСуммы.ТекущаяСтрока(),ПредставлениеТипыСуммы);
Заголовок = Заголовок + РазделительСтрок + "Стоимость: " + ПредставлениеТипыСуммы + ".";
КонецЕсли;
// Андрей Пономарёв
Если ВыбЕдИзм=2 Тогда
Заголовок = Заголовок + " в м3 изд.";
ИначеЕсли ВыбЕдИзм=3 Тогда
Заголовок = Заголовок + " в м3 бет.";
Иначе
Заголовок = Заголовок + " в баз. ед.изм.";
КонецЕсли;
// Конец А П

Если (ТипЗначенияСтр(Таб) <> "Таблица") или (Обновить = 0) Тогда
Таб = СоздатьОбъект("Таблица");
Иначе
Таб.Очистить();
КонецЕсли;

Таб.ИсходнаяТаблица("СкладскойУчетМПЗ");
Состояние("Заполнение выходной таблицы...");

Таб.ВывестиСекцию("Кнопки");

КоличествоГруппировок = СписокГруппировок.РазмерСписка();

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

НомерГруппировкиМПЗ = СписокГруппировок.НайтиЗначение("МПЗ");

Таб.ВывестиСекцию("Заголовок|Показатель");
Если ВыводитьНачОст = 1 Тогда
Таб.ПрисоединитьСекцию("Заголовок|НачОст");
КонецЕсли;
Если ВыводитьПриход = 1 Тогда
Таб.ПрисоединитьСекцию("Заголовок|Приход");
КонецЕсли;
Если ВыводитьРасход = 1 Тогда
Таб.ПрисоединитьСекцию("Заголовок|Расход");
КонецЕсли;


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

Если ВыводитьВсеДаты = 1 Тогда // Дима Федосеев
Таб.ПрисоединитьСекцию("Заголовок|ВсеДаты"); // Дима Федосеев
КонецЕсли; // Дима Федосеев

Если глЗначениеПоУмолчанию("ФиксироватьСтрокиШапкиОтчета") = 1 Тогда
ФиксСтрок = Таб.ВысотаТаблицы();
Иначе
ФиксСтрок = 0;
КонецЕсли;

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

ИтогСуммаВсего = 0;
Если ВыводитьНачОст = 1 Тогда
КолТекОст = Запрос.КолНачОст;
КонецЕсли;
Если ВыводитьКонОст = 1 Тогда
ИтогоКолОст = 0; // для отрицательных остатков
КонецЕсли;

ТаблицаОтчета = СоздатьОбъект("ТаблицаЗначений");

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

ТаблицаОтчета.НоваяКолонка("КолНачОст", "Число", 14, 3);
ТаблицаОтчета.НоваяКолонка("КолПриход", "Число", 14, 3);
ТаблицаОтчета.НоваяКолонка("КолРасход", "Число", 14, 3);
ТаблицаОтчета.НоваяКолонка("КолКонОст", "Число", 14, 3);


ТаблицаОтчета.НоваяКолонка("РезКонОст", "Число", 14, 3);
ТаблицаОтчета.НоваяКолонка("МинОстаток", "Число", 14, 3);
ТаблицаОтчета.НоваяКолонка("КонОстСумма","Число", 15, 2);
ТаблицаОтчета.НоваяКолонка ("ВсеДаты", "Число", 14, 3); // Дима Федосеев
СписокМПЗизЗапроса = СоздатьОбъект("СписокЗначений");
Если (ВидОтчета = 2) и ((ПоказатьОстатки.ТекущаяСтрока() = 3) или (ПоказатьОстатки.ТекущаяСтрока() = 5)) Тогда
ТаблицаИтогов = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТаблицаИтогов, 0, 0);
ТаблицаИтогов.Выгрузить(СписокМПЗизЗапроса, , , "МПЗ");
КонецЕсли;

Если КоличествоГруппировок > 0 Тогда

Если НомерГруппировкиМПЗ = 1 Тогда
ЗапомнитьСтрокуИзСправочника(СписокМПЗизЗапроса);
КонецЕсли;

Пока Запрос.Группировка(1) = 1 Цикл
ЗапомнитьСтроку(1);
Если НомерГруппировкиМПЗ = 2 Тогда
ЗапомнитьСтрокуИзСправочника(СписокМПЗизЗапроса);
КонецЕсли;
Если КоличествоГруппировок = 1 Тогда
Продолжить;
КонецЕсли;
Пока Запрос.Группировка(2) = 1 Цикл
ЗапомнитьСтроку(2);
Если НомерГруппировкиМПЗ = 3 Тогда
ЗапомнитьСтрокуИзСправочника(СписокМПЗизЗапроса);
КонецЕсли;
Если КоличествоГруппировок = 2 Тогда
Продолжить;
КонецЕсли;
Пока Запрос.Группировка(3) = 1 Цикл
ЗапомнитьСтроку(3);
Если НомерГруппировкиМПЗ = 4 Тогда
ЗапомнитьСтрокуИзСправочника(СписокМПЗизЗапроса);
КонецЕсли;
Если КоличествоГруппировок = 3 Тогда
Продолжить;
КонецЕсли;
Пока Запрос.Группировка(4) = 1 Цикл
ЗапомнитьСтроку(4);
Если НомерГруппировкиМПЗ = 5 Тогда
ЗапомнитьСтрокуИзСправочника(СписокМПЗизЗапроса);
КонецЕсли;
Если КоличествоГруппировок = 4 Тогда
Продолжить;
КонецЕсли;
Пока Запрос.Группировка(5) = 1 Цикл
ЗапомнитьСтроку(5);
Если НомерГруппировкиМПЗ = 6 Тогда
ЗапомнитьСтрокуИзСправочника(СписокМПЗизЗапроса);
КонецЕсли;
Если КоличествоГруппировок = 5 Тогда
Продолжить;
КонецЕсли;
Пока Запрос.Группировка(6) = 1 Цикл
ЗапомнитьСтроку(6);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЕсли;

Если (ПоказатьОстатки.ТекущаяСтрока() = 3) или (ПоказатьОстатки.ТекущаяСтрока() = 5) Тогда
Если СписокМПЗизЗапроса.РазмерСписка() = 0 Тогда
ЗапомнитьСтрокуИзСправочника(СписокМПЗизЗапроса);
КонецЕсли;
КонецЕсли;

СтрокаСортировки = "";
Для Сч = 1 По СписокГруппировок.РазмерСписка() Цикл
НаименГруппировки = СписокГруппировок.ПолучитьЗначение(Сч);
Если НаименГруппировки = "МПЗ" Тогда
СтрокаСортировки = СтрокаСортировки + "Порядок,ПолноеНаименование,";
КонецЕсли;
СтрокаСортировки = СтрокаСортировки + НаименГруппировки;
Если Сч < СписокГруппировок.РазмерСписка() Тогда
СтрокаСортировки = СтрокаСортировки + ",";
КонецЕсли;
КонецЦикла;

СтрокаСвертки = СтрокаСортировки + ",НомерГруппировки";

ТаблицаОтчета.Свернуть(СтрокаСвертки, "КолНачОст, КолПриход, КолРасход, КолКонОст, РезКонОст, МинОстаток, КонОстСумма");
ТаблицаОтчета.Сортировать(СтрокаСортировки, 1);

Если ПоказатьОстатки.ТекущаяСтрока() = 5 Тогда

КоличествоСтрок = ТаблицаОтчета.КоличествоСтрок();
Для СчСтрок = 0 По КоличествоСтрок - 1 Цикл
НомерСтроки = КоличествоСтрок - СчСтрок;
ТаблицаОтчета.ПолучитьСтрокуПоНомеру(НомерСтроки);

Если ТаблицаОтчета.НомерГруппировки = НомерГруппировкиМПЗ Тогда
Если ТипЗначенияСтр(ТаблицаОтчета.МПЗ) = "Справочник" Тогда
Если (ТаблицаОтчета.МПЗ.Вид() = "Материалы") или (ТаблицаОтчета.МПЗ.Вид() = "Номенклатура")Тогда
МинОстаток = ТаблицаОтчета.МПЗ.МинОстаток;
Иначе
МинОстаток = 0;
КонецЕсли;
ТаблицаОтчета.МинОстаток = МинОстаток;
КонецЕсли;

Если ТаблицаОтчета.КолКонОст - ТаблицаОтчета.МинОстаток > 0 Тогда
ТаблицаОтчета.УдалитьСтроку(НомерСтроки);
КонецЕсли;
КонецЕсли;
КонецЦикла;

КонецЕсли;

Если (ВыводитьОстаткиСЦенами = 1) или (ПоказатьОстатки.ТекущаяСтрока() = 4) или (ПоказатьОстатки.ТекущаяСтрока() = 5) Тогда

КоличествоСтрок = ТаблицаОтчета.КоличествоСтрок();
Для Сч = 1 По КоличествоГруппировок Цикл

НомерПоследнейГруппировки = КоличествоГруппировок - Сч + 1;

КонОстСумма = 0;
КолКонОст = 0;
МинОстаток = 0;
Для СчСтрок = 1 По КоличествоСтрок Цикл
НомерСтроки = КоличествоСтрок - СчСтрок + 1;
ТаблицаОтчета.ПолучитьСтрокуПоНомеру(НомерСтроки);

Если (ТаблицаОтчета.НомерГруппировки > НомерПоследнейГруппировки) или (ТаблицаОтчета.НомерГруппировки < НомерПоследнейГруппировки - 1) Тогда
Продолжить;
КонецЕсли;

Если ТаблицаОтчета.НомерГруппировки <> НомерПоследнейГруппировки Тогда
ТаблицаОтчета.КонОстСумма = КонОстСумма;
ТаблицаОтчета.КолКонОст = КолКонОст;
ТаблицаОтчета.МинОстаток = МинОстаток;
КонОстСумма = 0;
КолКонОст = 0;
МинОстаток = 0;
Иначе
ТекНаименГруппировки = СписокГруппировок.ПолучитьЗначение(ТаблицаОтчета.НомерГруппировки);
Наимен = ТаблицаОтчета.ПолучитьЗначение(НомерСтроки, ТекНаименГруппировки);
Если (ТекНаименГруппировки = "МПЗ") или (ТекНаименГруппировки = "Владелец") Тогда
Если Наимен.ЭтоГруппа() = 1 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
КонОстСумма = КонОстСумма + ТаблицаОтчета.КонОстСумма;
КолКонОст = КолКонОст + ТаблицаОтчета.КолКонОст;
МинОстаток = МинОстаток + ТаблицаОтчета.МинОстаток;
КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецЕсли;

НаименГруппировки = СписокГруппировок.ПолучитьЗначение(1);

ТаблицаОтчета.ВыбратьСтроки();
Пока ТаблицаОтчета.ПолучитьСтроку() = 1 Цикл
Если ПоказатьОстатки.ТекущаяСтрока() = 4 Тогда
Если ТаблицаОтчета.КолКонОст >= 0 Тогда
Продолжить;
КонецЕсли;
ИначеЕсли ПоказатьОстатки.ТекущаяСтрока() = 5 Тогда
Если (ТаблицаОтчета.КолКонОст - ТаблицаОтчета.МинОстаток) >= 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;

СформироватьСтроку(ТаблицаОтчета.НомерГруппировки);

Если ТаблицаОтчета.НомерГруппировки = 1 Тогда
Наимен = ТаблицаОтчета.ПолучитьЗначение(ТаблицаОтчета.НомерСтроки, НаименГруппировки);

ЭтоГруппа = 0;
Если ТипЗначенияСтр(Наимен) = "Справочник" Тогда
Если Наимен.Вид() <> "" Тогда
ЭтоГруппа = Наимен.ЭтоГруппа();
КонецЕсли;
КонецЕсли;

Если ЭтоГруппа = 0 Тогда
ИтогСуммаВсего = ИтогСуммаВсего + ТаблицаОтчета.КонОстСумма;
ИтогоКолОст = ИтогоКолОст + ТаблицаОтчета.КолКонОст;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Запрос.вНачалоВыборки();
Наимен = "Итого";
ТекДок = "";
ДатаДок = "";
КонОстСумма = ИтогСуммаВсего;
ВывестиСтроку("Итого", "Кол", "", Наимен, ТекДок, ДатаДок, , 1);
ВысТаб = Таб.ВысотаТаблицы();
ШирТаб = 4 + ВыводитьНачОст + ВыводитьПриход + ВыводитьРасход + ВыводитьКонОст;

Если ЕстьПредупреждение = 1 Тогда
Таб.ВывестиСекцию("Предупреждение");
КонецЕсли;


глПоказатьТаблицу(Таб, "СкладскойУчетМПЗ", "Складской учет МПЗ", ФиксСтрок,,,?(ВыводитьОстаткиСЦенами = 1,6,8));

Если (ФлагЗакрытияФормы = 1) или (Обновить = 2) Тогда
СтрокаДействийФормы = "#Закрыть";
КонецЕсли;
КонецПроцедуры // Сформировать()
15. Altair777 644 29.09.09 14:04 Сейчас в теме
16. Арчибальд 2707 29.09.09 14:31 Сейчас в теме
(15) Это пример того, как в угоду "универсальности" (Последний писк! Водопровод и канализация в обной трубе!) достаточно простую вещь доводят до непотребного вида, имхо. Заметь, там еще и авторы разные. Кукрыниксы, блин.
17. Altair777 644 29.09.09 14:37 Сейчас в теме
(16) Угу. Я бы за такое меньше, чем за 1 тыр не взялся.
Нужно же потом здоровье и нервы как-то подлечивать, а на это деньги нужны :-)
2. Ёпрст 1063 29.09.09 10:04 Сейчас в теме
3. Mitay_D 13 29.09.09 10:25 Сейчас в теме
а если поподробнее пожалуйста
4. Altair777 644 29.09.09 10:31 Сейчас в теме
(3) А поподробнее СП почитайте или ЖКК - что такое группировки и какие есть предопеделенные
Вкратце так:

Группировка
Устанавливает порядок выборки информации.
Синтаксис:
Группировка <ИмяГруппировки>|<ПредопредГруппировка>
[Упорядочить по <Порядок>[, <Порядок>]*]
[Без Упорядочивания][Без Групп][Все [ВошедшиеВЗапрос]];

<ПредопредГруппировка>
Ключевое слово одной из встроенных предо­пределенных группировок языка запросов. По этому имени можно будет обращаться к значению группировки из вызывающего программного модуля. Возможные значения приведены ниже.

День
Неделя
Месяц
Квартал
Год

Группировки по дате, дают воз­можность накапливать значения по документам за конкретный период (на каждый день, неделю, месяц и т. д.). В запросе может присутствовать несколько груп­пировок такого типа.
5. Mitay_D 13 29.09.09 10:31 Сейчас в теме
а как еще сделать, чтобы он дни ставил, например у меня период с 1.09.09 по 5.09.09 нужно,чтобы в одном столбце была дата 1.09.09, во втором 2.09.09 в третьем 3.09.09 и так далее!!!!
6. Ёпрст 1063 29.09.09 10:33 Сейчас в теме
(5) Запрос.День вестимо смотреть при обходе группировки День.
7. Mitay_D 13 29.09.09 10:34 Сейчас в теме
8. Altair777 644 29.09.09 10:58 Сейчас в теме
(7) Попробуйте в конструкторе запросов сделать
9. Mitay_D 13 29.09.09 11:08 Сейчас в теме
10. Mitay_D 13 29.09.09 13:27 Сейчас в теме
что-то у меня ваще не получается. пробую создать Группировка День,а он вообще ни как не реагирует!! может у кого есть код уже с тем, чтобы все даты периода выводил? Он выводит мне данные за этот период!! но он не выводит по каждому дню!! он даже не добовляет новые столбцы каждого дня периода!
11. Арчибальд 2707 29.09.09 13:51 Сейчас в теме
(10) Ну и кто тебе писать от балды все будет? Выложи свой код, покажут ошибку.
12. Altair777 644 29.09.09 13:52 Сейчас в теме
А потом обход Группировки День Вы делаете?
Вы с запросами работать умеете вообще?

P.S. И восклицательных знаков поменьше, пожалуйста... А то по ушам сильно стучит :-)
13. Арчибальд 2707 29.09.09 13:58 Сейчас в теме
Кстати, в типовой бухии есть отчет "Диаграмма" . Хошь тебе по дням, хошь по неделям...
18. Mitay_D 13 29.09.09 14:38 Сейчас в теме
работало 2-а программиста!! потом им отказались платить и поставили мне задачу разобраться!! хотя я им говорил, что не шарю!! подкорректировать могу, а что касается глобальных изменений, то я на это не обучался, а им пофиг!!! они согласны работать без этого главное не платить программистам!!
20. Ёпрст 1063 29.09.09 14:42 Сейчас в теме
(18) Выложите целиком своё изделие.. поглядеть.
21. Mitay_D 13 29.09.09 14:46 Сейчас в теме
(20) полностью код??? Здесь я не нашел как файл прикрепить
23. Altair777 644 29.09.09 14:55 Сейчас в теме
(21) файлобменник
Ёпрст очень любит http://webfile.ru/ :-)
19. Altair777 644 29.09.09 14:40 Сейчас в теме
Mitay_D пишет:
главное не платить программистам!!

хм... кажется, мне даже 1 тыр не светит... :-(
22. Mitay_D 13 29.09.09 14:55 Сейчас в теме
24. Altair777 644 29.09.09 14:57 Сейчас в теме
(22) вот сейчас минусов накидают :-)
26. Ёпрст 1063 29.09.09 15:02 Сейчас в теме
(22) Да уж..
Нужно было не флажок делать, а всего лишь в Группировка добавить "по дням" и всё...
и всё "само" бы заработало.
27. Арчибальд 2707 29.09.09 15:17 Сейчас в теме
28. Mitay_D 13 30.09.09 07:22 Сейчас в теме
(26) Ошибку выдает
Запрос.Выполнить(Текст);
{C:\DOCUMENTS AND SETTINGS\FIN\DESKTOP\ДЛЯ МАКСИМА МПЗ\С ВЫБОРОМ(ОТПРАВИТЬ).ERT(2015)}: Количество = Регистр.МестаХранения.Количество;Функция КолНачОст = НачОст(Количество);Функция КолПриход = Приход(Количество);Функция КолРасход = Расход(Количество);Функция КолКонОст = КонОст(Количество);Группировка МПЗ;Группировка ВсеДаты <<?>> ;Условие (ВидМПЗ = МоноУсловие1);Условие (МестоХранения = МоноУсловие2);Условие (МПЗ в МоноУсловие3);
Запрос[9] : Переменная 'ВсеДаты' не опеределена
КолТекОст = Запрос.КолНачОст;
{C:\DOCUMENTS AND SETTINGS\FIN\DESKTOP\ДЛЯ МАКСИМА МПЗ\С ВЫБОРОМ(ОТПРАВИТЬ).ERT(2158)}: Поле агрегатного объекта не обнаружено (КолНачОст)
29. Ёпрст 1063 30.09.09 09:30 Сейчас в теме
(28) еще раз - выкинуть весь свой код и добавить в список группировок группировку по дате.. всё.
25. Altair777 644 29.09.09 14:59 Сейчас в теме
В российской ТиС 9.2 960

ДопИнформация = глПолучитьИнформациюДляКолонки<<?>>(Наимен, "ВыводитьДляМПЗвОтчетах");
{D:\DOWNLOADS\1С\EKSPEREMENTALJNAJA.ERT(1241)}: Функция не обнаружена (глПолучитьИнформациюДляКолонки)
Наимен = глПредставлениеДокумента(Наимен, <<?>>0);
{D:\DOWNLOADS\1С\EKSPEREMENTALJNAJA.ERT(1465)}: Слишком много фактических параметров
Наимен = глПредставлениеДокумента(Наимен, <<?>>0);
{D:\DOWNLOADS\1С\EKSPEREMENTALJNAJA.ERT(1468)}: Слишком много фактических параметров
глПоказатьТаблицу<<?>>(Таб, "СкладскойУчетМПЗ", "Складской учет МПЗ", ФиксСтрок,,,?(ВыводитьОстаткиСЦенами = 1,6,8));
{D:\DOWNLOADS\1С\EKSPEREMENTALJNAJA.ERT(2391)}: Процедура не обнаружена (глПоказатьТаблицу)

MD еще надо
30. Mitay_D 13 30.09.09 09:39 Сейчас в теме
Добавил строчку в коде:
НастраиваемыйСписок.Установить("По Дате", "ПоДате");

ошибка:
Запрос.Выполнить(Текст);
{C:\DOCUMENTS AND SETTINGS\FIN\DESKTOP\ДЛЯ МАКСИМА МПЗ\1234ОРИГИНАЛ.ERT(1996)}: Количество = Регистр.МестаХранения.Количество;Функция КолНачОст = НачОст(Количество);Функция КолПриход = Приход(Количество);Функция КолРасход = Расход(Количество);Функция КолКонОст = КонОст(Количество);Группировка МПЗ;Группировка ПоДате <<?>> ;Условие (ВидМПЗ = МоноУсловие1);Условие (МестоХранения = МоноУсловие2);Условие (МПЗ в МоноУсловие3);
Запрос[10] : Переменная 'ПоДате' не опеределена
КолТекОст = Запрос.КолНачОст;
{C:\DOCUMENTS AND SETTINGS\FIN\DESKTOP\ДЛЯ МАКСИМА МПЗ\1234ОРИГИНАЛ.ERT(2136)}: Поле агрегатного объекта не обнаружено (КолНачОст)
31. Mitay_D 13 30.09.09 10:23 Сейчас в теме
Скинул еще один файл называется: "По Датам в Группировке" ни как не могу избавиться от ошибки.
32. Ёпрст 1063 30.09.09 10:25 Сейчас в теме
(31) Выкладывай оригинальный, НЕ правленный отчет.
33. Mitay_D 13 30.09.09 10:28 Сейчас в теме
(32) выложил, название "Оригинал"
35. Ёпрст 1063 30.09.09 11:55 Сейчас в теме
Для начала, добавь вот это в конец:

	Если Группировки.НайтиЗначение("День") = 0 Тогда
		Группировки.ВставитьЗначение(1,"День","По дням");	
	КонецЕсли;
КонецПроцедуры //УправлениеСпискомГруппировок()
36. Ёпрст 1063 30.09.09 11:55 Сейчас в теме
+35 в конец процы УправлениеСпискомГруппировок()
в "оригинал" и запусти с выбранной галкой день.
37. Mitay_D 13 30.09.09 12:45 Сейчас в теме
(36) получилось, спасибо. Но вот результат должен выглядить вот так:

38. Ёпрст 1063 30.09.09 13:18 Сейчас в теме
(37) Ха... чтоб было так, нужно кодить
:)
Используя Все ВошедшиеВЗапрос + ПрисоединитьСекцию
40. Mitay_D 13 02.10.09 11:58 Сейчас в теме
(38) это значит новый запрос еще делать?
41. Ёпрст 1063 05.10.09 09:06 Сейчас в теме
(40) нет. Это значит правильно обойти результат запроса. И вывести то, что требуется.
39. Altair777 644 30.09.09 14:15 Сейчас в теме
(37) я такое делал и выкладывал тоже по просьбе из форума
http://infostart.ru/public/21031/ - второй файл

А Ёпрст молодец :-)
42. Mitay_D 13 05.10.09 09:50 Сейчас в теме
Добавил
|Группировка День все ВошедшиеВЗапрос;

и
Если НаименГруппировки = "День" Тогда
Таб.присоединитьСекцию("ВсеДаты|ВсеДаты")
КонецЕсли;

Выводит таблицу, но очень странно. большинство значений смещены и даты не указываются, а так же количество прибавленных столбцов совсем не соответствует количеству дат заданного периода
43. Ёпрст 1063 05.10.09 11:19 Сейчас в теме
(42) А ты как думал ? В сказку попал ? Тут думать немного еще надо...
Когда ВывестиСекцию, а когда присоединить...
44. Altair777 644 05.10.09 12:07 Сейчас в теме
(42) А что, в моем примере, который я по почте отправил, разве этого нет?
45. Арчибальд 2707 07.10.09 14:14 Сейчас в теме
Что-то затянулось обсуждение :o
46. Altair777 644 07.10.09 14:37 Сейчас в теме
(45) Я уже сегодня сдал работу :D
47. Арчибальд 2707 07.10.09 14:40 Сейчас в теме
(46) Я тоже :) Но никто не принимает :(
48. Altair777 644 07.10.09 14:47 Сейчас в теме
(47) Предоплату надо брать ;-)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот