- •Лабораторная работа № (продолжение) Построение простейшей конфигурации по учету складских операций
- •2.7 Справочник складов
- •2.8 Справочник контрагентов
- •2.9 Справочник договоров с контрагентами
- •2.10 Работа со справочниками контрагентов и договоров
- •2.11 Справочник сортов
- •2.12 Хранение данных по взаиморасчетам с контрагентами
- •2.13 Первый документ. Приход денег
- •2.14 Работа с документом.
- •2.15 Отчет по долгам.
- •2.16 Документ "Выплата денег".
- •2.17 Документ "Изменение цен".
- •2.18 Регистры по товарам.
- •2.19 Приходная накладная.
- •2.20 Отчет по остаткам на складе.
- •2.21 Fifo/lifo/По-среднему.
- •2.22 Расходная накладная.
- •2.23 Расходная накладная. Продолжение.
- •2.24 Накладная на перемещение
- •2.25 Оборотные ведомости
- •2.26 Отчет по прибыли с товара
- •2.27 Отчет по обороту товара
- •2.28 Новые наборы прав
- •2.29 Новые интерфейсы
2.26 Отчет по прибыли с товара
В регистре "ОстаткиТовара" мы хранили такую информацию, как сумма поступления и сумма реализации. Создадим отчет, показывающий прибыль, которую мы получили в результате нашей хозяйственной деятельности.
Создаем новый отчет "Прибыль";
Добавим поле ввода ДатаН – тип Дата, формула ДатаН();
Добавим поле ввода ДатаК – тип Дата, формула ДатаК();
Добавим поле ввода Склад – тип С.Склады;
Добавим кнопку [Х]. Пропишем в поле Формула свойств кнопки Склад="", этой кнопкой мы будем очищать поле "Склад";
Пропишем процедуры в модуле формы: Процедура ДатаН() Если ДатаН>ДатаК Тогда ДатаН=ДатаК; КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ДатаК() Если ДатаК<ДатаН Тогда ДатаК=ДатаН; ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда ДатаК=ПолучитьДатуТА(); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура Сформировать() Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса=" |Период с ДатаН по ДатаК; |Скл = Регистр.ОстаткиТоваров.Склад; |Товар = Регистр.ОстаткиТоваров.Товар; |Сорт = Регистр.ОстаткиТоваров.Сорт; |Количество = Регистр.ОстаткиТоваров.Количество; |СуммаП = Регистр.ОстаткиТоваров.СуммаП; |СуммаД = Регистр.ОстаткиТоваров.СуммаД; |Ф = Регистр.ОстаткиТоваров.ФлагДвижения; |Функция КоличРасходС = Расход(Количество) когда(Ф=1); |Функция СуммаПРасход = Расход(СуммаП) когда(Ф=1); |Функция СуммаДРасход = Расход(СуммаД) когда(Ф=1); |Группировка Товар упорядочить по Товар.Код без групп; |Группировка Сорт упорядочить по Сорт.Код;"; // Мы не хотим в запросе получать группы товара (для примера) СклТекст="По всем складам"; Если Склад.Выбран()=1 Тогда СклТекст="По складу: "+СокрЛП(Склад.Наименование); ТекстЗапроса=ТекстЗапроса+" |Условие(Скл=Склад);"; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Сообщить("Запрос не выполнен"); Возврат; КонецЕсли; Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица(""); ИтКолРасх = Запрос.КоличРасходС; ИтСумПРас = Запрос.СуммаПРасход; ИтСумДРас = Запрос.СуммаДРасход; ИтПрибыль = ИтСумДРас-ИтСумПРас; Таб.ВывестиСекцию("Шапка"); Пока Запрос.Группировка("Товар")=1 Цикл ТТов=Запрос.Товар; Тов=СокрЛП(ТТов.Код)+" ("+СокрЛП(ТТов.Наименование)+")"; КолРасх = Запрос.КоличРасходС; СумПРас = Запрос.СуммаПРасход; СумДРас = Запрос.СуммаДРасход; Прибыль = СумДРас-СумПРас; Таб.ВывестиСекцию("Товар"); Пока Запрос.Группировка("Сорт")=1 Цикл Срт=Запрос.Сорт; КолРасх = Запрос.КоличРасходС; СумПРас = Запрос.СуммаПРасход; СумДРас = Запрос.СуммаДРасход; Прибыль = СумДРас-СумПРас; Таб.ВывестиСекцию("Сорт"); КонецЦикла; КонецЦикла; Таб.ВывестиСекцию("Итого"); Таб.ТолькоПросмотр(1); Таб.ПараметрыСтраницы(1,100,1); Таб.Показать(""); КонецПроцедуры
Создадим шаблон печатной формы;
2.27 Отчет по обороту товара
Сформируем отчет по товарообороту. Для него мы возьмем данные из регистра "ОборотыТоваров".
Создаем новый отчет "ТоварооборотПоСкладу";
Добавим поле ввода ДатаН – тип Дата, формула ДатаН();
Добавим поле ввода ДатаК – тип Дата, формула ДатаК();
Добавим поле ввода Склад – тип С.Склады;
Добавим кнопку [Х]. Пропишем в поле Формула свойств кнопки Склад="", этой кнопкой мы будем очищать поле "Склад";
Пропишем процедуры в модуле формы: //----------------------------------------------- Процедура ДатаН() Если ДатаН>ДатаК Тогда ДатаН=ДатаК; КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура ДатаК() Если ДатаК<ДатаН Тогда ДатаК=ДатаН; ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда ДатаК=ПолучитьДатуТА(); КонецЕсли; КонецПроцедуры //----------------------------------------------- Процедура Сформировать() Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса=" |Период с ДатаН по ДатаК; |Скл = Регистр.ОборотыТоваров.Склад; |Тов = Регистр.ОборотыТоваров.Товар; |Срт = Регистр.ОборотыТоваров.Сорт; |Кол = Регистр.ОборотыТоваров.Количество; |Сум = Регистр.ОборотыТоваров.СуммаУ; |Функция КолСум = Сумма(Кол); |Функция СумСум = Сумма(Сум); |Группировка Тов упорядочить по Тов.Код без групп; |Группировка Срт упорядочить по Сорт.Код;"; СклТекст="По всем складам"; Если Склад.Выбран()=1 Тогда СклТекст="По складу: "+СокрЛП(Склад.Наименование); ТекстЗапроса=ТекстЗапроса+" |Условие(Скл=Склад);"; КонецЕсли; Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Сообщить("Запрос не выполнен"); Возврат; КонецЕсли; Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица(""); ИтКолСум = Запрос.КолСум; ИтСумСум = Запрос.СумСум; Таб.ВывестиСекцию("Шапка"); Пока Запрос.Группировка("Товар")=1 Цикл ТТов=Запрос.Товар; Тов=СокрЛП(ТТов.Код)+" ("+СокрЛП(ТТов.Наименование)+")"; КолСум = Запрос.КолСум; СумСум = Запрос.СумСум; Таб.ВывестиСекцию("Товар"); Пока Запрос.Группировка("Сорт")=1 Цикл Срт=Запрос.Сорт; КолСум = Запрос.КолСум; СумСум = Запрос.СумСум; Таб.ВывестиСекцию("Сорт"); КонецЦикла; КонецЦикла; Таб.ВывестиСекцию("Итого"); Таб.ТолькоПросмотр(1); Таб.ПараметрыСтраницы(1,100,1); Таб.Показать(""); КонецПроцедуры
Создадим шаблон печатной формы;
Теперь мы можем загрузить 1С:Предприятие и посмотреть, что нам выдадут наши отчеты;