Скачиваний:
10
Добавлен:
17.06.2023
Размер:
1.03 Mб
Скачать

распечатать. Для создания смет необходимо нажать на область документа

«Сметы» и далее «Создать».

При создании сметы необходимо только внести в документ ремонтно-

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

Рисунок 3.14 – Итоговый документ «Смета» для печати

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

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

В качестве стратегии тестирования выбрана стратегия «черный ящик»

[20], когда проверка соответствия функционирования информационной системы техническому заданию производится без учета особенностей

35

алгоритма. Данные тестирования системы приведены в таблице 3.1.

Таблица 3.1 – Результаты тестирование системы

 

 

 

Результат программы

 

 

 

 

 

Тестовые воздействия

Ожидаемый

Результат работы

теста

 

 

результат

системы

 

 

Заполнение всех

 

 

 

 

строк сметы и ее

Корректная работа

Корректная работа

 

Ввод

проведение

 

 

 

Пользователь

Пересчет стоимости

Корректная работа,

1

корректных

удаляет позиции из

пересчет стоимости

 

данных

сметы

 

сметы

сметы

 

 

 

 

 

Печать

Выдача корректной

Выдача корректной

 

 

калькуляции

формы на печать

формы на печать

 

 

 

 

 

 

 

 

 

Выдача сообщения

 

 

Пользователь не

Выдача сообщения об

об ошибке,

 

 

ввел реквизит в

программа

 

 

ошибке

 

 

документе

предлагает ввести

 

 

 

2

Некорректный

 

 

данные

ввод данных

 

 

Выдача сообщения

 

 

 

 

 

Ввод

Выдача сообщения об

об ошибке,

 

 

отрицательной

программа

 

 

ошибке

 

 

цены в документе

предлагает ввод

 

 

 

 

 

 

 

заново

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

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

3.15.

36

Рисунок 3.15 – Результаты тестирования в условиях некорректного ввода

Выводы по третьему разделу

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

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

37

ЗАКЛЮЧЕНИЕ

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

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

представленная диаграммой классов. На основе полученных результатов был осуществлен выбор структур объектов базы данных.

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

также схема взаимодействия модулей и массивов данных.

Тестирование информационной системы осуществлялось методом

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

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

38

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

1. Мартыненко Д. Особенности составления сметы / Д. Мартыненко //

Информационный портал FB.ru [электронный ресурс]. 2016. URL : http://fb.ru/article/232056/obraztsyi-smet-na-stroitelstvo-doma-osobennosti-sostavlen

iya-smetyi (дата обращения 17.09.17).

2. Сметы по видам работ и расшифровка расценок / Как читать смету,

итоги сметы на ремонтно-строительные работы [электронный ресурс]. 2016.

URL : http://smeta-ekspertiza.ru/stati-o-smetnom-dele/article_post/chitat-smetu (да-

та обращения 17.09.17).

 

 

 

3.

Автоматизированные системы /

Помощник строителя [электронный

ресурс].

2013.

URL

:

https://tggpu.ru/sistemotexnika-v-

stroitelstve/avtomatizirovannye-sistemy.html

(дата обращения 17.09.17).

4.

Обзор сметных программ / Сметное дело // СтройСофт [электронный

ресурс]. 2017. URL : http://www.smeta.ru/static/56_945.html (дата обращения

25.09.17).

 

 

 

 

 

 

 

5. Программа Smeta.ru

/

Сметные программы

//

СтройСофт

[электронный ресурс]. 2017. URL :

http://www.smeta.ru/static/1.html (дата

обращения 25.09.17).

 

 

 

 

 

 

6. Турбосметчик / Строительные сметные программы //

Галактика ИТ

[электронный

ресурс].

2017.

URL

:

 

http://www.all-

smety.ru/programs/smetnye_programmy/turbosmetchik/

(дата

обращения

25.09.17).

 

 

 

 

 

 

 

7. Гектор: Сметчик-строитель

/

Строительные сметные

программы //

Галактика ИТ

[электронный

ресурс]. 2017.

URL

:

http://www.all-

smety.ru/programs/smetnye_programmy/smetchik/

(дата обращения 25.09.17).

8. WinСмета / Продукты // WinСмета – профессиональный выбор

сметчика [электронный ресурс]. 2016. URL

: https://winsmeta.com/ (дата

обращения 25.09.17).

 

39

 

9. Разработка модели деятельности строительной фирмы / БоброДобро

[электронный ресурс]. 2017. URL : http://prog.bobrodobro.ru/74789 (дата обращения 12.10.17).

10.Моделирование бизнеса. Основные подходы / Блог компании

Trinion // Новостной блог программистов Хабрахабр [электронный ресурс].

2017. URL : https://habrahabr.ru/company/trinion/blog/332772/ (дата обращения

12.10.2017).

11. Методология IDEF0 / Статьи раздела BPWin // ITteach.ru

[электронный ресурс]. 2016. URL : http://itteach.ru/bpwin/metodologiya-idef0

(дата обращения 23.10.2017).

12. Методология IDEF1X / Статьи раздела BPWin // ITteach.ru

[электронный ресурс]. 2016. URL : http://itteach.ru/bpwin/metodologiya-idef1x

(дата обращения 30.10.2017).

13.Васильев В. С. Диаграммы классов UML / В. С. Васильев // Блог программиста [электронный ресурс]. 07.06.2017. URL : https://proprof.com/archives/3212 (дата обращения 05.11.17).

14.1С модули / 1С Программист [электронный ресурс]. 2017. URL : http://1c-md.com/programmirovanie/1s-moduli.html (дата обращения 27.11.17).

15.Структурная схема пакета - дерево вызова программных модулей /

1СHelp

[электронный

ресурс].

2017.

URL

:

http://xcschemem.appspot.com/strukturnaya-shema-paketa-derevo-vyzova-progra

 

mmnyh-modulyay.html дата обращения 27.11.17).

 

 

 

16. Основные виды объектов конфигурации / ГЛАВА 01 - КОНЦЕПЦИЯ

СИСТЕМЫ

«1С: ПРЕДПРИЯТИЕ» // Петербуржский

программист

[электронный ресурс]. 23.03.2017. URL : http://master1c8.ru/platforma-1s- predpriyatie-8/rukovodstvo-razrabottchika/glava1-kontseptsiya-sistem- 1spredpriyatie/osnovne-vid-obaektov-konfiguratsii/ (дата обращения 02.12.17).

17. Модули в Платформе 1С: Предприятие 8.3 / Бесплатная статья по Программированию в 1С 8.3 // Курсы-по-1С-РФ.2014. URL : http://курсы-по-

40

1с.рф/articles/модули-в-платформе-1с-предприятие-8-3/ (дата обращения

10.12.17).

18.1C : Системные требования / Программирование 1C. 2017. URL : http://capitally.ru/1c-development/administrirovanie/1s-sistemnye-trebovaniya/ (дата обращения 15.12.17).

19.Установка конфигурации 1С / Пошаговое руководство // Programs. 2017. URL : http://1c-programs.ru/chastye-voprosy-po-1s/ustanovka-konfiguracii-1s- poshagovoe-rukovodstvo.html (дата обращения 20.12.17).

20.Проць С. Методы тестирования программного обеспечения и их сравнение. Тестирование методом «черного ящика» и тестирование методом

«белого ящика» / С. Проць // Информационный портал FB.ru [электронный ресурс]. 2016. URL : http://fb.ru/article/247668/metodyi-testirovaniya- programmnogo-obespecheniya-i-ih-sravnenie-testirovanie-metodom-chernogo-yaschi ka-i-testirovanie-metodom-belogo-yaschika (дата обращения 20.12.17).

41

ПРИЛОЖЕНИЕ А Глоссарий

1. Информация – это совокупность сведений, подлежащих хранению,

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

2. Информационные технологии (ИТ) – совокупность средств и методов сбора, обработки и передачи данных (первичной информации) для получения информации нового качества о состоянии объекта, процесса или явления

(информационного продукта).

3.Бизнес-процесс – это совокупность взаимосвязанных мероприятий или работ, направленных на создание определённого продукта или услуги для потребителей.

4.Автоматизированная система управления строительством (АСУС) –

организационно-техническая система, базирующаяся на ЭВМ и экономико-

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

контролю, анализу, планированию и подготовке.

5. Система автоматизированного проектирования (САПР) –

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

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

6. Смета – документ, в котором вычисляется сумма затрат на проект,

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

7. Клиент-серверная архитектура – вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг,

называемыми клиентами. Фактически клиент и сервер — это программное

42

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

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

9.Конфигурация – совокупность настроек программы, задаваемая пользователем, а также процесс изменения этих настроек в соответствии с нуждами пользователя.

10.Резервное копирование – процесс создания копии данных на носителе (жестком диске, диске и т. д.), предназначенном для восстановления данных в оригинальном или новом месте их расположения в случае их повреждения или разрушения.

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

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

43

13.Физическая модель – логическая модель, выраженная в терминах языка описания данных конкретной СУБД.

14.Сущность – некоторый объект, явление из рассматриваемой предметной области.

15.Атрибут – данные, описывающие свойства сущности.

16.Модуль – это отдельная функционально-законченная программная единица, которая структурно оформляется стандартным образом по отношению

ккомпилятору и по отношению к объединению ее с другими аналогичными единицами и загрузке.

17.«Черный ящик» – стратегия (метод) тестирования функционального поведения объекта (программы, системы) с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора.

44

ПРИЛОЖЕНИЕ Б

Модель бизнес-процесса по стандарту IDEF0

Рисунок Б.1 – Концептуальный уровень диаграммы IDEF0

Рисунок Б.2 – Декомпозиция блока «Расчет строительных смет»

45

Рисунок Б.3 – Декомпозиция блока «Анализ и составление плана работ»

Рисунок Б.4 – Декомпозиция блока «Определение затрат»

46

Рисунок Б.5 – Декомпозиция блока «Формирование сметной документации»

47

ПРИЛОЖЕНИЕ В Описание объектов БД

Таблица Г.1 – Справочники БД

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

Реквизиты

Тип данных

 

Код

Число (длина 10)

 

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

Строка (длина 50)

Клиенты

Контактный

Строка (длина 15)

телефон

 

 

 

 

Организация

Строка (длина 90)

 

ИНН

Строка (длина 30)

РемонтноСтроительные

Код

Число (длина 10)

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

Строка (длина 100)

Работы

Единица измерения

СправочникСсылка.ЕдиницыИзмерения

 

 

Код

Число (длина 10)

 

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

Строка (длина 100)

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

Единица измерения

СправочникСсылка.ЕдиницыИзмерения

 

Производитель

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

 

Артикул

Строка(10)

ЕдиницыИзмерения

Код

Число (длина 10)

 

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

Строка (длина 10)

Производители

Код

Число (длина 10)

 

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

Строка (длина 20)

СтатьиЗатрат

Код

Число (длина 10)

 

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

Строка (длина 25)

ВидыРабот

Код

Число (длина 10)

 

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

Строка (длина 25)

Таблица Г.2 – Документы БД

Документ «УстановкаЦен»

Реквизиты

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

 

Тип данных

Название

 

Строка (длина 100)

 

 

Табличная

Товар

 

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

часть:

 

 

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

Позиции

Цена

 

Число (длина 12 точность 2 неотрицательное)

 

Документ «СметныеНормы»

 

Работа

 

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

Реквизиты

 

 

аботы

СтоимостьРаботы

 

Строка (длина 10)

 

 

 

ЕдиницаИзмерения

 

СправочникСсылка.ЕденицыИзмерения

 

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

 

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

Табличная

ЕдиницаИзмерения

 

СправочникСсылка.ЕденицыИзмерения

часть:

Количество

 

Число (длина 12 точность 2 неотрицательное)

Товары

Цена

 

Число (длина 12 точность 2 неотрицательное)

 

Сумма

 

Число (длина 12 точность 2 неотрицательное)

Табличная

Статья

 

Строка (длина 25)

 

 

48

Продолжение таблицы Г.2

часть: Затраты

 

Документ «ЗаказКлиента»

 

Клиент

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

 

Статус

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

Реквизиты

ТипОбращения

ПеречислениеСсылка.ТипОбращения

СуммаЗаказа

Число (длина 12 точность 2 неотрицательное)

 

 

СрокВыполнения

Дата

 

Убытки

Число (длина 12 точность 2 неотрицательное)

 

РемонтноСтроительныеРаботы

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

Табличная

 

аботы

ЕдиницаИзмерения

СправочникСсылка.ЕденицыИзмерения

часть:

Количество

Число (длина 12 точность 2 неотрицательное)

Работы

Цена

Число (длина 12 точность 2 неотрицательное)

 

 

Сумма

Число (длина 12 точность 2 неотрицательное)

 

Материал

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

 

ЕдиницаИзмерения

СправочникСсылка.ЕденицыИзмерения

Табличная

Цена

Число (длина 12 точность 2 неотрицательное)

часть:

Количество

Число (длина 12 точность 2 неотрицательное)

Материалы

Сумма

Число (длина 12 точность 2 неотрицательное)

 

Работы

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

 

 

аботы

Табличная

СтатьяДДС

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

часть:

Сумма

Число (длина 12 точность 2 неотрицательное)

Затраты

 

 

Макеты:

ПечатьКалькуляции

 

Макеты:

Рентабельность

 

 

 

Документ «Заказ»

 

Клиент

 

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

Реквизиты

Статус

 

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

ТипОбращения

 

ПеречислениеСсылка.ТипОбращения

 

 

 

СрокВыполнения

 

Дата

Табличная

ВидРаботы

 

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

часть:

Количество

 

Число (длина 12 точность 2 неотрицательное)

Требуемые

 

 

 

Работы

 

 

 

Таблица Г.3 – Перечисления БД

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

Значения

ТипОбращения

Первичное

 

Многократное

 

НаРассмотрении

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

Выполнен

 

Отклонен

49

Таблица Г.4 – Регистры сведений БД

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

Измерения

Тип данных

Ресурсы

Тип данных

Цены

Позиция

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

Цена

Число

 

 

 

РемонтноСтроительныеРаботы,

 

(длина

12

 

 

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

 

точность

2

 

 

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

 

неотрицател

 

 

 

 

ьное)

 

 

Работа

РемонтноСтроительныеРаботы

Количество

Число

 

СметныеНормы

 

 

 

(длина

12

 

 

 

 

точность

2

 

 

 

 

неотрицател

 

 

 

 

ьное)

 

 

Номенклат

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

Сумма

Число

 

 

ура

ра

 

(длина

12

 

 

 

 

точность

2

 

 

 

 

неотрицател

 

 

 

 

ьное)

 

 

 

 

ЕдиницаИз

Справочник

 

 

 

мерения

Ссылка.Еде

 

 

 

 

ницыИзмере

 

 

 

 

ния

 

50

ПРИЛОЖЕНИЕ Г Текст модулей объектов

Листинг Г.1 – Модуль объекта Документ.СметныеНормы

Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

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

//регистр СметныеНормы

Движения.СметныеНормы.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл

Движение = Движения.СметныеНормы.Добавить(); Движение.Период = Дата; Движение.Работа = Работа;

Движение.Номенклатура = ТекСтрокаТовары.Номенклатура; Движение.Количество = ТекСтрокаТовары.Количество; Движение.Сумма = ТекСтрокаТовары.Цена; Движение.ЕденицаИзмерения = ТекСтрокаТовары.ЕденицаИзмерения;

КонецЦикла;

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры

Листинг Г.2 – Форма документа Документ.СметныеНормы

&НаСервере

ция", Объект.Работа);

Процедура

 

РаботаПриИзмененииНаСервере()

РезультатЗапроса =

Объект.ЕденицаИзмерения =

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

Объект.Работа.ЕденицаИзмерения;

 

 

ВыборкаДетальныеЗаписи =

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

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

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

 

"ВЫБРАТЬ

Пока

|

ВыборкаДетальныеЗаписи.Следующий()

ЦеныСрезПоследних.Цена

Цикл

|ИЗ

Объект.СтоимостьРаботы =

|

ВыборкаДетальныеЗаписи.Цена;

РегистрСведений.Цены.СрезПослед

КонецЦикла;

них КАК ЦеныСрезПоследних

 

|ГДЕ

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

|

 

ЦеныСрезПоследних.Позиция =

&НаКлиенте

&Позиция";

Процедура

 

РаботаПриИзменении(Элемент)

Запрос.УстановитьПараметр("Пози

РаботаПриИзмененииНаСервере();

 

51

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

Функция ПолучитьЕденицу (Позиция)

 

Возврат

&НаСервере

Позиция.ЕденицаИзмерения;

Функция ПолучитьЦену(Позиция)

КонецФункции

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

 

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

&НаКлиенте

"ВЫБРАТЬ

Процедура

|

ТоварыНоменклатураПриИзменении(Элем

ЦеныСрезПоследних.Цена

ент)

|ИЗ

 

|

Элемент.Родитель.ТекущиеДанные.

РегистрСведений.Цены.СрезПослед

Цена =

них КАК ЦеныСрезПоследних

ПолучитьЦену(Элемент.Родитель.Текущие

|ГДЕ

Данные.Номенклатура);

|

Элемент.Родитель.ТекущиеДанные.

ЦеныСрезПоследних.Позиция =

ЕденицаИзмерения =

&Позиция";

ПолучитьЕденицу(Элемент.Родитель.Теку

 

щиеДанные.Номенклатура);

Запрос.УстановитьПараметр("Пози

РасчитатьСумму(Элемент.Родитель.

ция", Позиция);

ТекущиеДанные)

 

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

РезультатЗапроса =

 

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

&НаКлиенте

 

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

ВыборкаДетальныеЗаписи =

Элемент.Сумма =

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

Элемент.Количество * Элемент.Цена;

 

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

Пока

 

ВыборкаДетальныеЗаписи.Следующий()

&НаКлиенте

Цикл

Процедура

Цена =

ТоварыКоличествоПриИзменении(Элемен

ВыборкаДетальныеЗаписи.Цена;

т)

КонецЦикла;

РасчитатьСумму(Элемент.Родитель.

Возврат Цена

ТекущиеДанные)

КонецФункции

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

Листинг Г.3 – Модуль объекта Документ.ЗаказКлиента

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) ЭтотОбъект.СуммаЗаказа = 0; ЭтотОбъект.Убытки = 0;

Для каждого Строка Из ЭтотОбъект.Материалы Цикл ЭтотОбъект.СуммаЗаказа = ЭтотОбъект.СуммаЗаказа + Строка.Сумма;

КонецЦикла;

Для каждого Строка Из ЭтотОбъект.Работы Цикл ЭтотОбъект.СуммаЗаказа = ЭтотОбъект.СуммаЗаказа + Строка.Сумма;

КонецЦикла;

52

Для каждого Строка Из ЭтотОбъект.Затраты Цикл

Если Строка.СтатьяДДС = Справочники.СтатьиЗатрат.НДС Тогда ЭтотОбъект.Убытки = ЭтотОбъект.Убытки + (ЭтотОбъект.СуммаЗаказа / 100 *

10);

Иначе ЭтотОбъект.Убытки = ЭтотОбъект.Убытки + Строка.Сумма;

КонецЕсли; КонецЦикла;

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

Листинг Г.4 – Модуль менеджера Документ.ЗаказКлиента

Процедура ПечатьКалькуляции(ТабДок,

|

)

Ссылка) Экспорт

|ИЗ

 

//{{_КОНСТРУКТОР_ПЕЧАТИ(Пе

|

Документ.ЗаказКлиента КАК

чатьКалькуляции)

ЗаказКлиента

 

Макет =

|ГДЕ

 

Документы.ЗаказКлиента.ПолучитьМакет(

|

ЗаказКлиента.Ссылка

"ПечатьКалькуляции");

В(&Ссылка)";

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

Запрос.Параметры.Вставить("Ссылк

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

а", Ссылка);

 

"ВЫБРАТЬ

Выборка =

|

ЗаказКлиента.Дата,

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

|

ЗаказКлиента.Клиент,

 

 

|

ЗаказКлиента.Номер,

ОбластьЗаголовок =

|

 

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

ЗаказКлиента.СрокВыполнения,

Шапка =

|

ЗаказКлиента.Статус,

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

|

ЗаказКлиента.СуммаЗаказа,

ОбластьРаботыШапка =

|

 

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

ЗаказКлиента.ТипОбращения,

ОбластьРаботы =

|

ЗаказКлиента.Работы.(

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

|

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

ОбластьМатериалыШапка =

|

 

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

РемонтноСтроительныеРаботы,

ка");

 

|

ЕденицаИзмерения,

ОбластьМатериалы =

|

Количество,

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

|

Цена,

Подвал =

|

Сумма

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

|

),

 

 

|

ЗаказКлиента.Материалы.(

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

|

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

 

 

|

Материал,

ВставлятьРазделительСтраниц =

|

ЕденицаИзмерения,

Ложь;

 

|

Цена,

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

|

Количество,

 

Если

|

Сумма,

ВставлятьРазделительСтраниц Тогда

|

Работа

 

 

 

 

53

 

ТабДок.ВывестиГоризонтальныйРа зделительСтраниц();

КонецЕсли;

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

;

Шапка.Параметры.Заполнить(Выбо

рка);

ТабДок.Вывести(Шапка, Выборка.Уровень());

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

пка);

ВыборкаРаботы = Выборка.Работы.Выбрать();

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

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

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

КонецЦикла;

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

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

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

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

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

КонецЦикла;

Подвал.Параметры.Заполнить(Выбо

рка);

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

ВставлятьРазделительСтраниц = Истина;

КонецЦикла;

//}}

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

Процедура Рентабельность(ТабДок, Ссылка) Экспорт

//{{_КОНСТРУКТОР_ПЕЧАТИ(Рен табельность)

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

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ

|

ЗаказКлиента.Дата,

|

ЗаказКлиента.Клиент,

|

ЗаказКлиента.Номер,

|

ЗаказКлиента.СуммаЗаказа,

|

ЗаказКлиента.Убытки,

|

ЗаказКлиента.Работы.(

|

 

РемонтноСтроительныеРаботы,

|

Количество,

|

Сумма

|

),

|

ЗаказКлиента.Материалы.(

|

Материал,

|

Количество,

|

Сумма

|

),

|

ЗаказКлиента.Затраты.(

|

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

|

СтатьяДДС,

|

Сумма

|

)

|ИЗ

 

|

Документ.ЗаказКлиента КАК

ЗаказКлиента

 

|ГДЕ

 

|

ЗаказКлиента.Ссылка В

(&Ссылка)";

 

Запрос.Параметры.Вставить("Ссылк а", Ссылка);

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

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

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

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

54

ОбластьРаботы =

 

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

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

ОбластьМатериалыШапка =

ВыборкаРаботы.Уровень());

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

КонецЦикла;

ка");

 

ОбластьМатериалы =

 

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

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

ОбластьЗатратыШапка =

ыШапка);

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

ВыборкаМатериалы =

;

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

ОбластьЗатраты =

Пока

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

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

Подвал =

 

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

ОбластьМатериалы.Параметры.Запо

 

лнить(ВыборкаМатериалы);

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

 

 

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

ВставлятьРазделительСтраниц =

ы, ВыборкаМатериалы.Уровень());

Ложь;

КонецЦикла;

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

 

Если

 

ВставлятьРазделительСтраниц Тогда

ТабДок.Вывести(ОбластьЗатратыШ

 

апка);

ТабДок.ВывестиГоризонтальныйРа

ВыборкаЗатраты =

зделительСтраниц();

Выборка.Затраты.Выбрать();

КонецЕсли;

Пока

 

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

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

ОбластьЗатраты.Параметры.Заполн

;

ить(ВыборкаЗатраты);

 

ТабДок.Вывести(ОбластьЗатраты,

Шапка.Параметры.Заполнить(Выбо

ВыборкаЗатраты.Уровень());

рка);

КонецЦикла;

ТабДок.Вывести(Шапка,

 

Выборка.Уровень());

 

 

Подвал.Параметры.Заполнить(Выбо

 

рка);

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

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

пка);

 

ВыборкаРаботы =

 

Выборка.Работы.Выбрать();

ВставлятьРазделительСтраниц =

Пока

Истина;

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

КонецЦикла;

 

//}}

ОбластьРаботы.Параметры.Заполни

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

ть(ВыборкаРаботы);

 

Листинг Г.5 – Модуль команды ПечатьКалькуляции

&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

55

//{{_КОНСТРУКТОР_ПЕЧАТИ(ПечатьКалькуляции) ТабДок = Новый ТабличныйДокумент; ПечатьКалькуляции(ТабДок, ПараметрКоманды);

ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать();

//}}

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

&НаСервере Процедура ПечатьКалькуляции(ТабДок, ПараметрКоманды)

Документы.ЗаказКлиента.ПечатьКалькуляции(ТабДок, ПараметрКоманды); КонецПроцедуры

Листинг Г.6 – Модуль команды Рентабельность

&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

//{{_КОНСТРУКТОР_ПЕЧАТИ(Рентабельность) ТабДок = Новый ТабличныйДокумент; Рентабельность(ТабДок, ПараметрКоманды);

ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать();

//}}

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

&НаСервере Процедура Рентабельность(ТабДок, ПараметрКоманды)

Документы.ЗаказКлиента.Рентабельность(ТабДок, ПараметрКоманды); КонецПроцедуры

Листинг Г.7– Форма документа ЗаказКлиента

&НаСервере

менклатура,

Процедура

|

РаботыРемонтноСтроительныеРаботыПри

СметныеНормыСрезПоследних.Кол

ИзмененииНаСервере(Передача)

ичество,

 

|

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

СметныеНормыСрезПоследних.Сум

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

ма,

"ВЫБРАТЬ

|

|

СметныеНормыСрезПоследних.Еде

СметныеНормыСрезПоследних.Но

ницаИзмерения,

 

56

|

СметныеНормыСрезПоследних.Раб

ота

|ИЗ

|

РегистрСведений.СметныеНормы.С резПоследних КАК СметныеНормыСрезПоследних

|ГДЕ

|

СметныеНормыСрезПоследних.Раб ота = &Работа";

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

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

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

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

СтруктураПоиска = Новый

Структура;

СтруктураПоиска.Вставить("Матер иал",ВыборкаДетальныеЗаписи.Номенклат ура);

СтруктураПоиска.Вставить("Работа ", ВыборкаДетальныеЗаписи.Работа);

МассивСтрок = Объект.Материалы.НайтиСтроки(Структу раПоиска);

Если МассивСтрок.Количество() = 0 Тогда

Строка = Объект.Материалы.Добавить();

Строка.Материал = ВыборкаДетальныеЗаписи.Номенклатура;

Строка.ЕденицаИзмерения = ВыборкаДетальныеЗаписи.ЕденицаИзмере ния;

Строка.Количество = ВыборкаДетальныеЗаписи.Количество * Передача.Количество;

Строка.Цена = ВыборкаДетальныеЗаписи.Сумма;

Строка.Сумма = Строка.Количество * Строка.Цена;

Строка.Работа = ВыборкаДетальныеЗаписи.Работа;

Иначе

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

СтрокаМассива.Количество = ВыборкаДетальныеЗаписи.Количество * Передача.Количество;

СтрокаМассива.Сумма = СтрокаМассива.Количество * СтрокаМассива.Цена;

КонецЦикла; КонецЕсли;

КонецЦикла;

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

&НаКлиенте Процедура

РаботыРемонтноСтроительныеРаботыПри Изменении(Элемент)

Если Элементы.Работы.ТекущиеДанные.Количе ство = 0 Тогда

Элементы.Работы.ТекущиеДанные. Количество = 1

КонецЕсли; Передача = Новый Структура;

Передача.Вставить("Количество", Элементы.Работы.ТекущиеДанные.Количе ство);

Передача.Вставить("Работа", Элементы.Работы.ТекущиеДанные.Ремонт ноСтроительныеРаботы);

РаботыРемонтноСтроительныеРабо тыПриИзмененииНаСервере(Передача);

СтруктураЗначений = ПолучитьЦенуИЕденицу(Элементы.Работ ы.ТекущиеДанные.РемонтноСтроительные Работы);

Элементы.Работы.ТекущиеДанные. ЕденицаИзмерения = СтруктураЗначений.Еденица;

Элементы.Работы.ТекущиеДанные. Цена = СтруктураЗначений.Цена;

РасчетСуммы(Элементы.Работы.Те кущиеДанные);

57

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

&НаКлиенте Процедура РасчетСуммы (Строка)

Строка.Сумма = Строка.Количество * Строка.Цена; КонецПроцедуры

&НаСервере Функция

ПолучитьЦенуИЕденицу(Позиция)

Запрос = Новый Запрос; Запрос.Текст =

"ВЫБРАТЬ

|

ЦеныСрезПоследних.Цена |ИЗ

|

РегистрСведений.Цены.СрезПослед них КАК ЦеныСрезПоследних

|ГДЕ

|

ЦеныСрезПоследних.Позиция = &Позиция";

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

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

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

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

ЦенаПозиции = ВыборкаДетальныеЗаписи.Цена;

КонецЦикла; СтруктураЗначений = Новый

Структура; СтруктураЗначений.Вставить("Еден

ица", Позиция.ЕденицаИзмерения); СтруктураЗначений.Вставить("Цена

", ЦенаПозиции); Возврат СтруктураЗначений

КонецФункции &НаКлиенте Процедура

РаботыКоличествоПриИзменении(Элемен т)

Передача = Новый Структура; Передача.Вставить("Количество",

Элементы.Работы.ТекущиеДанные.Количе ство);

Передача.Вставить("Работа", Элементы.Работы.ТекущиеДанные.Ремонт ноСтроительныеРаботы);

РаботыРемонтноСтроительныеРабо тыПриИзмененииНаСервере(Передача);

РасчетСуммы(Элементы.Работы.Те кущиеДанные); КонецПроцедуры

&НаСервере Процедура

РаботыПослеУдаленияНаСервере() Объект.Материалы.Очистить(); Для каждого Строка Из

Объект.Работы Цикл Передача = Новый

Структура;

Передача.Вставить("Количество", Строка.Количество);

Передача.Вставить("Работа", Строка.РемонтноСтроительныеРаботы);

РаботыРемонтноСтроительныеРабо тыПриИзмененииНаСервере(Передача);

КонецЦикла; КонецПроцедуры

&НаКлиенте Процедура

РаботыПослеУдаления(Элемент) РаботыПослеУдаленияНаСервере();

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

&НаКлиенте Процедура

РаботыЦенаПриИзменении(Элемент) РасчетСуммы(Элементы.Работы.Те

кущиеДанные); КонецПроцедуры

&НаКлиенте Процедура

58

ЗатратыСтатьяДДСПриИзменении(Элемен

Сумма = Сумма +

т)

Строка.Сумма;

НДС = ПолучитьЭлемент();

КонецЦикла;

Сумма = 0;

 

Если

Элементы.Затраты.ТекущиеДанные.

Элементы.Затраты.ТекущиеДанные.Статья

Сумма = Сумма/100 * 10;

ДДС = НДС Тогда

КонецЕсли;

 

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

Для каждого Строка Из

 

Объект.Материалы Цикл

&НаСервере

Сумма = Сумма +

Функция ПолучитьЭлемент()

Строка.Сумма;

Возврат

КонецЦикла;

Справочники.СтатьиЗатрат.НДС;

Для каждого Строка Из

КонецФункции

Объект.Работы Цикл

 

59

Соседние файлы в папке Курсовые работы