|
Помогите разобраться с проведением документа | ☑ | ||
---|---|---|---|---|
0
kan81
21.02.13
✎
11:22
|
Доброго времени суток.
Суть задачи: розничная торговля, в момент проведения документа "Отчет о розничных продажах" в последний день недели высылать электронное сообщение администратору магазина о сумме продаж за всю неделю. Делал 3 разными способами, но не один не работает как надо. 1. Процедура ОбработкаПроведения(...) модуля документа Если НЕ Отказ Тогда Запрос_Продажи = Новый Запрос; Запрос_Продажи.Текст = " |ВЫБРАТЬ | СУММА(Продажи.Количество) КАК Количество, | СУММА(Продажи.Стоимость) КАК Стоимость |ИЗ | РегистрНакопления.Продажи КАК Продажи |ГДЕ | Продажи.Период МЕЖДУ &НД И &КД |"; Если КонецДня(ЭтотОбъект.Дата) = КонецДня(КонецНедели(ЭтотОбъект.Дата)) Тогда Запрос_Продажи.УстановитьПараметр("НД" , НачалоНедели(ЭтотОбъект.Дата)); Запрос_Продажи.УстановитьПараметр("КД" , КонецНедели(ЭтотОбъект.Дата)); ... КонецЕсли; КонецЕсли; Если делать так, то всегда "выпадает" из отчета последний день - данные по продажам не попадают в него. 2. Через подписку на событие, событие "При записи" Если НЕ Отказ Тогда Если Источник.Проведен Тогда Запрос_Продажи = Новый Запрос; Запрос_Продажи.Текст = " |ВЫБРАТЬ | СУММА(Продажи.Количество) КАК Количество, | СУММА(Продажи.Стоимость) КАК Стоимость |ИЗ | РегистрНакопления.Продажи КАК Продажи |ГДЕ | Продажи.Период МЕЖДУ &НД И &КД |"; Если КонецДня(Источник.Дата) = КонецДня(КонецНедели(Источник.Дата)) Тогда Запрос_Продажи.УстановитьПараметр("НД" , НачалоНедели(Источник.Дата)); Запрос_Продажи.УстановитьПараметр("КД" , КонецНедели(Источник.Дата)); КонецЕсли; КонецЕсли; Это самый "рабочий" вариант. При первом проведении документа также "выпадает" отчет о розничных продажах за последний день, при повторном проведении цифра становиться корректной. Но получается приходит 2 уведомления: первое не правильное, второе корректное. 3. Через подписку на событие, событие "ОбработкаПроведения" Все тоже самое что и при 1 варианте - и результат тот же. Помимо этих цифр передается масса других данных и всегда документ за последний день не попадает в отчет, а в случае 2 вариант попадает, но только после повторного проведения документа в базе. Возможно ли как-то сделать так, чтобы корректно отсылались цифры с первого раза? Регламентные задания не подходят, т.к. отчет нужен именно в последний день (воскресенье), а не в понедельник. А продавец закрывает смену и сразу выключает комп. |
|||
1
Wobland
21.02.13
✎
11:26
|
регзадания да, не подходят. им не объяснить, что нужно работать в воскресенье. //всё не читал
|
|||
2
Шапокляк
21.02.13
✎
11:29
|
(0) А почему запрос к регистру, а не к таблице оборотов? Задайте в параметрах таблицы в запросе границу и будет счастье в 1 варианте. Кстати, а при перепроведении за год что должно отправиться?
|
|||
3
kan81
21.02.13
✎
11:48
|
(2)
Изменил запрос: Запрос_Продажи = Новый Запрос; Запрос_Продажи.Текст = " |ВЫБРАТЬ | СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество, | СУММА(ПродажиОбороты.СтоимостьОборот) КАК Стоимость |ИЗ | РегистрНакопления.Продажи.Обороты(&НД, &КД, , ) КАК ПродажиОбороты |"; Массив = Новый Массив(2); Массив[0] = КонецНедели(Источник.Дата); Массив[1] = ВидГраницы.Включая; КД = Новый(Тип("Граница") , Массив); Запрос_Продажи.УстановитьПараметр("НД" , НачалоНедели(Источник.Дата)); Запрос_Продажи.УстановитьПараметр("КД" , КД); но результат тот же самый. Или я не совсем правильно понял? |
|||
4
Hans
21.02.13
✎
11:51
|
(0) во втором случае у тебя движения скорее всего еще не записаны. Перед формированием отчета в обработке проведения сделай Движения.записать().
|
|||
5
kan81
21.02.13
✎
12:34
|
(4) Все заработало. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |