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