- •1 Информационные системы для автоматизации расчетА договорной цены на ремонтно-строительные работы строительной организации
- •1.2 Обзор и сравнение существующих программных продуктов для автоматизации расчетов договорной цены на ремонтно-строительные работы строительной организации
- •2.1 Постановка задачи проектирования информационной системы
- •2.4 Модель данных формирования цены на ремонтно-строительные работы строительной организации
- •3 Разработка и тестирование информационной системы для автоматизации расчетов договорной цены на ремонтно-строительные работы строительной организации
- •3.1 Описание таблиц базы данных
- •3.2 Дерево программных модулей
- •3.3 Схемы взаимосвязей модулей и массивов данных
- •3.4 Алгоритм работы модуля объекта документа «Сметные нормы»
- •3.5 Инструкция пользователя по установке программного продукта и работе с ним
- •3.6 Способы и результаты тестирования программного продукта в различных режимах
распечатать. Для создания смет необходимо нажать на область документа
«Сметы» и далее «Создать».
При создании сметы необходимо только внести в документ ремонтно-
строительные работы, материалы же добавятся автоматически благодаря подстановке из документа с нормами. Смета представлена на рисунке 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С: ПРЕДПРИЯТИЕ» // Петербуржский |
программист |
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