Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка и реализация конфигурации «Терминал аэропорта» в среде 1С

Содержание:

ВВЕДЕНИЕ

Имеется очень много всевозможных причин для перевода существующей информации на компьютерную основу. Автоматизированные системы предоставляют нам возможность хранить, структурировать информацию, а также представлять ее в оптимальном для сотрудников виде. Они экономят большие средства, а самое главное и рабочее время сотрудников для получения всей информации в компании.

В настоящее время огромное количество компаний использует для автоматизации своей деятельности продукты, входящие в систему программ "1С: Предприятие". Наиболее свободно распространены и протиражированы программные продукты системы "1С: Предприятие", которые предназначены для автоматизации разнообразных учетных задач (управление кадрами, бухгалтерия, склад и пр.[8].

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

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

Разработка такого рода программ требует учёта специфики данной компании.

Объектом исследования является «Терминал аэропорта».

Предметом - процесс учета в работе терминала.

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

Задачи курсовой работы:

  1. провести анализ предметной области;
  2. выполнить концептуальное проектирование подсистемы и представить ее в виде информационно-логической модели предметной области;
  3. обосновать необходимость автоматизации;
  4. обосновать выбор платформы и инструментальных средств разработки;
  5. определить требования к функциональным характеристикам будущей подсистемы;
  6. выполнить проектирование информационной базы данных, разработать интерфейс;

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

Далее описан пример работы системы, позволяющий более полно понять порядок ее использования.

Глава 1. Теоретическая часть

Краткий анализ предметной области

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

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

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

Организационная структура предприятия:

Аэропорт – это комплекс, который состоит из аэродромной, терминальной и притерминальной частей, предназначенные для приёма, выпуска и обслуживания воздушных судов и пассажиров, структура которого показана на рисунке 1.

Рисунок 1 – Структура аэропорта

Характеристика предприятия и его деятельности

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

Проведем предварительный анализ предметной области проектирования разрабатываемой системы.

Организационную структуры предприятия «Аэропорт» представлена на рисунке 2.

Рисунок 2 – Организационная структура

Анализ существующего программного обеспечения, позволяющего решить поставленную задачу

Рынок информационных систем изобилует большим выбором и возможностями программных продуктов. Важным моментом, является знание того, что информационные системы могут представлять собой так называемый «коробочный продукт», когда ЭИС подбирается под типовые задачи и заказной, когда ЭИС пишется под конкретные специфические потребности предприятия [10].

На сегодняшний день на рынке представлен широкий спектр -систем как западных, так и отечественных. Среди компаний мирового рынка, которые представляют свои решения, есть как маститые игроки, давно зарекомендовавшие себя на рынке, так и малоизвестные, а также многие известные бренды, которые только относительно недавно представили свое решение в этом сегменте программных решений.

Информационные системы представлены ниже в таблице 1.

Таблица 1

Сравнительная таблица исследуемых финансовых программных продуктов (ПП) по критериям

1.

Название системы

"Альт "

«1С: Предприятие 8»

«Галактика BI»

«ИНТАЛЕВ: Корпоративный

менеджмент»

2.

Фирма-разработчик

"АЛЬТ"

ООО «1С»

Корпорация «Галактика»

ГК «ИНТАЛЕВ»

3.

Назначение ПП (управление финансами, финансовое планирование, финансовый анализ и т.д.)

Комплексная оценка деятельности предприятия

Управление финансами, прикладные решения

Управление предприятием

Управление стоимостью

бизнеса

4.

Набор решаемых задач

Детальный финансовый анализ и управленческая интерпретация полученных результатов

Оперативное планирование,

контроль, автоматизация

Оперативное управление,

аналитика, оперативный

контроль

Автоматизация финансового

менеджмента, управление

проектами и центрами

финансовой ответственности,

документооборот

5.

Наличие Демо-версии на сайте разработчика и возможность ее скачивания

Доступна

Деморолики

Отсутствует

Заказ демонстрации

6.

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

Нет данных

Есть

Отсутствует

Отсутствует

7.

Совместимость с другими ПП, в т.ч. офисными приложениями (с какими)

Нет данных

«Инталев»

Нет данных

Excel, sql, odbc, xml, 1c

8.

Требования к техническому обеспечению

Microsoft Excel

От Windows XP до 8.1, Linux

Нет данных

Нет данных

9.

Обеспечение безопасности

Нет данных

Нет данных

ФСТЭК Росии № 2186

Нет данных

Так же рассмотрим стоимость данных CRM-решений, которые представлены ниже в таблице 2.

Таблица 2

Стоимость рассмотренных систем

Название АCRM-решения

Средняя стоимость решения на одно рабочее место

1. «1С Предприятие 8»

19600 руб.

2. «Галактика BI»

62000 руб.

3. «ИНТАЛЕВ: Корпоративный

менеджмент»

50000 руб.

4. "Альт "

65000руб.

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

В связи с этим, компании совсем не подойдут продукты компании «Галактика BI» [17], «Альт» или «ИНТАЛЕВ»[18]. Данные информационные системы являются очень типизированными и потребуют модификации бизнеса рассматриваемой компании-заказчика под свое ПО. При этом собственная разработка информационной системы на рассмотренных программных продуктах будет нерентабельной из-за их дороговизны и требования большого количества сотрудников для поддержки эксплуатации в фазе сопровождения.

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

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

Обоснование требований к разрабатываемому прикладному решению

Обоснование проектных решений по информационному обеспечению

Информационное обеспечение компании это самый важный элемент ИС и ИТ. Он предназначен для отображения всей информации, которая характеризует состояние исследуемого объекта и является основой при принятия управленческих решений в компании. Информационное обеспечение – это создание информационных условий для функционирования системы, обеспечение ее всей необходимой информацией, введение в систему средств для поиска, получения, хранения, накопление, передачи, обработки необходимой информации [5]. В составе информационного обеспечения находятся два комплекса:

    • внемашинное ИО (классификаторы ТЭИ и документы);
    • внутримашинное (макеты и экранные формы необходимые для ввода первичной информации или вывода результатной информации, структура информационной базы: входных, выходных файлов, базы данных).

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

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

Для ввода информации потребуются такие формы:

  1. Заказ клиента;
  2. Обратная связь;
  3. Утверждение заказа;
  4. Обратная связь с клиентом.

Для хранения информации потребуются такие справочники:

  1. Клиенты;
  2. Договора с клиентами;
  3. Сотрудники.

Базы данных имеют такие структуры:[1]

  1. Иерархическая структура базы данных;

Иерархическая структура предполагала неравноправие между данными - одни жестко подчинены другим. Подобные структуры, безусловно, четко удовлетворяют требованиям многих, но далеко не всех реальных задач.

В связи с тем, что предприятие имеет сетевую платформу 1С мы выбираем реляционную базу данных, так как данные 1С: физически хранятся в базе данных СУБД Microsoft SQL Server.

Обоснование проектных решений по программному обеспечению

Программное обеспечение (ПО) подключает совокупность программ, которые реализуют функции и задачи разрабатываемой информационной системы и обеспечивающих неизменную работу комплекса технического обеспечения [8]. В составе программного обеспечения находятся общесистемные и особые программы, а также инструктивно-методические материалы по использованию средств программного обеспечения. Операционная система (ОС) является основой программного обеспечения компьютера. Она являет собой комплекс системных и служебных программных средств, которые должны обеспечивать согласование действий пользователя с компьютером и выполнение всех необходимых для работы программ.

Чтобы выбрать оптимальную для решения данной задачи ОС рассмотрим некоторые ОС с точки зрения основных преимуществ таблица 3.

Таблица 3

Основные характеристики современных операционных систем

Задача ОС

Windows XP Home Edition

Windows XP Professional Edition

Windows 7 Home Premium

Windows 7 Business

Windows 7 Ultimate

Работа в сети

*

*

*

Удобное устранение сбоев

*

*

*

Поиск

*

*

Защита данных

*

*

Мультимедиа

*

*

Исходя из данных таблицы 15, можно сделать вывод о том, что для выполнения цели данной дипломной работы лучше всего подойдет операционная система Windows 7 Ultimate.

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

Сервер 1С: Предприятие.

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

    1. клиентское приложение,
    2. кластер серверов 1С: Предприятия,
    3. сервер базы данных.

Клиент-серверная СУБД находится на сервере вместе с БД и реализовывает доступ к базе данных непосредственно, в монопольном режиме. Любые клиентские запросы по обработке данных отрабатываются клиент-серверной базой данных централизованно.

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

Характеристики СУБД рассмотрим в таблице 4.

Таблица 4

Основные характеристики современных СУБД

Сравнительные характеристики

Oracle

Microsoft SQL Server

Административное управление системой

Хорошо

Отлично

Графические инструменты базы данных

Отлично

Хорошо

Простота обслуживания базы данных

Отлично

Отлично

Механизм данных

Хорошо

Отлично

Работа с несколькими центральными процессами

Приемлемо

Отлично

Функция соединения с другими системами

Отлично

Отлично

Одновременный доступ к базе данных

Хорошо

Отлично

Для хранения данных как нельзя лучше подойдёт СУБД Microsoft SQL Server – лёгкая, быстрая СУБД, в которой можно создать таблицы, хранящие все необходимые данные, и отношения между ними.

Данный работа по проектированию модуля бизнес-процесса будет осуществлена в системе 1С.

Данная платформа работает с пятью СУБД, главная из них – файловая СУБД, которая разработана фирмой «1С». Файловый вариант платформы предназначен для персональной работы одного сотрудника или работы небольшого количества сотрудников в локальной сети. Все необходимые данные информационной системы (конфигурация, база данных, административная информация) находятся в одном файле – файле базы данных компании. Данный формат сохранения данных был разработан фирмой «1С» преднамеренно для всех прикладных решений «1С: Предприятие».

Обоснование проектных решений по техническому обеспечению

Техническое обеспечение компании – это персональные компьютеры, оргтехника, линии связи, оборудования локальных сетей. Вид информационной технологии, которая зависит от технической оснащенности (ручной, автоматизированной или удаленной) оказывает влияние на сбор, обработку и передачу необходимой информации в компании. Комплект технических средств компании будут составлять:

  1. компьютеры;
  2. устройства сбора, накопления, обработки, передачи и вывода информации;
  3. устройства передачи данных;
  4. эксплуатационные материалы.

Для проектируемой информационной системы в компании будет надобно такое аппаратное обеспечение:

  1. компьютеры для создания рабочего места сотрудников отдела;
  2. локальная сеть в компании;
  3. сервер ИС;
  4. принтеры для распечатки необходимых документов.

Конфигурация находящихся компьютеров удовлетворяет необходимым требованиям к ПК ИС документооборота согласно таблица 5. Все компьютеры соединены в локальную сеть, имеют защищенный доступ к сети Интернет. Все рабочие места оснащены принтером.

Таблица 5

Минимальные запросы к аппаратному обеспечению ПК ИС

Характеристика

Значение

Частота процессора компьютера

1,8 ГГц

Оперативная память компьютера

6 Гб

Объем винчестера компьютера

780 Гб

Монитор ( имеющееся разрешение)

1240х2048

В техническом осуществлении системы нам необходим сервер баз данных, в котором будет полная база компании.

Нужно купить сервер базы данных для разрабатываемой системы. Данный сервер ИС не будет работать круглосуточно: в обыкновенном режиме он будет функционировать 9-10 часов в сутки по рабочим дням утверждёнными в компании. Максимальное количество пользователей, которые будут одновременно подключенных к системе – 15.

Сервер БД будет обслуживать базу данных, и отвечать за целостность и сохранность информации, а также обеспечивать операции ввода-вывода при доступе сотрудников к информации. Специфика сервера базы данных будет в том, что данные, будут обрабатываться транзакционно, т.е. система будет запрашивать малый объем данных, проведет над ними необходимые операции и затем сохранит. Это налаживает установленные требования к аппаратной части сервера компании, а именно:

  1. значительный объем памяти для проведения кэширования наиболее усиленно применяемых участков базы;
  2. высокопроизводительная дисковая система, которая характеризующаяся в основную очередь способностью по обработке значительного количества небольших запросов в единицу времени;
  3. значительная вычисляемая мощь при обработке информации в компании.

Глава 2. Практическая часть

Информационное обеспечение задачи

Информационная модель и её описание

Информационная модель выступает в виде схемы движения входных, промежуточных и результативных потоков данных и функций предметной области. Так же, она объясняет, как на основе некоторых входных документов и некоторой нормативно-справочной информации будет происходить выполнение функций по обработке данных в системе [6].

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

На основании данных, хранящихся в справочниках и журналах, формируется отчетная информация.

Основной информационной сущностью разрабатываемой системы является документ. Данная сущность содержит следующие поля:

  • Номер документа в базе данных;
  • Название документа;
  • Тип документа;
  • Дата создания;
  • Дата последнего изменения;

Информационная модель задачи автоматизации документооборота показана на рисунке 4.

Рисунок 4 Информационная модель задачи

Характеристика нормативно-справочной, входной и оперативной информации

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

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

Произведем описание справочников.

Справочник сотрудники предназначен для хранения информации о сотрудниках предприятия.

Справочник состоит из следующих реквизитов:

  1. КодСотрудника;
  2. Наименование;
  3. Пометка/Удаление.

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

Справочник состоит из следующих реквизитов:

  1. КодКлиента;
  2. Наименование клиента;
  3. ИНН;
  4. Адрес;
  5. Телефон;
  6. Почта;
  7. Пометка/Удаление.

Справочник Договора клиентов. В данном справочники все данные по договорам.

Справочник состоит из следующих реквизитов:

  1. Код;
  2. КодКлиента;
  3. Намименование;
  4. Владелец;
  5. Пометка/Удаление.

Архитектура разрабатываемого прикладного решения

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

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

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

2) главные функции управления и обработки данных – свойственны как информационным системам любой специализации, так и именно данной ИС. Они воспроизводят особенности некоторого процесса обработки информации, при получении результатов, ведении информационной базы проекта. Данные функции организованы в таком порядке и в таком составе, которые продиктованы соглашениями обработки и управления данными в конкретной предметной области.

Состав и классификация функций разрабатываемого программного продукта представлены в виде дерева функций рисунок 5.

Рисунок 5 Дерево функций ИС

Алгоритмы взаимодействия объектов конфигурации

Всю структуру программы можно будет отобразить в блок-схеме, который продемонстрирован на 6.

Рисунок 6 Структура программных модулей

Описание программных модулей

Основные вычисления в программе происходят при загрузке системы.

Блок-схема алгоритма программного модуля подключения - отключения агента к серверной части изображена на рисунке 7.

Рисунок 7 Блок-схема алгоритма модуля формирования отчетов

Описание основных объектов (элементов) разрабатываемого прикладного решения

После произведем разработку структуры конфигурации, которая представлена на рисунке 8.

Рисунок 8 Структура конфигурации

Рисунок 9 Разработка роли Полные права

Рисунок 10 Разработка командного интерфейса

Рисунок 11 Главное окно конфигурации

Рисунок 12 Разработка справочников

Таблица 2 Структура справочника Авиакомпании

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Код

Строка (Ф9)

Свойство объекта

Код

3

Наименование

Строка (П100)

Свойство объекта

Наименование

4

Страна

СправочникСсылка.Страны

Реквизит

Страна

5

Телефон

Строка (П25)

Реквизит

Телефон

6

Сайт

Строка (П50)

Реквизит

Сайт

Таблица 3 структура справочника аэропорты

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Код

Строка (Ф9)

Свойство объекта

Код

3

Наименование

Строка (П100)

Свойство объекта

Наименование

4

Страна

СправочникСсылка.Страны

Реквизит

Страна

5

Город

Строка (П100)

Реквизит

Город

Таблица 4 структура справочника классы

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Код

Строка (Ф9)

Свойство объекта

Код

3

Наименование

Строка (П25)

Свойство объекта

Наименование

Таблица 5 Структура справочника Модели самолетов

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Код

Строка (Ф9)

Свойство объекта

Код

3

Наименование

Строка (П50)

Свойство объекта

Наименование

4

КоличествоМест

Строка (П10)

Реквизит

Количество мест

Таблица 6 Структура справочника Расписание

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Код

Строка (Ф9)

Свойство объекта

Код

3

Наименование

Строка (П100)

Свойство объекта

Наименование

4

Рейс

СправочникСсылка.Рейсы

Реквизит

Рейс

5

ДатаВылета

Дата

Реквизит

Дата вылета

Таблица 7 Структура справочника Рейсы

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Код

Строка (Ф9)

Свойство объекта

Код

3

Наименование

Строка (П100)

Свойство объекта

Наименование

4

ВидСамолета

СправочникСсылка.МоделиСамолетов

Реквизит

Вид самолета

5

ВремяВПути

Число (10.0)

Реквизит

Время в пути

6

Аэропорт

СправочникСсылка.Аэропорты

Реквизит

Аэропорт

Таблица 8 Структура справочника Страны

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Код

Строка (Ф9)

Свойство объекта

Код

3

Наименование

Строка (П100)

Свойство объекта

Наименование

Тестирование разработанного прикладного решения

Рисунок 13 Форма справочника Авиакомпании

Рисунок 14 Форма справочника Аэропорты

Рисунок 15 Форма справочника Классы

Рисунок 16 Форма справочника Модели самолетов

Рисунок 17 Форма справочника Рейсы

Рисунок 18 Форма справочника Страны

Рисунок 19 Форма справочника Расписание

Рисунок 20Создание документа Билеты

Таблица 9 Структура документа Билеты

Код

Имя

Тип

Вид

Синоним

1

ПометкаУдаления

Булево

Свойство объекта

Пометка удаления

2

Номер

Строка (П9)

Свойство объекта

Номер

3

Дата

Дата и время

Свойство объекта

Дата

4

Проведен

Булево

Свойство объекта

Проведен

5

ФИО

Строка (П100)

Реквизит

ФИО

6

Цена

Число (10.2)

Реквизит

Цена

7

Место

Строка (П10)

Реквизит

Место

8

Класс

СправочникСсылка.Классы

Реквизит

Класс

9

ИмяРейса

СправочникСсылка.Рейсы

Реквизит

Имя рейса

10

ПаспортныеДанные

Строка (П100)

Реквизит

Паспортные данные

11

Авиакомпания

СправочникСсылка.Авиакомпании

Реквизит

Авиакомпания

12

ВидСамолета

СправочникСсылка.МоделиСамолетов

Реквизит

Вид самолета

13

ВремяВПути

Число (10.0)

Реквизит

Время в пути

Рисунок 21 Форма документа Билет

Рисунок 22 Печатная форма Билета

Рисунок 23 Разработка отчета отчет по билетам

Рисунок 24 Формирование отчета по билетам

Рисунок 25 Разработка отчета Расписание авиарейсов

Рисунок 26 Формирование отчета Расписание авиарейсов

ЗАКЛЮЧЕНИЕ

В результате выполнения КР были проведены следующие работы:

  • изучена структура предметной области;
  • разработана функциональная модель деятельности терминала при продаже билетов;
  • разработана информационная модель системы данных;
  • выбрана среда разработки платформа 1С: Предприятия версия 8.3.8;

разработана конфигурация «Терминал Аэрофлота» на платформе 1С»;

  • проведена проверка и тестирование.

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

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

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

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

Таким образом, поставленные цели и задачи КР достигнуты, разработанный программный комплекс «Терминал Аэрофлота» на платформе 1С» соответствует сформулированным требованиям.

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

СПИСОК ИСПОЛЬЗОВАННОЙ ИСТОЧНИКОВ

  1. ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам (с Изменением N 1).
  2. ГОСТ 7.32- 2001 Структура и правила оформления 22с.
  3. ГОСТ Р 50922-2006 Защита информации. Основные термины и определения.
  4. ГОСТ Р ИСО/МЭК 12207-2010 Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств.
  5. Балдин, К.В. Информационные системы в экономике: Учебное пособие / К.В. Балдин. - М.: НИЦ ИНФРА-М, 2015. – 218с.
  6.  Вдовин, В.М. Предметно-ориентированные экономические информационные системы: Учебное пособие / В.М. Вдовин, Л.Е. Суркова, А.А. Шурупов. - М.: Дашков и К, 2016. – 388с.
  7. Горбенко, А.О. Информационные системы в экономике: Учебное пособие / А.О. Горбенко. - М.: БИНОМ. Лаборатория знаний, 2014. - 292 c.
  8. Емельянов, С.В. Информационные технологии и вычислительные системы. - М.: Ленанд, 2015. – 96с.
  9. Радченко М.Г. 1С: Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы. – М.: ООО «1С: Паблишинг», 2017. – 512 с.
  10. Рыжко, А.Л. Информационные системы управления производственной компанией: Учебник для академического бакалавриата - Люберцы: Юрайт, 2016. – 354с.
  11. Кашаев С. М. 1С: Предприятие 8.3. Разработка прикладных решений. – Издательство: СПб.: Питер 2016– 269 с.
  12. Информационные системы и технологии: Научное издание. / Под ред. Ю.Ф. Тельнова. - М.: ЮНИТИ, 2016. - 303 c.
  13. Хрусталева Е.Ю. Язык запросов «1С: Предприятия8» -Москва ООО «1С-Паблишинг»2016.
  14. 1С Предприятие: 8.3. Руководство администратора – М.: ООО «1С-Паблишинг», 2017. – 420 с.
  15. Сайт организации 1С: http://1c.ru/
  16. Сайт организации Галактика: https://www.galaktika.ru/bi/
  17. Сайт организации Инталев: https:// ru.intalev. ru /products/km/

ПРИЛОЖЕНИЕ Код программного обеспечения

// Функция возвращает сумму скидки.

//

// Параметры:

// Сумма - Число, сумма со скидкой.

// Скидка - Число, процент скидки.

//

// Возвращаемое значение:

// Число - сумма скидки.

//

Функция ПолучитьСуммуСкидки(Сумма, Скидка) Экспорт

Если ЗначениеЗаполнено(Скидка) И Скидка <> 100 Тогда

СуммаСкидки = Сумма / (100 - Скидка) * Скидка;

Иначе

СуммаСкидки = 0;

КонецЕсли;

Возврат СуммаСкидки;

КонецФункции // ПолучитьСуммуСкидки()

//

//

// Параметры:

// ДатаЦен - исходная дата.

//

// Возвращаемое значение:

// Дата - дата (со временем), на которую будут рассчитаны цены.

//

Функция ПолучитьАктуальнуюДатуРасчетаЦен(ДатаЦен) Экспорт

ТекДата = ТекущаяДата();

Если НЕ ЗначениеЗаполнено(ДатаЦен) Тогда

Результат = ТекДата;

ИначеЕсли ДатаЦен = НачалоДня(ТекДата) Тогда

Результат = ТекДата;

Иначе

Результат = ДатаЦен;

КонецЕсли;

Возврат Результат;

КонецФункции // ПолучитьАктуальнуюДатуРасчетаЦен()

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

//

// Параметры:

// ВидРеализации - значение перечисления "ВидыСкидок".

// ДокументОбъект - объект документа.

//

// Возвращаемое значение:

// Массив - массив с получателями скидки.

//

Функция ПолучитьМассивПолучателейСкидки(ВидРеализации, ДокументОбъект) Экспорт

МассивПолучателей = Новый Массив;

Если ВидРеализации = Перечисления.ВидыСкидок.Розничная Тогда

МассивПолучателей.Добавить(ДокументОбъект.Склад);

МассивПолучателей.Добавить(Справочники.Склады.ПустаяСсылка());

Иначе

МассивПолучателей.Добавить(ДокументОбъект.Контрагент);

МассивПолучателей.Добавить(ДокументОбъект.ДоговорКонтрагента);

МассивПолучателей.Добавить(Справочники.ДоговорыКонтрагентов.ПустаяСсылка());

КонецЕсли;

Возврат МассивПолучателей;

КонецФункции // ПолучитьМассивПолучателейСкидки()

// Функция проверяет, является ли набор-комплект спец. предложением на указанную дату.

//

// Параметры:

// Номенклатура - набор-комплект, который нужно проверить.

// Дата - дата, на которую нужно проверить.

//

// Возвращаемое значение:

// Булево - Истина, если переданный набор-комплект является спец. предложением.

//

Функция ЭтоСпецПредложение(Дата, Номенклатура, ХарактеристикаНоменклатуры, МассивПолучателей) Экспорт

Запрос = Новый Запрос("

|ВЫБРАТЬ ПЕРВЫЕ 1

| 1 КАК Результат

|ИЗ

| РегистрСведений.СкидкиНоменклатурыНатуральные.СрезПоследних(&Дата,

| ПолучательСкидки В (&МассивПолучателей)) КАК СкидкиНатуральные

|ЛЕВОЕ СОЕДИНЕНИЕ

| РегистрСведений.ВремяДействияСкидок КАК ВремяДействия

|ПО

| СкидкиНатуральные.Регистратор = ВремяДействия.Регистратор

|ГДЕ

| СкидкиНатуральные.СпецПредложение = &Номенклатура

| И СкидкиНатуральные.ХарактеристикаСпецПредложения = &ХарактеристикаНоменклатуры

| И (ВремяДействия.Регистратор ЕСТЬ NULL

| ИЛИ ВремяДействия.ДеньНедели = &ДеньНедели

| И (&ТекущееВремя МЕЖДУ ВремяДействия.ВремяНачала И ВремяДействия.ВремяОкончания)

| И (СкидкиНатуральные.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)

| ИЛИ СкидкиНатуральные.ДатаОкончания >= &Дата))

|");

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

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

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

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

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

Запрос.УстановитьПараметр("ТекущееВремя", Дата(1, 1, 1, Час(Дата), Минута(Дата), Секунда(Дата)));

Возврат Не Запрос.Выполнить().Пустой();

КонецФункции // ЭтоСпецПредложение()

// Изменяет переданную цену по условию продаж.

//

// Параметры:

// Дата - дата, на которую нужно брать условие продаж.

// Номенклатура - переданная номенклатура.

// УсловиеПродаж - переданное условие продаж.

// ПолученнаяЦена - цена, которую надо изменить. В эту переменную возвращается новая цена.

//

Процедура ИзменитьЦенуПоУсловиюПродаж(Дата, Номенклатура, УсловиеПродаж, ПолученнаяЦена) Экспорт

Если ПолученнаяЦена <> 0 И ЗначениеЗаполнено(УсловиеПродаж) Тогда

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

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

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

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

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

|ВЫБРАТЬ

| НаценкиПоУсловиямПродаж.ПроцентНаценки КАК ПроцентНаценки

|ИЗ

| РегистрСведений.НаценкиПоУсловиямПродаж.СрезПоследних(&Дата, УсловиеПродаж = &УсловиеПродаж

| И НоменклатурнаяЦеноваяГруппа В (&Группы)) КАК НаценкиПоУсловиямПродаж

|";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

ПолученнаяЦена = ПолученнаяЦена * (1 + Выборка.ПроцентНаценки / 100);

КонецЕсли;

КонецЕсли;

КонецПроцедуры // ИзменитьЦенуПоУсловиюПродаж()

// Возвращает массив из двух элементов: номенклатурной и ценовой группы, к которым принадлежит

// переданная номенклатура.

//

// Параметры:

// Номенклатура - переданная номенклатура.

//

// Возвращаемое значение:

// Массив - номенклатурная и ценовая группа к которым принадлежит переданная номенклатура.

//

Функция ПолучитьМассивГруппНоменклатуры(Номенклатура) Экспорт

Группы = Новый Массив;

Группы.Добавить(Номенклатура.ЦеноваяГруппа);

Группы.Добавить(Номенклатура.НоменклатурнаяГруппа);

Возврат Группы;

КонецФункции // ПолучитьМассивГруппНоменклатуры()

// Возвращает массив характеристик: ПустаяХарактеристика + ХарактеристикаНоменклатуры,

// если ХарактеристикаНоменклатуры <> Неопределено

//

// Параметры:

// ХарактеристикаНоменклатуры - переданная характеристика номенклатуры.

//

// Возвращаемое значение:

// Массив - если ХарактеристикаНоменклатуры = Неопределено, то в массиве только ПустаяХарактеристика.

//

Функция ПолучитьМассивХарактеристик(ХарактеристикаНоменклатуры) Экспорт

Характеристики = Новый Массив;

Характеристики.Добавить(Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());

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

Характеристики.Добавить(ХарактеристикаНоменклатуры);

КонецЕсли;

Возврат Характеристики;

КонецФункции // ПолучитьМассивХарактеристик()

// Округляет число по заданному порядку. Если задано (=Истина) "ОкруглятьВБольшуюСторону",

// то число 123.37 при порядке округление 0.5 превратиться в 123.50, а число 0.1

// при порядке округления 5 станет равным 5.

//

// Параметры:

// Число - исходное число

// ПорядокОкругления - элемент перечисления Порядки окгугления:

// "шаг" округления (0.01 (арифметическое), 0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50, 100)

// ОкруглятьВБольшуюСторону - булево, определяет способ округления: если Истина,

// то при порядке округления "5" 0.01 будет округлена до 5,

// Ложь - округление по арифметическим правилам

//

// Возвращаемое значение:

// Округленное по заданному порядку значение

//

Функция ОкруглитьЦену(Число, ПараметрПорядокОкругления, ОкруглятьВБольшуюСторону) Экспорт

Перем Результат;

// Преобразуем порядок округления числа.

// Если передали пустое значение порядка, то округлим до копеек.

Если НЕ ЗначениеЗаполнено(ПараметрПорядокОкругления) Тогда

ПорядокОкругления = Перечисления.ПорядкиОкругления.Окр0_01;

Иначе

ПорядокОкругления = ПараметрПорядокОкругления;

КонецЕсли;

Порядок = Число(Строка(ПорядокОкругления));

// вычислим количество интервалов, входящих в число

КоличествоИнтервал = Число / Порядок;

// вычислим целое количество интервалов.

КоличествоЦелыхИнтервалов = Цел(КоличествоИнтервал);

Если КоличествоИнтервал = КоличествоЦелыхИнтервалов Тогда

// Числа поделились нацело. Округлять не нужно.

Результат = Число;

Иначе

Если ОкруглятьВБольшуюСторону Тогда

// При порядке округления "0.05" 0.371 должно округлитья до 0.4

Результат = Порядок * (КоличествоЦелыхИнтервалов + 1);

Иначе

// При порядке округления "0.05" 0.371 должно округлитья до 0.35,

// а 0.376 до 0.4

Результат = Порядок * Окр(КоличествоИнтервал,0,РежимОкругления.Окр15как20);

КонецЕсли;

КонецЕсли;

Возврат Результат;

КонецФункции // ОкруглитьЦену()

// Производит пересчет цен при изменении флагов учета налогов.

// Пересчет зависит от способа заполнения цен, при заполнении По ценам номенклатуры (при продаже)

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

// Поэтому если в документе флаг "Учитывать налог" выключен, то цены должны браться напрямую из справочника,

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

// Например, если отпускная цена задана с НП для избежания ошибок округления, то это не значит,

// что при отпуске без НП мы должны продать дешевле. Если же флаг учета налога в документе включен,

// то цены должны пересчитываться при подстановке в документ:

// налог должен включаться или не включаться в зависимости от флага включения налога в типе цен.

// При заполнении по ценам контрагентов (при покупке) хочется хранить цены поставщиков.

// Поэтому нужно пересчитывать всегда по установленным флагам в документе и в типе цен.

// Это гарантирует, что при записи цен в регистр и последующем их чтении,

// например, при заполнении следующего документа, мы с точностью до ошибок округления при пересчете

// получим те же самые цены.

//

// Параметры:

// Цена - число, пересчитваемое значение цены,

// СпособЗаполненияЦен - ссылка на перечисление СпособыЗаполненияЦен, определяет способ расчета,

// "при продаже" или "при покупке", см описание функции,

// ЦенаВключаетНДС - булево, определяет содержит ли переданное значение цены НДС,

// УчитыватьНДС - булево, определяет должно ли новое значение цены учитвать НДС,

// СуммаВключаетНДС - булево, определяет должно ли новое значение цены включать НДС,

// СтавкаНДС - число, ставка НДС,

//

// Возвращаемое значение:

// Числое, новое значение цены.

//

Функция ПересчитатьЦенуПриИзмененииФлаговНалогов(Цена, СпособЗаполненияЦен, ЦенаВключаетНДС,

УчитыватьНДС, СуммаВключаетНДС, СтавкаНДС) Экспорт

// Инициализация переменных

НадоВключитьНДС = Ложь;

НадоИсключитьНДС = Ложь;

НоваяЦена = Цена;

Если СпособЗаполненияЦен = Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры Тогда

Если УчитыватьНДС Тогда

Если СуммаВключаетНДС

И (НЕ ЦенаВключаетНДС) Тогда

// Надо добавлять НДС

НадоВключитьНДС = Истина;

ИначеЕсли (НЕ СуммаВключаетНДС)

И ЦенаВключаетНДС Тогда

// Надо исключать НДС

НадоИсключитьНДС = Истина;

КонецЕсли;

КонецЕсли;

Иначе // Надо пересчитывать строго по флагам включения

Если УчитыватьНДС Тогда

Если СуммаВключаетНДС

И (НЕ ЦенаВключаетНДС) Тогда

// Надо добавлять НДС

НадоВключитьНДС = Истина;

ИначеЕсли (НЕ СуммаВключаетНДС)

И ЦенаВключаетНДС Тогда

// Надо исключать НДС

НадоИсключитьНДС = Истина;

КонецЕсли;

Иначе

Если ЦенаВключаетНДС Тогда

// Надо исключать НДС

НадоИсключитьНДС = Истина;

КонецЕсли;

КонецЕсли;

КонецЕсли;

Если НадоИсключитьНДС Тогда

НоваяЦена = (НоваяЦена * 100) / (100 + СтавкаНДС);

КонецЕсли;

Если НадоВключитьНДС Тогда

НоваяЦена = (НоваяЦена * (100 + СтавкаНДС)) / 100;

КонецЕсли;

Возврат НоваяЦена;

КонецФункции // ПересчитатьЦенуПриИзмененииФлаговНалогов()

// Пересчитывает цену для другой единицы измерения

//

// Параметры:

// Цена - число, значение цены, которое надо пересчитать,

// ЕдиницаЦены - ссылка на справочник "ЕдиницыИзмерения", определяет единицу, за которую назначена Цена

// НоваяЕдиница - ссылка на справочник "ЕдиницыИзмерения", определяет единицу, за которую надо получить

// новое значение цены. Если не заполнено, то устанавливается равной ЕдиницаЦены без пересчета.

//

// Возвращаемое значение:

// Новое значение цены.

//

Функция ПересчитатьЦенуПриИзмененииЕдиницы(Цена, ЕдиницаЦены, НоваяЕдиница) Экспорт

НовоеЗначениеЦены = Цена;

Если ЕдиницаЦены <> НоваяЕдиница Тогда

Если НЕ ЗначениеЗаполнено(НоваяЕдиница) Тогда // параметр единицы не задан, значить надо возвращать в единице цены

Если НЕ ЗначениеЗаполнено(ЕдиницаЦены) Тогда // если не задана единица цены, то будем счатать цену нулевой

НовоеЗначениеЦены = 0;

Иначе

НоваяЕдиница = ЕдиницаЦены;

КонецЕсли;

Иначе // если единица цены не совпадает с параметром, то надо пересчитать

Если НЕ ЗначениеЗаполнено(ЕдиницаЦены) Тогда // если не задана единица цены, то будем счатать цену нулевой

НовоеЗначениеЦены = 0;

Иначе

КоэффициентЦены = ЕдиницаЦены.Коэффициент;

НовоеЗначениеЦены = ?(НЕ ЗначениеЗаполнено(КоэффициентЦены), 0,

НовоеЗначениеЦены * НоваяЕдиница.Коэффициент / КоэффициентЦены)

КонецЕсли;

КонецЕсли;

КонецЕсли;

Возврат НовоеЗначениеЦены;

КонецФункции // ПересчитатьЦенуПриИзмененииЕдиницы()

// Пересчитывает цену в другую валюту

//

// Цена - число, значение цены, которое надо пересчитать,

// ВалютаЦены - ссылка на справочник "Валюты", определяет валюту, в которой назначена Цена

// НоваяВалюта - ссылка на справочник "Валюты", определяет валюту, в которой надо получить

// новое значение цены. Если не заполнено, то устанавливается равной ВалютаЦены без пересчета,

// КурсНовойВалюты - курс новой валюты, по которому надо пересчитать цену, если не задан, то берем курс по справочнику

// КратностьНовойВалюты - кратность новой валюты, по которой надо пересчитать цену, если не задана, то берем курс по справочнику

// Дата - дата, на которую надо пересчитать цену.

//

// Возвращаемое значение:

// Новое значение цены.

//

Функция ПересчитатьЦенуПриИзмененииВалюты(Цена, ВалютаЦены, НоваяВалюта, КурсНовойВалюты = 0, КратностьНовойВалюты = 1, Дата = Неопределено ) Экспорт

НовоеЗначениеЦены = Цена;

Если НЕ ЗначениеЗаполнено(НоваяВалюта) Тогда // параметр валюты не задан, значить надо возвращать в валюте цены

НоваяВалюта = ВалютаЦены;

Иначе

Если НоваяВалюта <> ВалютаЦены Тогда // если валюта цены не совпадает с параметром, то надо пересчитать

Если НЕ ЗначениеЗаполнено(ВалютаЦены) Тогда // если не задана валюта цены, то будем счатать цену нулевой

НовоеЗначениеЦены = 0;

Иначе // валюты заданы и не совпадают, надо пересчитывать

СтруктураКурсЦены = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаЦены, Дата);

КурсЦены = СтруктураКурсЦены.Курс;

КратностьЦены = СтруктураКурсЦены.Кратность;

Если НЕ ЗначениеЗаполнено(КурсНовойВалюты) Тогда // если не задан курс, то курс берем по справочнику

СтруктураКурсНовойВалюты = МодульВалютногоУчета.ПолучитьКурсВалюты(НоваяВалюта, Дата);

КурсНовойВалюты = СтруктураКурсНовойВалюты.Курс;

КратностьНовойВалюты = СтруктураКурсНовойВалюты.Кратность;

КонецЕсли;

НовоеЗначениеЦены = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(НовоеЗначениеЦены, ВалютаЦены, НоваяВалюта,

КурсЦены, КурсНовойВалюты,КратностьЦены,КратностьНовойВалюты);

КонецЕсли;

КонецЕсли;

КонецЕсли;

Возврат НовоеЗначениеЦены;

КонецФункции // ПересчитатьЦенуПриИзмененииВалюты()

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

// передачи в обработку заполнения цен и валют.

//

// Параметры:

// ДокументОбъект - объект документа, для реквизитов будет производится заполнение

// СтруктураИсключений - структура, в которую передаются те исключения, которые или невозможно

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

// возвращаемую структуру.

// В структуре - ключ = имя реквизита, значение = истина (необходимо добавить

// в структуру) или ложь (нельзя добавлять в структуру)

//

// Возвращаемое значене:

// Сформированная структура реквизитов документа.

//

Функция ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(ДокументОбъект, СтруктураИсключений = Неопределено) Экспорт

МетаданныеДокумента = ДокументОбъект.Метаданные();

// Зададим, какие реквизиты вообще нам могут быть нужны.

СтруктураВозможныхВариантовРеквизитов = Новый Структура;

СтруктураВозможныхВариантовРеквизитов.Вставить("ТипЦен");

СтруктураВозможныхВариантовРеквизитов.Вставить("ВалютаДокумента");

СтруктураВозможныхВариантовРеквизитов.Вставить("КурсДокумента");

СтруктураВозможныхВариантовРеквизитов.Вставить("КратностьДокумента");

СтруктураВозможныхВариантовРеквизитов.Вставить("КурсВзаиморасчетов");

СтруктураВозможныхВариантовРеквизитов.Вставить("КратностьВзаиморасчетов");

СтруктураВозможныхВариантовРеквизитов.Вставить("УчитыватьНДС");

СтруктураВозможныхВариантовРеквизитов.Вставить("СуммаВключаетНДС");

СтруктураВозможныхВариантовРеквизитов.Вставить("ИспользоватьПлановуюСебестоимость");

СтруктураВозможныхВариантовРеквизитов.Вставить("РегистрироватьЦеныПоставщика");

СтруктураВозможныхВариантовРеквизитов.Вставить("УсловиеПродаж");

// Зададим, какие реквизиты надо редактировать.

СтруктураРеквизитовДокумента = Новый Структура;

Для Каждого ТекущийЭлементСтруктуры Из СтруктураВозможныхВариантовРеквизитов Цикл

НужныйРеквизитДокумента = ТекущийЭлементСтруктуры.Ключ;

Если ОбщегоНазначения.ЕстьРеквизитДокумента(НужныйРеквизитДокумента, МетаданныеДокумента) Тогда

СтруктураРеквизитовДокумента.Вставить(НужныйРеквизитДокумента);

КонецЕсли;

КонецЦикла;

// Теперь проверим исключения.

Если СтруктураИсключений <> Неопределено Тогда

Для Каждого ТекущийЭлементСтруктуры Из СтруктураИсключений Цикл

Если ТекущийЭлементСтруктуры.Значение Тогда // надо добавить реквизит, если его еще нет СтруктураРеквизитовДокумента.Вставить(ТекущийЭлементСтруктуры.Ключ);

Иначе // надо удалить реквизит, если он есть СтруктураРеквизитовДокумента.Удалить(ТекущийЭлементСтруктуры.Ключ);

КонецЕсли;

КонецЦикла;

КонецЕсли;

Возврат СтруктураРеквизитовДокумента;

КонецФункции // ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования()

// Функция возвращает цену номенклатуры для требуемой номенклатуры в указанном типе цен,

// на заданную дату, за заданную единицу измерения, пересчитанную в требуемую валюту по заданному курсу.

//

// Параметры:

// Номенклатура - ссылка на элемент справочника "Номенклатура", для которого надо получить цену,

// ХарактеристикаНоменклатуры - ссылка на элемент справочника "ХарактеристикаНоменклатуры",

// ТипЦен - ссылка на элемент справочника "Типы цен", опредедяет цену какого типа надо получить,

// Дата - дата, на которую надо получить цену, если не заполнено, то берется рабочая дата

// ЕдиницаИзмерения - ссылка на элемент справочника "Единицы измерения", определяет для какой единицы надо получить

// цену, если не заполнен, то заполняется единицей цены

// Валюта - ссылка на элемент справочника "Валюты", определяет валюту. в которой надо вернуть цену,

// если не заполнен, то заполняется валютой цены

// Курс - число, курс требуемой валюты, если не заполнен, берется курс из регистра

// сведений "Курсы валют",

// Кратность - число, кратность требуемой валюты, если не заполнена, берется курс из регистра

// сведений "Курсы валют",

// ПроцентСкидкиНаценки - число, процент наценки (скидки) на базовый тип цен, заполняется процентом

// наценки (скидки) цены для цен, которые не рассчитываются автоматически.

// Возвращаемое значение:

// Число, рассчитанное значение цены.

//

Функция ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, Знач ТипЦен, ДатаПараметр = Неопределено, ЕдиницаИзмерения = Неопределено,

Валюта = Неопределено, Курс = 0, Кратность = 1, ПроцентСкидкиНаценки = 0, ДоговорКонтрагента = Неопределено,

УсловиеПродаж = Неопределено) Экспорт

Если ЕдиницаИзмерения = Неопределено Тогда

ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.ПустаяСсылка(); // для услуг

КонецЕсли;

ХарактеристикиНоменклатуры = ПолучитьМассивХарактеристик(ХарактеристикаНоменклатуры);

Дата = ПолучитьАктуальнуюДатуРасчетаЦен(ДатаПараметр);

ПолученнаяЦена = 0;

Если ДоговорКонтрагента <> Неопределено Тогда

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

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

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

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

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

|ВЫБРАТЬ ПЕРВЫЕ 1

| УсловияПоставок.Цена КАК Цена,

| ВЫБОР КОГДА сНоменклатура.Услуга И УсловияПоставок.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)

| ТОГДА сНоменклатура.ЕдиницаХраненияОстатков

| ИНАЧЕ УсловияПоставок.ЕдиницаИзмерения

| КОНЕЦ КАК ЕдиницаИзмерения,

| УсловияПоставок.ВалютаЦены КАК ВалютаЦены

|ИЗ

| РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.СрезПоследних(&Дата,

| ДоговорКонтрагента = &Договор И Номенклатура = &Номенклатура

| И ХарактеристикаНоменклатуры В (&ХарактеристикиНоменклатуры)) КАК УсловияПоставок

|ВНУТРЕННЕЕ СОЕДИНЕНИЕ

| Справочник.Номенклатура КАК сНоменклатура

|ПО

| сНоменклатура.Ссылка = УсловияПоставок.Номенклатура

|ГДЕ

| УсловияПоставок.Цена <> 0 И сНоменклатура.Ссылка = &Номенклатура

|УПОРЯДОЧИТЬ ПО

| УсловияПоставок.ХарактеристикаНоменклатуры УБЫВ

|";

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

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

ПолученнаяЦена = ПересчитатьЦенуПриИзмененииЕдиницы(Выборка.Цена, Выборка.ЕдиницаИзмерения, ЕдиницаИзмерения);

ПолученнаяЦена = ПересчитатьЦенуПриИзмененииВалюты(ПолученнаяЦена, Выборка.ВалютаЦены, Валюта, Курс, Кратность, Дата);

КонецЕсли;

// Проверим, не установлены ли по этому договору типы цен для групп.

Если ПолученнаяЦена = 0 Тогда

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

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

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

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

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

|ВЫБРАТЬ

| ТипыЦенПоГруппам.ТипЦен КАК ТипЦен

|ИЗ

| РегистрСведений.ТипыЦенПоГруппамНоменклатурыДляПокупателей.СрезПоследних(&Дата, Контрагент = &Контрагент

| И НоменклатурнаяЦеноваяГруппа В (&Группы)) КАК ТипыЦенПоГруппам

|";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

Если Не Выборка.ТипЦен.Пустая() Тогда // переопределим тип цен для расчета

ТипЦен = Выборка.ТипЦен;

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЕсли;

Если ПолученнаяЦена = 0 И ЗначениеЗаполнено(ТипЦен) Тогда // особых условий нет

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

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

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

Если ТипЦен.Рассчитывается Тогда // надо достать цену базового типа и рассчитать по наценке

Запрос.УстановитьПараметр("ТипЦен", ТипЦен.БазовыйТипЦен);

Запрос.УстановитьПараметр("ТипЦенРасчетный", ТипЦен);

Запрос.УстановитьПараметр("СпособРасчета", ТипЦен.СпособРасчетаЦены);

Запрос.УстановитьПараметр("ПроцентНаценки", ТипЦен.ПроцентСкидкиНаценки);

Иначе

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

КонецЕсли;

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

|ВЫБРАТЬ ПЕРВЫЕ 1

| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,

| ВЫБОР КОГДА сНоменклатура.Услуга И ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)

| ТОГДА сНоменклатура.ЕдиницаХраненияОстатков

| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения

| КОНЕЦ КАК ЕдиницаИзмерения,

|";

Если ТипЦен.Рассчитывается Тогда

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

| ЕСТЬNULL(ВложенныйЗапрос.ПроцентСкидкиНаценки, &ПроцентНаценки) КАК ПроцентСкидкиНаценки,

| ЕСТЬNULL(ВложенныйЗапрос.СпособРасчетаЦены, &СпособРасчета) КАК СпособРасчетаЦены,

|";

КонецЕсли;

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

| ЦеныНоменклатурыСрезПоследних.Валюта

|ИЗ

| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура

| И ТипЦен = &ТипЦен И ХарактеристикаНоменклатуры В (&ХарактеристикиНоменклатуры)

| ) КАК ЦеныНоменклатурыСрезПоследних

|";

Если ТипЦен.Рассчитывается Тогда

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

|ЛЕВОЕ СОЕДИНЕНИЕ

| (ВЫБРАТЬ

| ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,

| ЦеныНоменклатурыСрезПоследних.СпособРасчетаЦены КАК СпособРасчетаЦены,

| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,

| ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры

| ИЗ

| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура

| И ТипЦен = &ТипЦенРасчетный

| И ХарактеристикаНоменклатуры В (&ХарактеристикиНоменклатуры)

| ) КАК ЦеныНоменклатурыСрезПоследних

| ) КАК ВложенныйЗапрос

|ПО

| ЦеныНоменклатурыСрезПоследних.Номенклатура = ВложенныйЗапрос.Номенклатура И ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры

|";

КонецЕсли;

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

|ВНУТРЕННЕЕ СОЕДИНЕНИЕ

| Справочник.Номенклатура КАК сНоменклатура

|ПО

| сНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура

|ГДЕ

| сНоменклатура.Ссылка = &Номенклатура

|УПОРЯДОЧИТЬ ПО

| ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры УБЫВ

|";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

Если ТипЦен.Рассчитывается Тогда

ВалютаТекущая = ТипЦен.ВалютаЦены;

ПолученнаяЦена = ПересчитатьЦенуПриИзмененииВалюты(Выборка.Цена, Выборка.Валюта, ВалютаТекущая, 0, 0, Дата);

Если Выборка.СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоВхождениюБазовойЦеныВДиапазон Тогда

ПолученнаяЦена = ПолучитьЦенуПоЦеновымДиапазонам(ТипЦен, Дата, ПолученнаяЦена, ВалютаТекущая, ВалютаТекущая);

ИначеЕсли Выборка.СпособРасчетаЦены = Перечисления.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип Тогда

ПолученнаяЦена = ПолученнаяЦена * (1 + Выборка.ПроцентСкидкиНаценки / 100);

КонецЕсли;

Иначе

ВалютаТекущая = Выборка.Валюта;

ПолученнаяЦена = Выборка.Цена;

КонецЕсли;

ПолученнаяЦена = ПересчитатьЦенуПриИзмененииЕдиницы(ПолученнаяЦена, Выборка.ЕдиницаИзмерения, ЕдиницаИзмерения);

ПолученнаяЦена = ОкруглитьЦену(ПолученнаяЦена, ТипЦен.ПорядокОкругления, ТипЦен.ОкруглятьВБольшуюСторону);

ПолученнаяЦена = ПересчитатьЦенуПриИзмененииВалюты(ПолученнаяЦена, ВалютаТекущая, Валюта, Курс, Кратность, Дата);

КонецЕсли;

КонецЕсли;

ИзменитьЦенуПоУсловиюПродаж(Дата, Номенклатура, УсловиеПродаж, ПолученнаяЦена);

Возврат ПолученнаяЦена;

КонецФункции // ПолучитьЦенуНоменклатуры()

// Функция возвращает процент скидки (наценки) для требуемой номенклатуры в указанном типе цен ,

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

//

// Параметры:

// Номенклатура - ссылка на элемент справочника "Номенклатура", для которого надо получить цену,

// ХарактеристикаНоменклатуры - ссылка на элемент справочника "Характеристики номенклатуры",

// ТипЦен - ссылка на элемент справочника "Типы цен", опредедяет цену какого типа надо получить,

// Дата - дата, на которую надо получить цену, если не заполнено, то берется рабочая дата.

// ТолькоИзРегистра - булево, "Истина" если необходимо получать данные только из регистра.

// НетДанных - булево, устанавливается в "Ложь" если нет данных в регистре сведений, "Истина" если есть.

//

// Возвращаемое значение:

// Число, значение процента скидки (наценки).

//

Функция ПолучитьПроцентСкидкиНаценкиЦеныНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры = Неопределено, ТипЦен, Дата = Неопределено, ТолькоИзРегистра = Ложь, НетДанных = Истина, ВернутьВсегда = Ложь) Экспорт

НетДанных = Истина;

ХарактеристикиНоменклатуры = ПолучитьМассивХарактеристик(ХарактеристикаНоменклатуры);

// Если дата не заполнена, возьмем рабочую дату.

Если НЕ ЗначениеЗаполнено(Дата) Тогда

Дата = ОбщегоНазначения.ПолучитьРабочуюДату();

КонецЕсли;

ПроцентСкидкиНаценки = 0;

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

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

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

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

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

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

|ВЫБРАТЬ ПЕРВЫЕ 1

| ПроцентСкидкиНаценки

|ИЗ

| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура И ТипЦен = &ТипЦен

| И ХарактеристикаНоменклатуры В(&ХарактеристикиНоменклатуры)) КАК ЦеныНоменклатурыСрезПоследних

|

|УПОРЯДОЧИТЬ ПО

| ХарактеристикаНоменклатуры УБЫВ

|";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

ПроцентСкидкиНаценки = Выборка.ПроцентСкидкиНаценки;

НетДанных = Ложь;

КонецЕсли;

Если (ТипЦен.Рассчитывается И Не ТолькоИзРегистра) Или ВернутьВсегда Тогда

Если НЕ ЗначениеЗаполнено(ПроцентСкидкиНаценки) Тогда // процент скидки задан в типе цен

ПроцентСкидкиНаценки = ТипЦен.ПроцентСкидкиНаценки;

КонецЕсли;

КонецЕсли;

Возврат ПроцентСкидкиНаценки;

КонецФункции // ПолучитьПроцентСкидкиНаценкиЦеныНоменклатуры()

  1. http://www.intuit.ru/studies/courses/3439/681/lecture/14023