- •«Корпоративная система управления строительными проектами ооо «Инжиниринговая компания «Кронос»»
- •2014 Оглавление
- •Введение
- •Анализ предметной области
- •Выбор архитектуры системы
- •Выбор платформы
- •Выделение групп пользователей
- •Формализация автоматизируемых бизнес-процессов
- •Выбор модели жизненного цикла
- •Разработка инфологической модели
- •Проектирование информационной базы 1с Предприятие.
- •Проектирование подсистем.
- •Проектирование справочников.
- •Проектирование документов.
- •Проектирование регистров.
- •Проектирование отчетов.
- •Реализация корпоративной системы управления строительными проектами
- •Контрольный пример.
- •Заключение
- •Список литературы
- •Приложение
- •Вид экранных форм разрабатываемой системы
- •Вид отчетов разрабатываемой системы
- •Текст модулей разрабатываемой системы
- •Блок-схемы бизнес-процессов в нотации idef0
Текст модулей разрабатываемой системы
Модуль объекта «Номенклатура».
Текст произвольного запроса динамического списка «СтоимостьМатериалы» из «РегистрСведений.СтоимостьМатериалы»
ВЫБРАТЬ
СтоимостьМатериалы.Период,
СтоимостьМатериалы.Номенклатура,
СтоимостьМатериалы.Поставщик,
СтоимостьМатериалы.ЗаводИзготовитель,
СтоимостьМатериалы.Цена
ИЗ
РегистрСведений.СтоимостьМатериалы КАК СтоимостьМатериалы
ГДЕ
СтоимостьМатериалы.Номенклатура = &Номенклатура
Модуль справочника «Номенклатура»
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтаФорма.СтоимостьМатериалы.Параметры.УстановитьЗначениеПараметра("Номенклатура", Объект.Ссылка)
КонецПроцедуры
Модуль справочника «Проект»
&НаКлиенте
Процедура МатериалыНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.Поставщик = РаботаСоСправочниками.АктПоставщик(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.ЗаводИзготовитель = РаботаСоСправочниками.АктЗавод(Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура РаботыНаименованиеПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Работы.ТекущиеДанные;
СтрокаТабличнойЧасти.Стоимость = РаботаСоСправочникомРаботы.РозничнаяСтоимость(Объект.Дата, СтрокаТабличнойЧасти.Наименование);
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
ЭтаФорма.Объект.Стиомость = Объект.Работы.Итог("Стоимость") + Объект.Материалы.Итог("Сумма") ;
КонецПроцедуры
Модуль объекта «Работа».
Текст произвольного запроса динамического списка «СтоимостьРаботы» из «РегистрСведений.СтоимостьРаботы»
ВЫБРАТЬ
СтоимостьРаботы.Период,
СтоимостьРаботы.Работа,
СтоимостьРаботы.Стоимость
ИЗ
РегистрСведений.СтоимостьРаботы КАК СтоимостьРаботы
ГДЕ
СтоимостьРаботы.Работа = &Работа
Модуль справочника «Работы»
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтаФорма.СтоимостьРаботы.Параметры.УстановитьЗначениеПараметра("Работа", Объект.Ссылка)
КонецПроцедуры
Модуль объекта «Склад объекта строительства».
Текст произвольного запроса динамического списка «МатериалыСклад» из «РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты»
ВЫБРАТЬ
ОстаткиМатериаловОстаткиИОбороты.Материал,
ОстаткиМатериаловОстаткиИОбороты.Склад,
ОстаткиМатериаловОстаткиИОбороты.ОбъектСтроительства,
ОстаткиМатериаловОстаткиИОбороты.КалендарныйПлан,
ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток,
ОстаткиМатериаловОстаткиИОбороты.КоличествоОборот,
ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход,
ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход,
ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты КАК ОстаткиМатериаловОстаткиИОбороты
ГДЕ
ОстаткиМатериаловОстаткиИОбороты.ОбъектСтроительства = &ОбъектСтроительства Модуль формы справочника «Склад объекта строительства»
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтаФорма.МатериалыСклад.Параметры.УстановитьЗначениеПараметра("ОбъектСтроительства", Объект.ОбъектСтроительства);
КонецПроцедуры
Модуль объекта справочника «Склад объекта строительства»
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.КалендарныйПлан") Тогда
// Заполнение шапки
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
Проект = ДанныеЗаполнения.Проект;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Модуль объекта «Внутренний заказ»
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.КалендарныйПлан") Тогда
// Заполнение шапки
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
КП = ДанныеЗаполнения.Ссылка;
Для Каждого ТекСтрокаКПМатериал Из ДанныеЗаполнения.КПМатериал Цикл
НоваяСтрока = Материалы.Добавить();
НоваяСтрока.ЗаводИзготовитель = ТекСтрокаКПМатериал.ЗаводИзготовитель;
НоваяСтрока.Количество = ТекСтрокаКПМатериал.Количество;
НоваяСтрока.Номенклатура = ТекСтрокаКПМатериал.Материал;
НоваяСтрока.Поставщик = ТекСтрокаКПМатериал.Поставщик;
НоваяСтрока.Цена = ТекСтрокаКПМатериал.Цена;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Модуль объекта «Заказ поставщику»
&НаКлиенте
Процедура ЗаказПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Заказ.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
СтрокаТабличнойЧасти = Элементы.Заказ.ТекущиеДанные;
Для каждого СтрокаТабличнойЧасти из этаформа.Объект.Заказ цикл
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
конеццикла;
КонецПроцедуры
Модуль объекта «Заказ поставщику»
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ВнутреннийЗаказ") Тогда
// Заполнение шапки
КП = ДанныеЗаполнения.КП;
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
Для Каждого ТекСтрокаМатериалы Из ДанныеЗаполнения.Материалы Цикл
НоваяСтрока = Заказ.Добавить();
НоваяСтрока.ЗаводИзготовитель = ТекСтрокаМатериалы.ЗаводИзготовитель;
НоваяСтрока.Количество = ТекСтрокаМатериалы.Количество;
НоваяСтрока.Наименование = ТекСтрокаМатериалы.Номенклатура;
НоваяСтрока.Поставщик = ТекСтрокаМатериалы.Поставщик;
НоваяСтрока.Цена = ТекСтрокаМатериалы.Цена;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Модуль объекта «Календарный план»
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("СправочникСсылка.Проект") Тогда
// Заполнение шапки
Проект = ДанныеЗаполнения.Наименование;
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
Для Каждого ТекСтрокаМатериалы Из ДанныеЗаполнения.Материалы Цикл
НоваяСтрока = КПМатериал.Добавить();
НоваяСтрока.ЗаводИзготовитель = ТекСтрокаМатериалы.ЗаводИзготовитель;
НоваяСтрока.Количество = ТекСтрокаМатериалы.Количество;
НоваяСтрока.Материал = ТекСтрокаМатериалы.Номенклатура;
НоваяСтрока.Поставщик = ТекСтрокаМатериалы.Поставщик;
НоваяСтрока.Цена = ТекСтрокаМатериалы.Цена;
КонецЦикла;
Для Каждого ТекСтрокаРаботы Из ДанныеЗаполнения.Работы Цикл
НоваяСтрока = КПРаботы.Добавить();
НоваяСтрока.КонецРабот = ТекСтрокаРаботы.КонецРабот;
НоваяСтрока.Работа = ТекСтрокаРаботы.Наименование;
НоваяСтрока.НачалоРабот = ТекСтрокаРаботы.НачалоРабот;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаКПМатериал Из КПМатериал Цикл
// регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаКПМатериал.Материал;
Движение.ОбъектСтроительства = ОбъектСтроительства;
Движение.Количество = ТекСтрокаКПМатериал.Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Модуль объекта «Приходная накладная»
роцедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад = Склад;
Движение.ОбъектСтроительства = ОбъектСтроительства;
Движение.КалендарныйПлан = КП;
Движение.Количество = ТекСтрокаМатериалы.Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
// Заполнение шапки
КП = ДанныеЗаполнения.КП;
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
Для Каждого ТекСтрокаЗаказ Из ДанныеЗаполнения.Заказ Цикл
НоваяСтрока = Материалы.Добавить();
НоваяСтрока.ЗаводИзготовитель = ТекСтрокаЗаказ.ЗаводИзготовитель;
НоваяСтрока.Количество = ТекСтрокаЗаказ.Количество;
НоваяСтрока.Материал = ТекСтрокаЗаказ.Наименование;
НоваяСтрока.Поставщик = ТекСтрокаЗаказ.Поставщик;
НоваяСтрока.Цена = ТекСтрокаЗаказ.Цена;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Модуль объекта «Выполнение работ календарного плана»
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.КалендарныйПлан") Тогда
// Заполнение шапки
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
Проект = ДанныеЗаполнения.Проект;
КП = ДанныеЗаполнения.Ссылка;
Статус = ДанныеЗаполнения.Статус;
Для Каждого ТекСтрокаКПМатериал Из ДанныеЗаполнения.КПМатериал Цикл
НоваяСтрока = КПМатериал.Добавить();
НоваяСтрока.Количество = ТекСтрокаКПМатериал.Количество;
НоваяСтрока.Материал = ТекСтрокаКПМатериал.Материал;
КонецЦикла;
Для Каждого ТекСтрокаКПРаботы Из ДанныеЗаполнения.КПРаботы Цикл
НоваяСтрока = КПРаботы.Добавить();
НоваяСтрока.КонецРабот = ТекСтрокаКПРаботы.КонецРабот;
НоваяСтрока.НачалоРабот = ТекСтрокаКПРаботы.НачалоРабот;
НоваяСтрока.Работа = ТекСтрокаКПРаботы.Работа;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Модуль объекта «Списание материалов»
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
// регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад = Склад;
Движение.ОбъектСтроительства = ОбъектСтроительства;
Движение.КалендарныйПлан = КП;
Движение.Количество = ТекСтрокаМатериалы.Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.НарядЗадание") Тогда
// Заполнение шапки
КП = ДанныеЗаполнения.КП;
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
Склад = ДанныеЗаполнения.Склад;
Для Каждого ТекСтрокаМатериалы Из ДанныеЗаполнения.Материалы Цикл
НоваяСтрока = Материалы.Добавить();
НоваяСтрока.Количество = ТекСтрокаМатериалы.Количество;
НоваяСтрока.Материал = ТекСтрокаМатериалы.Материал;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
Модуль объекта «Наряд задание»
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.КалендарныйПлан") Тогда
// Заполнение шапки
ОбъектСтроительства = ДанныеЗаполнения.ОбъектСтроительства;
КП = ДанныеЗаполнения.Ссылка;
Для Каждого ТекСтрокаКПМатериал Из ДанныеЗаполнения.КПМатериал Цикл
НоваяСтрока = Материалы.Добавить();
НоваяСтрока.Количество = ТекСтрокаКПМатериал.Количество;
НоваяСтрока.Материал = ТекСтрокаКПМатериал.Материал;
КонецЦикла;
Для Каждого ТекСтрокаКПРаботы Из ДанныеЗаполнения.КПРаботы Цикл
НоваяСтрока = Наряд.Добавить();
НоваяСтрока.КонецРабот = ТекСтрокаКПРаботы.КонецРабот;
НоваяСтрока.Работа = ТекСтрокаКПРаботы.Работа;
КонецЦикла;
КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры