ФЕДЕРАЛЬНОЕ АГЕНТСТВО МОРСКОГО И РЕЧНОГО ТРАНСПОРТА
Федеральное государственное образовательное учреждение высшего профессионального образования
«Санкт-Петербургский государственный университет водных коммуникаций»
КУРСОВАЯ РАБОТА
ПО ДИСЦИПЛИНЕ «БАЗЫ ДАННЫХ И ЭКСПЕРТНЫЕ СИСТЕМЫ»
ТЕМА:
«Создание автоматизиpованной инфоpмационно - спpавочной системы расписания движения поездов и продажи билетов»
Санкт-Петербург
2009 г
Оглавление
1.1 Нормализация и схема базы данных
2 Программная реализация информационной системы
Введение
Система программ "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» в самых разнообразных областях:
автоматизация производственных и торговых предприятий, бюджетных и финансовых организаций, предприятий сферы обслуживания и т.д.;
поддержка оперативного управления предприятием;
автоматизация организационной и хозяйственной деятельности;
ведение бухгалтерского учета с несколькими планами счетов и произвольными измерениями учета, регламентированная отчетность;
широкие возможности для управленческого учета и построения аналитической отчетности, поддержка многовалютного учета;
решение задач планирования, бюджетирования и финансового анализа;
другие области применения.