Поправить формулу в отчёте продаж 1с
- Это отчёт менеджера по продажам
- он работает всё ок
- единственное что он берёт курс евро сегодняшнего дня
- а не в документе поступления товара
- когда мы его покупали.
//*******************************************
// Процедура генерации запроса Сформировать.
Функция НайтиПоследПост(ном, регистратор)
рег = СоздатьОбъект("Регистр.ПартииНаличие");
Рег.УстановитьЗначениеФильтра("Номенклатура", ном, 1);
Кол=0;
сум=0;
ПослЦена =0;
Рег.ВыбратьДвижения();
Пока Рег.ПолучитьДвижение() = 1 Цикл
Если рег.Приход =1 тогда
Кол = рег.Количество;
сум = рег.СуммаРуб;
регистратор = рег.ТекущийДокумент();
КонецЕсли;
КонецЦикла;
Если сум
ПослЦена = сум/кол;
КонецЕсли;
// ПослЦена= Формат(ПослЦена, "Ч015.2") ;
возврат ПослЦена;
КонецФункции
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
ИтогСумма=0;
ИтогМ=0;
док= СоздатьОбъект("Документ.Реализация");
Док.выбратьДокументы(ВыбНачПериода,ВыбКонПериода);
Пока док.ПолучитьДокумент()=1 Цикл
Если СокрЛП( ВыбПользователь)
Если док.Автор
Продолжить;
КонецЕсли;
КонецЕсли;
Если СокрЛП(ВыбПроект)
Если док.Проект
Продолжить;
КонецЕсли;
КонецЕсли;
Если док.проведен()=0 Тогда
Продолжить;
КонецЕсли;
док.выбратьстроки();
Пока док.получитьСтроку()=1 Цикл
Если СокрЛП(ГруппаНом)
Если Док.Номенклатура.ПринадлежитГруппе(ГруппаНом)=0 Тогда
продолжить;
КонецЕсли;
КонецЕсли;
регистратор="";
поступилоПо = НайтиПоследПост(Док.Номенклатура,регистратор);
Состояние("Заполнение выходной таблицы..."+Док.Номенклатура);
Если Док.Количество
ценаПр = Док.сумма / Док.Количество;
Иначе
ценаПр =0;
КонецЕсли;
ДоляМ = ((ценаПр-(поступилоПо*множитльСебестоимость) ) * ПроцентОТМаржи/100)*Док.Количество;
ПечДоляМ = Формат(ДоляМ, "Ч015.2") ;
ПечпоступилоПо = Формат(поступилоПо, "Ч015.2") ;
Таб.ВывестиСекцию("строка");
ИтогСумма = ИтогСумма +Док.сумма;
ИтогМ = ИтогМ + ДоляМ;
КонецЦикла;
КонецЦикла;
// Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Процедура ПриОткрытии()
ПроцентОТМаржи = 10;
множитльСебестоимость = 1.25;
Если глПользователь.наименование="Артур" Тогда
ИначеЕсли глПользователь.наименование="Шах" Тогда
Иначе
// ВыбПользователь = глПользователь.текущийЭлемент();
// Форма.ВыбПользователь.Доступность(0);
КонецЕсли;