К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Себестоимость

Гость
0 - 31.01.2013 - 19:12
Подскажите, пожалуйста, как расчитать среднюю себестоимость для формирования цен в рознице


Гость
1 - 31.01.2013 - 20:34
Суммируем все затраты, и делим на количество.
Затраты известны?
Гость
2 - 31.01.2013 - 21:33
0-pantherochka > Укажите какая у вас оборачиваемость товара в днях и сколько дней требуется на получение всех документов о затратах после поступления товаров.
Гость
3 - 01.02.2013 - 08:33
(0) в экселе удобно мастером формул пользоваться.
Гость
4 - 06.02.2013 - 13:03
Решила сама..может кому-нубудь пригодится. Дополнительно добавить в справочник ТипыЦенНоменклатуры: Предопределенные элементы справочника "Себестоимость" и в обработку "Формирование цен" в процедуру "РассчетПоФормуле" добавить небольшой запрос. Полный листинг процедуры: Процедура КнопкаВыполнитьНажатиеРассчитатьЦеныПоФормуле(Элем ент)

// Должен быть выбран базовый тип цен
Если НЕ ЗначениеЗаполнено(ВариантЗначения) Тогда

Предупреждение("Не выбран базовый тип цен!", 60, "Формирование цен");
ТекущийЭлемент = ЭлементыФормы.ПолеВводаВариантаЗначения;
Возврат;

КонецЕсли;

// Должен быть выбран знак
Если НЕ ЗначениеЗаполнено(ЭлементыФормы.ПолеВыбораЗнакаИзм енения.Значение) Тогда

Предупреждение("Не выбран знак изменения!", 60, "Формирование цен");
ТекущийЭлемент = ЭлементыФормы.ПолеВыбораЗнакаИзменения;
Возврат;

КонецЕсли;

// Должен быть выбрана единица изменения
Если НЕ ЗначениеЗаполнено(ЭлементыФормы.ПолеВыбораЕдиницыИ зменения.Значение) Тогда

Предупреждение("Не выбрана единица изменения!", 60, "Формирование цен");
ТекущийЭлемент = ЭлементыФормы.ПолеВыбораЕдиницыИзменения;
Возврат;

КонецЕсли;

// Надо получить цены выбранного типа и пересчитать их по заданной формуле.
// Цены базового типа достанем запросом.

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Номенклатура" , Товары.ВыгрузитьКолонку("Номенклатура"));
Запрос.УстановитьПараметр("ТипЦен", ВариантЗначения);
Запрос.УстановитьПараметр("ДатаЦен" , ДатаЦенСкидок);

Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменк латуры
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Да таЦен, Номенклатура В(&Номенклатура) И ТипЦен =&ТипЦен)
| КАК ЦеныНоменклатурыСрезПоследних";


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

Если ТипЗнч(ВариантЗначения)=Тип("СправочникСсылка.Типы ЦенНоменклатуры") И ЗначениеЗаполнено(ВариантЗначения) И ВариантЗначения=Справочники.ТипыЦенНоменклатуры.Се бестоимость Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ПартииТоваровНаСкладахОстатки.Номенклатура,
| Константы.ВалютаРегламентированногоУчета КАК Валюта,
| ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменк латуры,
| ПартииТоваровНаСкладахОстатки.Номенклатура.Единица ХраненияОстатков КАК ЕдиницаИзмерения,
| ВЫБОР
| КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.КоличествоО статок, 0) = 0
| ТОГДА 0
| ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
| КОНЕЦ КАК Цена
|ИЗ
|
| РегистрНакопления.ПартииТоваровНаСкладах.Остатки(& ДатаЦен, Номенклатура В(&Номенклатура))
| КАК ПартииТоваровНаСкладахОстатки,
| Константы КАК Константы";

КонецЕсли;

//Параметры запроса
//Результат = Запрос.Выполнить();
Запрос.УстановитьПараметр("Номенклатура" , Товары.ВыгрузитьКолонку("Номенклатура"));
Запрос.УстановитьПараметр("ТипЦен", ВариантЗначения);
Запрос.УстановитьПараметр("ДатаЦен" , ДатаЦенСкидок);


//Возврат Результат;


ВыборкаИзЗапроса = Запрос.Выполнить().Выбрать();

// Найдем у данной номенклатуры значение базовой цены
Для каждого СтрокаТабличнойЧасти Из Товары Цикл
Если СтрокаТабличнойЧасти.Пометка Тогда

// Сбросим выборку для последующего поиска.
ВыборкаИзЗапроса.Сбросить();

СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("ХарактеристикаНоменклату ры", СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры);
СтруктураПоиска.Вставить("Номенклатура", СтрокаТабличнойЧасти.Номенклатура);

// Ищем в выборке номенклатуру.
Если ВыборкаИзЗапроса.НайтиСледующий(СтруктураПоиска) Тогда

// Нашли базовую цену.
// Пересчитываем ее в валюту заданного типа цен,
// единицы цены.
ЦенаБазовая = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты( ВыборкаИзЗапроса.Цена, ВыборкаИзЗапроса.Валюта,
СтрокаТабличнойЧасти.Валюта, , , ДатаЦенСкидок);

ЦенаБазовая = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы (ЦенаБазовая, ВыборкаИзЗапроса.ЕдиницаИзмерения,
СтрокаТабличнойЧасти.ЕдиницаИзмерения);
Иначе
ЦенаБазовая = 0;
КонецЕсли;

// Теперь применим формулу
Если СокрЛП(ЕдиницаИзменения) = "%" Тогда
СтрокаТабличнойЧасти.Цена = ЦенаБазовая * (100 + ЗнакИзменения * ВеличинаИзменения) / 100;
Иначе // надо просто прибавить
СтрокаТабличнойЧасти.Цена = ЦенаБазовая + ЗнакИзменения * ВеличинаИзменения;
КонецЕсли;

// Не забудем округлить.
СтрокаТабличнойЧасти.Цена = Ценообразование.ОкруглитьЦену(СтрокаТабличнойЧасти .Цена,
ТипЦен.ПорядокОкругления, ТипЦен.ОкруглятьВБольшуюСторону);
КонецЕсли;
КонецЦикла;

ДействиеНеВыполнено = Ложь;

КонецПроцедуры // КнопкаВыполнитьНажатиеРассчитатьЦеныПоФормуле()


К списку вопросов






Copyright ©, Все права защищены