Система анализа и прогнозирования экономических показателей на ООО "Простор"

Произведение прогнозирования прибыли на базе экономико-математического моделирования. Рассмотрение реализации механизмов анализа прибыли и ее прогнозирования на базе "1С: Предприятие 8.2". Обоснование параметров финансовой устойчивости предприятия.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 20.03.2017
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Для предотвращения несанкционированного подключения к сети оборудование размещается в серверной комнате, доступ в которую имеет определённый круг лиц. Для защиты информации от несанкционированного доступа и изменения внутренними пользователями используется сетевая политика безопасности, которая обеспечивает:

1. Объединение пользователей в группы (по подразделениям) и назначение для каждого пользователя группы уникального логина и пароля.

2. Назначение прав доступа группам пользователей.

3. Создание ролей внутри баз данных.

4. Повторная аутентификация пользователя при работе с приложениями, использующими конфиденциальную информацию.

5. Процедура аутентификации невозможна в автоматическом режиме (запрет на сохранение логина и пароля).

Пользователям запрещается устанавливать и использовать любое нештатное ПО. В обязательном порядке проводится антивирусный контроль всех носителей информации, а так же обновление баз антивируса. Категорически запрещено использовать нелицензионное и неаттестованное ПО.

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

Сотрудники, нарушающие требования информационной безопасности, несут ответственность в соответствии с действующим трудовым законодательством.

Заключение

В результате проделанной работы была разработан Отчет по прибыли для ООО «Простор» на платформе «1С: Предприятие» 8.2.

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

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

В процессе выполнения данного проекта был проведен следующий комплекс работ:

- проведен аналитический обзор существующих решений, показавший, что существует немало таких программных продуктов, но они по тем или иным причинам не полностью удовлетворяют требования пользователя;

- разработана структура продукта, определен интерфейс;

- разработаны программные компоненты, поддерживающие все предъявляемые требования;

- проведено тестирование;

- разработано руководство пользователя;

- в рамках раздела «Безопасность и экологичность проекта» рассмотрены стандарты ТСО, служба охраны труда, информационная безопасность;

Кроме того стоит отметить перспективу развития данного решения. Возможно расширение функционала системы по желанию заказчика.

Список использованных источников

1. Ваш Системный Администратор [Электронный ресурс]: офиц. сайт. - Режим доступа: http://admin35.ru.

2. Фирма 1С [Электронный ресурс]: офиц. сайт. - Режим доступа: http://www.1c.ru.

3. Свободная энциклопедия ВикипедиЯ [Электронный ресурс]: Режим доступа: https://ru.wikipedia.org.

4. «1С: Предприятие» 8 [Электронный ресурс]: офиц. сайт. - Режим доступа: http://v8.1c.ru.

5. Фриланс.ру [Электронный ресурс]: Режим доступа: http://freelance.ru.

6. Энциклопедия знаний [Электронный ресурс]: Режим доступа: http://pandia.org.

7. CRM online независимый CRM портал [Электронный ресурс]: Режим доступа: http://www.crmonline.ru.

8. 1С:ИТС [Электронный ресурс]: офиц. сайт. - Режим доступа: http://its.1c.ru.

9. Бухгалтерия.ru [Электронный ресурс]: офиц. сайт. - Режим доступа: http://www.buhgalteria.ru.

10. Первая ценовая категория - Открытое Акционерное Общество Вологдаэнергосбыт [Электронный ресурс]: статья - Режим доступа: http://www.vscenergo.ru/entities/prices/choose_price_range/the_first_price_category.

11. Пример обоснования целесообразности разработки [Электронный ресурс]: статья. - Режим доступа: http://www.CoolReferat.com/Автоматизированная_система_массовой_печати_документов_для_юридических_лиц_часть=18.

12. Сколько потребляет электроэнергии компьютер [Электронный ресурс]: статья - Режим доступа: http://www.alisaslut.ru/сколько-электричества-тратит-комп.

13. Стандарты ТСО [Электронный ресурс] - Режим доступа: http://www.ferra.ru/ru/video/s5903/.

14. Щеглов А. Ю. Защита компьютерной информации от несанкционированного доступа/ А. Ю. Щеглов; ред. М. В. Финков. - М.: Наука и техника, 2004. - 384 c.Стандарты ТСО [Электронный ресурс] - Режим доступа: http://www.ferra.ru/ru/video/s5903.

15. Орлов С. А. Технологии разработки программного обеспечения.: учебник - СПб.: Питер, 2003. - 464 с.

Приложение

(обязательное)

Листинг программы

&НаКлиенте

Процедура ПриОткрытии(Отказ)

Элементы.ГодПрогноза.СписокВыбора.Добавить(Год(ТекущаяДата())-1, СтрЗаменить(Год(ТекущаяДата())-1, Символы.НПП, ""));

Элементы.ГодПрогноза.СписокВыбора.Добавить(Год(ТекущаяДата()), СтрЗаменить(Год(ТекущаяДата()), Символы.НПП, ""));

Элементы.ГодПрогноза.СписокВыбора.Добавить(Год(ТекущаяДата())+1, СтрЗаменить(Год(ТекущаяДата())+1, Символы.НПП, ""));

ГодПрогноза = Год(ТекущаяДата());

Если НЕ ЗначениеЗаполнено(Отчет.ДатаОт) Тогда

ДатаОт = НачалоМесяца(ТекущаяДата());

ДатаДо = КонецМесяца(ТекущаяДата());

КонецЕсли;

Если Отчет.ПериодОтчета = "" Тогда

Отчет.ПериодОтчета = "Месяц";

КонецЕсли;

ЗаполнитьОрганизацииНаСервере();

КоличествоЛетДляРасчета = 3;

Года.Очистить();

НовСтр = Года.Добавить();

НовСтр.Год = ГодПрогноза - 1;

НовСтр.Коэффициент = 0.7;

НовСтр = Года.Добавить();

НовСтр.Год = ГодПрогноза - 2;

НовСтр.Коэффициент = 0.2;

НовСтр = Года.Добавить();

НовСтр.Год = ГодПрогноза - 3;

НовСтр.Коэффициент = 0.1;

КонецПроцедуры

&НаСервере

Процедура ЗаполнитьОрганизацииНаСервере()

СписокОрганизацийНалСтар = Новый СписокЗначений;

СписокОрганизацийБезналСтар = Новый СписокЗначений;

Для каждого Элемент Из Отчет.СписокОрганизацийНал Цикл

СписокОрганизацийНалСтар.Добавить(Элемент.Значение, Элемент.Представление, Элемент.Пометка, Элемент.Картинка);

КонецЦикла;

Для каждого Элемент Из Отчет.СписокОрганизацийБезнал Цикл

СписокОрганизацийБезналСтар.Добавить(Элемент.Значение, Элемент.Представление, Элемент.Пометка, Элемент.Картинка);

КонецЦикла;

Отчет.СписокОрганизацийНал.Очистить();

Отчет.СписокОрганизацийБезнал.Очистить();

ВыборкаОрганизаций = Справочники.Организации.Выбрать();

Пока ВыборкаОрганизаций.Следующий() Цикл

ЗначНалСтар = СписокОрганизацийНалСтар.НайтиПоЗначению(ВыборкаОрганизаций.Ссылка);

Если ЗначНалСтар <> Неопределено Тогда

Пометка = ЗначНалСтар.Пометка;

Иначе

Пометка = Ложь;

КонецЕсли;

Отчет.СписокОрганизацийНал.Добавить(ВыборкаОрганизаций.Ссылка,,Пометка);

ЗначБезналСтар = СписокОрганизацийБезналСтар.НайтиПоЗначению(ВыборкаОрганизаций.Ссылка);

Если ЗначБезналСтар <> Неопределено Тогда

Пометка = ЗначБезналСтар.Пометка;

Иначе

Пометка = Ложь;

КонецЕсли;

Отчет.СписокОрганизацийБезнал.Добавить(ВыборкаОрганизаций.Ссылка,,Пометка);

КонецЦикла;

КонецПроцедуры

&НаКлиенте

Процедура ВыбратьПериод(Команда)

НастройкаПериода = Новый НастройкаПериода;

ТиповыеОтчеты.НастроитьПериод(НастройкаПериода, Отчет.ДатаОт, Отчет.ДатаДо);

КонецПроцедуры

&НаСервере

Процедура ЗаполнитьСписокСтатей(ВыборкаВыручка, ТаблицаЗатратДляДиаграммы)

СписокСтатейВыручки.Очистить();

ВыборкаВыручка.Сбросить();

Пока ВыборкаВыручка.Следующий() Цикл

СписокСтатейВыручки.Добавить(ВыборкаВыручка.Статья, ВыборкаВыручка.Статья, Истина);

КонецЦикла;

СписокСтатейЗатрат.Очистить();

СтатьиЗатрат = ТаблицаЗатратДляДиаграммы.Скопировать(,"Статья");

СтатьиЗатрат.Свернуть("Статья");

Для Каждого Строка Из СтатьиЗатрат Цикл

СписокСтатейЗатрат.Добавить(Строка(Строка.Статья), Строка.Статья, Истина);

КонецЦикла;

СписокСтатейИтогов.Очистить();

СписокСтатейИтогов.Добавить("Затраты", "Затраты", Истина);

СписокСтатейИтогов.Добавить("Выручка", "Выручка", Истина);

КонецПроцедуры

&НаСервере

Функция ПодготовитьТаблицуИтогов(ВыборкаВыручка, ТаблицаЗатратДляДиаграммы)

ТаблицаИтогов = ТаблицаЗатратДляДиаграммы.Скопировать();

Для Каждого Строка Из ТаблицаИтогов Цикл

Строка.Статья = "Затраты";

КонецЦикла;

ВыборкаВыручка.Сбросить();

Пока ВыборкаВыручка.Следующий() Цикл

ВыборкаДетали = ВыборкаВыручка.Выбрать();

Пока ВыборкаДетали.Следующий() Цикл

Строка = ТаблицаИтогов.Добавить();

Строка.Период = ВыборкаДетали.Период;

Строка.Статья = "Выручка";

Строка.СуммаОборотДт = ВыборкаДетали.Всего;

КонецЦикла;

КонецЦикла;

ТаблицаИтогов.Свернуть("Период,Статья","СуммаОборотДт");

Возврат ТаблицаИтогов;

КонецФункции

&НаСервере

Процедура ОчиститьДиаграммы()

Диаграмма.Очистить();

ДиаграммаЗатрат.Очистить();

ДиаграммаИтогов.Очистить();

КонецПроцедуры

&НаСервере

Процедура СформироватьТочки(ПДиаграмма = Неопределено, ПерезаполнятьСписок = Истина)

МассивТочек = Новый Массив;

ТекДата = Отчет.ДатаОт;

МассивТочек.Добавить(ТекДата);

Если Отчет.ПериодОтчета = "День" Тогда

Пока ТекДата < Отчет.ДатаДо Цикл

ТекДата = КонецДня(ТекДата) + 1;

Если ТекДата <= Отчет.ДатаДо Тогда

МассивТочек.Добавить(НачалоДня(ТекДата));

КонецЕсли;

КонецЦикла;

ИначеЕсли Отчет.ПериодОтчета = "Неделя" Тогда

Пока ТекДата < Отчет.ДатаДо Цикл

ТекДата = КонецНедели(ТекДата) + 1;

Если ТекДата <= Отчет.ДатаДо Тогда

МассивТочек.Добавить(НачалоНедели(ТекДата));

КонецЕсли;

КонецЦикла;

ИначеЕсли Отчет.ПериодОтчета = "Месяц" Тогда

Пока ТекДата < Отчет.ДатаДо Цикл

ТекДата = КонецМесяца(ТекДата) + 1;

Если ТекДата <= Отчет.ДатаДо Тогда

МассивТочек.Добавить(НачалоМесяца(ТекДата));

КонецЕсли;

КонецЦикла;

ИначеЕсли Отчет.ПериодОтчета = "Квартал" Тогда

Пока ТекДата < Отчет.ДатаДо Цикл

ТекДата = КонецКвартала(ТекДата) + 1;

Если ТекДата <= Отчет.ДатаДо Тогда

МассивТочек.Добавить(НачалоКвартала(ТекДата));

КонецЕсли;

КонецЦикла;

ИначеЕсли Отчет.ПериодОтчета = "Полугодие" Тогда

Пока ТекДата < Отчет.ДатаДо Цикл

ТекДата = КонецМесяца(ТекДата) + 1;

Пока Месяц(ТекДата) <> 7 И Месяц(ТекДата) <> 1 Цикл

ТекДата = КонецМесяца(ТекДата) + 1;

КонецЦикла;

Если ТекДата <= Отчет.ДатаДо Тогда

МассивТочек.Добавить(НачалоМесяца(ТекДата));

КонецЕсли;

КонецЦикла;

ИначеЕсли Отчет.ПериодОтчета = "Год" Тогда

Пока ТекДата < Отчет.ДатаДо Цикл

ТекДата = КонецГода(ТекДата) + 1;

Если ТекДата <= Отчет.ДатаДо Тогда

МассивТочек.Добавить(НачалоГода(ТекДата));

КонецЕсли;

КонецЦикла;

КонецЕсли;

Если ПерезаполнятьСписок Тогда

СписокТочек.Очистить();

КонецЕсли;

Для Каждого Строка Из МассивТочек Цикл

Если Отчет.ПериодОтчета = "Год" Тогда

ПодписьТочки = Формат(Строка,"ДФ=гггг");

ИначеЕсли Отчет.ПериодОтчета = "Квартал" Тогда

ПодписьТочки = Формат(Строка,"ДФ='к ""кв."" гггг'");

ИначеЕсли Отчет.ПериодОтчета = "Неделя" Тогда

ПодписьТочки = Лев(Формат(Строка,"ДФ=ММММ"),3)+" "+Формат(Строка,"ДФ=гггг");

ИначеЕсли Отчет.ПериодОтчета = "Месяц" Тогда

ПодписьТочки = Лев(Формат(Строка,"ДФ=ММММ"),3)+" "+Формат(Строка,"ДФ=гггг");

ИначеЕсли Отчет.ПериодОтчета = "Полугодие" Тогда

ПодписьТочки = Формат(Строка,"ДФ=гггг");

ИначеЕсли Отчет.ПериодОтчета = "День" Тогда

ПодписьТочки = Формат(Строка,"ДФ='д МММ'");

КонецЕсли;

Если ПерезаполнятьСписок Тогда

СписокТочек.Добавить(Строка,ПодписьТочки,Истина);

КонецЕсли;

Если СписокТочек.НайтиПоЗначению(Строка).Пометка Тогда

Если ПДиаграмма = Неопределено Тогда

Точка = Диаграмма.Точки.Добавить(ПодписьТочки);

Точка.Расшифровка = Строка;

Точка = ДиаграммаЗатрат.Точки.Добавить(ПодписьТочки);

Точка.Расшифровка = Строка;

Точка = ДиаграммаИтогов.Точки.Добавить(ПодписьТочки);

Точка.Расшифровка = Строка;

Иначе

Точка = ПДиаграмма.Точки.Добавить(ПодписьТочки);

Точка.Расшифровка = Строка;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

&НаСервере

Процедура ПостроитьДиаграмму(ВыборкаВыручка, ТаблицаПлана)

Если ВыборкаВыручка = Неопределено Тогда

Возврат;

КонецЕсли;

ВыборкаВыручка.Сбросить();

Диаграмма.ТипДиаграммы = Отчет.ТипДиаграммы;

Пока ВыборкаВыручка.Следующий() Цикл

ВыборкаДетали = ВыборкаВыручка.Выбрать();

Элемент = СписокСтатейВыручки.НайтиПоЗначению(ВыборкаВыручка.Статья);

Если НЕ Элемент.Пометка Тогда

Продолжить;

КонецЕсли;

Серия = Диаграмма.Серии.Добавить(ВыборкаВыручка.Статья);

СчетчикОтмеченныхСтатей = 0;

Для Каждого Статья Из СписокСтатейВыручки Цикл

Если Статья.Пометка Тогда

СчетчикОтмеченныхСтатей = СчетчикОтмеченныхСтатей + 1;

КонецЕсли;

КонецЦикла;

Массив = Новый Массив;

Если СчетчикОтмеченныхСтатей <= Отчет.КоличествоСтатейДляПлана Тогда

Отбор = Новый Структура;

Отбор.Вставить("Статья",ВыборкаВыручка.Статья);

Массив = ТаблицаПлана.НайтиСтроки(Отбор);

Если Массив.Количество() > 0 Тогда

СерияПлана = Диаграмма.Серии.Добавить("План "+ВыборкаВыручка.Статья);

СерияПлана.Линия = Новый Линия(ТипЛинииДиаграммы.ПунктирТочкаТочка,2);

КонецЕсли;

КонецЕсли;

Пока ВыборкаДетали.Следующий() Цикл

Если НЕ СписокТочек.НайтиПоЗначению(ВыборкаДетали.Период).Пометка Тогда

Продолжить;

КонецЕсли;

Для Каждого ВведеннаяТочка Из Диаграмма.Точки Цикл

Если ВведеннаяТочка.Расшифровка = ВыборкаДетали.Период Тогда

Точка = ВведеннаяТочка;

Прервать;

КонецЕсли;

КонецЦикла;

Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаДетали.Всего);

Если Массив.Количество() > 0 Тогда

Для Каждого Строка Из Массив Цикл

Если Строка.Период = ВыборкаДетали.Период Тогда

Диаграмма.УстановитьЗначение(Точка, СерияПлана, Строка.Сумма);

Прервать;

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

&НаСервере

Процедура ПостроитьДиаграммуЗатрат(ТаблицаЗатратДляДиаграммы)

ДиаграммаЗатрат.ТипДиаграммы = Отчет.ТипДиаграммы;

Для Каждого Строка Из ТаблицаЗатратДляДиаграммы Цикл

Элемент = СписокСтатейЗатрат.НайтиПоЗначению(Строка.Статья);

Если НЕ Элемент.Пометка Тогда

Продолжить;

КонецЕсли;

НужнаяСерия = Неопределено;

Для Каждого Серия Из ДиаграммаЗатрат.Серии Цикл

Если Серия.Текст = Строка.Статья Тогда

НужнаяСерия = Серия;

КонецЕсли;

КонецЦикла;

Если НужнаяСерия = Неопределено Тогда

НужнаяСерия = ДиаграммаЗатрат.Серии.Добавить(Строка.Статья);

КонецЕсли;

Для Каждого ВведеннаяТочка Из ДиаграммаЗатрат.Точки Цикл

Если ВведеннаяТочка.Расшифровка = Строка.Период Тогда

Точка = ВведеннаяТочка;

Прервать;

КонецЕсли;

КонецЦикла;

Если НЕ СписокТочек.НайтиПоЗначению(Строка.Период).Пометка Тогда

Продолжить;

КонецЕсли;

ДиаграммаЗатрат.УстановитьЗначение(Точка, НужнаяСерия, Строка.СуммаОборотДт);

КонецЦикла;

КонецПроцедуры

&НаСервере

Процедура ПостроитьДиаграммуИтогов(ТаблицаИтогов)

ДиаграммаИтогов.ТипДиаграммы = Отчет.ТипДиаграммы;

Для Каждого Строка Из ТаблицаИтогов Цикл

Элемент = СписокСтатейИтогов.НайтиПоЗначению(Строка.Статья);

Если НЕ Элемент.Пометка Тогда

Продолжить;

КонецЕсли;

НужнаяСерия = Неопределено;

Для Каждого Серия Из ДиаграммаИтогов.Серии Цикл

Если Серия.Текст = Строка.Статья Тогда

НужнаяСерия = Серия;

КонецЕсли;

КонецЦикла;

Если НужнаяСерия = Неопределено Тогда

НужнаяСерия = ДиаграммаИтогов.Серии.Добавить(Строка.Статья);

КонецЕсли;

Для Каждого ВведеннаяТочка Из ДиаграммаИтогов.Точки Цикл

Если ВведеннаяТочка.Расшифровка = Строка.Период Тогда

Точка = ВведеннаяТочка;

Прервать;

КонецЕсли;

КонецЦикла;

Если НЕ СписокТочек.НайтиПоЗначению(Строка.Период).Пометка Тогда

Продолжить;

КонецЕсли;

ДиаграммаИтогов.УстановитьЗначение(Точка, НужнаяСерия, Строка.СуммаОборотДт);

КонецЦикла;

КонецПроцедуры

&НаКлиенте

Процедура СписокНаличныйРасчетПометкаПриИзменении(Элемент)

ТекущаяСтрока = Элементы.СписокНаличныйРасчет.ТекущиеДанные;

НайденныйЭлемент = Отчет.СписокОрганизацийБезнал.НайтиПоЗначению(ТекущаяСтрока.Значение);

Если НайденныйЭлемент <> Неопределено Тогда

Если НайденныйЭлемент.Пометка Тогда

НайденныйЭлемент.Пометка = Ложь;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

&НаКлиенте

Процедура СписокБезналичныйРасчетПометкаПриИзменении(Элемент)

ТекущаяСтрока = Элементы.СписокБезналичныйРасчет.ТекущиеДанные;

НайденныйЭлемент = Отчет.СписокОрганизацийНал.НайтиПоЗначению(ТекущаяСтрока.Значение)

Если НайденныйЭлемент <> Неопределено Тогда

Если НайденныйЭлемент.Пометка Тогда

НайденныйЭлемент.Пометка = Ложь;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

&НаКлиенте

Процедура СписокТочекВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СписокТочек.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка = НЕ СписокТочек.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка;

ОчиститьДиаграммы();

СформироватьТочки(,Ложь);

СформироватьДиаграммы();

КонецПроцедуры

&НаКлиенте

Процедура СписокСтатейВыручкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СписокСтатейВыручки.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка = НЕ СписокСтатейВыручки.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка;

СписокСтатейВыручкиВыборНаСервере();

КонецПроцедуры

&НаСервере

Процедура СписокСтатейВыручкиВыборНаСервере()

Диаграмма.Очистить();

СформироватьТочки(Диаграмма, Ложь);

СтруктураИспользуемыхДанных = ПолучитьИзВременногоХранилища(Отчет.АдресВременногоХранилища);

ПостроитьДиаграмму(СтруктураИспользуемыхДанных.ВыборкаВыручка, СтруктураИспользуемыхДанных.ТаблицаПлана);

КонецПроцедуры

&НаКлиенте

Процедура СписокСтатейЗатратВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СписокСтатейЗатрат.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка = НЕ СписокСтатейЗатрат.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка;

СписокСтатейЗатратВыборНаСервере();

КонецПроцедуры

&НаСервере

Процедура СписокСтатейЗатратВыборНаСервере()

ДиаграммаЗатрат.Очистить();

СформироватьТочки(ДиаграммаЗатрат, Ложь);

СтруктураИспользуемыхДанных = ПолучитьИзВременногоХранилища(Отчет.АдресВременногоХранилища);

ПостроитьДиаграммуЗатрат(СтруктураИспользуемыхДанных.ТаблицаЗатратДляДиаграммы);

КонецПроцедуры

&НаКлиенте

Процедура СписокСтатейИтоговВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СписокСтатейИтогов.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка = НЕ СписокСтатейИтогов.НайтиПоИдентификатору(ВыбраннаяСтрока).Пометка;

СписокСтатейИтоговВыборНаСервере();

КонецПроцедуры

&НаСервере

Процедура СписокСтатейИтоговВыборНаСервере()

ДиаграммаИтогов.Очистить();

СформироватьТочки(ДиаграммаИтогов, Ложь);

СтруктураИспользуемыхДанных = ПолучитьИзВременногоХранилища(Отчет.АдресВременногоХранилища);

ПостроитьДиаграммуИтогов(СтруктураИспользуемыхДанных.ТаблицаИтогов);

КонецПроцедуры

&НаКлиенте

Процедура СписокТочекПриИзменении(Элемент)

ОчиститьДиаграммы();

СформироватьТочки(,Ложь);

СформироватьДиаграммы();

КонецПроцедуры

&НаСервере

Процедура СформироватьДиаграммы()

СтруктураИспользуемыхДанных = ПолучитьИзВременногоХранилища(Отчет.АдресВременногоХранилища);

ПостроитьДиаграмму(СтруктураИспользуемыхДанных.ВыборкаВыручка, СтруктураИспользуемыхДанных.ТаблицаПлана);

ПостроитьДиаграммуЗатрат(СтруктураИспользуемыхДанных.ТаблицаЗатратДляДиаграммы);

ПостроитьДиаграммуИтогов(СтруктураИспользуемыхДанных.ТаблицаИтогов);

КонецПроцедуры

&НаКлиенте

Процедура СписокСтатейВыручкиПриИзменении(Элемент)

СписокСтатейВыручкиПриИзмененииНаСервере();

КонецПроцедуры

&НаСервере

Процедура СписокСтатейВыручкиПриИзмененииНаСервере()

Диаграмма.Очистить();

СформироватьТочки(Диаграмма, Ложь);

СтруктураИспользуемыхДанных = ПолучитьИзВременногоХранилища(Отчет.АдресВременногоХранилища);

ПостроитьДиаграмму(СтруктураИспользуемыхДанных.ВыборкаВыручка, СтруктураИспользуемыхДанных.ТаблицаПлана);

КонецПроцедуры

&НаКлиенте

Процедура СписокСтатейЗатратПриИзменении(Элемент)

СписокСтатейЗатратПриИзмененииНаСервере();

КонецПроцедуры

&НаСервере

Процедура СписокСтатейЗатратПриИзмененииНаСервере()

ДиаграммаЗатрат.Очистить();

СформироватьТочки(ДиаграммаЗатрат, Ложь);

СтруктураИспользуемыхДанных = ПолучитьИзВременногоХранилища(Отчет.АдресВременногоХранилища);

ПостроитьДиаграммуЗатрат(СтруктураИспользуемыхДанных.ТаблицаЗатратДляДиаграммы);

КонецПроцедуры

&НаКлиенте

Процедура СписокСтатейИтоговПриИзменении(Элемент)

СписокСтатейИтоговПриИзмененииНаСервере();

КонецПроцедуры

&НаСервере

Процедура СписокСтатейИтоговПриИзмененииНаСервере()

ДиаграммаИтогов.Очистить();

СформироватьТочки(ДиаграммаИтогов, Ложь);

СтруктураИспользуемыхДанных = ПолучитьИзВременногоХранилища(Отчет.АдресВременногоХранилища);

ПостроитьДиаграммуИтогов(СтруктураИспользуемыхДанных.ТаблицаИтогов);

КонецПроцедуры

&НаСервере

Процедура ПериодОтчетаПриИзмененииНаСервере()

ОбработкаОбъект = РеквизитФормыВЗначение("Отчет");

Результат = ОбработкаОбъект.СформироватьОтчет();

ТаблицаПлана = ОбработкаОбъект.ПолучитьПланДляГрафика();

//Перестроим график

ВыборкаВыручка = ОбработкаОбъект.СформироватьГрафик();

ТаблицаЗатратДляДиаграммы = Результат.ТаблицаЗатратДляДиаграммы;

ЗаполнитьСписокСтатей(ВыборкаВыручка, ТаблицаЗатратДляДиаграммы);

ТаблицаИтогов = ПодготовитьТаблицуИтогов(ВыборкаВыручка, ТаблицаЗатратДляДиаграммы);

СтруктураИспользуемыхДанных = Новый Структура;

СтруктураИспользуемыхДанных.Вставить("ТаблицаПлана", ТаблицаПлана);

СтруктураИспользуемыхДанных.Вставить("ВыборкаВыручка", ВыборкаВыручка);

СтруктураИспользуемыхДанных.Вставить("ТаблицаИтогов", ТаблицаИтогов);

СтруктураИспользуемыхДанных.Вставить("ТаблицаЗатратДляДиаграммы", ТаблицаЗатратДляДиаграммы);

Отчет.АдресВременногоХранилища = ПоместитьВоВременноеХранилище(СтруктураИспользуемыхДанных, ЭтаФорма.УникальныйИдентификатор);

ОчиститьДиаграммы();

СформироватьТочки();

СформироватьДиаграммы();

КонецПроцедуры

&НаСервере

Процедура СформироватьПрогнозНаСервере()

ДиаграммаПрогноза.РежимСглаживания = РежимСглаживанияДиаграммы.ГладкаяКривая;

ДиаграммаПрогноза.НатяжениеСглаживания = 100;

ОбработкаОбъект = РеквизитФормыВЗначение("Отчет");

ДатаНачалаПрогноза = Дата(ГодПрогноза - КоличествоЛетДляРасчета, 1, 1, 0, 0, 0);

ДатаОкончанияПрогноза = ТекущаяДата();

Таб = Новый ТаблицаЗначений;

Таб.Колонки.Добавить("Месяц");

Таб.Колонки.Добавить("Сумма");

Таб.Колонки.Добавить("Месяцы");

Если ПоказательРасчета = 0 Тогда

Выборка = ОбработкаОбъект.ПолучитьВыручкуДляГрафика(ДатаНачалаПрогноза, ДатаОкончанияПрогноза, "Месяц", "Период");

ИначеЕсли ПоказательРасчета = 1 Тогда

Выборка = ОбработкаОбъект.ПолучитьКоличествоЗаказов(ДатаНачалаПрогноза, ДатаОкончанияПрогноза);

КонецЕсли;

ФиксироватьСуммуМесяца = Истина;

Пока Выборка.Следующий() Цикл

НоваяСтрока = Таб.Добавить();

НоваяСтрока.Месяц = Выборка.Период;

НоваяСтрока.Сумма = Выборка.Всего;

КонецЦикла;

Результат = Новый ТаблицаЗначений;

Результат.Колонки.Добавить("Месяцы");

Результат.Колонки.Добавить("Месяц");

Результат.Колонки.Добавить("Сумма");

РезультатФакт = Новый ТаблицаЗначений;

РезультатФакт.Колонки.Добавить("Месяцы");

РезультатФакт.Колонки.Добавить("Месяц");

РезультатФакт.Колонки.Добавить("Сумма");

Для зн = 0 По Таб.Количество() - 1 Цикл

Выборка = Таб[зн];

Если Год(Выборка.Месяц) >= ГодПрогноза Тогда

НовСтр = РезультатФакт.Добавить();

Иначе

НовСтр = Результат.Добавить();

КонецЕсли;

НовСтр.Месяц = Выборка.Месяц;

НовСтр.Месяцы = Месяц(Выборка.Месяц);

НовСтр.Сумма = Выборка.Сумма;

КонецЦикла;

Табличка.ПолучитьЭлементы().Очистить();

Сум = 0;

Месяцы = Новый Массив;

Месяцы.Добавить("Янв");

Месяцы.Добавить("Фев");

Месяцы.Добавить("Мар");

Месяцы.Добавить("Апр");

Месяцы.Добавить("Май");

Месяцы.Добавить("Июн");

Месяцы.Добавить("Июл");

Месяцы.Добавить("Авг");

Месяцы.Добавить("Сен");

Месяцы.Добавить("Окт");

Месяцы.Добавить("Ноя");

Месяцы.Добавить("Дек");

ДиаграммаПрогноза.Очистить();

ДиаграммаПрогноза.ТипДиаграммы = ТипДиаграммы.График;

Мин = ДиаграммаПрогноза.Серии.Добавить("Минимум");

Прогноз = ДиаграммаПрогноза.Серии.Добавить("Прогноз");

Макс = ДиаграммаПрогноза.Серии.Добавить("Максимум");

Факт = ДиаграммаПрогноза.Серии.Добавить("Факт");

Сумма = 0;

//если нужно - планирование выполняем 2 раза. Такая ситуация происходит, если планирование осуществляется

//например, на следующий год. Первым проходом цикла дополняем оставшиеся месяцы прогнозируемыми данными,

//вторым проходом - создаем прогноз на будущий год, отталкиваясь от прошедших месяцев тек. года и спрогнозированных

//показателей оставшихся месяцев.

КоличествоОбходов = ?(ГодПрогноза - Год(ТекущаяДата()) < 0, 0, ГодПрогноза - Год(ТекущаяДата()));

Для ДопПрогноз = 0 по КоличествоОбходов Цикл

Для зн = 1 по 12 Цикл

Строки = Результат.НайтиСтроки(Новый Структура("Месяцы", зн));

Сред = 0;

Для Каждого Стр из Строки Цикл

Масса = Года.НайтиСтроки(Новый Структура("Год", Год(Стр.Месяц)))[0].Коэффициент;

Если (Месяц(Стр.Месяц) >= Месяц(ДатаОкончанияПрогноза)) И (ГодПрогноза <> Год(ТекущаяДата()))

И (ДопПрогноз <> ГодПрогноза - Год(ТекущаяДата())) Тогда

СуммаМасс = 0;

Для Каждого СтрГод Из Года Цикл

Если СтрГод.Год <> Год(ДатаОкончанияПрогноза) Тогда

СуммаМасс = СуммаМасс + СтрГод.Коэффициент;

КонецЕсли;

КонецЦикла;

Масса = ?(СуммаМасс = 0, 0, Масса / СуммаМасс);

КонецЕсли;

Если Стр.Месяц <> НачалоМесяца(ДатаОкончанияПрогноза) Тогда

Сред = Сред + Стр.Сумма * Масса;

КонецЕсли;

КонецЦикла;

//Уточняем прогноз

Для Каждого СтрокаУточнения Из УточняющиеПоказатели Цикл

Сред = Сред * СтрокаУточнения.Коэффициент.Значение;

КонецЦикла;

//Если итерация не последняя - нужно создать прогноз на оставшиеся месяцы, от которых мы пудем строить прогноз на след год.

//Получается прогноз от прогноза.

Если ДопПрогноз <> ГодПрогноза - Год(ТекущаяДата()) Тогда

НайденныеСтроки = Результат.НайтиСтроки(Новый Структура("Месяц", Дата(Год(ТекущаяДата())+ДопПрогноз, зн, 1, 0, 0, 0)));

Добавлять = Ложь;

//Если факта по нужному месяцу нет - делаем прогноз на него и записываем в общую таблицу

Если НайденныеСтроки.Количество() = 0 Тогда

Добавлять = Истина;

Иначе

//Если факт по тек. месяцу есть - он скорее всего не полный (например, середина месяца)

//заменяем его на прогноз тоже.

Если НайденныеСтроки[0].Месяц = НачалоМесяца(ТекущаяДата()) Тогда

Добавлять = Истина;

КонецЕсли;

КонецЕсли;

Если Добавлять Тогда

Если НайденныеСтроки.Количество() > 0 Тогда

НоваяСтрока = НайденныеСтроки[0];

Иначе

НоваяСтрока = Результат.Добавить();

КонецЕсли;

НоваяСтрока.Месяцы = зн;

НоваяСтрока.Месяц = Дата(Год(ТекущаяДата())+ДопПрогноз, зн, 1, 0, 0, 0);

НоваяСтрока.Сумма = Сред;

КонецЕсли;

КонецЕсли;

//строим график, когда идет последняя итерация цикла

Если ДопПрогноз = КоличествоОбходов Тогда

Отклонение = 0;

Для Каждого Стр Из Строки Цикл

Отклонение = Отклонение + (Сред - Стр.Сумма)*(Сред - Стр.Сумма);

КонецЦикла;

Отклонение = Отклонение / Строки.Количество();

Отклонение = Sqrt(Отклонение);

//Сум = Сум + Сред;

НовСтр = Табличка.ПолучитьЭлементы().Добавить();

НовСтр.Месяцы = Месяцы[зн - 1];

НовСтр.Изменение = Сред;

НовСтр.Минимум = Сред - Отклонение;

НовСтр.Максимум = Сред + Отклонение; НовСтр.Отклонение = Отклонение;

НайденныйФакт = РезультатФакт.НайтиСтроки(Новый Структура("Месяц", Дата(ГодПрогноза, Стр.Месяцы, 1, 0, 0, 0)));

Если НайденныйФакт.Количество() > 0 Тогда

НовСтр.Факт = НайденныйФакт[0].Сумма;

КонецЕсли;

Точка = ДиаграммаПрогноза.Точки.Добавить(Месяцы[зн - 1]);

ДиаграммаПрогноза.УстановитьЗначение(Точка, Мин, НовСтр.Минимум, "ЧДЦ=2");

ДиаграммаПрогноза.УстановитьЗначение(Точка, Макс, НовСтр.Максимум, "ЧДЦ=2");

ДиаграммаПрогноза.УстановитьЗначение(Точка, Прогноз, Формат(НовСтр.Изменение, "ЧДЦ=2"));

//Установим факт

Отбор = Новый Структура("Месяц", Дата(ГодПрогноза, Стр.Месяцы, 1, 0, 0, 0));

НайденныеСтроки = РезультатФакт.НайтиСтроки(Отбор);

Если НайденныеСтроки.Количество() > 0 Тогда

СуммаФакт = НайденныеСтроки[0].Сумма;

ДиаграммаПрогноза.УстановитьЗначение(Точка, Факт, Формат(СуммаФакт, "ЧДЦ=2"));

КонецЕсли;

Для Каждого Стр Из Строки Цикл

НСтр = НовСтр.ПолучитьЭлементы().Добавить();

НСтр.Месяцы = Формат(Стр.Месяц, "ДФ=гггг");

НСтр.Изменение = Стр.Сумма;

КонецЦикла;

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

&НаСервереБезКонтекста

Функция Мод(зн)

Возврат ?(зн < 0, -зн, зн);

КонецФункции

&НаКлиенте

Процедура КоличествоЛетДляРасчетаПриИзменении(Элемент)

Года.Очистить();

Для Зн = 1 По КоличествоЛетДляРасчета Цикл

НовСтр = Года.Добавить();

НовСтр.Год = ГодПрогноза - Зн;

НовСтр.Коэффициент = 1 / КоличествоЛетДляРасчета;

КонецЦикла;

КонецПроцедуры

&НаКлиенте

Процедура СформироватьПрогноз(Команда)

СформироватьПрогнозНаСервере();

КонецПроцедуры

&НаКлиенте

Процедура ГодПрогнозаПриИзменении(Элемент)

КоличествоЛетДляРасчетаПриИзменении(Неопределено);

КонецПроцедуры

&НаСервере

Процедура ПервыйМетодНаСервере()

Сообщить("Работакет");

КонецПроцедуры

&НаКлиенте

Процедура ПервыйМетод(Команда)

ПервыйМетодНаСервере();

КонецПроцедуры

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.