РТУ И ЗАКАЗЫ

1. Intercititude 02.04.20 11:36 Сейчас в теме
Всем доброе время суток!
Есть документ "Установка согласованной суммы". В нём указывается контрагент и сумма. Всё это дело делает движения в рег. сведении "СогласСумма".

Суть в том,чтобы при проведении документа "Заказ покупателя" шла проверка на сумму. А именно
1) Если указанная сумма в документе "ЗП" больше,чем в документе "Установка согласованной суммы",то не проводим!
2) Так же "Нужно учитывать все накладные и сегодня и на завтра (если выбил сегодня сумму то завтра сумма не должна увеличится и прибавится)".
Есть две суммы по контрагенту за день по РТУ и Заказам.
Подскажите,что с ними делать, не могу сообразить по 2 пункту. Спасибо заранее.

Функция ПроверкаСогласованнойСуммы(Контрагент,Дата,СуммаДокумента) Экспорт

               

                Запрос2 = Новый запрос;

                Запрос2.Текст = "ВЫБРАТЬ

                |             РасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот КАК СуммаПоЗаказам,

                |             0 КАК СуммаПоРеализациям,

                |             РасчетыСКонтрагентамиОбороты.Контрагент

                |ПОМЕСТИТЬ ЗаказРеализация

                |ИЗ

                |             РегистрНакопления.РасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, Регистратор, Контрагент = &Контрагент) КАК РасчетыСКонтрагентамиОбороты

                |ГДЕ

                |             РасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.ЗаказПокупателя

                |

                |ОБЪЕДИНИТЬ ВСЕ

                |

                |ВЫБРАТЬ

                |             0,

                |             ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот,

                |             ВзаиморасчетыСКонтрагентамиОбороты.Контрагент

                |ИЗ

                |             РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, Регистратор, Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОбороты

                |ГДЕ

                |             ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг

                |;

                |

                |////////////////////////////////////////////////////////////­////////////////////

                |ВЫБРАТЬ

                |             СУММА(ЕСТЬNULL(ЗаказРеализация.СуммаПоЗаказам, 0)) КАК СуммаПоЗаказам,

                |             СУММА(ЕСТЬNULL(ЗаказРеализация.СуммаПоРеализациям, 0)) КАК СуммаПоРеализациям,

                |             ЗаказРеализация.Контрагент

                |ИЗ

                |             ЗаказРеализация КАК ЗаказРеализация

                |

                |СГРУППИРОВАТЬ ПО

                |             ЗаказРеализация.Контрагент";

               

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

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

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

               

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

               

                Пока ВыборкаСуммаЗаДень.Следующий() Цикл

                               СуммаЗаДень = ВыборкаСуммаЗаДень.СуммаПоЗаказам;

                КонецЦикла;

               

                Запрос = Новый Запрос;

                Запрос.Текст = "ВЫБРАТЬ

                |             СогласСуммаСрезПоследних.Сумма

                |ИЗ

                |             РегистрСведений.СогласСумма.СрезПоследних(&Период, Контрагент = &Контрагент) КАК СогласСуммаСрезПоследних";

               

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

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

               

                СогласСумма = Запрос.Выполнить().Выбрать();

               

                Пока СогласСумма.Следующий() Цикл

                              

                                               Если СуммаЗаДень <> Неопределено Тогда

                                                               Если СуммаЗаДень > СогласСумма.Сумма ИЛИ СуммаДокумента > СогласСумма.Сумма Тогда

                                                                              Предупреждение("Превышена согласованная сумма со службой безопасности!");

                                                                              Возврат Истина;

                                                               ИначеЕсли СуммаЗаДень < СогласСумма.Сумма ИЛИ СуммаДокумента < СогласСумма.Сумма Тогда

                                                                              Возврат Ложь;

                                                               КонецЕсли;

                                               Иначе

                                                               Если СуммаДокумента > СогласСумма.Сумма Тогда

                                                                              Предупреждение("Превышена согласованная сумма со службой безопасности!");

                                                                              Возврат Истина;

                                                               ИначеЕсли СуммаДокумента < СогласСумма.Сумма Тогда

                                                                              Возврат Ложь;

                                                               КонецЕсли;

                                               КонецЕсли;                      

                              

                КонецЦикла;

                              

                Возврат Истина;            

                              

                              

КонецФункции
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Дмитрий74Чел 234 02.04.20 13:35 Сейчас в теме
Вы реализовали проверку только за текущий день. Т.е. проверяете только суммы заказов за указанный день.
А в п.2 идет речь о том, что сумма заказов за сегодня и завтра не должна превышать лимит. Т.е. если лимит 100, сегодня заказ на 90, то система не должна позволять ввести сегодня заказ/рту на завтра на сумму более 10.
Таким образом подразумевается что лимит действует некоторый период, например "лимит на неделю". Либо это лимит на общую сумму: "100 р пока не выберет всю сумму а потом еще добавим".
3. Intercititude 02.04.20 13:56 Сейчас в теме +0.95 $m
(2) Да,я это понимаю. Я не могу сообразить как программно такое сделать.. Достаточно же изменить первый запрос ?
4. Sergex 58 02.04.20 17:29 Сейчас в теме
Вы похоже некий аналог бюджетирования мастерите. Сделайте регистр лимитов регистром накопления. Допишите в ЗП движение расхода по этому регистру, модель требований перестройте, чтобы убрать невнятное "сегодня и завтра"... А когда завтра, то что было завтрашним днем станет сегодняшним, его лимит должен будет входить в какую пару дней: сегодня+завтра или завтра+послезавтра? Лимит, как справедливо написал (2) может быть либо срочный либо бессрочный по сумме. От этого будет зависеть конструкция регистра накопления лимитов.

Если, например, лимит задается для периода с 1 по 5 число месяца (для интервала заказов) тогда: 1 - документ "Установка согласованной суммы" должен явно это определять (интервал) в регистре должно быть соответствующее измерение по которому при проведении заказов будет определяться из какого интервала расходовать лимит. Ну и последнее после проведения проверяйте если остаток лимита < 0 - облом!

Если лимит задается суммой до ее исчерпания, все так же но проще - при проведении заказа просто уменьшается лимит по контрагенту (опускается аналитика интервала) если после проведения он < 0 - облом!
Оставьте свое сообщение

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