Проверка рентабельности по Реализациям при проведении

Миниатюра

В моей практике Программиста 1с встретилась интересная задача. При проведении документа «Реализации Товаров и Услуг» на Предприятии проводилась проверка рентабельности в целом по документу.Необходимо делать проверку на рентабельность по каждой строке списка товаров.

Предлагаю вам оценить решение задачи.

 

Работающий механизм контроля рентабельности по документам

 

Итак, до меня на Предприятии другой программист сделал следующее:

  • При проведении документа «Реализация Товаров и Услуг», делается проверка на рентабельность документа. Если документ в целом не рентабелен, то выводится сообщение.

В принципе адекватная мера для Предприятия, основной деятельностью которого является оказание услуг по доставке.

Ежели текущая доставка не рентабельна (изменились цены, условия доставки и др.), то при проведении пользователю об этом сообщается. Пользователь принимает решение об отмене услуги или изменении условий.

Кроме того, на предприятии у менеджеров, обслуживающих клиентов есть целый набор отчетов для контроля всех аспектов заказа.

Таким образом, сообщения при проведении отсекают ошибки связанные с изменением условий по сделке.

Должен сообщить, что после разговора с клиентом, условия сделки могут много раз поменяться. На нее влияет множество факторов:

  • Расстояние перевозки. Время перевозки
  • Дорожные условия (может измениться погода, тогда изменятся расценки на перевозку)
  • Водитель может заболеть и придется нанимать другого водителя
  • Транспорт может не пройти осмотр (технические неисправности при осмотре)
  • И множество др. факторов

Таким образом, перед проведением программа последний раз проверяет корректность условий и себестоимость.

Себестоимость упрощенно считается по регистрам «Продажи себестоимость», по партиям товаров. Таким образом, при изменении поставок цена может поменяться.

Рентабельность считается по себестоимости и данным регистра «Продажи».

Если себестоимость документа меньше 5% то выводится сообщение.

1.1. Сообщения-предупреждения о рентабельности при проведении Реализации

Такой механизм работал очень просто. В модуле объекта документа «РеализацияТоваровУслуг», в процедуре «ОбработкаПроведения», после записи движений документа был следующий код:

Обратите внимание что рентабельность в запросе считается непосредственно при подсчете итогов. Это адекватно ускоряет запрос. Сделано очень грамотно!

 

В чем состоит моя задача?

 

Необходимо изменить алгоритм так, чтобы при проведении рентабельность считалась по каждой строке текущего документа.

Если в определенных строках рентабельность меньше 5%, то выводить сообщение по конкретной строке.

Итак, Начнем с запуска режима 1с Предприятие.

 

Преимущества использования консоли запросов в любой задаче Программиста 1с

 

В 1с Предприятии запустим обработку «Консоль запросов». консоль позволяет конструировать и отлаживать запросы прямо в режиме 1с Предприятие, без Конфигуратора.

Это очень полезно. Любые разработки я начинаю с тестирования данных с помощью запросов.

Это позволяет решить сразу несколько задач:

  1. Получить выборки данных по интересующим меня критериям
  2. Отладить запрос, сделать его рабочим, выполняющим возложенную задачу
  3. Быть уверенным в работе запроса, что он получает нужные данные от Базы Данных.
  4. Быть уверенным, что в базе данных нужные данные содержатся. Бывает так, что запрос работает, а данных для него просто нет. Вот такие ситуации сразу отслеживаются.
  5. После отладки запроса его можно сразу применить в отчете, модуле, в конфигураторе.

Итак, я хочу посмотреть, количество и данные документов «Реализация Товаров и Услуг», в которых рентабельность меньше 5%. Берем готовый запрос из конфигуратора, из модуля документа.

 

Получение контрольной выборки документов для тестирования алгоритма.

 

Помещаем его в обработку «Консоль запросов». В запросе нет параметров, поэтому нет необходимости их устанавливать.

Забыл сказать, что запрос из модуля я упростил, убрал условие

Итак, смотрим на данные, которые запрос отобрал из БД:

2. Рентабельность по реализациям, меньше 5%

 

Мы видим, что в выборке, в колонке «Рентабельность», есть строки в которых Рентабельность = 0 и Рентабельность < 0

Хммм. А я хочу увидеть документы, в которых Рентабельность > 0. Для этого я добавил в запрос условие Рентабельность > 0 и посмотрел результат:

2.1. Рентабельность по реализациям, меньше 5%, больше нуля

 

Как раз те документы, которые я искал! При проведении таких документов должны выводиться сообщения, по условиям задачи!

Таким образом, после изменений в проведении документа, я буду тестировать алгоритм на данных документах!

Но надо будет обязательно проверить, что в других документах, где рентабельность > 5% — сообщение не должно выводиться.

Ну что-ж, изменим условие запроса и получим выборку для тестирования:

2.2. Рентабельность по реализациям, больше 5%

 

При проведении таких документов, сообщение не должно выводиться.

 

Внедрение алгоритма в 1с

 

Итак, в модуле документа «Реализация Товаров и Услуг», заменим существовавший код на следующий:

 

После тестирования на контрольной выборке документов, я заключил что полностью выполнил задачу.

Перенес в рабочую базу мои изменения. Клиент остался доволен.

 

На этом пока все, счастливо!

Теги: ,

Трекбэк с Вашего сайта.

  • Макс

    спасибо за труды

>