- •3.3 Схемы взаимосвязей модулей и массивов данных
- •3.4 Алгоритм работы модулей информационной системы
- •3.5 Инструкция пользователя по установке программного продукта и работе с ним
- •Кроме того, была составлена инструкция по установке программного продукта и работе с ним, а также проведено тестирование информационной системы методом «черного ящика», результаты которого показали корректную работу системы.
- •Приложение В
- •Текст модулей объектов
- •Листинг В.1 – Общий модуль «РаботаСДокументами»
ПРИЛОЖЕНИЕ В
Текст модулей объектов
Листинг В.1 – Общий модуль «РаботаСДокументами»
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество *
СтрокаТабличнойЧасти.Цена; КонецПроцедуры
Листинг В.2 – Документ «ПриходнаяНакладнаяНаЗапчасти» (форма документа)
&НаКлиенте Процедура СпецификацияЦенаПриИзменении(Элемент)
// Вставить содержимое обработчика.
СтрокаТабличнойЧасти = Элементы.Спецификация.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры &НаКлиенте
Процедура СпецификацияКоличествоПриИзменении(Элемент) // Вставить содержимое обработчика.
СтрокаТабличнойЧасти = Элементы.Спецификация.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры &НаКлиенте
Процедура СтавкаПриИзменении(Элемент) // Вставить содержимое обработчика.
СтрокаСпецификации = Элементы.Спецификация.ТекущиеДанные; СтрокаСпецификации.ЦенаРозничная =
СтрокаСпецификации.Цена+(СтрокаСпецификации.Ставка * СтрокаСпецификации.Цена)/100; КонецПроцедуры
Листинг В.3 – Документ «ПриходнаяНакладнаяНаЗапчасти» (модуль объекта)
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
//регистр СкладЗапчастей Приход
Движения.СкладЗапчастей.Записывать = Истина; Для Каждого ТекСтрокаСпецификация Из Спецификация Цикл
Движение = Движения.СкладЗапчастей.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.НаименованиеИзделия = ТекСтрокаСпецификация.Запчасть;
Движение.Количество = ТекСтрокаСпецификация.Количество; Движение.Сумма = ТекСтрокаСпецификация.Сумма;
КонецЦикла; // регистр ЦеныНаЗапчасти
63
Движения.ЦеныНаЗапчасти.Записывать = Истина; Для Каждого ТекСтрокаСпецификация Из Спецификация Цикл
Движение = Движения.ЦеныНаЗапчасти.Добавить(); Движение.Период = Дата; Движение.Запчасти = ТекСтрокаСпецификация.Запчасть;
Движение.Цена = ТекСтрокаСпецификация.Цена; Движение.ЦенаРозничная = ТекСтрокаСпецификация.ЦенаРозничная;
КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Листинг В.4 – Документ «ПриходнаяНакладнаяНаЗапчасти» (модуль менеджера)
Процедура Печать(ТабДок, Ссылка) Экспорт //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.ПриходнаяНакладнаяНаЗапчасти.ПолучитьМакет("Печать"); Запрос = Новый Запрос; Запрос.Текст =
"ВЫБРАТЬ |
|
|
| |
ПриходнаяНакладнаяНаЗапчасти.Дата, |
|
| |
ПриходнаяНакладнаяНаЗапчасти.Номер, |
|
| |
ПриходнаяНакладнаяНаЗапчасти.Организация, |
|
| |
ПриходнаяНакладнаяНаЗапчасти.Склад, |
|
| |
ПриходнаяНакладнаяНаЗапчасти.Спецификация.( |
|
| |
|
НомерСтроки, |
| |
|
Поставщик, |
| |
|
Запчасть, |
| |
|
ЕдиницаИзмерения, |
| |
|
Цена, |
| |
|
ЦенаРозничная, |
| |
|
Количество, |
| |
|
Сумма |
| |
) |
|
|ИЗ |
| |
Документ.ПриходнаяНакладнаяНаЗапчасти КАК |
ПриходнаяНакладнаяНаЗапчасти |
||
|ГДЕ |
| |
ПриходнаяНакладнаяНаЗапчасти.Ссылка В (&Ссылка)"; |
Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСпецификацияШапка = Макет.ПолучитьОбласть("СпецификацияШапка"); ОбластьСпецификация = Макет.ПолучитьОбласть("Спецификация"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли; ТабДок.Вывести(ОбластьЗаголовок); Шапка.Параметры.Заполнить(Выборка);
64
ТабДок.Вывести(Шапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьСпецификацияШапка); ВыборкаСпецификация = Выборка.Спецификация.Выбрать(); Пока ВыборкаСпецификация.Следующий() Цикл
ОбластьСпецификация.Параметры.Заполнить(ВыборкаСпецификация); ТабДок.Вывести(ОбластьСпецификация,
ВыборкаСпецификация.Уровень()); КонецЦикла;
ВставлятьРазделительСтраниц = Истина; КонецЦикла;
//}}
КонецПроцедуры
Листинг В.5 – Документ «ЗаявкаНаРемонт» (форма документа)
&НаКлиенте Процедура СпецификацияЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Спецификация.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры &НаКлиенте
Процедура СпецификацияКоличествоПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Спецификация.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры &НаКлиенте
Процедура СпецификацияИзделиеПриИзменении(Элемент) Строка = Объект.Запчасти.Добавить();
Строка.Изделие = Элементы.Спецификация.ТекущиеДанные.Изделие; КонецПроцедуры &НаКлиенте
Процедура ЗапчастиЦенаПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Запчасти.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры &НаКлиенте
Процедура ЗапчастиКоличествоПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Запчасти.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры &НаКлиенте
Процедура ЗапчастиЗапчастьПриИзмененииНаСервере() Элементы.Запчасти.ТекущиеДанные.Цена =
ПолучитьЦену(Элементы.Запчасти.ТекущиеДанные.Запчасть); КонецПроцедуры &НаСервере
Функция ПолучитьЦену(Запчасть) Запрос = Новый Запрос; Запрос.Текст =
"ВЫБРАТЬ | ЦеныНаЗапчастиСрезПоследних.ЦенаРозничная
65
|ИЗ |
| |
РегистрСведений.ЦеныНаЗапчасти.СрезПоследних КАК |
ЦеныНаЗапчастиСрезПоследних |
|
|
|ГДЕ |
| |
ЦеныНаЗапчастиСрезПоследних.Запчасти = &Запчасти"; |
Запрос.УстановитьПараметр("Запчасти", Запчасть); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.ЦенаРозничная; КонецЦикла;
КонецФункции
Листинг В.6 – Документ «ЗаявкаНаРемонт» (модуль объекта)
Процедура ОбработкаПроведения(Отказ, Режим)
Если СтатусЗаявки = Перечисления.СтатусЗаявкиНаГарантийныйРемонт.Выполнена
Тогда
Для Каждого ТекСтрокаЗапчасти Из Запчасти Цикл Движение = Движения.СкладЗапчастей.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата;
Движение.НаименованиеИзделия = ТекСтрокаЗапчасти.Запчасть; Движение.Количество = ТекСтрокаЗапчасти.Количество;
КонецЦикла; // регистр Реализации Расход
Движения.Реализации.Записывать = Истина; Для Каждого ТекСтрокаСпецификация Из Спецификация Цикл
Движение = Движения.Реализации.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Изделие = ТекСтрокаСпецификация.Изделие;
Движение.Серия = ТекСтрокаСпецификация.Серия; Движение.Покупатель = Покупатель; Движение.Количество = ТекСтрокаСпецификация.Количество;
КонецЦикла; // регистр ВыходИзСтроя
Движения.ВыходИзСтроя.Записывать = Истина; Для Каждого ТекСтрокаСпецификация Из Спецификация Цикл
Движение = Движения.ВыходИзСтроя.Добавить(); Движение.Период = Дата; Движение.Изделие = ТекСтрокаСпецификация.Изделие; Движение.Причина =
ТекСтрокаСпецификация.ПричинаПоломки; Движение.ТипИзделия =
ТекСтрокаСпецификация.Изделие.ТипИзделия; Движение.Количество = ТекСтрокаСпецификация.Количество;
КонецЦикла;
// регистр ГарантийныйСрок Движения.ГарантийныйСрок.Записывать = Истина; Для Каждого ТекСтрокаСпецификация Из Спецификация Цикл
Движение = Движения.ГарантийныйСрок.Добавить(); Движение.Период = Дата;
66
Движение.Номенклатура = ТекСтрокаСпецификация.Изделие; Движение.Покупатель = Покупатель; Движение.Серия = ТекСтрокаСпецификация.Серия; Движение.ДатаРемонта = Дата; Движение.ГарантияДо =
ДобавитьМесяц(Дата,ТекСтрокаСпецификация.Изделие.СрокГарантии); КонецЦикла;
КонецЕсли; Движения.СкладЗапчастей.Записывать = Истина; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
//{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
//Данный фрагмент построен конструктором.
//При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.РеализацияИзделий")
Тогда
// Заполнение шапки Покупатель = ДанныеЗаполнения.Контрагент;
Для Каждого ТекСтрокаИзделия Из ДанныеЗаполнения.Изделия Цикл НоваяСтрока = Спецификация.Добавить(); НоваяСтрока.Количество = ТекСтрокаИзделия.Количество; НоваяСтрока.Изделие = ТекСтрокаИзделия.Номенклатура; НоваяСтрока.Серия = ТекСтрокаИзделия.Серия;
КонецЦикла; Для Каждого ТекСтрокаИзделия Из ДанныеЗаполнения.Изделия Цикл
НоваяСтрока = Запчасти.Добавить(); НоваяСтрока.Количество = ТекСтрокаИзделия.Количество; НоваяСтрока.Изделие = ТекСтрокаИзделия.Номенклатура;
КонецЦикла; КонецЕсли;
//}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ КонецПроцедуры
Листинг В.7 – Документ «ЗаявкаНаРемонт» (модуль менеджера)
Процедура Печать(ТабДок, Ссылка) Экспорт //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.ЗаявкаНаРемонт.ПолучитьМакет("ПечатьЗаявкаНаРемонт"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| |
ЗаявкаНаРемонт.Дата, |
| |
ЗаявкаНаРемонт.Номер, |
| |
ЗаявкаНаРемонт.Ответственный, |
| |
ЗаявкаНаРемонт.Подразделение, |
| |
ЗаявкаНаРемонт.Покупатель, |
| |
ЗаявкаНаРемонт.СтатусЗаявки, |
| |
ЗаявкаНаРемонт.Спецификация.( |
| |
НомерСтроки, |
| |
Изделие, |
| |
Серия, |
67
| |
|
ПричинаПоломки, |
| |
|
ПредполагаемаяДатаРемонта, |
| |
|
Количество |
| |
), |
|
| |
ЗаявкаНаРемонт.Запчасти.( |
|
| |
|
НомерСтроки, |
| |
|
Запчасть, |
| |
|
Цена, |
| |
|
Количество, |
| |
|
Сумма |
| |
) |
|
|ИЗ |
| |
Документ.ЗаявкаНаРемонт КАК ЗаявкаНаРемонт |
|ГДЕ |
| |
ЗаявкаНаРемонт.Ссылка В (&Ссылка)"; |
Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСпецификацияШапка = Макет.ПолучитьОбласть("СпецификацияШапка"); ОбластьСпецификация = Макет.ПолучитьОбласть("Спецификация"); ОбластьЗапчастиШапка = Макет.ПолучитьОбласть("ЗапчастиШапка"); ОбластьЗапчасти = Макет.ПолучитьОбласть("Запчасти"); ОбластьВсего = Макет.ПолучитьОбласть("Всего"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; СуммаВсего = 0; КоличествоВсего = 0; Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли; ТабДок.Вывести(ОбластьЗаголовок); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьСпецификацияШапка);
ВыборкаСпецификация = Выборка.Спецификация.Выбрать(); Пока ВыборкаСпецификация.Следующий() Цикл
ОбластьСпецификация.Параметры.Заполнить(ВыборкаСпецификация); ТабДок.Вывести(ОбластьСпецификация,
ВыборкаСпецификация.Уровень()); КонецЦикла;
ТабДок.Вывести(ОбластьЗапчастиШапка); ВыборкаЗапчасти = Выборка.Запчасти.Выбрать(); Пока ВыборкаЗапчасти.Следующий() Цикл
ОбластьЗапчасти.Параметры.Заполнить(ВыборкаЗапчасти); ТабДок.Вывести(ОбластьЗапчасти, ВыборкаЗапчасти.Уровень()); СуммаВсего = СуммаВсего + ВыборкаЗапчасти.Сумма; КоличествоВсего = КоличествоВсего + ВыборкаЗапчасти.Количество;
КонецЦикла; ОбластьВсего.Параметры.ВсегоПоЗаявке = СуммаВсего;
ОбластьВсего.Параметры.КоличествоПоЗаявке = КоличествоВсего; ТабДок.Вывести(ОбластьВсего); ВставлятьРазделительСтраниц = Истина;
68
КонецЦикла;
//}}
КонецПроцедуры Процедура Печать1(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать1)
Макет = Документы.ЗаявкаНаРемонт.ПолучитьМакет("ПечатьГарантийногоТалона"); Запрос = Новый Запрос;
Запрос.Текст = |
|
|
||
"ВЫБРАТЬ |
|
|
|
|
| |
ЗаявкаНаРемонт.Дата, |
|
||
| |
ЗаявкаНаРемонт.Номер, |
|
||
| |
ЗаявкаНаРемонт.Ответственный, |
|||
| |
ЗаявкаНаРемонт.Подразделение, |
|||
| |
ЗаявкаНаРемонт.Покупатель, |
|||
| |
ЗаявкаНаРемонт.СтатусЗаявки, |
|||
| |
ЗаявкаНаРемонт.Спецификация.( |
|||
| |
|
НомерСтроки, |
|
|
| |
|
Изделие, |
|
|
| |
|
Серия, |
|
|
| |
|
ПричинаПоломки, |
|
|
| |
|
Количество |
| |
), |
| |
ЗаявкаНаРемонт.Запчасти.( |
|
||
| |
|
НомерСтроки, |
|
|
| |
|
Запчасть, |
|
|
| |
|
Количество |
| |
) |
|ИЗ |
| |
Документ.ЗаявкаНаРемонт КАК ЗаявкаНаРемонт |
||
|ГДЕ |
| |
ЗаявкаНаРемонт.Ссылка В (&Ссылка)"; |
Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСпецификацияШапка = Макет.ПолучитьОбласть("СпецификацияШапка"); ОбластьСпецификация = Макет.ПолучитьОбласть("Спецификация"); ОбластьЗапчастиШапка = Макет.ПолучитьОбласть("ЗапчастиШапка"); ОбластьЗапчасти = Макет.ПолучитьОбласть("Запчасти"); Подвал = Макет.ПолучитьОбласть("Подвал");
ОбластьТекст = Макет.ПолучитьОбласть("Текст"); ОбластьТекст2 = Макет.ПолучитьОбласть("Текст2"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли; ТабДок.Вывести(ОбластьЗаголовок); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьСпецификацияШапка);
ВыборкаСпецификация = Выборка.Спецификация.Выбрать(); Пока ВыборкаСпецификация.Следующий() Цикл
ОбластьСпецификация.Параметры.Заполнить(ВыборкаСпецификация);
69
ТабДок.Вывести(ОбластьСпецификация, ВыборкаСпецификация.Уровень());
КонецЦикла; ТабДок.Вывести(ОбластьТекст); ТабДок.Вывести(ОбластьЗапчастиШапка);
ВыборкаЗапчасти = Выборка.Запчасти.Выбрать(); Пока ВыборкаЗапчасти.Следующий() Цикл
ОбластьЗапчасти.Параметры.Заполнить(ВыборкаЗапчасти); ТабДок.Вывести(ОбластьЗапчасти, ВыборкаЗапчасти.Уровень());
КонецЦикла; ТабДок.Вывести(ОбластьТекст2); Подвал.Параметры.Заполнить(Выборка); ТабДок.Вывести(Подвал); ВставлятьРазделительСтраниц = Истина;
КонецЦикла; //}} КонецПроцедуры
Листинг В.8 – Отчет «ВыходыИзСтроя»
ВЫБРАТЬ ВыходИзСтроя.Регистратор, ВыходИзСтроя.Изделие, ВыходИзСтроя.Причина, ВыходИзСтроя.Количество, ВыходИзСтроя.Период, ВыходИзСтроя.ТипИзделия
ИЗ
РегистрСведений.ВыходИзСтроя КАК ВыходИзСтроя
Листинг В.9 – Отчет «РейтингТиповИзделий»
ВЫБРАТЬ ВыходИзСтроя.ТипИзделия, ВыходИзСтроя.Количество
ИЗ
РегистрСведений.ВыходИзСтроя КАК ВыходИзСтроя
Листинг В.10 – Отчет «ИзделияПослеРемонта»
ВЫБРАТЬ ГарантийныйСрокСрезПоследних.Период, ГарантийныйСрокСрезПоследних.Регистратор,
ГарантийныйСрокСрезПоследних.Номенклатура, ГарантийныйСрокСрезПоследних.Покупатель, ГарантийныйСрокСрезПоследних.Серия, ГарантийныйСрокСрезПоследних.ГарантияДо, ГарантийныйСрокСрезПоследних.ДатаРемонта
ИЗ
РегистрСведений.ГарантийныйСрок.СрезПоследних КАК ГарантийныйСрокСрезПоследних ГДЕ
ГарантийныйСрокСрезПоследних.ДатаПокупки = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
70