Всем доброе время суток!
Платформа 8.2. Обычные формы.
Делаю следующий механизм. Есть документ "Согласованная сумма"(СС) в котором указывается В шапке - РабочаяДата;В ТЧ - Контрагент,ДатаОкончания и Сумма.
Этот документ подразумевает под собой, что при проведении документов "Заказ покупателя" или "Реализация товаров и услуг",если в документе "СС" есть сумма к примеру 5000 в промежутке времени РабочаяДата-ДатаОкончания, то Заказ и Реализацию выше 5000 в этом промежутке мы не можем провести.
Плюс ко всему есть ньюансы:
1)необходимо учитывать все суммы по реализациям + заказам за день!.
2)В случае конфликтов документов,пересечения во времени, брать большую сумму!
К примеру:
Мы вводим согласованную сумму(приоритетный документ) -
В рамках этой суммы создаются заказы, на их основании реализации, которые могут лежать в других числах. Т.О. надо смотреть подчиненку/
На 7/04 был один документ с одной разрешенной суммой. На основании этого документа была оформлена реализация на 08/04
08/04 был заведен другой документ, с другой суммой. При оформлении заказа 08/04 система посчитала реализацию 08/04, оформленную на заказ от 07/04,а не должна была!
Прикладываю черновой кусок кода этого механизма проверки из модуля обработки проведения "Заказ покупателя":
В первом запросе берутся все заказы и реализации за день! НО это в корне не верно, прошу помощи у специалистов подсказать, как сделать корректную связку Заказа+РТУ и учитывать их в первом запросе исходя из примера. К сожалению ничего толкового придумать не смог. Так же прошу высказать свое мнение,как бы лучше сделали Вы,если это возможно.
Спасибо за внимание!
Платформа 8.2. Обычные формы.
Делаю следующий механизм. Есть документ "Согласованная сумма"(СС) в котором указывается В шапке - РабочаяДата;В ТЧ - Контрагент,ДатаОкончания и Сумма.
Этот документ подразумевает под собой, что при проведении документов "Заказ покупателя" или "Реализация товаров и услуг",если в документе "СС" есть сумма к примеру 5000 в промежутке времени РабочаяДата-ДатаОкончания, то Заказ и Реализацию выше 5000 в этом промежутке мы не можем провести.
Плюс ко всему есть ньюансы:
1)необходимо учитывать все суммы по реализациям + заказам за день!.
2)В случае конфликтов документов,пересечения во времени, брать большую сумму!
К примеру:
Мы вводим согласованную сумму(приоритетный документ) -
В рамках этой суммы создаются заказы, на их основании реализации, которые могут лежать в других числах. Т.О. надо смотреть подчиненку/
На 7/04 был один документ с одной разрешенной суммой. На основании этого документа была оформлена реализация на 08/04
08/04 был заведен другой документ, с другой суммой. При оформлении заказа 08/04 система посчитала реализацию 08/04, оформленную на заказ от 07/04,а не должна была!
Прикладываю черновой кусок кода этого механизма проверки из модуля обработки проведения "Заказ покупателя":
Процедура ПроверкаСогласования(Отказ)
Если Отказ Тогда
Возврат
КонецЕсли;
Запрос2 = Новый запрос;
Запрос2.Текст = "ВЫБРАТЬ
| РасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот КАК СуммаПоЗаказам,
| 0 КАК СуммаПоРеализациям,
| РасчетыСКонтрагентамиОбороты.Контрагент
|ПОМЕСТИТЬ ЗаказРеализация
|ИЗ
| РегистрНакопления.РасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, Регистратор, Контрагент = &Контрагент) КАК РасчетыСКонтрагентамиОбороты
|ГДЕ
| РасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.ЗаказПокупателя
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 0,
| ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот,
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, Регистратор, Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОбороты
|ГДЕ
| ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ЕСТЬNULL(ЗаказРеализация.СуммаПоЗаказам, 0) + ЕСТЬNULL(ЗаказРеализация.СуммаПоРеализациям, 0)) КАК ОбщаяСумма,
| ЗаказРеализация.Контрагент
|ИЗ
| ЗаказРеализация КАК ЗаказРеализация
|
|СГРУППИРОВАТЬ ПО
| ЗаказРеализация.Контрагент";
Запрос2.УстановитьПараметр("Контрагент",Контрагент);
Запрос2.УстановитьПараметр("ДатаНач",НачалоДня(Дата));
Запрос2.УстановитьПараметр("ДатаКон",КонецДня(Дата));
ВыборкаСуммаЗаДень = Запрос2.Выполнить().Выбрать();
Пока ВыборкаСуммаЗаДень.Следующий() Цикл
СуммаЗаДень = ВыборкаСуммаЗаДень.ОбщаяСумма;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СогласСуммаСрезПоследних.Сумма
|ИЗ
| РегистрСведений.СогласСумма.СрезПоследних(
| &ДатаНачала,
| Контрагент = &Контрагент
| И (&ДатаОкончания <= ДатаОкончанияДействия
| ИЛИ ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1))) КАК СогласСуммаСрезПоследних";
Запрос.УстановитьПараметр("ДатаНачала",Дата);
Запрос.УстановитьПараметр("ДатаОкончания",НачалоДня(Дата));
Запрос.УстановитьПараметр("Контрагент",Контрагент);
СогласСумма = Запрос.Выполнить().Выбрать();
Пока СогласСумма.Следующий() Цикл
Если СуммаЗаДень <> Неопределено Тогда // Если Сумма за день имеется по контрагенту
Если (СуммаДокумента + СуммаЗаДень) > СогласСумма.Сумма Тогда
ПревышающаяРазница = (СуммаДокумента + СуммаЗаДень) - СогласСумма.Сумма;
Предупреждение("Превышена согласованная сумма со службой безопасности на: " + ПревышающаяРазница + " руб.");
Отказ = Истина;
ИначеЕсли (СуммаДокумента + СуммаЗаДень) < СогласСумма.Сумма Тогда
Отказ = Ложь;
КонецЕсли;
Иначе // нету суммы за день по контрагенту
Если СуммаДокумента > СогласСумма.Сумма Тогда
Разница = СуммаДокумента > СогласСумма.Сумма; Предупреждение("Превышена согласованная сумма со службой безопасности на: " + Разница + " руб.");
Отказ = Истина;
ИначеЕсли СуммаДокумента < СогласСумма.Сумма Тогда
Отказ = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьВ первом запросе берутся все заказы и реализации за день! НО это в корне не верно, прошу помощи у специалистов подсказать, как сделать корректную связку Заказа+РТУ и учитывать их в первом запросе исходя из примера. К сожалению ничего толкового придумать не смог. Так же прошу высказать свое мнение,как бы лучше сделали Вы,если это возможно.
Спасибо за внимание!
По теме из базы знаний
- Анализ выполнения заказов (УПП, УТ, КА на СКД 8.2)
- Интеграция с маркетплейсами МегаМаркет, Wildberries, OZON, ЯндексМаркет, VK, Avito, Леруа Мерлен, Aliexpress, КУПЕР, Dostavista
- SynchroWB — интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3
- Выгрузка заказов из 1С в MEASOFT API (ранее "Курьерская служба 2008") [РАСШИРЕНИЕ]
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Можно поподробнее пожалуйста. "Первый делает что писали." - о чём именно писал ?
Оба регистра сведении ?
По поводу БП вроде описал всё.
Меня больше волнует как не учитывать реализации,если они была создана на основании заказов,которые в свою очередь были созданы и пропущены с помощью документа "Согласованная сумма".
Оба регистра сведении ?
По поводу БП вроде описал всё.
Меня больше волнует как не учитывать реализации,если они была создана на основании заказов,которые в свою очередь были созданы и пропущены с помощью документа "Согласованная сумма".
(4) второй скорее всего регистр накопления. Вам наверное нужно книжки почитать для начала.
Т.к. не совсем понятно какая архитектура решения должна быть.
По поводу как не учитывать тут уже зависит как вы их учитываете. И как у вас настроен учет.
В целом это разные сущности и наверное нужно их считать отдельно.
Т.к. не совсем понятно какая архитектура решения должна быть.
По поводу как не учитывать тут уже зависит как вы их учитываете. И как у вас настроен учет.
В целом это разные сущности и наверное нужно их считать отдельно.
(8) если вам нужно за вас запрос составить, то начните с курсов по запросам или пригласите специалиста, который сделает за вас.
Если вопрос, где взять пример. То в УТ 11 есть ограничитель по задолженности. Может об этом идет речь? Тогда все уже есть с коробки!
Если вопрос, где взять пример. То в УТ 11 есть ограничитель по задолженности. Может об этом идет речь? Тогда все уже есть с коробки!
(14)По поводу связки Заказ-РТУ всё куда проще - меня интересует только факт этой связи, реализации это уже выбранная сумма. Рассматриваем только суммы,
1. Определяемся с диапазоном
2. Сумма заказов
3. Сумма реализаций, сумма реализаций на основании заказов
4. (Допустимая сумма - Сумма реализаций) = ДопСумма
5. Сумма заказов- сумма реализаций(на основании заказов) = сумма незакрытых заказов
Это базовый набор данных
По поводу железной связь каждой строки не понял.
1. Определяемся с диапазоном
2. Сумма заказов
3. Сумма реализаций, сумма реализаций на основании заказов
4. (Допустимая сумма - Сумма реализаций) = ДопСумма
5. Сумма заказов- сумма реализаций(на основании заказов) = сумма незакрытых заказов
Это базовый набор данных
По поводу железной связь каждой строки не понял.
(17) суть в том что заказ может не содержать данных реализации. А реализация будет содержать связь с заказом.
И даже если связь будет то может быть разница по суммам.
Поэтому и написал, что считать нужно отдельно.
Далее уже можешь играться с этими данными как угодно.
И даже если связь будет то может быть разница по суммам.
Поэтому и написал, что считать нужно отдельно.
Далее уже можешь играться с этими данными как угодно.
(18) Ну всё просто же тогда,если нету разницы, то сумма одна. Если есть разница то этот "хвостик" добавляем у заказа.
Вот сделал такой запрос, но при втором итогов условии не знаю что сделать,подскажите хоть разок :)
:
Вот сделал такой запрос, но при втором итогов условии не знаю что сделать,подскажите хоть разок :)
:
ВЫБРАТЬ
ЗаказПокупателя.Ссылка,
ЗаказПокупателяТовары.Сумма
ПОМЕСТИТЬ Заказы
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
ПО ЗаказПокупателяТовары.Ссылка = ЗаказПокупателя.Ссылка
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
И ЗаказПокупателя.Контрагент = &Контрагент
И ЗаказПокупателя.Проведен = ИСТИНА
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка,
РеализацияТоваровУслугТовары.Сумма,
РеализацияТоваровУслуг.Сделка
ПОМЕСТИТЬ Реализации
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
РеализацияТоваровУслуг.Проведен = ИСТИНА
И РеализацияТоваровУслуг.Контрагент = &Контрагент
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Заказы.Ссылка КАК Заказ,
Реализации.Ссылка КАК Реализация,
СУММА(ВЫБОР
КОГДА Заказы.Сумма = Реализации.Сумма
ТОГДА Реализации.Сумма
ИНАЧЕ ВЫБОР
КОГДА Реализации.Сумма < Заказы.Сумма
ТОГДА 0
КОНЕЦ
КОНЕЦ) КАК Сумма
ПОМЕСТИТЬ Связка
ИЗ
Заказы КАК Заказы
ЛЕВОЕ СОЕДИНЕНИЕ Реализации КАК Реализации
ПО Заказы.Ссылка = Реализации.Сделка
СГРУППИРОВАТЬ ПО
Заказы.Ссылка,
Реализации.Ссылка
Показать
(19) так, а что подсказать. Алгоритм проговорили пишите запрос и работайте?
Как по мне запрос ваш кривой. Как в части ВТ так и в определении суммы. Но если результат устраивает оставляйте как есть.
Если нет опыта пройдите курс по запросам, лучшее что тут можно порекомендовать.
Как по мне запрос ваш кривой. Как в части ВТ так и в определении суммы. Но если результат устраивает оставляйте как есть.
Если нет опыта пройдите курс по запросам, лучшее что тут можно порекомендовать.
(28) То есть к примеру, в одну ВТ поместить вот уже имеющийся запрос со связкой заказов с реализациями за день. В другом пакете взять реализации оформленные вчера и раннее,и уже в итоговом запросе выводить эти обе ВТ ? Возможно глупые вопрос задаю, но я ещё новичок, извините заранее :)
(31) долго объяснять. Посмотрите курсы.
Алгоритм отлаживайте в консоли запросов. Написали запрос, сверили результат.
Если что-то не так скинули запрос/ лучше кусок запроса и задачи точечный вопрос.
А то ведем тут дискуссию, как вас научить писать запросы и правильно составить ТЗ.
Алгоритм отлаживайте в консоли запросов. Написали запрос, сверили результат.
Если что-то не так скинули запрос/ лучше кусок запроса и задачи точечный вопрос.
А то ведем тут дискуссию, как вас научить писать запросы и правильно составить ТЗ.
(32) В общем такое вышло:
В итоге вылазит несколько разных сумм, которые мне и нужны! Но почему то в "группировке" функция СУММА не отрабатывает. Мне нужна общая сумма, что делать ? И вообще,корректен ли такой запрос ? Смущают группировки по заказам и реализациям.
ВЫБРАТЬ
ЗаказПокупателя.Ссылка КАК Заказ,
ЗаказПокупателя.СуммаДокумента КАК СуммаЗаказа,
РеализацияТоваровУслуг.Ссылка КАК Реализация,
РеализацияТоваровУслуг.СуммаДокумента КАК СуммаРеализации
ПОМЕСТИТЬ ЗаказаРеализацииЗаПериод
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ПО ЗаказПокупателя.Ссылка = РеализацияТоваровУслуг.Сделка
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ЗаказПокупателя.Проведен = ИСТИНА
И ЗаказПокупателя.Контрагент = &Контрагент
И РеализацияТоваровУслуг.Проведен = ИСТИНА
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВложенныйЗапрос.Заказ,
ВложенныйЗапрос.Реализация,
СУММА(ВложенныйЗапрос.МаксСумма) КАК МаксСумма
ИЗ
(ВЫБРАТЬ
ЗаказаРеализацииЗаПериод.Заказ КАК Заказ,
ЗаказаРеализацииЗаПериод.Реализация КАК Реализация,
ВЫБОР
КОГДА ЗаказаРеализацииЗаПериод.СуммаЗаказа = ЗаказаРеализацииЗаПериод.СуммаРеализации
ТОГДА ЗаказаРеализацииЗаПериод.СуммаРеализации
КОГДА ЗаказаРеализацииЗаПериод.СуммаЗаказа > ЗаказаРеализацииЗаПериод.СуммаРеализации
ТОГДА ЗаказаРеализацииЗаПериод.СуммаЗаказа
КОГДА ЗаказаРеализацииЗаПериод.СуммаЗаказа < ЗаказаРеализацииЗаПериод.СуммаРеализации
ТОГДА ЗаказаРеализацииЗаПериод.СуммаРеализации
КОНЕЦ КАК МаксСумма
ИЗ
ЗаказаРеализацииЗаПериод КАК ЗаказаРеализацииЗаПериод) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Заказ,
ВложенныйЗапрос.Реализация
ПоказатьВ итоге вылазит несколько разных сумм, которые мне и нужны! Но почему то в "группировке" функция СУММА не отрабатывает. Мне нужна общая сумма, что делать ? И вообще,корректен ли такой запрос ? Смущают группировки по заказам и реализациям.
(32) Так же сначала пытался сделать с помощью регистров, но связи ЗАКАЗ- РТУ не получилось добиться. Принял решение делать по документам,как вы и говорили. Но возможно подскажете что можно сделать с этим,так как через регистры работать корректнее всё-таки считаю:
ВЫБРАТЬ
РасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот КАК СуммаПоЗаказам,
РасчетыСКонтрагентамиОбороты.Контрагент,
РасчетыСКонтрагентамиОбороты.Регистратор,
РасчетыСКонтрагентамиОбороты.Сделка
ПОМЕСТИТЬ ЗаказыЗаПериод
ИЗ
РегистрНакопления.РасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, Регистратор, Контрагент = &Контрагент) КАК РасчетыСКонтрагентамиОбороты
ГДЕ
РасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.ЗаказПокупателя
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот КАК СуммаПоРеализациям,
ВзаиморасчетыСКонтрагентамиОбороты.Контрагент,
ВзаиморасчетыСКонтрагентамиОбороты.Регистратор,
ВзаиморасчетыСКонтрагентамиОбороты.Сделка
ПОМЕСТИТЬ РеализацииЗаПериод
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, Регистратор, Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОбороты
ГДЕ
ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказыЗаПериод.Регистратор,
СУММА(ЗаказыЗаПериод.СуммаПоЗаказам) КАК СуммаПоЗаказам,
РеализацииЗаПериод.Регистратор КАК Регистратор1,
СУММА(РеализацииЗаПериод.СуммаПоРеализациям) КАК СуммаПоРеализациям
ИЗ
ЗаказыЗаПериод КАК ЗаказыЗаПериод
ПОЛНОЕ СОЕДИНЕНИЕ РеализацииЗаПериод КАК РеализацииЗаПериод
ПО ЗаказыЗаПериод.Регистратор = РеализацииЗаПериод.Сделка
СГРУППИРОВАТЬ ПО
ЗаказыЗаПериод.Регистратор,
РеализацииЗаПериод.Регистратор
Показать
(34) когда я писал работать через регистры. Я имел в виду, не то что есть в конфигурации, а сделать новые по своим правилам. Врятли в текущих будет такая связь.
По документам связывать заказы и реализации тоже не получится так как это написали вы.
Должна быть связь каждой строки. А есть ли она?
Если нет, то как и писал сравнивать отдельно заказы и реализации. Или отказаться от реализации и сравнивать только заказы.
По документам связывать заказы и реализации тоже не получится так как это написали вы.
Должна быть связь каждой строки. А есть ли она?
Если нет, то как и писал сравнивать отдельно заказы и реализации. Или отказаться от реализации и сравнивать только заказы.
яБы
1. Запретил ввод только РТУ. Если это именно "Заказ товара" не делается номинально для печатной формы.
2. Разделил процессы утверждения. И все процессы разрешения повесил на Заказы Если упрощенно: наличие товара на складе, можно ли отгружать данному клиенту (долги, сумма заказа). Реализация как фарт списания со склада ТМЦ + долг.
3. С большей вероятностью повесил контроль на Бизнес-Процессы.
4. Соответственно запрет на изменение Заказа если они прошел стадию Утверждения. Товарная часть РТУ = Заказ и ее нельзя менять.
5. Жить только текущим числом.
ну типа такого, завязываться на два вида документа запутаешься, нужно выбрать Главного)
1. Запретил ввод только РТУ. Если это именно "Заказ товара" не делается номинально для печатной формы.
2. Разделил процессы утверждения. И все процессы разрешения повесил на Заказы Если упрощенно: наличие товара на складе, можно ли отгружать данному клиенту (долги, сумма заказа). Реализация как фарт списания со склада ТМЦ + долг.
3. С большей вероятностью повесил контроль на Бизнес-Процессы.
4. Соответственно запрет на изменение Заказа если они прошел стадию Утверждения. Товарная часть РТУ = Заказ и ее нельзя менять.
5. Жить только текущим числом.
ну типа такого, завязываться на два вида документа запутаешься, нужно выбрать Главного)
(9)
ну конечно лучше знать чем торгуете и какие подразделения и кто за что отвечает
п.1 Да. Заказом можно многое проверить предварительно. Это актуально если разнесено в датах.
п.2 глян описание в типовых для чего нужны каждый из этих документов. Вот на все эти действия повесить дополнительный контроль. Для примере Заказ может резервировать товаро, добавить что это можно если клинту разрешили отгрузку.
п.3 Никто не мешает поставить 8.3 использовать ее. "Старые" конфигурации счастливо работают на 8.3
п.4 к этому нужно стремиться)
ну конечно лучше знать чем торгуете и какие подразделения и кто за что отвечает
п.1 Да. Заказом можно многое проверить предварительно. Это актуально если разнесено в датах.
п.2 глян описание в типовых для чего нужны каждый из этих документов. Вот на все эти действия повесить дополнительный контроль. Для примере Заказ может резервировать товаро, добавить что это можно если клинту разрешили отгрузку.
п.3 Никто не мешает поставить 8.3 использовать ее. "Старые" конфигурации счастливо работают на 8.3
п.4 к этому нужно стремиться)
(9) зайди на ИТС, открой руководство УТ 11, КА2, ЕРП. почитай как там устроена связка Заказ-Реализация, как работает отгрузка с ордерными складами.
слишком мало инфу что-то советовать, твой код вырван из контекста жизни. По итогу непонятно что именно ты автоматизируешь.
слишком мало инфу что-то советовать, твой код вырван из контекста жизни. По итогу непонятно что именно ты автоматизируешь.
(13) Не знаю, что и сказать. ИТС не шибко поможет думаю, слишком нетиповая база у них.
Просьба от заказчика следующая:
Документ "Согласованная сумма" создаётся на основании служебной записки в жизни для службы безопасности. В слуб. записке указывается сумма и срок, до которого выдаётся разрешение на отгрузку товара.
В связи с этим введена правая граница у документа соглас. сумма в табличной части.
Просьба от заказчика следующая:
Документ "Согласованная сумма" создаётся на основании служебной записки в жизни для службы безопасности. В слуб. записке указывается сумма и срок, до которого выдаётся разрешение на отгрузку товара.
В связи с этим введена правая граница у документа соглас. сумма в табличной части.
Доброго времени суток!
Документ СС создает какие движения? создает записи в регистре сведений?
Если да то в процедуру проведения как Заказа так и Реализации надо добавить проверку на соответствие Вашей логике. Заказы и Реализации при проведении должны делать записи в НОВОМ регистре накопления СС, причем движения Реализации должны проверять реквизит ДокументОснование и если этот реквизит заполнен то запись в регистре накопления СС должна быть с датой основания Реализации. Если "правильно" заполнять этот регистр то проблем при написании процедуры проверки и в частности запроса к регистру СС не будет.
Слишком сложный запрос Вы нарисовали, все может быть проще, конечно если у Вас в промежутке дат проверки не миллион записей, если я правильно понимаю в периоде один документ на каждого контрагента, так что все должно работать быстро!
Если документ СС не делает движений то в запросе для проверки проверяем непосредственно документы СС.
Документ СС создает какие движения? создает записи в регистре сведений?
Если да то в процедуру проведения как Заказа так и Реализации надо добавить проверку на соответствие Вашей логике. Заказы и Реализации при проведении должны делать записи в НОВОМ регистре накопления СС, причем движения Реализации должны проверять реквизит ДокументОснование и если этот реквизит заполнен то запись в регистре накопления СС должна быть с датой основания Реализации. Если "правильно" заполнять этот регистр то проблем при написании процедуры проверки и в частности запроса к регистру СС не будет.
Слишком сложный запрос Вы нарисовали, все может быть проще, конечно если у Вас в промежутке дат проверки не миллион записей, если я правильно понимаю в периоде один документ на каждого контрагента, так что все должно работать быстро!
Если документ СС не делает движений то в запросе для проверки проверяем непосредственно документы СС.
Второй заход в ту же реку...
У вас документ "Согласованная сумма" фактически устанавливает некий лимит отгрузок по сумме для контрагента. Требуется регистр накопления с видом остатки. Лимит определяется следующими измерениями:
Регистратор (уид лимита),
Дата начала интервала лимита,
Дата окончания интервала лимита,
Контрагент,
Документ расхода
И следующими ресурсами
Нормативная сумма лимита,
Остаток лимита.
Тут надо еще как то договорится допустимо ли перекрытие лимитов по интервалам. А если да то решить для себя как это реализовывать: таким образом чтобы для одного интервала в регистре имелась только одна запись лимита, либо возможно несколько. Однако я затрудняюсь формализовать определение как, в случае допустимости нескольких параллельных лимитов с разными интервалами получить эффективный лимит на конкретную дату.
Например: сделали три документа согласованных сумм:
1 сумма 100 000 на интервал с 1 по 20 число
2 сумма 10 000 на интервал с 5 по 15 число
3 сумма 50 000 с 12 по 25 число
В ситуации когда лимиты еще не использованы - на какую сумму можно будет отгрузить 13 числа? - все просто 100 + 10 + 50 = 160 тысяч, но все не так однозначно если лимиты частично погашены причем оформление операций задним числом не запрещено.
Например 1 лимит погашен на 90 000 15 числом, 2 лимит свободен, а 3 лимит погашен полностью 14 числом, тогда все будет зависеть от архитектуры которой мы фиксируем движения расхода по лимитам. Вообще в казначействе - малым аналогом которого является данная модель имеется ограничение предписывающее лимитировать сумму на пересечении аналитик только одной записью.
Итак проще будет если вам удастся договорится что периоды лимитов не могут пересекаться в разрезе контрагентов. Тогда вам надо будет добавить движение по регистру лимитов для расходующего лимит документа. И тут тоже есть нюанс - следует определится таковым документом будет заказ или заказ и реализация. Технически, УТ позволяет отгружать в реализации оформленной по заказу на сумму, превышающую заказ, с определенными заморочками, но позволяет.
Однако вы можете сделать систему менее неопределенной если запретите это явление. В противном случае надо усложнять механику регистрации движений.
Например, при проведении заказ пишет движение расхода по найденным аналитикам лимита указывая себя в измерении документ расхода, реализация при проведении если она оформлена на основании заказа пишет движение прихода по найденным аналитика лимита указывая заказ в измерении документ расхода и затем движение расхода по найденным аналитикам лимита указывая уже в измерении документ расхода себя.
Проверка превышения лимита может быть реализована в процедуре контроля - ПроведениеСерверУТ.ВыполнитьКонтрольРезультатовПроведения куда следует добавить код проверяющий остаток по найденным аналитика лимита без учета измерения документ расхода. И если остаток стал отрицательным то обломиться, с сообщением на сколько и какой лимит превышен.
Понятно, что при возможности пересечения лимитов по периодам для одного и того же контрагента, вся эта механика формирования движений и контроля становится существенно геморройней.
И никакими регистрами сведений вы не обойдетесь если не затеете писать для них обвязку так чтобы они работали как регистры накопления :)
У вас документ "Согласованная сумма" фактически устанавливает некий лимит отгрузок по сумме для контрагента. Требуется регистр накопления с видом остатки. Лимит определяется следующими измерениями:
Регистратор (уид лимита),
Дата начала интервала лимита,
Дата окончания интервала лимита,
Контрагент,
Документ расхода
И следующими ресурсами
Нормативная сумма лимита,
Остаток лимита.
Тут надо еще как то договорится допустимо ли перекрытие лимитов по интервалам. А если да то решить для себя как это реализовывать: таким образом чтобы для одного интервала в регистре имелась только одна запись лимита, либо возможно несколько. Однако я затрудняюсь формализовать определение как, в случае допустимости нескольких параллельных лимитов с разными интервалами получить эффективный лимит на конкретную дату.
Например: сделали три документа согласованных сумм:
1 сумма 100 000 на интервал с 1 по 20 число
2 сумма 10 000 на интервал с 5 по 15 число
3 сумма 50 000 с 12 по 25 число
В ситуации когда лимиты еще не использованы - на какую сумму можно будет отгрузить 13 числа? - все просто 100 + 10 + 50 = 160 тысяч, но все не так однозначно если лимиты частично погашены причем оформление операций задним числом не запрещено.
Например 1 лимит погашен на 90 000 15 числом, 2 лимит свободен, а 3 лимит погашен полностью 14 числом, тогда все будет зависеть от архитектуры которой мы фиксируем движения расхода по лимитам. Вообще в казначействе - малым аналогом которого является данная модель имеется ограничение предписывающее лимитировать сумму на пересечении аналитик только одной записью.
Итак проще будет если вам удастся договорится что периоды лимитов не могут пересекаться в разрезе контрагентов. Тогда вам надо будет добавить движение по регистру лимитов для расходующего лимит документа. И тут тоже есть нюанс - следует определится таковым документом будет заказ или заказ и реализация. Технически, УТ позволяет отгружать в реализации оформленной по заказу на сумму, превышающую заказ, с определенными заморочками, но позволяет.
Однако вы можете сделать систему менее неопределенной если запретите это явление. В противном случае надо усложнять механику регистрации движений.
Например, при проведении заказ пишет движение расхода по найденным аналитикам лимита указывая себя в измерении документ расхода, реализация при проведении если она оформлена на основании заказа пишет движение прихода по найденным аналитика лимита указывая заказ в измерении документ расхода и затем движение расхода по найденным аналитикам лимита указывая уже в измерении документ расхода себя.
Проверка превышения лимита может быть реализована в процедуре контроля - ПроведениеСерверУТ.ВыполнитьКонтрольРезультатовПроведения куда следует добавить код проверяющий остаток по найденным аналитика лимита без учета измерения документ расхода. И если остаток стал отрицательным то обломиться, с сообщением на сколько и какой лимит превышен.
Понятно, что при возможности пересечения лимитов по периодам для одного и того же контрагента, вся эта механика формирования движений и контроля становится существенно геморройней.
И никакими регистрами сведений вы не обойдетесь если не затеете писать для них обвязку так чтобы они работали как регистры накопления :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот