Система анализа и прогнозирования экономических показателей на ООО "Простор"
Произведение прогнозирования прибыли на базе экономико-математического моделирования. Рассмотрение реализации механизмов анализа прибыли и ее прогнозирования на базе "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
Подобные документы
Роль, место, структура прогнозирования и предсказывания в информационно-аналитической работе. Характеристика его методов: имитационного моделирования, морфологического анализа,"дерева целей", неформального прогнозирования. Основные правила их составления.
контрольная работа [90,3 K], добавлен 19.04.2011Основы прогнозирования банкротства предприятия с помощью индекса Альтмана. Создание программы для расчета коэффициента "Z" с помощью языка программирования Delphi. Расчет показателя эффективности активов по балансовой прибыли и доли оборотных средств.
курсовая работа [881,8 K], добавлен 30.01.2012Понятие экспертных систем, их классификация, виды и структура. Построение продукционной модели экспертной системы прогнозирования результатов сессии на основании анализа успеваемости, ее реализация в языке логического программирования Visual Prolog.
дипломная работа [1,6 M], добавлен 25.01.2011Функциональные возможности программного продукта. Требования к программным и аппаратным средствам. Обоснование выбора наилучшей модели для прогнозирования стоимостных показателей объектов. Разработка пользовательского интерфейса и модулей программы.
дипломная работа [2,3 M], добавлен 24.06.2013Исследование задачи и перспектив использования нейронных сетей на радиально-базисных функциях для прогнозирования основных экономических показателей: валовый внутренний продукт, национальный доход Украины и индекс потребительских цен. Оценка результатов.
курсовая работа [4,9 M], добавлен 14.12.2014Проектирование модуля на базе 1С Предприятие для предприятия, занимающегося сборкой и ремонтом компьютеров. Разработка конфигурации информационной системы. Описание 1C Предприятие. Проектирование конфигурации. Создание справочников, документов и отчетов.
курсовая работа [1,7 M], добавлен 28.07.2015Организационно-экономическая характеристика транспортного предприятия. Особенности транспортно-логистических бизнес-процессов организации. Использование автоматизированной информационной системы на базе продукта "1C: Предприятие", её преимущества.
дипломная работа [1,4 M], добавлен 31.12.2017Проект автоматизированной системы прогнозирования относительного курса валютных пар для международной валютной биржи Forex с использованием нейронных сетей. Требования к техническому обеспечению. Обоснование выбора средств автоматизации программы.
курсовая работа [1,3 M], добавлен 05.01.2013Нейронные сети как средство анализа процесса продаж мобильных телефонов. Автоматизированные решения на основе технологии нейронных сетей. Разработка программы прогнозирования оптово-розничных продаж мобильных телефонов на основе нейронных сетей.
дипломная работа [4,6 M], добавлен 22.09.2011Характеристика технологического процесса и существующей системы обработки информации. Автоматизированная система ввода, проверки логической целостности и корректировки вводимой информации. Требования к функциям, видам обеспечения. Спецификация атрибутов.
дипломная работа [3,1 M], добавлен 31.03.2011