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

Разработка конфигурации «Взаиморасчеты с поставщиками» в среде 1С:Предприятие 8.3.(Выбор комплекса задач автоматизации)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

Объектом исследования является Компания ООО «СЛ Фарма».

Предметом - процесс расчетов с поставщиками и подрядчиками в компании.

Целью работы являются вопросы автоматизации процесса учета взаиморасчетов с поставщиками и подрядчиками в компании ООО «СЛ Фарма».

Задачами работы являются:

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

1. ГЛАВА. Аналитическая часть

1.1. Выбор комплекса задач автоматизации

Компания ООО «СЛ Фарма» (в дальнейшем компания), полное наименование: Общество с ограниченной ответственностью «СЛ Фарма».

Организационная структура управления компании изображена на рисунке 1.

В нее входит:

  1. Управленческий персонал;
  2. Персонал по ведению бухгалтерского учета;
  3. Персонал отдела продаж;
  4. Логист и водители.

Рисунок 1 Организационная структура предприятия ООО «СЛ Фарма»

Автоматизации на предприятии подлежит процесс обработки учета заказов по поставщикам и подрядчикам отдела продаж и их согласование с отделом бухгалтерии.

Произведем описание функции отделов в исследуемой компании.

Отдел продаж состоит из семи сотрудников.

Руководитель данного отдела реализовывает общее руководство отделом.

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

Менеджер продаж юридическим лицам подготавливает документацию для юридических лиц.

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

Менеджер продаж по производству Frebor подготавливает документацию для продаж препаратов марки Frebor.

Менеджер продаж по производству Fluk подготавливает документацию для продаж препаратов марки Fluk.

Менеджер продаж по производству Winner подготавливает документацию для продаж препаратов марки Winner.

Проанализируем функции отдел продаж:

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

1.2. Характеристика документооборота, возникающего при

решении задачи

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

Рисунок 2 Схема документооборота

Работники отдела продаж тратят на поиск и обработку документов по заказам подрядчиков более 50% своего рабочего времени. Из них более 20% рабочего времени уходит для поиска документов в таблицах и архивах, а более 10% времени уходит – на передачу и согласование документов между сотрудниками и руководством.

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

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

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

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

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

  1. Заказ подрядчика;
  2. Доверенности;
  3. План обмена с бухгалтерией;
  4. Договора.

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

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

Также необходима будет таблица Заказы

2. ГЛАВА. Проектная часть

2.1. Характеристика разработанных справочников в среде 1С:Предприятие (справочники, константы, перечисления).

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

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

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

Рисунок 3 - логическая модель разрабатываемой конфигурации

Разработка справочников конфигурации [9].

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

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

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

Элемент справочника содержит поля:

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

Справочник клиенты предназначен для хранения информации о всех клиентах, которые сотрудничают с компанией ООО «СЛ Фарма».

Элемент справочника содержит поля:

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

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

Элемент справочника содержит поля:

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

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

Элемент справочника содержит поля:

  1. Код;
  2. Наименование;
  3. ЭтоГруппа;
  4. Руководитель;
  5. Пометка/Удаление.

В документе заказы сводятся все данные по заказам.

Документ имеет поля:

  1. Код_Номер;
  2. Код_Клиента;
  3. Код;
  4. Код_Сотрудника;
  5. Date;
  6. Статус_заказа;
  7. Договор_клиента;
  8. Исполнитель;
  9. Номенклатура;
  10. Количество;
  11. Сумма;
  12. Пометка/Удаление.

Таблица 1

Структура справочника «Клиенты»

Код

Имя ячейки

Тип ячейки

Вид ячейки

Синоним ячейки

1

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

boolean

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

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

2

Код

String/ (Ф9)

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

Код

3

Наименование клиента

String /(П50)

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

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

4

ИНН

String/ (П200)

Реквизит

ИНН

5

Адрес

String/ (П200)

Реквизит

Адрес

6

Телефон

String/ (П50)

Реквизит

Телефон

7

Почта

String/ (П50)

Реквизит

Почта

Таблица 2

Структура данных справочника «Договора клиентов»

Код

Имя ячейки

Тип ячейки

Вид ячейки

Синоним ячейки

1

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

boolean

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

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

2

Код

String/ (Ф9)

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

Код

3

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

String/ (П50)

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

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

4

Владелец

Справочник-link.-Клиенты

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

Владелец

Таблица 3

Структура справочника «Номенклатура»

Код

Имя ячейки

Тип ячейки

Вид ячейки

Синоним ячейки

1

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

Boolean

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

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

2

Код

String/ (Ф9)

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

Код

3

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

String/ (П150)

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

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

4

Родитель

Справочникlink./Номенклатура

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

Родитель

5

ЭтоГруппа

boolean

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

Это группа

Таблица 4

Структура справочника «Сотрудники»

Код

Имя ячейки

Тип ячейки

Вид ячейки

Синоним ячейки

1

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

boolean

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

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

2

Код

String/ (Ф9)

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

Код

3

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

String/ (П150)

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

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

Таблица 5

Структура таблицы «Заказ»

Код

Имя ячейки

Тип ячейки

Вид ячейки

Синоним ячейки

1

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

boolean

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

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

2

Номер

string/ (П9)

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

Номер

3

Date

Date time

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

Date

5

Клиент

Справочникlink.Клиенты

Реквизит

Клиент

6

ДоговорКлиента

Справочникlink.ДоговораКлиентов

Реквизит

Договор клиента

7

СтатусЗаказа

Перечислениеlink.СтатусыЗаказа

Реквизит

Статус заказа

8

Исполнитель

Справочникlink.Сотрудники

Реквизит

Исполнитель

10

Номенклатура

Справочникlink.Номенклатура

Реквизит

Номенклатура

11

Количество

integer (10.2)

Реквизит

Количество

12

Сумма

integer (10.2)

Реквизит

Сумма

2.2. Характеристика разработанных экранных форм документов в среде 1С:Предприятие

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

Рисунок 5 Разработка документа Заказ

Таблица 6

Структура документа Заказ

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

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

Boolean

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

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

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

Нет

2

Номер

String (П9)

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

Номер

Номер

Нет

3

Date

Date и время

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

Date

Date

Нет

4

Проведен

Boolean

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

Проведен

Проведен

Нет

5

Организация

СправочникСсылка.Организации

Реквизит

Организация

Нет

6

Контрагент

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

Реквизит

Контрагент

Нет

7

Ответственный

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

Реквизит

Ответственный

Нет

8

Товары

Табличная часть

Товары

9

Номенклатура

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

Реквизит

Номенклатура

Нет

10

Количество

Число (10.2)

Реквизит

Количество

Нет

11

Цена

Число (10.2)

Реквизит

Цена

Нет

12

Сумма

Число (10.2)

Реквизит

Сумма

Нет

Рисунок 6 Разработка макета печати документа Заказ

Рисунок 7 Разработка документа Личная карточка сотрудника

Таблица 7

Структура документа Карточки сотрудника

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

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

Boolean

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

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

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

Нет

2

Номер

String (П9)

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

Номер

Номер

Нет

3

Date

Date и время

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

Date

Date

Нет

4

Проведен

Boolean

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

Проведен

Проведен

Нет

5

РабочееМестоОрганизацияНаименованиеПолное

СправочникСсылка.Организации

Реквизит

Организация

Нет

6

Сотрудник

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

Реквизит

Сотрудник

Нет

7

DateАктуальности

Date

Реквизит

Date актуальности

Нет

8

РабочееМестоТабельныйНомер

String (П10)

Реквизит

Табельный номер

Нет

9

ЛичныеДанныеИНН

String (П10)

Реквизит

Личные данные ИНН

Нет

10

ЛичныеДанныеСтраховойНомерПФР

String (П10)

Реквизит

Личные данные страховой номер ПФР

Нет

11

ПерваяБукваФамилии

String (П10)

Реквизит

Первая буква фамилии

Нет

12

ХарактерРаботы

String (П10)

Реквизит

Характер работы

Нет

13

ВидРаботы

String (П10)

Реквизит

Вид работы

Нет

14

ЛичныеДанныеПол

String (П10)

Реквизит

Пол

Нет

15

ПриемНаРаботу

Табличная часть

Прием на работу

16

DateПеревода

Date

Реквизит

Date перевода

Нет

17

ПодразделениеПеревода

String (П10)

Реквизит

Подразделение перевода

Нет

18

ДолжностьПеревода

String (П10)

Реквизит

Должность перевода

Нет

19

