Задача расчета себестоимости




Задача контроля остатков

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

Схема решения:

· записать данные в регистр;

· выполнить запрос на поиск отрицательных остатков.

Обратиться к модулю объекта документа РеализацияТоваровИУслуг

Здесь есть обработчик события ОбработкаПроведения

Обратить внимание на 2 параметра этой процедуры: Отказ и Режим. Чтобы изучить их, можно обратиться к Синтакс Помощнику. С помощью Отказ можно отказаться от проведения документа (когда образовались отрицательные остатки). Режим проведения показывает как документ проводится (оперативно или не оперативно). Возможность оперативной проводки показывается на закладке Движения.

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

Создать новый запрос. Тип обработки: Обход результата.

Вкладка: Таблицы и поля: ТоварыНаСкладахОстатки – выбрать все поля.

Определить условия отрицательных остатков – вкладка Условия.

прописать соответствующее условие: < 0

КоличествоОстаток должен быть строго меньше 0

Поставить флажок в колонке П – это означает произвольное условие.

Принудительно убрать амперсанд (&).

На закладке Объединения/Псевдонимы указать просто количество:

Поработать с параметрами виртуальной таблицы

Склад должен соответствовать параметру, который будет передан и заполним этот параметр из реквизита документа.

 

и еще одно условие по номенклатуре: номенклатура должна входить в список. В скобках нужно создать подзапрос, - правая кнопка мыши: Конструктор запроса.

Указать, что выберем данные из табличной части товара.

В условии указать, что интересует конкретный документ, т.е. Условие по Ссылке

Нажать на ОК. Вложенный запрос готов:

И еще раз ОК.

Определено условие для виртуальной таблицы.

Запрос разработан. ОК

Можно удалить служебные комментарии.

Обработка будет простая: просто Сообщить, что недостаточно товара с указанием, какой товар. Обратиться к полям: ВыборкаДетальныеЗаписи. Через точку указать имя поля так, как оно представлено в запросе. И указать, в каком количестве не хватает.

Запустить в пользовательском режиме.

Задача расчета себестоимости

Учет себестоимости при выбытии важен, чтобы оценить прибыль от сделки. Объекты для учета себестоимости: регистр накопления вида остатки.

Для учета количества и себестоимости используют разные регистры:

- используются для разных задач;

- требуется разная аналитика.

Создание объектов для расчета себестоимости.

 

Создать новый объект, где будет учитываться себестоимость: новый регистр накопления. Дать ему имя: Себестоимость товаров.

 

Включить его в подсистему: Закупки. Указать регистраторы: ПоступлениеТоваровИУслуг, РеализацияТОваровИУслуг.

Определить структуру данных: Измерения (добавить измерения, дать имя: Номенклатура, тип:СправочникСсылка.Номенклатура.

Ресурсы (добавить ресурс): имя: Сумма, длина:15.

Добавить ресурс Количество:

Обеспечить проведение документа по этому регистру.

Обратимся к документу ПоступлениеТоваров.

Движения à Регистр сведений àКонструктор движений.

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

 

Выбрать в Табличной части: Товары.

Заполнить выражения

Заполнить все параметры

 

Что касается РеализацииТоваровИУслуг, то здесь задача более сложная, поскольку себестоимость нужно вычислить. Перепровести документ.

Обратиться к Закупкам à Поступление товаров и услуг.

перейти к списку документов и провести.

Проверим, что в соответствующем регистре отобразились данные.

Кнопка Главное менюàВсе функцииàРегистры накопления àСебестоимость товаров. Убедиться, что движения были выполнены: количество и сумма.

 

Расчет себестоимости.

Существует несколько способов расчета себестоимости. Мы будем использовать простейший: расчет по средней.

Обратиться к документу РеализацияТоваровИУслуг. Вкладка ПрочееàМодуль объекта. Обработчик событий: Процедура ОбработкаПроведения.

Проводить по этому регистру будем в самом конце.

Документ может уже не проводиться из-за того, что Отказ выставлен в Истину. Поэтому сначала надо проверить Отказ.

 

 

Используется конструктор запроса с обработкой результата.

Создаем новый запрос. Тип: Обход результата. Таблицы и поля:

Указать, какие данные выбираем.

опишем ограничения, что Номенклатура должна входить в табличную часть  

строится подзапрос

в качестве выходного поля товар

и прописываем условия

Остатки необходимо получать на момент времени документа, поэтому надо заполнить Период.

Теперь виртуальные таблицы настроены.

Изменить псевдонимы: просто Сумма и Количество.

может быть деление на ноль
Цикл расчета себестоимости одной единицы
Исправить

Себестоимость единицы есть. Для организации движения скопируем заготовку программного кода из другого регистра:

вставить фрагмент в наш код после КонецЕсли перед КонецЦикла и изменить имя регистра.

вид движения – расход;

период – обязательный параметр для регистра – соответствует дате документа;

сумма должна быть равна произведению СебестоимостиЕдиницы на количество списания.

 

Номенклатуру мы можем заполнить – получается из выборки.

Вопрос: какое количество списывать. В зависимости от этого будет и себестоимость разной.

Есть номенклатура. Можно найти соответствующую строку табличной части, где указана эта номенклатура и оттуда взять количество. Можно обратиться к Синтакс-помощнику: Табличная частьàНайти и соответственно колонку, где происходит поиск. Причем колонка указывается в виде строки.

Необходимо обратиться к табличной части: Товары.Найти

 

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

Если сейчас запустить систему, то не будет видно Движения по регистру, т.к. у набора записей не выставлен флажок Записывать.

Скопировать эту строку программного кода и заменить имя регистра.

 

И также в форме документа отобразить движения по регистрам и по себестоимости и по товарам на складах.

Запустить систему и выполнить проведение документов.

При проводке возникает ошибка

приступаем к отладке

Поставить точку останова, чтобы выяснить причину ошибки.

и нажимаем еще раз кнопку Провести. Выделить и нажать Shift+F9.

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

Перезапустить систему, выполнить проводку документа. Обращаемся к регистру Себестоимости товаров.

Есть движение Расход по номенклатуре с соответствующим количеством, сумма рассчитана как средняя себестоимость.

 

Обратимся к модулю объекта

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

и обратиться к результату запроса

к методу Выгрузить

 

Если документ перепроводится, то необходимо взять остаток в количестве и по сумме и от этого рассчитать себестоимость. Однако уже учли движение ранее проведенного документа. Это не корректно. Исправим эту ситуацию. Обратимся к настройкам документа – закладка Движения.

Здесь есть такое свойство – Удаление движений. Указать из раскрывающегося списка: Удалять автоматически. Это будет означать, что все данные ранее сделанных движений автоматически будут удалены при перепроведении документа. Вновь поставить точку останова и перезапустить систему. Обратимся к нашему документу, выполняем его проведение. Если проделать предыдущие шаги по точке останова, то убедимся в корректности движений.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: