Принципы разработки в среде «1С: Предприятие 8.2»

Автор: Пользователь скрыл имя, 18 Апреля 2013 в 13:30, курсовая работа

Краткое описание

В данном курсовом проекте разработана конфигурация, позволяющая автоматизировать простейший бюджетный процесс во франчайзинговой компании, продающей программные продукты «1С» и оказывающей услуги по внедрению.
Система позволяет совершать следующие операции:
добавление, изменение, удаление и хранение информации об отделах организации и статьях доходов и расходов;
ввод, изменение и удаление плановых и фактических цифр доходов и расходов по каждому отделу;
формирование отчетности по исполнению бюджета компании.

Оглавление

1 ВВЕДЕНИЕ 3
2 Предварительный анализ 4
2.1 Обзор состояния вопроса 4
2.2 Формулировка задач проектирования 4
2.3 Требования к составу и параметрам технических средств 7
3 Описание программного продукта 9
3.1 Принципы разработки в среде «1С: Предприятие 8.2» 9
3.2 Структура проектируемой системы 9
3.2.1 Справочники 9
3.2.2 Документы 10
3.2.3 Перечисления 12
3.2.4 Отчеты 12
3.2.5 Регистры накопления 12
4 Инструкции по пользованию системой 13
4.1 Руководство пользователю 13
4.1.1 Работа со справочниками 13
4.1.2 Работа с документами 15
4.1.3 Работа с отчетами 18
4.2 Руководство системному администратору (программисту) 19

Файлы: 1 файл

Пояснительная записка.doc

— 773.50 Кб (Скачать)

Если Документ = Объект.Ссылка Тогда

Отказ = Ложь;

Иначе

Отказ = Истина;

Предупреждение("Для  данного отдела на указанный период план по доходам и расходам уже заполнен", , "Документ не может быть записан");

КонецЕсли;

Иначе Отказ = Ложь;

КонецЕсли;

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

 

&НаКлиенте

Процедура РасчетДефицитаПрофицита()

ДефПрЯнварь = Объект.ТабличнаяЧастьДоходы.Итог("Январь") - Объект.ТабличнаяЧастьРасходы.Итог("Январь");

ДефПрФевраль = Объект.ТабличнаяЧастьДоходы.Итог("Февраль") - Объект.ТабличнаяЧастьРасходы.Итог("Февраль");

ДефПрМарт = Объект.ТабличнаяЧастьДоходы.Итог("Март") - Объект.ТабличнаяЧастьРасходы.Итог("Март");

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

 

&НаКлиенте

Процедура ТабличнаяЧастьДоходыПриИзменении(Элемент)

Строка = Элементы.ТабличнаяЧастьДоходы.ТекущиеДанные;

Если Строка.СтатьяДоходов = ПродажиПП Тогда

АвтоматическийРасчетСебестоимости(Элемент, Строка);

КонецЕсли;

АвтоматическийРасчетАдминистративныхРасходов(Элемент, Строка);

РасчетДефицитаПрофицита();

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

 

&НаКлиенте

Процедура ТабличнаяЧастьРасходыПриИзменении(Элемент)

РасчетДефицитаПрофицита();

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

 

&НаКлиенте

Процедура АвтоматическийРасчетСебестоимости(Элемент, Строка)

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

ПараметрыОтбора.Вставить("СтатьяРасходов", СебестоимостьПП);

Стр = Объект.ТабличнаяЧастьРасходы.НайтиСтроки(ПараметрыОтбора);

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

Эл.Январь = Строка.Январь * 0.45;

Эл.Февраль = Строка.Февраль * 0.45;

Эл.Март = Строка.Март * 0.45;

КонецЦикла;

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

 

&НаКлиенте

Процедура АвтоматическийРасчетАдминистративныхРасходов(Элемент, Строка)

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

ПараметрыОтбора.Вставить("СтатьяРасходов", АдминистративныеРасходы);

Стр = Объект.ТабличнаяЧастьРасходы.НайтиСтроки(ПараметрыОтбора);

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

Эл.Январь = 0.1 * (Объект.ТабличнаяЧастьДоходы.Итог("Январь") - Строка.Январь * 0.45);

Эл.Февраль = 0.1 * (Объект.ТабличнаяЧастьДоходы.Итог("Февраль") - Строка.Февраль * 0.45);

Эл.Март = 0.1 * (Объект.ТабличнаяЧастьДоходы.Итог("Март") - Строка.Март * 0.45);

КонецЦикла;

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

 

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ПродажиПП = Справочники.СтатьиДоходовРасходов.НайтиПоНаименованию("Продажи ПП", Истина);

СебестоимостьПП = Справочники.СтатьиДоходовРасходов.НайтиПоНаименованию("Себестоимость  ПП", Истина);

АдминистративныеРасходы = Справочники.СтатьиДоходовРасходов.НайтиПоНаименованию("Административные расходы", Истина);

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

 

&НаКлиенте

Процедура ТабличнаяЧастьРасходыПриАктивизацииСтроки(Элемент)

Строка = Элементы.ТабличнаяЧастьРасходы.ТекущиеДанные;

Если (Строка.СтатьяРасходов = СебестоимостьПП) ИЛИ (Строка.СтатьяРасходов = АдминистративныеРасходы) Тогда

Элементы.ТабличнаяЧастьРасходы.ТолькоПросмотр = Истина;

Иначе

Элементы.ТабличнаяЧастьРасходы.ТолькоПросмотр = Ложь;

КонецЕсли;

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

 

&НаКлиенте

Процедура Проверка(Период, Отдел)

Если (Период <> "") и Не(Отдел.Пустая()) Тогда

Документ = ПроверкаДокумента(Период, Отдел);

КонецЕсли;

Если Документ <> Неопределено Тогда

Если Документ = Объект.Ссылка Тогда

Отказ = Ложь;

Иначе

Отказ = Истина;

Предупреждение("Для  данного отдела на указанный период план по доходам и расходам уже  заполнен", , "Документ не может быть записан");

        Отдел = Неопределено; 

КонецЕсли;

Иначе Отказ = Ложь;

КонецЕсли; 

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

 

&НаКлиенте

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

Проверка(Объект.Период, Объект.Отдел);

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

 

&НаКлиенте

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

Строка = Строка(Формат(ТекущаяДата(), "ДФ = гггг"));

Если Период = "1 квартал "+ Строка тогда

Объект.Период = Строка + "0102";

иначе

Если Период = "2 квартал "+ Строка тогда

Объект.Период = Строка + "0402";

Иначе

Если Период = "3 квартал "+ Строка тогда

Объект.Период = Строка + "0702";

Иначе

Если Период = "4 квартал "+ Строка тогда

Объект.Период = Строка + "1002";

Иначе

Строка1 = Формат(Число(Строка)+1, "ЧГ = 0 ");

Объект.Период = Строка(Строка1) + "0102";

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЕсли;

Проверка(Объект.Период, Объект.Отдел);

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

 

Модуль объекта  документа «Ввод плановых бюджетных  цифр»

Процедура ЗаписьДанных()

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

СпрПланПоДоходам = Справочники.ПланПоДоходам.СоздатьЭлемент();

СпрПланПоРасходам = Справочники.ПланПоРасходам.СоздатьЭлемент();

 

Таб.Очистить();

Если Месяц(Период) = 1 тогда

Строка = "1 квартал ";

 Иначе

 Если Месяц(Период) = 4 тогда

 Строка = "2 квартал ";

 Иначе

Если Месяц(Период) = 7 тогда

Строка = "3 квартал ";

Иначе

Строка = "4 квартал ";

КонецЕсли;

 КонецЕсли;

 КонецЕсли;

 

Таб = ТабличнаяЧастьДоходы.Выгрузить();

СпрПланПоДоходам.Владелец = Отдел;

СпрПланПоДоходам.Документ = Ссылка;

СпрПланПоДоходам.Наименование = "План по доходам для отдела " + Отдел + " на " + Строка + " " + Формат(Период, "ДФ = гггг") + " года";

СпрПланПоДоходам.Период = Период;

СпрПланПоДоходам.ТабПланПоДоходам.Загрузить(Таб);

СпрПланПоДоходам.Записать();

 

Таб.Очистить();

Таб = ТабличнаяЧастьРасходы.Выгрузить();

СпрПланПоРасходам.Владелец = Отдел;

СпрПланПоРасходам.Документ = Ссылка;

СпрПланПоРасходам.Наименование = "План по расходам для отдела " + Отдел + " на " + Строка + " " + Формат(Период, "ДФ = гггг") + " года";

СпрПланПоРасходам.Период = Период;

СпрПланПоРасходам.ТабПланПоРасходам.Загрузить(Таб);

СпрПланПоРасходам.Записать(); 

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

 

Процедура ОбработкаПроведения(Отказ, Режим)

ОбработкаУдаленияПроведения();

ЗаписьДанных();     

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

 

Процедура ОбработкаУдаленияПроведения() 

 

ЗапросДоход = Новый  Запрос;

ЗапросДоход.Текст = "ВЫБРАТЬ

|ПланПоДоходам.Ссылка

|ИЗ

|Справочник.ПланПоДоходам  КАК ПланПоДоходам

|ГДЕ

|КВАРТАЛ(ПланПоДоходам.Период) = КВАРТАЛ(&Период)

|И ПланПоДоходам.Владелец = &Отдел

|И ПланПоДоходам.Документ = &Документ

|И ГОД(ПланПоДоходам.Период) = ГОД(&Период)

|";

ЗапросДоход.УстановитьПараметр("Период", Период);

ЗапросДоход.УстановитьПараметр("Отдел", Отдел);

ЗапросДоход.УстановитьПараметр("Документ", Ссылка);

 

РезультатДоход = ЗапросДоход.Выполнить().Выбрать();

Пока РезультатДоход.Следующий() Цикл

ЭлементДоход = РезультатДоход.Ссылка.ПолучитьОбъект();

ЭлементДоход.Удалить();

КонецЦикла;

 

ЗапросРасход = Новый Запрос;

ЗапросРасход.Текст = "ВЫБРАТЬ

|ПланПоРасходам.Ссылка

|ИЗ

|Справочник.ПланПоРасходам  КАК ПланПоРасходам

|ГДЕ

|КВАРТАЛ(ПланПоРасходам.Период) = КВАРТАЛ(&Период)

|И ПланПоРасходам.Владелец = &Отдел

|И ПланПоРасходам.Документ = &Документ

|И ГОД(ПланПоРасходам.Период) = ГОД(&Период)

|";

ЗапросРасход.УстановитьПараметр("Период", Период);

ЗапросРасход.УстановитьПараметр("Отдел", Отдел);

ЗапросРасход.УстановитьПараметр("Документ", Ссылка);

 

РезультатРасход = ЗапросРасход.Выполнить().Выбрать();

Пока РезультатРасход.Следующий() Цикл

ЭлементРасход = РезультатРасход.Ссылка.ПолучитьОбъект();

ЭлементРасход.Удалить();

КонецЦикла;

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

 

Модуль формы  документа «Движение денежных средств»

&НаКлиенте

Процедура ТабличнаяЧастьПриходПриИзменении(Элемент)

ТекущаяСтрока = Элементы.ТабличнаяЧасть.ТекущиеДанные;

Если ТекущаяСтрока.Приход <> 0 Тогда

ТекущаяСтрока.Расход = 0;

ТекущаяСтрока.СтатьяРасходов = Неопределено;

Элементы.ТабличнаяЧастьСтатьяРасходов.Доступность = Ложь;

КонецЕсли;

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

 

&НаКлиенте

Процедура ТабличнаяЧастьРасходПриИзменении(Элемент)

ТекущаяСтрока = Элементы.ТабличнаяЧасть.ТекущиеДанные;

Если ТекущаяСтрока.Расход <> 0 Тогда

ТекущаяСтрока.Приход = 0;

ТекущаяСтрока.СтатьяДоходов = Неопределено;

Элементы.ТабличнаяЧастьСтатьяДоходов.Доступность = Ложь;

КонецЕсли;

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

 

&НаКлиенте

Процедура ТабличнаяЧастьПриАктивизацииСтроки(Элемент)

Попытка

Элементы.ТабличнаяЧастьСтатьяДоходов.Доступность = Истина;

Элементы.ТабличнаяЧастьСтатьяРасходов.Доступность = Истина;

ТекущаяСтрока = Элементы.ТабличнаяЧасть.ТекущиеДанные;

Если ТекущаяСтрока.Приход <> 0 Тогда

ТекущаяСтрока.Расход = 0;

ТекущаяСтрока.СтатьяРасходов = Неопределено;

Элементы.ТабличнаяЧастьСтатьяРасходов.Доступность = Ложь;

Иначе

Если ТекущаяСтрока.Расход <> 0 Тогда

ТекущаяСтрока.Приход = 0;

ТекущаяСтрока.СтатьяДоходов = Неопределено;

Элементы.ТабличнаяЧастьСтатьяДоходов.Доступность = Ложь;

КонецЕсли;

КонецЕсли;

Исключение

КонецПопытки; 

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

 

Модуль объекта  документа «Движение денежных средств»

Процедура ОбработкаПроведения(Отказ, Режим)

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

// Данный фрагмент  построен конструктором.

// При повторном  использовании конструктора, внесенные  вручную изменения будут утеряны!!!

 

 

// регистр ФактДоходы 

Движения.ФактДоходы.Записывать = Истина;

Для Каждого  ТекСтрокаТабличнаяЧасть Из ТабличнаяЧасть Цикл

Если ТекСтрокаТабличнаяЧасть.Приход <> 0 Тогда

Движение = Движения.ФактДоходы.Добавить();

Движение.Период = Дата;

Движение.СтатьяДоходов = ТекСтрокаТабличнаяЧасть.СтатьяДоходов;

Движение.Отдел = ТекСтрокаТабличнаяЧасть.Отдел;

Движение.Сумма = ТекСтрокаТабличнаяЧасть.Приход;

КонецЕсли;

Если ТекСтрокаТабличнаяЧасть.Приход <> 0 И ТекСтрокаТабличнаяЧасть.СтатьяДоходов.Пустая() Тогда

Отказ = Истина;

Сообщение = Новый  СообщениеПользователю;

//Сообщение.КлючДанных = Объект.Ссылка;

Сообщение.Текст = "Не заполнена колонка ""Статья доходов"" в строке списка ""Табличная  часть""";

//Сообщение.ПутьКДанным = "Объект";

//Сообщение.Поле = "СтатьяРасходов"

Сообщение.Сообщить();

КонецЕсли;

КонецЦикла;

 

Движения.ФактРасходы.Записывать = Истина;

Для Каждого  ТекСтрокаТабличнаяЧасть Из ТабличнаяЧасть Цикл

Если ТекСтрокаТабличнаяЧасть.Расход <> 0 Тогда

Движение = Движения.ФактРасходы.Добавить();

Движение.Период = Дата;

Движение.СтатьяРасходов = ТекСтрокаТабличнаяЧасть.СтатьяРасходов;

Движение.Отдел = ТекСтрокаТабличнаяЧасть.Отдел;

Движение.Сумма = ТекСтрокаТабличнаяЧасть.Расход;

КонецЕсли;

Если ТекСтрокаТабличнаяЧасть.Расход <> 0 И ТекСтрокаТабличнаяЧасть.СтатьяРасходов.Пустая() Тогда

Отказ = Истина;

Сообщение = Новый  СообщениеПользователю;

Сообщение.Текст = "Не заполнена колонка ""Статья расходов"" в строке списка ""Табличная часть""";

Сообщение.Сообщить();

КонецЕсли;

КонецЦикла;

 

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

 


Информация о работе Принципы разработки в среде «1С: Предприятие 8.2»