ТарифнаяСтавка

String (П10)

Реквизит

Тарифная ставка

Нет

20

ОснованиеПеревода

String (П10)

Реквизит

Основание перевода

Нет

21

Разряд

Табличная часть

Присвоение квалификационного разряда

22

DateПрисвоения

Date

Реквизит

Date присвоения

Нет

23

КлассныйЧинРанг

String (П10)

Реквизит

Классный чин ранг

Нет

24

РазмерНадбавки

String (П10)

Реквизит

Размер надбавки

Нет

25

ДокументОснование

String (Неогр)

Реквизит

Документ основание

Нет

26

Атестация

Табличная часть

Атестация

27

DateАттестации

Date

Реквизит

Date аттестации

Нет

28

РешениеКомиссии

String (Неогр)

Реквизит

Решение комиссии

Нет

29

Номер

String (П10)

Реквизит

Номер

Нет

30

Date

Date

Реквизит

Date

Нет

31

Основание

String (Неогр)

Реквизит

Основание

Нет

32

Квалификация

Табличная часть

Квалификация

33

Начало

Date

Реквизит

Начало

Нет

34

Окончание

Date

Реквизит

Окончание

Нет

35

ВидПовышенияКвалификации

String (Неогр)

Реквизит

Вид повышения квалификации

Нет

36

УчебноеЗаведениеАдрес

String (Неогр)

Реквизит

Учебное заведение адрес

Нет

37

ВидДокумента

String (Неогр)

Реквизит

Вид документа

Нет

38

СерияНомер

String (П10)

Реквизит

Серия номер

Нет

39

DateВыдачи

Date

Реквизит

Date выдачи

Нет

40

Основание

String (Неогр)

Реквизит

Основание

Нет

41

Переподготовка

Табличная часть

Переподготовка

42

Начало

Date

Реквизит

Начало

Нет

43

Окончание

Date

Реквизит

Окончание

Нет

44

Специальность

String (Неогр)

Реквизит

Специальность

Нет

45

ВидДокумента

String (Неогр)

Реквизит

Вид документа

Нет

46

СерияНомер

String (П10)

Реквизит

Серия номер

Нет

47

DateВыдачи

Date

Реквизит

Date выдачи

Нет

48

Основание

String (Неогр)

Реквизит

Основание

Нет

49

Награды

Табличная часть

Награды

50

Награда

String (Неогр)

Реквизит

Награда

Нет

51

Приказ

String (Неогр)

Реквизит

Приказ

Нет

52

НомерПриказа

String (П10)

Реквизит

Номер приказа

Нет

53

DateПриказа

Date

Реквизит

Date приказа

Нет

54

Отпуск

Табличная часть

Отпуск

55

ВидОтпуска

String (Неогр)

Реквизит

Вид отпуска

Нет

56

РабочийГодС

Date

Реквизит

Рабочий год С

Нет

57

РабочийГодПо

Date

Реквизит

Рабочий год по

Нет

58

ДнейОтпуска

Число (10.0)

Реквизит

Дней отпуска

Нет

59

DateС

Date

Реквизит

Date С

Нет

60

DateПо

Date

Реквизит

Date по

Нет

61

ОснованиеОтпуска

String (Неогр)

Реквизит

Основание отпуска

Нет

62

Льготы

Табличная часть

Льготы

63

ЛьготаНаименование

String (Неогр)

Реквизит

Льгота наименование

Нет

64

НомерЛьготы

String (П10)

Реквизит

Номер льготы

Нет

65

DateВыдачиЛьготы

Date

Реквизит

Date выдачи льготы

Нет

66

Основание

String (Неогр)

Реквизит

Основание

Нет

Рисунок 8 Разработка макета Личной карточки сотрудника

Рисунок 9 Разработка документа Договор

Таблица 8

Структура документа Договор

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

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

Boolean

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

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

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

Нет

2

Номер

String (П9)

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

Номер

Номер

Нет

3

Date

Date и время

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

Date

Date

Нет

4

Проведен

Boolean

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

Проведен

Проведен

Нет

5

Организация

СправочникСсылка.Организации

Реквизит

Организация

Нет

6

Контрагент

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

Реквизит

Контрагент

Нет

7

Ответственный

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

Реквизит

Ответственный

Нет

Разработка документа Счет фактуры

Рисунок 10 Разработка ввода на основании

Таблица 9

Разработка структуры счета фактуры

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

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

Boolean

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

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

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

Нет

2

Номер

String (П9)

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

Номер

Номер

Нет

3

Date

Date и время

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

Date

Date

Нет

4

Проведен

Boolean

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

Проведен

Проведен

Нет

5

Организация

СправочникСсылка.Организации

Реквизит

Организация

Нет

6

Контрагент

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

Реквизит

Контрагент

Нет

7

Ответственный

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

Реквизит

Ответственный

Нет

8

Товары

Табличная часть

Товары

9

Номенклатура

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

Реквизит

Номенклатура

Нет

10

Количество

Число (10.2)

Реквизит

Количество

Нет

11

Цена

Число (10.2)

Реквизит

Цена

Нет

12

Сумма

Число (10.2)

Реквизит

Сумма

Нет

Рисунок 11 Разработка документа Доверенность

Таблица 10

Структура документа Доверенность

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

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

Boolean

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

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

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

Нет

2

Номер

String (П9)

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

Номер

Номер

Нет

3

Date

Date и время

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

Date

Date

Нет

4

Проведен

Boolean

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

Проведен

Проведен

Нет

5

Организация

СправочникСсылка.Организации

Реквизит

Организация

Нет

6

Контрагент

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

Реквизит

Контрагент

Нет

7

Ответственный

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

Реквизит

Ответственный

Нет

Рисунок 12 Разработка документа Поступление товаров

Таблица 11

Структура документа Поступление товаров

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

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

Boolean

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

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

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

Нет

2

Номер

String (П9)

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

Номер

Номер

Нет

3

Date

Date и время

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

Date

Date

Нет

4

Проведен

Boolean

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

Проведен

Проведен

Нет

5

Организация

СправочникСсылка.Организации

Реквизит

Организация

Нет

6

Контрагент

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

Реквизит

Контрагент

Нет

7

Ответственный

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

Реквизит

Ответственный

Нет

8

Товары

Табличная часть

Товары

9

Номенклатура

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

Реквизит

Номенклатура

Нет

10

Количество

Число (10.2)

Реквизит

Количество

Нет

11

Цена

Число (10.2)

Реквизит

Цена

Нет

12

Сумма

Число (10.2)

Реквизит

Сумма

Нет

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

Рисунок 14 Разработка документа Реализация товаров

Таблица 12

Структура документа Реализация товаров

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

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

Boolean

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

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

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

Нет

2

Номер

String (П9)

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

Номер

Номер

Нет

3

Date

Date и время

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

Date

Date

Нет

4

Проведен

Boolean

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

Проведен

Проведен

Нет

5

Организация

СправочникСсылка.Организации

Реквизит

Организация

Нет

6

Контрагент

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

Реквизит

Контрагент

Нет

7

Ответственный

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

Реквизит

Ответственный

Нет

8

Товары

Табличная часть

Товары

9

Номенклатура

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

Реквизит

Номенклатура

Нет

10

Количество

Число (10.2)

Реквизит

Количество

Нет

11

Цена

Число (10.2)

Реквизит

Цена

Нет

12

Сумма

Число (10.2)

Реквизит

Сумма

Нет

Рисунок 15 Разработка макета печати документа Реализация товаров

Рисунок 16 Разработка регистра накоплений Остатки товаров

Таблица 13

Структура регистра накоплений

Код

Имя

Тип

Вид

Синоним

Комментарий

Использование

Индексирование

1

Активность

Boolean

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

Активность

Активность

Нет

2

Регистратор

ДокументСсылка.ПоступлениеТоваров, ДокументСсылка.РеализацияТоваров

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

Регистратор

Регистратор

Нет

3

Период

Date и время

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

Период

Период

Нет

4

ВидДвижения

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

Вид движения

Вид движения

Нет

5

Номенклатура

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

Измерение

Номенклатура

Нет

6

Организация

СправочникСсылка.Организации

Измерение

Организация

Нет

7

Контрагент

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

Измерение

Контрагент

Нет

8

Ответственный

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

Измерение

Ответственный

Нет

9

Количество

Число (10.2)

Ресурс

Количество

Нет

10

Сумма

Число (10.2)

Ресурс

Сумма

Нет

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

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

Рисунок 18 Разработка отчета по продажам

2.3. Описание разработанных подсистем в среде 1С:Предприятие

Рисунок 13 Разработка подсистем

2.4. Контрольный пример реализации проекта в среде 1С:Предприятие и его описание

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

  1. Главная;
  2. Документы;
  3. Справочники.

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

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

Рисунок 21 Заполнение справочника Контрагенты

Рисунок 22 Заполнение справочника Организации

Рисунок 23 Заполнение справочника Номенклатура

Рисунок 24 Заполнение справочника Сотрудники

Рисунок 25 Формирование документа Заказ

Рисунок 26 Печать документа заказ

Рисунок 27 формирование документа Доверенность

Рисунок 28 Формирование документа Договор

Рисунок 29 Формирование документа Поступление товаров

Рисунок 30 Печать документа Поступление товаров

Рисунок 31 Формирование документа Реализация товаров

Рисунок 32 Печать документа Реализация товаров

Рисунок 33 Формирование документа Счет-фактура

Рисунок 34 Печать документа Счет-фактура

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

Рисунок 36 Формирование отчета по продажам

Рисунок 37 Формирование документа Личная карточка сотрудника

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

Заключение

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

  1. изучена структура предметной области;
  2. проведен анализ рынка существующих программных решений;
  3. выработаны общие требования к разрабатываемому программному продукту;
  4. разработана логическая модель базы данных;
  5. выбрана среда разработки на платформе 1С: Предприятие 8.3;
  6. Разработана конфигурация «Автоматизация расчетов с поставщиками и подрядчиками в компании ООО «СЛ Фарма»» 1С: Предприятие 8.3;
  7. проведена проверка и тестирование.

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

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

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

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

Таким образом, поставленные цели и задачи ВКР достигнуты, разработанный программный комплекс «Автоматизация расчетов с поставщиками и подрядчиками в компании ООО «СЛ Фарма»» на платформе 1С: Предприятие 8.3 соответствует сформулированным требованиям.

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

Список литературы

Законодательные акты и постановления правительства РФ:

  1. ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам (с Изменением N 1).
  2. ГОСТ 7.32- 2001 Структура и правила оформления 22с.
  3. ГОСТ Р 50922-2006 Защита информации. Основные термины и определения.
  4. ГОСТ Р ИСО/МЭК 12207-2010 Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств.

Специальная научная литература:

  1. Балдин, К.В. Информационные системы в экономике: Учебное пособие / К.В. Балдин. - М.: НИЦ ИНФРА-М, 2015. – 218с.
  2.  Вдовин, В.М. Предметно-ориентированные экономические информационные системы: Учебное пособие / В.М. Вдовин, Л.Е. Суркова, А.А. Шурупов. - М.: Дашков и К, 2016. – 388с.
  3. Гаврилов, М.В. Информатика и информационные технологии: Учебник для прикладного бакалавриата / М.В. Гаврилов, В.А. Климов. - Люберцы: Юрайт, 2016. - 383 c.
  4. Емельянов, С.В. Информационные технологии и вычислительные системы. - М.: Ленанд, 2015. – 96с.
  5. Радченко М.Г. 1С: Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы. – М.: ООО «1С: Паблишинг», 2017. – 512 с.
  6. Рыжко, А.Л. Информационные системы управления производственной компанией: Учебник для академического бакалавриата - Люберцы: Юрайт, 2016. – 354с.
  7. Кашаев С. М. 1С: Предприятие 8.3. Разработка прикладных решений. – Издательство: СПб.: Питер 2016– 269 с.
  8. Информационные системы и технологии: Научное издание. / Под ред. Ю.Ф. Тельнова. - М.: ЮНИТИ, 2016. - 303 c.
  9. Хрусталева Е.Ю. Язык запросов «1С: Предприятия8» -Москва ООО «1С-Паблишинг»2016.
  10. 1С Предприятие: 8.3. Руководство администратора – М.: ООО «1С-Паблишинг», 2017. – 420 с.

ПРИЛОЖЕНИЕ

Код программного обеспечения

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

//

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

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

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

//

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

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

//

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

Если ЗначениеЗаполнено(Скидка) И Скидка <> 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

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

|ИЗ

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

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

|

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

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

|";

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

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

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

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

КонецЕсли;

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

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

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

КонецЕсли;

КонецЕсли;

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

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