Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дипломная_Имангулова.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.26 Mб
Скачать

2.2. Разработка структуры базы данных системы

Модуль «Рабочий стол администратора» в конфигурации «Бухгалтерия ред 3.0» мы разработали в виде обработки, включенный в отдельную подсистему наряду с дополнительными регистрами сведений и прочими объектами. Решение представляет дополнение к стандартной конфигурации, выполняемое без снятия с поддержки, значит и стандартного обновления.

Обработки в 1С 8.3 — это объекты конфигурации служащий для изменения и преобразования информации в базе данных.

Обработки имеют свои реквизиты, которые хранят свои значения в оперативной памяти на время «жизни» объекта.

Одна из приятных особенностей обработок — доступность при подключении внешнего соединения. Т.е при подключении можно программно создать объект, заполнить реквизиты и вызывать экспортную процедуру из модуля. Типичный пример для этого — обмен данными в режиме онлайн: внешний источник подключается к базе, заполняет настройки — реквизиты объекта и активирует процедуру загрузки/выгрузки. Пример кода:

Объект = Обработки.ОценкаПроизводительности.Создать();

Объект.Параметры = Параметры;

Объект.ВыполнитьВыгрузку();

Рассмотрим более подробно обработку «Д_РабочийСтолАдминистратора».

В ней присутствует 3 формы: основная «Форма», «Форма_Заказа», «Печать».

Регистр сведений – это структура хранения информации, объект конфигурации платформы 1С версии 8. Сущность регистра сведений – хранение данных (ресурсов) по одному / нескольким разрезам информационных измерений. В качестве типа данных измерения может быть любой ссылочный тип платформы, типа "СправочникСсылка", "ДокументСсылка" и т.п, а также любой примитивный тип – число, строка, дата, булево.

Платформа 1С 8.3 хранит регистр сведений в информационной базе как таблицу записей с конкретными колонками. Одна строчка в такой таблице – это одна запись регистра сведений. В каждой строчке находятся значения измерений и значения ресурсов. В качестве ресурсов как правило (но не обязательно) фиксируются данные типа число/строка/булево. Например, регистр сведений "Контактная информация" в качестве измерения будет иметь поле "Сотрудник" (типа "СправочникСсылка"), а в качестве ресурса поле "Контактный телефон" с типом "Строка".

В разработанной системе имеется два регистра сведений: «Д_ГрафикЗанятостиМастеров» и «Д_ГрафикиРаботыСотрудников». Он предназначен для учета документов парикмахерского салона. «Д_ГрафикЗанятостиМастеров»: в нем содержатся данные: в измерениях имеется «Мастер», «ЧасДень», в ресурсах содержится «ЗанятДаНет», «Клиент», «Услуга». «Д_ГрафикиРаботыСотрудников»: в нем содержатся данные: в измерениях имеется «Мастер», «Время» и «ДатаДень», в ресурсах содержится «РаботаетДаНет».

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

Рассмотрим созданную подсистему «Д_Парикмахерская». Данная подсистема выделена в виде отдельного раздела .

Рис 2.2-1 Меню программы

Основные функции реализованы в обработке «Д_РабочийСтолАдминистратора». Обработка позволяет автоматизировать обслуживание клиентов в парикмахерских и салонах красоты. Контролировать их занятость и оплату процедур.

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

Основным рабочим полем является окно формы.

Рис 2.2- 2 Основная форма

Основным рабочим полем является Настройка графиков (Рис.2.2-2). Выбираем сотрудника, дату или временной промежуток, для которого нужно заполнить график работы сотрудника. (Рис 2.2-3)

Рис 2.2-3 Автоматическое заполнение графика работы сотрудника

Выбираем время работы сотрудника, выбранные промежутки отмечаются галочками. Затем нажимаем на кнопку «Заполнить график».

После этого на форме выходит график работы сотрудника (Рис 2.2-4) в выбранный промежуток времени. Т.к мы выбрали время работы с 13-20, то остальное время закрашено розовым цветом и означает, что сотрудник в это время не работает.

Рис 2.2-4 Настройка графика работы

Затем на основной форме нажимаем кнопку «Сохранить график».

Далее переходим на другое поле основной формы «Запись клиентов»

(Рис 2.2-5).

Рис 2.2-5 Форма записи клиента.

Сотрудник и дата выбраны, график работы выведен на экран, рабочее время обозначено галочкой, теперь надо выбрать услугу для клиента. Нажимаем на поле клиент двойным щелчком, выходит форма заказа. (Рис 2.2-6)

Рис 2.2-6 Форма заказа.

После того как вышла форма заказа, нужно выбрать клиента. На этой форме указан прейскурант процедур с наглядным изображением, так же можно посмотреть описание процедуры, которое находится на форме Печать. ( Рис. 2.2-8). Выбираем нужную процедуру или процедуры двойным щелком, и она переходит во вторую таблицу. (Рис 2.2-7)

Рис 2.2-7 Форма Заказа.

Рис 2.2- 7 Форма Печать.

Затем нужно сформировать заказ. Нажимаем на кнопку Заказ. Заказ поступает в регистр сведений «Д_УчетДокументов» и переходит в отчет о розничных продажах. (Рис 2.2-8). Если нажать на кнопку Оплата, то документ проведется и закроется.

Рис 2.2-8 Отчет о розничных продажах.

После того как заказ сделан, мы возвращаемся в основную форму. На вкладке Запись клиентов, напротив времени когда был сделан заказ появится Фамилия и Имя клиента. (Рис. 2.2-9)

Рис 2.2-9 Заказ. Статус принят.

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

&НаКлиенте

Процедура ЗаполнитьГрафик(Команда)

ГрафикМастера.Очистить();

ТекДата=НачДата ;

Пока ТекДата<= КонДата Цикл

НовСтр=ГрафикМастера.Добавить() ;

НовСтр.Месяц=Месяц(ТекДата);

НовСтр.День =День(ТекДата) ;

НовСтр.Дата =ТекДата ;

НовСтр.Время8 =Фл8;

НовСтр.Время9 =Фл9;

НовСтр.Время10 =Фл10;

НовСтр.Время11 =Фл11;

НовСтр.Время12 =Фл12;

//НовСтр.время12.ЦветФона =ПолучитьЦвет("ФонНедоступнойСтрокиДокумента");

// ЦветаСтиля.ФонНедоступнойСтрокиДокумента;

НовСтр.Время13 =Фл13;

НовСтр.Время14 =Фл14;

НовСтр.Время15 =Фл15;

НовСтр.Время16 =Фл16;

НовСтр.Время17 =Фл17;

НовСтр.Время18 = Фл18;

НовСтр.Время19 = Фл19;

ИтЧасов=0;

Для НомерЧасов=8 По 19 Цикл

ИтЧасов=ИтЧасов+ Число(НовСтр["Время" + НомерЧасов]);

КонецЦикла;

НовСтр.КолЧасов = ИтЧасов;

ТекДата=КонецДня(ТекДата)+1;

КонецЦикла;

РаскраситьКолонки();

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

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

&НаКлиенте

Процедура ЗаписьДанныхГрафикаВРегистр(Сотрудник,ТекДата, ТекЧас,РаботаетДаНет)

НоваяЗапись = РегистрыСведений.Д_ГрафикиРаботыСотрудников.СоздатьМенеджерЗаписи();

НоваяЗапись.Мастер = Сотрудник;

НоваяЗапись.ДатаДень = НачалоДня(ТекДата);

НоваяЗапись.Время = ТекЧас ;

НоваяЗапись.РаботаетДаНет= РаботаетДаНет;

НоваяЗапись.Записать();

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

Код реализации «Обновить график мастера» отрывается в отдельном окне при помощи события «ПриОткрытии».

&НаКлиенте

Процедура ОбновитьДанныеГрафикаМастераСервер(НачДата,КонДата,Сотрудник)

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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

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

"ВЫБРАТЬ

| Д_ГрафикиРаботыСотрудников.Мастер,

| Д_ГрафикиРаботыСотрудников.ДатаДень КАК ДатаДень,

| Д_ГрафикиРаботыСотрудников.Время,

| Д_ГрафикиРаботыСотрудников.РаботаетДаНет

|ИЗ

| РегистрСведений.Д_ГрафикиРаботыСотрудников КАК Д_ГрафикиРаботыСотрудников

|ГДЕ

| Д_ГрафикиРаботыСотрудников.Мастер = &Сотрудник

| И Д_ГрафикиРаботыСотрудников.ДатаДень МЕЖДУ &НачДата И &КонДата

|ИТОГИ ПО

| ДатаДень";

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

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

Запрос.УстановитьПараметр("Сотрудник", Сотрудник);

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

ВыборкаДатаДень = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

// Вставить обработку выборки ВыборкаДатаДень

НовСтр=ГрафикМастера.Добавить() ;

НовСтр.Месяц=Месяц(ВыборкаДатаДень.ДатаДень);

НовСтр.День =День(ВыборкаДатаДень.ДатаДень) ;

НовСтр.Дата =ВыборкаДатаДень.ДатаДень ;

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

ИтКолЧасов=0;

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

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

НовСтр["Время"+Строка(ВыборкаДетальныеЗаписи.Время)]=ВыборкаДетальныеЗаписи.РаботаетДаНет;

ИтКолЧасов=ИтКолЧасов+1;

КонецЦикла;

НовСтр.КолЧасов=ИтКолЧасов ;

КонецЦикла;

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

&НаКлиенте

Процедура ДобавитьСтрокуУслуга(ТекПроцедура,ТекЦена)

Отбор = Новый Структура();

Отбор.Вставить("Процедура",ТекПроцедура);

Строки = Объект.Услуга.НайтиСтроки(Отбор);

СтароеКол=0;

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

ТекСтр=Строки[0];

СтароеКол=ТекСтр.Количество;

Иначе

ТекСтр=Объект.Услуга.Добавить();

ТекСтр.Процедура=ТекПроцедура;

ТекСтр.Цена= ТекЦена;

КонецЕсли;

ТекСтр.Количество=СтароеКол+1;

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

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