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

Не могу понять как получить выручку за сегодняшний день.

Автор micahbell, 02 ноя 2024, 05:03

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

micahbell

Вот я хочу получить выручку по документам продажа за сегодняшний день.Я вот написал такой запрос, но вообще ничего не происходит при нажатии на кнопку(сам запрос в обработке).

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

Тек_Год = Год(ТекущаяДата());
Тек_Месяц = Месяц(ТекущаяДата());
Тек_День = День(ТекущаяДата());

ОбщаяДатаНаСегодня = Дата(Тек_Год, Тек_Месяц, Тек_День);

Запрос.УстановитьПараметр("Дата", ОбщаяДатаНаСегодня);

РезультатЗапроса = Запрос.Выполнить();

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

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

Выгрузка:

alexandr_ll

micahbell, Вы делаете запрос на время 0.00.00 текущей даты. Запрос нужно делать за период с начала дня по конец дня. Например
https://helpme1s.ru/registry-nakopleniya-v-yazyke-1s-8-v-primerax

LexaK

micahbell, Ээээ, как все плохо....
вот это   Тек_Год = Год(ТекущаяДата());
    Тек_Месяц = Месяц(ТекущаяДата());
    Тек_День = День(ТекущаяДата());
   
    ОбщаяДатаНаСегодня = Дата(Тек_Год, Тек_Месяц, Тек_День);


выполняется всего одной командой

    ОбщаяДатаНаСегодня = НачалоДня(ТекущаяДата());

Соответственно и весь остальной код ....
если помогло нажмите: Спасибо!

micahbell

LexaK, Ну я не знаю почему я ни разу не видел подобных команд.

LexaK

Цитата: micahbell от 02 ноя 2024, 10:01LexaK, Ну я не знаю почему я ни разу не видел подобных команд.
Странно, они же там рядом: Год... Месяц... и другие функции по работе с датой
Вы СП (синтаксис помощник) открывали,читали?  там в краце описан весь функционал 1С.
(я постоянно туда заглядываю)
если помогло нажмите: Спасибо!

Криворучко


&НаСервере
Процедура ПолучитьЗаработокЗаДеньНаСервере()
Заработок = 0;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
//| ПродажиОбороты.Регистратор.Дата КАК РегистраторДата
|ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ПродажиОбороты";

ОбщаяДата = ТекущаяДата();
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ОбщаяДата));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ОбщаяДата));

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;

ОбщийЗаработок = 0;

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

Заработок = 0;
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьЗаработокЗаДень()
ПолучитьЗаработокЗаДеньНаСервере();
КонецПроцедуры


Контрольная? Код не оптимальный. Зачем тебе регистратор? Зачем инструкция &НаСервере?

Криворучко


&НаСервереБезКонтекста
Функция ПолучитьЗаработокЗаДеньНаСервере(ДатаОстатка = Неопределено)

Если ДатаОстатка = Неопределено Тогда
ДатаОстатка = ТекущаяДата();
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК ПродажиОбороты";


Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаОстатка));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОстатка));

РезультатЗапроса = Запрос.Выполнить();

Если РезультатЗапроса.Пустой() Тогда
Возврат 0;
КонецЕсли;

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ВыборкаДетальныеЗаписи.Следующий();

Возврат ВыборкаДетальныеЗаписи.СтоимостьОборот;

КонецФункции

&НаКлиенте
Процедура ПолучитьЗаработокЗаДень()             

ДатаОстатка = ТекущаяДата();
Заработок = ПолучитьЗаработокЗаДеньНаСервере(ДатаОстатка);
КонецПроцедуры


Лишняя информация - лишний код.

Afinogen

 а можно еще упростить

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

   
    РезультатЗапроса = Запрос.Выполнить();

Теги:

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

Рейтинг@Mail.ru

Поиск