Задача
19.12.2017
09:28
#1
Добрый день!
Помогите, пожалуйста.
Розничная фирма с сетью торговых точек ведет бухгалтерский учет в нетиповой конфигурации на платформе «1С:Предприятие 8» в течение десяти лет. Каждая торговая точка ведет учет в своей информационной базе, в которой содержатся проводки за весь период ведения учета. Ежедневно информация о дневной выручке торговой точки отражается проводками следующей структуры (по каждому товару):
Дт счета 50 «Касса» Кт счета 90 «Продажи» Сумма выручки
Для этого на счете 90 ведется аналитический учет в разрезе товаров. В каждой торговой точке – не более 100 наименований товаров.
Основная цель ведения учета для фирмы – анализ выполнения
утвержденного плана по получению выручки от продаж.
Учет ведется в конфигурации, в состав которой входят:
− план счетов бухгалтерского учета, содержащий два счета – 50 «Касса» (активный) и 90 «Продажи» (активно-пассивный);
− регистр бухгалтерии с набором бухгалтерских проводок за период с 01.03.2016 г. по 31.05.2016 г. Каждая проводка содержит корреспонденцию в дебет счета 50 и кредит счета 90 на сумму продаж за соответствующий день по каждому товару. Другие проводки в информационной базе отсутствуют;
− справочник Товар с пятью наименованиями товаров. Имеется возможность для тестирования вводить дополнительные товары;
− документ Ввод данных для ввода проводок при ведении учета, для тестирования программы. Документ генерирует проводки за каждый день в течение заданного периода по всем товарам, содержащимся в справочнике Товар.
Нужно создать отчет который на основе анализа проводок в информационной базе за заданный период ведения учета в торговой точке определяет максимальный непрерывный отрезок (в днях), в течение которого торговая точка выполняла план по выручке. Принимаются следующие допущения:
1. Дневной план выполнен, если полученная выручка больше
или равна планового показателя.
2. В базе представлены данные за каждый торговый день, но если данные о выручке за какую-то дату или период отсутствуют, то эти дни не считаются торговыми днями и не нарушают непрерывность периода выполнения плана по выручке.
Период, за который производится анализ данных информационной базы, и плановая величина выручки должны вводиться в параметры отчета. Необходимо, чтобы по умолчанию устанавливался период с 01.03.2016 г. по 31.05.2016 г., а плановая величина выручки – 19 000 руб.
Пытаюсь сделать, понять как работает. Но ничего не выходит. Вот максимум который смог сделать, да и тот не работает. Помогите, пожалуйста. Хочу узнать, как это реализовать.
Помогите, пожалуйста.
Розничная фирма с сетью торговых точек ведет бухгалтерский учет в нетиповой конфигурации на платформе «1С:Предприятие 8» в течение десяти лет. Каждая торговая точка ведет учет в своей информационной базе, в которой содержатся проводки за весь период ведения учета. Ежедневно информация о дневной выручке торговой точки отражается проводками следующей структуры (по каждому товару):
Дт счета 50 «Касса» Кт счета 90 «Продажи» Сумма выручки
Для этого на счете 90 ведется аналитический учет в разрезе товаров. В каждой торговой точке – не более 100 наименований товаров.
Основная цель ведения учета для фирмы – анализ выполнения
утвержденного плана по получению выручки от продаж.
Учет ведется в конфигурации, в состав которой входят:
− план счетов бухгалтерского учета, содержащий два счета – 50 «Касса» (активный) и 90 «Продажи» (активно-пассивный);
− регистр бухгалтерии с набором бухгалтерских проводок за период с 01.03.2016 г. по 31.05.2016 г. Каждая проводка содержит корреспонденцию в дебет счета 50 и кредит счета 90 на сумму продаж за соответствующий день по каждому товару. Другие проводки в информационной базе отсутствуют;
− справочник Товар с пятью наименованиями товаров. Имеется возможность для тестирования вводить дополнительные товары;
− документ Ввод данных для ввода проводок при ведении учета, для тестирования программы. Документ генерирует проводки за каждый день в течение заданного периода по всем товарам, содержащимся в справочнике Товар.
Нужно создать отчет который на основе анализа проводок в информационной базе за заданный период ведения учета в торговой точке определяет максимальный непрерывный отрезок (в днях), в течение которого торговая точка выполняла план по выручке. Принимаются следующие допущения:
1. Дневной план выполнен, если полученная выручка больше
или равна планового показателя.
2. В базе представлены данные за каждый торговый день, но если данные о выручке за какую-то дату или период отсутствуют, то эти дни не считаются торговыми днями и не нарушают непрерывность периода выполнения плана по выручке.
Период, за который производится анализ данных информационной базы, и плановая величина выручки должны вводиться в параметры отчета. Необходимо, чтобы по умолчанию устанавливался период с 01.03.2016 г. по 31.05.2016 г., а плановая величина выручки – 19 000 руб.
Пытаюсь сделать, понять как работает. Но ничего не выходит. Вот максимум который смог сделать, да и тот не работает. Помогите, пожалуйста. Хочу узнать, как это реализовать.
Ответили:
пост #2
19.12.2017
09:35
#2
Ответ на
пост №1
Александр Шевченко, а зачем срез итогов стоит как неделя? А план при этом дневной? А вообще наверное рано еще на работу устраиваться. 19.12.2017
11:27
#4
Ответ на
пост №3
Александр Шевченко, там одним запросом не обойтись, сначала надо выбрать данные по дневной выручке, потом анализировать выполняется план или нет, а уже потом выводить максимальный период. 19.12.2017
18:28
#5
Prikum, Пытаюсь сделать программно. Создал в отчете форму и добавил кнопку.
Получился следующий код
[code]&НаСервере
Процедура Сформировать()
Запрос = Новый Запрос;
План = 19000;
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Период,
| ВложенныйЗапрос.Сумма
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Период КАК Период,
| ВложенныйЗапрос.Сумма КАК Сумма
| ИЗ
| (ВЫБРАТЬ
| РегистрБухгалтерии.Период КАК Период,
| СУММА(РегистрБухгалтерии.Сумма) КАК Сумма
| ИЗ
| РегистрБухгалтерии.РегистрБухгалтерии КАК РегистрБухгалтерии
|
| СГРУППИРОВАТЬ ПО
| РегистрБухгалтерии.Период) КАК ВложенныйЗапрос
| ГДЕ
| ВложенныйЗапрос.Сумма >= &План) КАК ВложенныйЗапрос";
Запрос.УстановитьПараметр("План", План);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
// Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
// КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Сформировать();
КонецПроцедуры
[/code]
Как мне теперь посмотреть что у меня получилось? При нажатии на кнопку отчет не формируется. Как его сформировать?
Получился следующий код
[code]&НаСервере
Процедура Сформировать()
Запрос = Новый Запрос;
План = 19000;
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Период,
| ВложенныйЗапрос.Сумма
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Период КАК Период,
| ВложенныйЗапрос.Сумма КАК Сумма
| ИЗ
| (ВЫБРАТЬ
| РегистрБухгалтерии.Период КАК Период,
| СУММА(РегистрБухгалтерии.Сумма) КАК Сумма
| ИЗ
| РегистрБухгалтерии.РегистрБухгалтерии КАК РегистрБухгалтерии
|
| СГРУППИРОВАТЬ ПО
| РегистрБухгалтерии.Период) КАК ВложенныйЗапрос
| ГДЕ
| ВложенныйЗапрос.Сумма >= &План) КАК ВложенныйЗапрос";
Запрос.УстановитьПараметр("План", План);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
// Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
// КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Сформировать();
КонецПроцедуры
[/code]
Как мне теперь посмотреть что у меня получилось? При нажатии на кнопку отчет не формируется. Как его сформировать?
19.12.2017
19:49
#6
Немного переделал, но результат запроса пустой получается. Помогите, пожалуйста
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Запрос = Новый Запрос;
План = 19000;
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Период,
| ВложенныйЗапрос.Сумма
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Период КАК Период,
| ВложенныйЗапрос.Сумма КАК Сумма
| ИЗ
| (ВЫБРАТЬ
| РегистрБухгалтерии.Период КАК Период,
| СУММА(РегистрБухгалтерии.Сумма) КАК Сумма
| ИЗ
| РегистрБухгалтерии.РегистрБухгалтерии КАК РегистрБухгалтерии
|
| СГРУППИРОВАТЬ ПО
| РегистрБухгалтерии.Период) КАК ВложенныйЗапрос
| ГДЕ
| ВложенныйЗапрос.Сумма >= &План) КАК ВложенныйЗапрос";
Запрос.УстановитьПараметр("План", План);
ТЗ=Запрос.Выполнить().Выгрузить();
ВнешнийНабор=Новый Структура("Набор",ТЗ);
СКД=ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкаСКД=ЭтотОбъект.КомпоновщикНастроек.Настройки;
КомпоновщикМакетаКомпоновкиДанных=Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных=КомпоновщикМакетаКомпоновкиДанных.Выполнить(СКД, НастройкаСКД) ;
ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,ВнешнийНабор);
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
//ЭлементыФормы.Результат.Очистить();
//ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.УстановитьДокумент(ЭлементыФормы.Результат);
ТД=ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.Вывести(ПроцессорКомпоновкиДанных);
ТД.Показать();
//РезультатЗапроса = Запрос.Выполнить();
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// ВыборкаДетальныеЗаписи
//КонецЦикла;
КонецПроцедуры
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Запрос = Новый Запрос;
План = 19000;
Запрос.Текст =
"ВЫБРАТЬ
| ВложенныйЗапрос.Период,
| ВложенныйЗапрос.Сумма
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Период КАК Период,
| ВложенныйЗапрос.Сумма КАК Сумма
| ИЗ
| (ВЫБРАТЬ
| РегистрБухгалтерии.Период КАК Период,
| СУММА(РегистрБухгалтерии.Сумма) КАК Сумма
| ИЗ
| РегистрБухгалтерии.РегистрБухгалтерии КАК РегистрБухгалтерии
|
| СГРУППИРОВАТЬ ПО
| РегистрБухгалтерии.Период) КАК ВложенныйЗапрос
| ГДЕ
| ВложенныйЗапрос.Сумма >= &План) КАК ВложенныйЗапрос";
Запрос.УстановитьПараметр("План", План);
ТЗ=Запрос.Выполнить().Выгрузить();
ВнешнийНабор=Новый Структура("Набор",ТЗ);
СКД=ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкаСКД=ЭтотОбъект.КомпоновщикНастроек.Настройки;
КомпоновщикМакетаКомпоновкиДанных=Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных=КомпоновщикМакетаКомпоновкиДанных.Выполнить(СКД, НастройкаСКД) ;
ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,ВнешнийНабор);
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент=
//ЭлементыФормы.Результат.Очистить();
//ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумен
ТД=ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокуме
ТД.Показать();
//РезультатЗапроса = Запрос.Выполнить();
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// ВыборкаДетальныеЗаписи
//КонецЦикла;
КонецПроцедуры
Читают тему
(гостей: 1)