- •Введенине
- •1. Краткое описание предприятия «ооо Профи-т»
- •Сфера деятельности предприятия:
- •Услуги:
- •2. Решение задачи оперативного учета
- •2.1 Описание предметной области
- •2.2 Разработка объектов на базе каркасной конфигурации
- •3.1 Описание предметной области
- •2.3 Разработка кода программного продукта
- •3 Решение задачи бухгалтерского учета
- •3.2 Разработка объектов на базе каркасной конфигурации
- •3.3 Разработка кода программного продукта
- •4 Решение задачи со сложными периодическими расчетами
- •4.1 Описание предметной области
- •4.2 Разработка объектов на базе каркасной конфигурации
- •4.3 Разработка кода программного продукта
- •5 Решение задач с использованием механизмов бизнес-процессов
- •5.1 Описание предметной области
- •Разработка объектов на базе каркасной конфигурации
- •6.1 Описание предметной области
- •Заключение
- •Список использованных источников
3.2 Разработка объектов на базе каркасной конфигурации
Основным документом, данной информационной базы является «Расходная накладная», в нём отражается оказание услуг.
Рисунок 9 – Документ «Расходная накладная»
Расчеты единицах ведутся только с покупателями, стоимость услуг указывается в условных единицах. Текущий курс условной единицы рассчитывается автоматически при проведении документа «Расходная накладная» в соответствии со шкалой, устанавливаемой пользователем для каждого контрагента. Курс указывается в документе шкала курсов.
Рисунок 10 – Документ «Шкала курсов»
На вкладке «Контрагены» отображаются покупатели и поставщики, которые осуществляют операции. Покупатель имеет право купить всё, либо купить всегда. Поставщик же осуществляет поставки товаров и может продать его всегда.
Рисунок 11 – Вкладка «Контрагенты»
Так же информационная база создаёт отчет, из которого можно рассчитать «средний» курс условной единицы по всем покупателям, приобретавших товар за указанный период. Отчет формируется за период кратный месяцу.
Рисунок 12 – Отчёт
Рисунок 13 – Схема компоновки данных отчёта
Конструктор запроса для документа «Расходная накладная» формируется на основе таблицы «УправленческийОборотыДтКт» регистра бухгалтерий и таблицы «ШкалыКурсаСрезПоследних» регистра сведений.
Рисунок 14 – Конструктор запроса документа «Расходная накладная»
3.3 Разработка кода программного продукта
Для данной информационной базы непосредственное вмешательство требовалось при создании документа «Расходная накладная». Две основные задачи данного когда: не позволять начинаться другим транзакциям пока не завершится текущая и определяеть текущий курс валюты для контрагентов.
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр Управленческий
Движения.Управленческий.Записывать = Истина;
Движения.Управленческий.Записать();
//блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
ЭлементБлокировки.УстановитьЗначение("Счет",ПланыСчетов.Управленческий.Покупатели);
ЭлементБлокировки.УстановитьЗначение("Субконто1",Контрагент);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Запрос = Новый("Запрос");
Запрос.Текст ="ВЫБРАТЬ
| ЕСТЬNULL(ШкалаКурсаСрезПоследних.Курс, 0) КАК Курс,
| ЕСТЬNULL(УправленческийОборотыДтКт.СуммаУЕОборот, 0) КАК Оборот
|ИЗ
| РегистрСведений.ШкалаКурса.СрезПоследних(&КонДата, ) КАК ШкалаКурсаСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.ОборотыДтКт(&НачДата, &КонДата, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), &мсубконто, СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , СубконтоДт1 = &Контрагент) КАК УправленческийОборотыДтКт
| ПО (ЕСТЬNULL(УправленческийОборотыДтКт.СуммаУЕОборот, 0) МЕЖДУ ШкалаКурсаСрезПоследних.ОбъемПокупокОт И ШкалаКурсаСрезПоследних.ОбъемПокупокДо)";
мсубконто = Новый("Массив");
мсубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Контрагенты);
Запрос.УстановитьПараметр("НачДата",ДобавитьМесяц(Дата,-1));
Запрос.УстановитьПараметр("КонДата",Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("мсубконто",мсубконто);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.Период = Дата;
Движение.СуммаУЕ = СуммаПоДокументу;
Движение.Сумма =СуммаПоДокументу* Выборка.Курс;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = Контрагент;
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма");
КонецПроцедуры
