Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 июл 2022, 09:40

Задача

Автор Lobster2017, 19 дек 2017, 09:18

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

Lobster2017

Добрый день!
Помогите, пожалуйста.

Розничная фирма с сетью торговых точек ведет бухгалтерский учет в нетиповой конфигурации на платформе «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 руб.


Пытаюсь сделать, понять как работает. Но ничего не выходит. Вот максимум который смог сделать, да и тот не работает. Помогите, пожалуйста. Хочу узнать, как это реализовать.

AIFrame

Если слишком сложно реализовать на СКД - сделайте на построителе с пост-обработкой строк в цикле. До тупого опишите каждый день по своим критериям, обработайте аналитику и выведите Поле Табличного Документа.
Как грится, сначала делаем, чтобы работало, а уже потом - чтобы работало красиво и быстро.

Lobster2017

Цитата: AIFrame от 19 дек 2017, 09:25
сделайте на построителе с пост-обработкой строк в цикле

Не совсем понял. Если не в СКД, то где это делать?

AIFrame

Просто в обработке.

Lobster2017

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

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

// Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
// КонецЦикла;

КонецПроцедуры


&НаКлиенте
Процедура Команда1(Команда)
Сформировать();
КонецПроцедуры


Как мне теперь посмотреть что у меня получилось? При нажатии на кнопку отчет не формируется. Как его сформировать?
Добавлено: 19 дек 2017, 19:45


Немного переделал. Но результат запроса пустой получается. Пожалуйста,помогите


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

Запрос.УстановитьПараметр("План", План);

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

//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// ВыборкаДетальныеЗаписи
//КонецЦикла;
КонецПроцедуры

AIFrame

Чет вы перемудрили.
Пытаетесь просто одним запросом СКД повторить, я другое имел ввиду.

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск