Создание автоматизиpованной инфоpмационно-спpавочной системы расписания движения поездов и продажи билетов

Создание автоматизиpованной инфоpмационно-спpавочной системы расписания движения поездов и продажи билетов

ФЕДЕРАЛЬНОЕ АГЕНТСТВО МОРСКОГО И РЕЧНОГО ТРАНСПОРТА

Федеральное государственное образовательное учреждение высшего профессионального образования

«Санкт-Петербургский государственный университет водных коммуникаций»



КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ «БАЗЫ ДАННЫХ И ЭКСПЕРТНЫЕ СИСТЕМЫ»



ТЕМА:

«Создание автоматизиpованной инфоpмационно - спpавочной системы расписания движения поездов и продажи билетов»



Санкт-Петербург

2009 г

Оглавление



Введение

1 Описание системы

1.1 Нормализация и схема базы данных

1.2 Структура меню

2 Программная реализация информационной системы

2.1 Перечисления

2.2 Справочники

2.3 Документы

2.4 Регистры

2.5 Журналы

2.6 Отчеты

2.7 Администрирование

Заключение



Введение



Система программ "1С: Предприятие" предназначена для решения широкого спектра задач автоматизации учета и управления, стоящих перед динамично развивающимися современными предприятиями.

Смоделировать технологию накопления и обработки информации об учёте карточек пациентов в поликлинике. Обязательно должна быть выходная справочная информация (является основной целью функционирования любой информационной системы). Для этого:

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

- создаём «нормальную форму», которая приводит к нормализации всех полученных отношений; 

- составляем полный перечень всех запросов к БД;

- определяем структурные связи;

- построение схемы объекта.

Использование БД и СУБД при построении автоматизированной информационной системы отделяет логическую структуру данных (т.е. представлении об организации данных с точки зрения пользователя) от физической структуры данных в памяти ЭВМ, что значительно облегчает труд по созданию такой системы.

Под СУБД понимают пакет прикладных программ обслуживания БД, которая:

Обеспечивает пользователей языковыми средствами описания манипулирования данных;

Обеспечивает поддержку логической модели данных (т.е. логического представления физических данных);

Выполнение операции создания и манипулирования логических данных, а также обрабатывает и отображает операции над физическими данными;

Обеспечивает защиту целостности и корректности данных.

Преимуществом использования БД и СУБД при построении информационных систем заключается в централизованном управлении информационными ресурсами всей системы.

Достоинством является возможность однократно ввода данных и многократного использования, а также отсутствия проблемы контроля избыточности данных вследствие интеграции данных. Унификация средств организации данных и независимость прикладных программ значительно повышает эффективность труда.



1 Описание системы



Рассмотрим задачи, которые должна выполнять проектируемая информационно-справочная система и некоторые их особенности.

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

По своей сути СУБД будет оперативно выполнять следующие функции:

- формирование и печать сопроводительных документов, операций с пассажирами;

- формирование и печать отчёта расписания поездов;

- формирование и печать отчёта о ценах билетов;

- формирование и печать отчёта о проданных билетах за период;

- формирование и печать отчёта о билете конкретного пассажира;

- формирование и печать отчёта о поездах за период;

- формирование и печать отчёта о движениях наличности за период;

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



1.1 Нормализация и схема базы данных



Определим объекты и атрибуты проектируемой системы. Рассмотрим отношение следующей структуры:

ПриемПациента (Код_Пациента, Наименование_Пациента, Диагноз, НомерАмбулаторнойКарты, Адрес, Вид_Оплаты, Документ, Симптомы, Наименование_Услуга, Цена, Количество, Сумма)

В этом отношении имеется составной ключ – это код_пациент, диагноз, услуга. Все атрибуты отношения атомарны, значит оно находится в 1НФ. Рассмотрим наблюдающиеся в этом отношении функциональные зависимости. Прежде всего, в отношении содержится частичная функциональная зависимость неключевых атрибутов от ключа отношения:

Пациент – Наименование_Пациента, Пациент – Адрес_Пациента, Диагноз – Симптомы, наименование_Услуга – Цена.

Не ключевой атрибут Наименование_Пациента зависит от от ключа Код_Пациента.

Транзитивные зависимости: Диагноз ->-> Услуга->-> Симптомы

Наименование_Пациента ->-> Адрес

Наименование_Пациента ->-> Симптомы

Приведем это отношение ко 2НФ, разбивая исходное отношение и производя внешнее кодирование, при этом получаем отношения:

Пациент(Код, Наименование_Пациента, Адрес, Симптомы)

АмбулаторнаяКарта(Код_Пациента,Наименование_Пациента, Номер_АмбулаторнаяКарта, Диагноз, Услуга, Цена, Сумма)

Услуга(Код_Услуги, Наименование_Услуги, Цена_Услуги, Единица_Измерения)

Перейдём к рассмотрению в полученных отношениях транзитивных зависимостей неключевых атрибутов от ключа.

Код_Пациента -> Номер_АмбулаторнаяКарта -> Диагноз.

Ввиду дублирования информации об одном диагнозе для одного товара, избыточность данных, будем дальше преобразовывать отношение.

Выявим теперь независимые многозначные зависимости, они имеются в отношении ПриёмаПацинта:

Номер ->-> Код_Пациента ->-> Номер->->Код_Услуги

Будем считать, что у нас нет транзитивных зависимостей неключевых атрибутов от ключа. Получаем следующие отношения:

Пациент (Номер Пациента, Дата Рождения, НомерАмбулаторнойКарта);

Сотрудники (Номер_Сотрудника,ФИО, Данные);

Услуги (Дата, Наименование, Цена, Сеанс, ЕдиницаИзмерения);

Документ (НомерДокумента, ДатаВыдачи).

Здесь мы освобождаем отношение от избыточности, а также различного рода аномалий. Но не всех.

В нашем отношении присутствует зависимость неключивого атрибута от ключа. Для того, чтобы не возникало новых аномалий, необходимо ликвидировать части составного ключа от неключевых атрибутов. С этой целью исходное отношение разлагается на отношения:

Выявлено у пациента (Диагноз, Пациент) и Назначение (Пациент, Услуги). 

Теперь раскладываем исходное отношение на несколько отношений с многозначными зависимостями от одного ключа. Раскладываем отношение на два отношения: Номер_АмбулаторнаяКарта (АмбулаторнаяКарта, Пациент);

Назначение (Пациент, Симптомы).

В результате нормализации была получена следующая система отношений:

Пациент ( Наименование_Пациента, Дата_Рождения, Пол, Номер_АмбулаторнойКарты, Адрес);

Сотрудник(Наименование_Сотрудника, Дата_Рождения, Пол, Образование);

Адрес ( Наименование_Адреса);

Документ (Наименование_ Документ, Номер, Дата_Выдачи);

Услуги(Наименование_Услуги, Цена, Сеанс, Единица_Измерения);

Болезни (Код_ Болезни, Наименование_ Болезни);

Симптомы (Заболевание).

1.2 Структура меню



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



Справочники:

Пассажиры;

Поезд;

Места;

Документ;

Журналы документов:

Касса; 

Документы:

Билет;

Бронирование Билетов;

Возврат;

Расписание Поездов;

Отчеты:

Расписание Поездов;

Цены На Билеты;

Информация О поездах ; 

Проданные Билеты;

Движение Наличности За Период;

Билет;



2 Программная реализация информационной системы



2.1 Перечисления



Перечисления:

На снимке экрана представлены перечисления, используемые в системе:







2.2 Справочники



В данной информационно-справочной системе существуют следующие справочники: Документ, Места, Пассажиры, Поезд.





1) Пассажиры:



Форма элемента:





Печатная форма элемента справочника:





Форма списка:









Печатная форма:



2) Документ



Форма элемента:





Форма списка:





Печатная форма:





3) Поезд



Форма элемента:





Печатная форма:





Форма списка:





Печатная форма:





4) Места



Форма элемента:





Печатная форма:



Форма списка





Печатная форма:





2.3 Документы



1) Билет:



Форма документа:









Печатная форма:

Модуль документа:

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

Строка Табличной Части = Элементы Формы. Место. Текущие Данные; Рассчитать Сумму (Строка Табличной Части );

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



Процедура Место НДС При Изменении (Элемент)

Строка Табличной Части = Элементы Формы. Место. Текущие Данные; Рассчитать Сумму (Строка Табличной Части );



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

Процедура Перед Записью (Отказ, Режим Записи, Режим Проведения)

Сумма Документа = Место. Итог ("Сумма");

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



Процедура Печать(Элемент)

//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать)

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

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

Таб Док = Новый Табличный Документ;

Макет = Документы. Билет. Получить Макет("Печать");

// Заголово Область = Макет. Получить Область("Заголовок");

Таб Док. Вывести (Область);

// Шапка

Область = Макет. Получить Область("Шапка");

Область. Параметры. Номер = Номер;

Область. Параметры. Дата = Дата;

Область. Параметры. Номер Билета = Номер Билета;

Область. Параметры. ФИО = ФИО;

Область. Параметры. Документ = Документ;

Область. Параметры. Поезд = Поезд;

Область. Параметры. Станция Отправления = Станция Отправления;

Область. Параметры. Станция Прибытия = Станция Прибытия;

Область. Параметры. Дата Отправления = Дата Отправления;

Область. Параметры. Дата Прибытия = Дата Прибытия;

Таб Док. Вывести(Область);

// Вагон

Область = Макет. Получить Область ("Вагон Шапка");

Таб Док. Вывести (Область);

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

Область = Макет. Получить Область ("Вагон");

Область. Параметры. ТипВагона = ТекСтрока Вагон. Тип Вагона;

Область. Параметры. Номер Вагона = ТекСтрока Вагон. Номер Вагона;

ТабДок. Вывести (Область);

Конец Цикла;

// Место

Область = Макет. Получить Область ("Место Шапка");

ТабДок. Вывести(Область);

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

Область = Макет. Получить Область ("Место");

Область. Параметры. Номер Места = ТекСтрока Место. Номер Места ;

Область. Параметры. Цена = ТекСтрока Место. Цена;

Область. Параметры. НДС = ТекСтрока Место. НДС;

Область. Параметры. Сумма = ТекСтрока Место. Сумма;

ТабДок. Вывести(Область);

Конец Цикла;

// Подвал

Область = Макет. Получить Область("Подвал");

Область. Параметры. Сумма Документа = Сумма Документа ; 



ПараметрыПредметаИсчисления="рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2";

Форматная Строка="Л=ru_RU";

Область. Параметры. Сумма Прописью = Число Прописью (Сумма Документа, Форматная Строка, Параметры Предмета Исчисления );



ТабДок. Вывести(Область);



ТабДок. Отображать Сетку = Ложь;

ТабДок. Защита = Истина;

ТабДок. Только Просмотр = Ложь;

ТабДок. Отображать Заголовки = Ложь;

ТабДок. Показать();

//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ

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



2) Бронирование билетов

Форма документа:





Печатная форма:





Модуль документа:

Процедура Печать(Элемент)

//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать)

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

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

ТабДок = Новый Табличный Документ;

Макет = Документы. Бронирование Билетов. Получить Макет("Печать");

// Заголовок

Область = Макет. Получить Область ("Заголовок");

ТабДок. Вывести (Область);

// Шапка

Область = Макет. Получить Область ("Шапка");

Область. Параметры. Номер = Номер;

Область. Параметры. Дата = Дата;

Область. Параметры. ФИО = ФИО;

Область. Параметры. Документ = Документ;

Область. Параметры. Станция Отправления = Станция Отправления;

Область. Параметры. Дата Отправления = Дата Отправления;

Область. Параметры. Станция Прибытия = Станция Прибытия;

Область. Параметры. Дата Прибытия = Дата Прибытия;

Область. Параметры. Цена = Цена;



ПараметрыПредметаИсчисления="рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2";

Форматная Строка ="Л=ru_RU";

Область. Параметры. Сумма Прописью = Число Прописью (Цена, Форматная Строка, Параметры Предмета Исчисления );



ТабДок. Вывести (Область);



ТабДок. Отображать Сетку = Ложь;

ТабДок. Защита = Истина;

ТабДок. Только Просмотр = Истина;

ТабДок. Отображать Заголовки = Ложь;

ТабДок. Показать();

//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ

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



3) Возврат билетов

Форма документа:





Печатная форма:





Модуль документа:

Процедура Печать1(Элемент)

//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать1)

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

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

ТабДок = Новый Табличный Документ;

Макет = Документы. Возврат Билетов. Получить Макет("Печать1");

// Заголовок

Область = Макет. Получить Область ("Заголовок");

ТабДок. Вывести(Область);

// Шапка

Область = Макет. Получить Область ("Шапка");

Область. Параметры. Номер = Номер;

Область. Параметры. Дата = Дата;

Область. Параметры. Пассажир = Пассажир;

Область. Параметры. Номер Билета = Номер Билета ;

Область. Параметры. Станция Отправления = Станция Отправления;

Область. Параметры. Станция Прибытия = Станция Прибытия;

Область. Параметры. Дата Отправления = Дата Отправления;

Область. Параметры. Дата Прибытия = Дата Прибытия;

Область. Параметры. Сумма = Сумма; ПараметрыПредметаИсчисления="рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2";

Форматная Строка ="Л=ru_RU";

Область. Параметры .Сумма Прописью = Число Прописью (Сумма, Форматная Строка, Параметры Предмета Исчисления );



ТабДок. Вывести(Область);

ТабДок. Отображать Сетку = Ложь;

ТабДок. Защита = Истина;

ТабДок. Только Просмотр = Истина;

ТабДок. Отображать Заголовки = Ложь;

ТабДок. Показать ();

//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ

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



4) Расписание поездов

Форма документа:





Печатная форма:





Модуль документа:

Процедура Печать(Элемент)

//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать)

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

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

ТабДок = Новый Табличный Документ;

Макет = Документы. Расписание Поездов. Получить Макет ("Печать");

// Заголовок

Область = Макет. Получить Область ("Заголовок");

ТабДок. Вывести (Область);

// Шапка

Область = Макет. Получить Область("Шапка");

Область. Параметры. Номер = Номер;

Область. Параметры. Номер Поезда = Номер Поезда ;

Область. Параметры. Название Поезда = Название Поезда;

Область. Параметры. Станция Отправления = Станция Отправления;

Область. Параметры. Дата Отправления = Дата Отправления;

Область. Параметры. Станция Прибытия = Станция Прибытия;

Область. Параметры. Дата Прибытия = Дата Прибытия;

ТабДок. Вывести (Область);



ТабДок. Отображать Сетку = Ложь;

ТабДок. Защита = Истина;

ТабДок. Только Просмотр = Истина;

ТабДок. Отображать Заголовки = Ложь;

ТабДок. Показать ();

//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ

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

2.4 Регистры



1) Цены На Билеты (регистр сведений) – независимый, цены вводятся пользователем.

Измерения:

Поезд

Места

Ресурсы:

Цена

2) Продажа Билетов (регистр сведений) – регистратором является документ Билет.

Измерения:

Номер Билета

Пассажир

Ресурсы:

Цена

3) Информация О поездах (регистр сведений) – регистратором является документы Билет и Расписание Поездов.

Измерения:

Поезд

Станция Отправления

Станция Прибытия

Дата Отправления

4) Проданные Билеты (регистр остатков) – регистратором является документы Билет, Возврат Билетов.

Измерения:

Пассажир

Ресурсы:

Номер Билета

5) Касса (регистр остатков) – регистратором является документы Билет, Возврат Билетов, Бронирование Билетов .

Ресурсы:

Сумма.

Реквизиты:

Пассажир.



2.5 Журналы



1) Касса.

Реестр документов:





2.6 Отчеты





1) ЦеныНаБилеты

Диалог:



Печатная форма:





Модуль отчёта:

процедура Действия Формы Цены На Билеты Сформировать (Кнопка)

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Цены На Билеты)

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

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



ТабДок = Элементы Формы. Поле Табличного Документа ;

Цены На Билеты (ТабДок);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

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



Процедура Цены На Билеты(ТабДок) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Цены На Билеты)

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

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



Макет = Отчет Объект. Получить Макет ("Цены На Билеты ");

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

Запрос. Текст = 

"ВЫБРАТЬ

| Цены На Билеты. Период ,

| Цены На Билеты. Поезд,

| ПРЕДСТАВЛЕНИЕ(Цены На Билеты. Поезд),

| Цены На Билеты. Места,

| Цены На Билеты. Цена

|ИЗ

| Регистр Сведений. Цены На Билеты КАК Цены На Билеты ";



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



Область Заголовок = Макет. Получить Область("Заголовок");

Область Подвал = Макет. Получить Область("Подвал");

Область Шапка Таблицы = Макет. Получить Область ("Шапка Таблицы");

Область Подвал Таблицы = Макет. Получить Область ("Подвал Таблицы ");

Область Детальных Записей = Макет. Получить Область ("Детали");



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

ТабДок. Вывести(Область Заголовок );

ТабДок. Вывести(Область Шапка Таблицы);

ТабДок. Начать Автогруппировку Строк();

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

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



Область Детальных Записей. Параметры. Заполнить (Выборка Детали);

ТабДок. Вывести (Область Детальных Записей, Выборка Детали. Уровень());

Конец Цикла;



ТабДок. Закончить Автогруппировку Строк();

ТабДок. Вывести(Область Подвал Таблицы);

ТабДок. Вывести(Область Подвал );



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ

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



Информация о поездах





2) Диалог:





Печатная форма:



Модуль отчёта:

Процедура ДействияФормыИнформацияОПоездахСформировать(Кнопка)

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(ИнформацияОПоездах)

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

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



ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;

ИнформацияОПоездах(ТабДок, ДатаКонца, ДатаНачала);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

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



Процедура ИнформацияОПоездах(ТабДок, ДатаКонца, ДатаНачала) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ИнформацияОПоездах)

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

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



Макет = ОтчетОбъект.ПолучитьМакет("ИнформацияОПоездах");

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

Запрос.Текст = 

"ВЫБРАТЬ

| ИнформацияОПоездах.Период,

| ИнформацияОПоездах.Поезд,

| ИнформацияОПоездах.СтанцияОтправления,

| ИнформацияОПоездах.СтанцияПрибытия,

| ИнформацияОПоездах.ДатаОтправления,

| ИнформацияОПоездах.ДатаПрибытия

|ИЗ

| Регистр Сведений.ИнформацияОПоездах КАК Информация О Поездах

|ГДЕ

| ИнформацияОПоездах.Период МЕЖДУ &ДатаНачала И &ДатаКонца";



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

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



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



ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");

ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");



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

ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();



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



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



ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());

КонецЦикла;



ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ОбластьПодвалТаблицы);

ТабДок.Вывести(ОбластьПодвал);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ

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



3) Расписание поездов

Диалог:



Печатная форма:





Модуль:

Процедура Действия Формы Расписание Поездов Сформировать(Кнопка)

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Расписание Поездов)

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

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



ТабДок = Элементы Формы. Поле Табличного Документа;

Расписание Поездов (ТабДок);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

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



Процедура Расписание Поездов(ТабДок) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Расписание Поездов)

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

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

Макет = Отчет Объект. Получить Макет ("Расписание Поездов ");

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

Запрос.Текст = 

"ВЫБРАТЬ

| РасписаниеПоездов.НомерПоезда,

| РасписаниеПоездов.НазваниеПоезда,

| ПРЕДСТАВЛЕНИЕ(РасписаниеПоездов.НазваниеПоезда),

| РасписаниеПоездов.СтанцияОтправления,

| РасписаниеПоездов.СтанцияПрибытия,

| РасписаниеПоездов.ДатаОтправления,

| РасписаниеПоездов.ДатаПрибытия

|ИЗ

| Документ.РасписаниеПоездов КАК РасписаниеПоездов";



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



ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");

ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");



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

ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();



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



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

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());

КонецЦикла;



ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ОбластьПодвалТаблицы);

ТабДок.Вывести(ОбластьПодвал);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ

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



4) Проданные билеты

Диалог:





Печатная форма:



Модуль:

Процедура ДействияФормыПроданныеБилетыСформировать(Кнопка)

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(ПроданныеБилеты)

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

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



ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;

ПроданныеБилеты(ТабДок, ДатаКонца, ДатаНачала);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

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



Процедура ПроданныеБилеты(ТабДок, ДатаКонца, ДатаНачала) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ПроданныеБилеты)

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

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

Макет = ОтчетОбъект.ПолучитьМакет("ПроданныеБилеты");

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

Запрос.Текст = 

"ВЫБРАТЬ

| ПроданныеБилеты.Период,

| ПроданныеБилеты.Пассажир,

| ПроданныеБилеты.НомерБилета

|ИЗ

| РегистрНакопления.ПроданныеБилеты КАК ПроданныеБилеты

|ГДЕ

| ПроданныеБилеты.Период МЕЖДУ &ДатаНачала И &ДатаКонца";



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

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



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



ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");

ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");



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

ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();



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



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



ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());

КонецЦикла;



ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ОбластьПодвалТаблицы);

ТабДок.Вывести(ОбластьПодвал);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ

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



5) Билет

Диалог:



Печатная форма:





Модуль:

Процедура ДействияФормыБилетСформировать(Кнопка)

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(Билет)

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

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



ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;

Билет(ТабДок, ФИО);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

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

Процедура Билет(ТабДок, ФИО) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Билет)

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

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



Макет = ОтчетОбъект.ПолучитьМакет("Билет");

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

Запрос.Текст = 

"ВЫБРАТЬ

| Билет.ФИО,

| ПРЕДСТАВЛЕНИЕ(Билет.ФИО),

| Билет.НомерБилета,

| Билет.Документ,

| ПРЕДСТАВЛЕНИЕ(Билет.Документ),

| Билет.Поезд,

| ПРЕДСТАВЛЕНИЕ(Билет.Поезд),

| Билет.СтанцияОтправления,

| Билет.СтанцияПрибытия,

| Билет.ДатаОтправления,

| Билет.ДатаПрибытия,

| Билет.Вагон.(

| НомерСтроки,

| ТипВагона,

| НомерВагона

| ),

| Билет.Место.(

| НомерМеста,

| Цена,

| НДС,

| Сумма

| ),

| Билет.СуммаДокумента КАК СуммаДокумента

|ИЗ

| Документ.Билет КАК Билет

|ГДЕ

| Билет.ФИО = &ФИО";



Запрос.УстановитьПараметр("ФИО", ФИО);



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



ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");

ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

Вагон Область Шапка Таблицы = Макет. Получить Область ("Вагон Шапка Таблицы");

Вагон Область Подвал Таблицы = Макет. Получить Область("Вагон Подвал Таблицы");

Вагон Область Детальных Записей = Макет. Получить Область("Вагон Детали");

Место Область Шапка Таблицы = Макет. Получить Область("Место Шапка Таблицы");

Место Область Подвал Таблицы = Макет. Получить Область("Место Подвал Таблицы");

Место Область Детальных Записей = Макет. Получить Область("Место Детали");

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

ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();



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



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



ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());



ТабДок.НачатьГруппуСтрок();

ТабДок.Вывести(ВагонОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();



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



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



ВагонОбластьДетальныхЗаписей.Параметры.Заполнить(ВагонВыборкаДетали);

ТабДок.Вывести(ВагонОбластьДетальныхЗаписей, ВагонВыборкаДетали.Уровень());

КонецЦикла;

ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ВагонОбластьПодвалТаблицы);

ТабДок.Вывести(МестоОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();



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



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



МестоОбластьДетальныхЗаписей.Параметры.Заполнить(МестоВыборкаДетали);

ТабДок.Вывести(МестоОбластьДетальныхЗаписей, МестоВыборкаДетали.Уровень());

КонецЦикла;



ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(МестоОбластьПодвалТаблицы);

ТабДок.ЗакончитьГруппуСтрок();

КонецЦикла;



ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ОбластьПодвалТаблицы);

ТабДок.Вывести(ОбластьПодвал);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ

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



6) Движение наличности за период

Диалог:



Печатная форма:





Модуль:

Процедура ДействияФормыДвижениеНаличностиЗаПериодСформировать(Кнопка)

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(ДвижениеНаличностиЗаПериод)

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

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



ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;

ДвижениеНаличностиЗаПериод(ТабДок, ДатаКонца, ДатаНачала);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА

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

Процедура ДвижениеНаличностиЗаПериод(ТабДок, ДатаКонца, ДатаНачала) Экспорт

//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ДвижениеНаличностиЗаПериод)

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

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



Макет = Отчет Объект. Получить Макет("Движение Наличности За Период");

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

Запрос.Текст = 

"ВЫБРАТЬ

| Касса.Период,

| Касса.Сумма КАК Сумма,

| Касса.Пассажир КАК Пассажир,

| Касса.Регистратор,

| ПРЕДСТАВЛЕНИЕ(Касса.Регистратор)

|ИЗ

| РегистрНакопления.Касса КАК Касса

|ГДЕ

|ИТОГИ

| СУММА(Сумма)

|ПО

| ОБЩИЕ";



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

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



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

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");

ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");

ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");



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

ТабДок.Вывести(ОбластьЗаголовок);

ТабДок.Вывести(ОбластьШапкаТаблицы);

ТабДок.НачатьАвтогруппировкуСтрок();



Выборка Общий Итог = Результат. Выбрать(Обход Результата Запроса. По Группировкам);



ВыборкаОбщийИтог.Следующий(); // Общий итог

ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);

ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());



ВыборкаДетали = ВыборкаОбщийИтог.Выбрать();



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



ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());

КонецЦикла;



ТабДок.ЗакончитьАвтогруппировкуСтрок();

ТабДок.Вывести(ОбластьПодвалТаблицы);

ТабДок.Вывести(ОбластьПодвал);



//}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ

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



2.7 Администрирование



В программе были созданы три пользователя с различными правами и интерфейсами: 



1) Администратор. Этому пользователю предоставляются полные администраторские права.



Интерфейс:





2) Бухгалтер. Этому пользователю предоставляются права выполнять все возможные действия, помимо административных, в подсистеме «Бухгалтерия».



Интерфейс:





3) Кассир. Этому пользователю предоставляются права выполнять все возможные действия, помимо административных, в подсистеме «Кассир».



Интерфейс:





Заключение



Работа была выполнена в среде 1С:Предприятие 8.0. В результате данной работы была создана автоматизированная информационно-справочная система, которая полностью решает поставленную задачу и удовлетворяет всем поставленным требованиям.

Типовая конфигурация 1С Предприятие 8.0 реализует наиболее общие схемы учета и может использоваться в большинстве организаций. Для отражения специфики учета конкретного предприятия типовую конфигурацию можно изменить в соответствии с требованиями учета. 

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

1С Предприятие 8.0 позволяет вести торговый учет, производственный учет, учет в сфере оказания услуг, налоговый учет и т.д., а также несложный расчет заработной платы. 1С Предприятие 8.0 включает набор форм бухгалтерской и налоговой отчетности. Разнообразные возможности системы позволяют использовать ее как средство полной автоматизации учета от ввода первичных документов до формирования отчетности.



Гибкость платформы позволяет применять «1С:Предприятие 8.0» в самых разнообразных областях: 

автоматизация производственных и торговых предприятий, бюджетных и финансовых организаций, предприятий сферы обслуживания и т.д.; 

поддержка оперативного управления предприятием; 

автоматизация организационной и хозяйственной деятельности; 

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

широкие возможности для управленческого учета и построения аналитической отчетности, поддержка многовалютного учета;

решение задач планирования, бюджетирования и финансового анализа; 

другие области применения.