Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования «Казанский (Приволжский) федеральный университет» Институт вычислительной математики и информационных технологий ОТЧЁТ по производственной технологической (проектно-технологической) практике Обучающийся Карапаев Б.А., 09-052 (ФИО, группа) Руководитель ВКР от КФУ ст. преподаватель кафедры анализа данных и технологий программирования Вахитов Г.З. (должность, ФИО) ________________ (подпись) __________________ (подпись) Руководитель практики от КФУ ст. преподаватель кафедры анализа данных и технологий программирования Жажнева И.В. __________________ Оценка за практику _______________ __________________ (должность, ФИО) (подпись) (подпись руководителя ВКР) Дата сдачи отчета __23.05.2024_____ Казань, 2024 Содержание Введение ................................................................................................................... 3 1. Проектирование системы учета и контроля ..................................................... 5 1.1. Анализ предметной области ........................................................................ 5 1.2. Создание прототипа системы учета и контроля ........................................ 5 2. Реализация системы учета и контроля .............................................................. 6 2.1. Листинг кода обработчика .......................................................................... 6 2.2. Листинг кода справочника Услуги ........................................................... 13 2.2. Листинг кода справочника Клиенты ......................................................... 15 Заключение ............................................................................................................ 16 Список использованных источников .................................................................. 17 2 Введение Целью производственной технологической (проектно-технологической) практики направления подготовки 09.03.03 «Прикладная информатика» согласно программе практики, является закрепление теоретических знаний, практических умений и навыков, полученных в процессе освоения дисциплин основной образовательной программы: «Информатика», «Базы данных» приобретение практического опыта решения профессиональных задач. Основными задачами производственной технологической (проектнотехнологической) практики являются: - изучение основ встроенного языка программирования 1С:Предприятие; - реализация прототипа рекомендательной системы - отработка навыков, полученных при прохождении дисциплин «Информатика», «Базы данных» при реализации профессиональных задач; - закрепление знаний в области программирования 1С Предприятие; - формирование навыков самостоятельного решения задач профессиональной деятельности с применением современных технологий и систем управления, включающих анализ предметной области, разработку и реализацию проектов, описание пользовательского интерфейса; - получение навыков обработки собранных материалов и оформления отчета по практике. Технологической (проектно-технологической) практика проходила на базе Института вычислительной математики и информационных технологий Казанского (Приволжского) федерального университета. Сроки прохождения практики: с 08.04.2024 по 23.05.2024. Руководители практики: доцент кафедры анализа данных и технологий программирования Вахитов Г.З. старший преподаватель кафедры анализа данных и технологий программирования Жажнева И.В. 3 Индивидуальное задание на практику включало: 1. Изучение основ встроенного языка программирования 1С:Предприятие. 2. Изучение конструктора запросов. 3. Проектирование системы учета и контроля. 4. Написание процедур и функций для формы списков и формы элементов. 5. Оформление отчета по практике. Защита выполненных работ. 4 1. Проектирование веб-приложения 1.1. Анализ предметной области Система должна представлять собой систему учета, с удобной навигацией по магазинам, возможностью просмотра товаров, их цен. В системе должна быть возможность просмотра расписания работников. Товар в системе учета должен иметь полную информацию, а именно цена, дата поступления, дата и время продажи. Системой предусмотрено 1 уровень привилегий — это администратор. Администратор должен иметь доступ в админ-панель, в которой предусмотрена возможность добавления, удаление и редактирования информации. При разработке информационной системы должны быть соблюдены нормы норм чередования умственной и физической нагрузки. У каждого сотрудника должна быть собственная карточка. В карточке сотрудника должно быть, расписание сотрудника, информация о сотруднике, зарплата сотрудника. В системе учета и контроля должен быть расчет затрат и прибыли В результате анализа предметной области, цели и поставленных задач возникла необходимость разработки многопользовательского приложения для автоматического анализа и мониторинга работы кофейни. Вся система будет написана в приложение 1С предприятие. 1.2. Создание прототипа системы учета и контроля Для создания основных функции системы учета и контроля по продажам кофе на 1C были использованы 5 справочников, 4 документа и 6 регистров и 1 обработчик событий. В справочнике Салоны было создано 2 реквизита. Реквизит Адрес и реквизит Телефон. В справочнике Услуги было создан реквизит Длительности. В справочнике Сотрудники было создано 3 реквизита. Должность, Телефон и Адрес. У справочника Должности не было дополнительных реквизитов. Справочник Клиенты имел 4 реквизита таких как Телефон,Email,ДатаРождения, Комментарий. В этой системе учета есть такие документы как Запись, Продажа, Оплата, Зарплата. Эти документы используют такие созданные перечисления как ДниНедели,СпособОплаты,ТипыДенежныхСредств. Для создания прототипа были созданы Регистры сведений такие как Цены,ИсторияЗаписей,ПроцентыПоЗарплате. И Регистры накопления такие 5 как Продажи,Деньги,Зарплата.Эти Регистры используются у справочника и документах. 2. Реализация системы учета и контроля 2.1. Листинг кода обработчика &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Дата = ТекущаяДата(); СоздатьИзмеренияПланировщика(); Салон = Справочники.Салоны.ОсновнойСалон(); ОбновитьПериодотображенияПланировщика(); ЗаполнитьЖурналЗаписей(); КонецПроцедуры &НаСервере Процедура ОбновитьПериодотображенияПланировщика () Начало = НачалоДня(Дата) + 9*3600; Конец = НачалоДня(Дата) + 19*3600; Планировщик.ТекущиеПериодыОтображения.Очистить(); Планировщик.ТекущиеПериодыОтображения.Добавить(Начало,Конец) ; КонецПроцедуры &НаСервере Процедура СоздатьИзмеренияПланировщика () Измерение = Планировщик.Измерения.Добавить("Сотрудник"); Выборка = Справочники.Сотрудники.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.ПометкаУдаления Тогда 6 Продолжить; КонецЕсли; ЗначенияИзмерений = Измерение.Элементы.Добавить(Выборка.Ссылка); ЗначенияИзмерений.Текст = Выборка.Наименование + Символы.ПС + Выборка.Должность; КонецЦикла; КонецПроцедуры &НаСервере Процедура ЗаполнитьЖурналЗаписей () Планировщик.Элементы.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Запись.Дата КАК Дата, | Запись.Салон КАК Салон, | Запись.Сотрудник КАК Сотрудник, | ПРЕДСТАВЛЕНИЕ(Запись.Услуга) КАК Услуга, | Запись.Длительность КАК Длительность, | Запись.Сумма КАК Сумма, | Запись.Клиент КАК Клиент, | Запись.ДатаОкончания КАК ДатаОкончания, | Запись.Комментарий КАК Комментарий, | Запись.Ссылка КАК Ссылка, | Запись.Клиент.Телефон КАК Телефон, | Запись.Цвет КАК Цвет |ИЗ 7 | Документ.Запись КАК Запись |ГДЕ | Запись.Проведен | И Запись.Салон = &Салон | И Запись.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания"; Запрос.УстановитьПараметр("Салон", Салон); Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(Дата)); Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(Дата)); РезультатЗапроса = Запрос.Выполнить(); Выборка= РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл ЗначенияИзмерений = Новый Соответствие; ЗначенияИзмерений.Вставить("Сотрудник", Выборка.Сотрудник); ЖирныйШрифт = Новый Шрифт(,,Истина); ПредставлениеКлиента = Строка(Выборка.Клиент) + ", " + Выборка.Телефон; МассивСтрок = Новый Массив; МассивСтрок.Добавить(Новый ФорматированнаяСтрока(ПредставлениеКлиента,ЖирныйШрифт)); МассивСтрок.Добавить(Символы.ПС); МассивСтрок.Добавить(Выборка.Услуга); МассивСтрок.Добавить(Символы.ПС); Если ЗначениеЗаполнено(Выборка.Комментарий) Тогда МассивСтрок.Добавить("--" + Выборка.Комментарий); КонецЕсли; 8 ЭлементПланировщика = Планировщик.Элементы.Добавить(Выборка.Дата,Выборка.ДатаОкончания); ЭлементПланировщика.ЗначенияИзмерений = Новый фиксированноеСоответствие(ЗначенияИзмерений); ЭлементПланировщика.Значение = Выборка.Ссылка; ЭлементПланировщика.Текст = Новый ФорматированнаяСтрока(МассивСтрок); Цвет = Выборка.Цвет.Получить(); Если Цвет = Неопределено Тогда Цвет = WebЦвета.БледноЛиловый; КонецЕсли; ЭлементПланировщика.ЦветФона =Цвет КонецЦикла; ЗаполнитьДиаграмму(); КонецПроцедуры &НаСервере Процедура ЗаполнитьДиаграмму () Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДеньгиОбороты.ТипДенежныхСредств КАК ТипДенежныхСредств, | ДеньгиОбороты.СуммаПриход КАК СуммаПриход |ИЗ | РегистрНакопления.Деньги.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК ДеньгиОбороты"; Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(Дата)); Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(Дата)); 9 РезультатЗапроса = Запрос.Выполнить(); Диаграмма.Обновление = Ложь; Диаграмма.Очистить(); Выборка = РезультатЗапроса.Выбрать(); Точка = Диаграмма.Точки.Добавить(""); Пока Выборка.Следующий() Цикл Серия = Диаграмма.Серии.Добавить(Строка(Выборка.ТипДенежныхСредств)); Диаграмма.УстановитьЗначение(Точка,Серия, Выборка.СуммаПриход); КонецЦикла; Диаграмма.Обновление = Истина; КонецПроцедуры // () &НаКлиенте Процедура ДатаПриИзменении(Элемент) ОбновитьПериодОтображенияПланировщика(); ЗаполнитьЖурналЗаписей(); КонецПроцедуры &НаКлиенте Процедура СалонПриИзменении(Элемент) ОбновитьПериодОтображенияПланировщика(); ЗаполнитьЖурналЗаписей(); КонецПроцедуры &НаКлиенте Процедура ПланировщикПередСозданием(Элемент, Начало, Конец, ЗначенияИзмерений, Текст, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; 10 ЗначенияЗаполнения = Новый Структура; ЗначенияЗаполнения.Вставить("Салон",Салон); ЗначенияЗаполнения.Вставить("Дата",Начало); ЗначенияЗаполнения.Вставить("ДатаОкончания",Конец); ЗначенияЗаполнения.Вставить("Сотрудник",ЗначенияИзмерений["Сотр удник"]); СтруктураПараметров = Новый структура("ЗначенияЗаполнения",ЗначенияЗаполнения); ОткрытьФорму("Документ.Запись.ФормаОбъекта",СтруктураПараметр ов); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия = "Изменение_запись" Тогда ЗаполнитьЖурналЗаписей(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПланировщикПередНачаломРедактирования(Элемент, НовыйЭлемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ВыделенныеЭлементы = Элемент.ВыделенныеЭлементы; ЭлементПланировщика = ВыделенныеЭлементы[0]; СтруктураПараметров = Новый Структура("Ключ",ЭлементПланировщика.Значение); ОткрытьФорму("Документ.Запись.ФормаОбъекта",СтруктураПараметр ов); КонецПроцедуры 11 &НаКлиенте Процедура ПланировщикПередУдалением(Элемент, Отказ) Отказ = Истина; КонецПроцедуры &НаКлиенте Процедура ПланировщикПриОкончанииРедактирования(Элемент, НовыйЭлемент, ОтменаРедактирования) ВыделенныеЭлементы = Элемент.ВыделенныеЭлементы; ЭлементПланировщика = ВыделенныеЭлементы[0]; ЗначенияРеквизитов = Новый Структура; ЗначенияРеквизитов.Вставить("Дата",ЭлементПланировщика.Начало); ЗначенияРеквизитов.Вставить("ДатаОкончания",ЭлементПланировщик а.Конец); ЗначенияРеквизитов.Вставить("Сотрудник",ЭлементПланировщика.Значения Измерений["Сотрудник"]); ОбновитьДанныеЗаписи(ЭлементПланировщика.Значение,ЗначенияРеквизит ов); КонецПроцедуры &НаСервереБезКонтекста Процедура ОбновитьДанныеЗаписи(Запись,ЗначенияРеквизитов) ОбъектЗаписи = Запись.ПолучитьОбъект(); ЕстьИзмения = Ложь; Для каждого Реквизит Из ЗначенияРеквизитов Цикл Если ОбъектЗаписи[Реквизит.Ключ] <> Тогда ЕстьИзмения = Истина; Прервать; КонецЕсли; КонецЦикла; Если ЕстьИзмения Тогда 12 Реквизит.Значение ЗаполнитьЗначенияСвойств(ОбъектЗаписи, ЗначенияРеквизитов); ОбъектЗаписи.Длительность = (ОбъектЗаписи.ДатаОкончания ОбъектЗаписи.Дата) / 60 ; ОбъектЗаписи.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; ОбъектЗаписи.Записать(РежимЗаписиДокумента.Проведение); КонецПроцедуры 2.2. Листинг кода формы справочника Услуги &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) Если Цена = 0 Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Укажите цену"; Сообщение.Поле = "Цена"; Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; КонецПроцедуры &НаСервере ПроцедураПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) ТекДата = НачалоДня(ТекущаяДата()); НаборЗаписей = РегистрыСведений.Цены.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(ТекДата); НаборЗаписей.Отбор.Услуга.Установить(ТекущийОбъект.Ссылка); НаборЗаписей.Прочитать(); ЕстьИзменения = Ложь; Если НаборЗаписей.Количество() = 0 Тогда Запись = НаборЗаписей.Добавить(); 13 Запись.Период = ТекДата; Запись.Услуга = ТекущийОбъект.Ссылка; Запись.Цена = Цена; ЕстьИзменения = Истина; Иначе Запись = НаборЗаписей[0]; Если Запись.Цена <> Цена тогда Запись.Цена = Цена; ЕстьИзменения = истина; КонецЕсли; КонецЕсли; НаборЗаписей.Записать(); КонецПроцедуры &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.Цены.СрезПоследних(, Услуга &Услуга) КАК ЦеныСрезПоследних"; Запрос.УстановитьПараметр("Услуга", ТекущийОбъект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); Если не РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий(); Цена = Выборка.Цена; КонецЕсли; КонецПроцедуры; 14 = 2.3. Листинг кода справочника Клиенты &НаКлиенте Процедура ИсторияЗаписей(Команда) Если Объект.Ссылка.Пустая() Тогда Возврат; КонецЕсли; ИмяОткрываемойФормы ="РегистрСведений.ИсторияЗаписей.ФормаСписка" ; СтруктураОтбора = Новый Структура("Клиент", Объект.Ссылка); СтруктураПараметров = Новый Структура("Отбор",СтруктураОтбора); ОткрытьФорму(ИмяОткрываемойФормы,СтруктураПараметров,ЭтотО бъект,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца) КонецПроцедуры 15 Заключение За время прохождения производственной технологической (проектнотехнологической) практики мной приобретены следующие компетенции: Шифр Расшифровка приобретаемой компетенции компетенции ОПК-4 Способен участвовать в разработке стандартов, норм и правил, а также технической документации, связанной с профессиональной деятельностью ОПК-7 Способен разрабатывать алгоритмы и программы, пригодные для практического применения ОПК-8 Способен принимать участие в управлении проектами создания информационных систем на стадиях жизненного цикла 16 Список использованных источников Оформление книг, учебников 1. М. Г. Радченко,1C:Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы.: учебное пособие / М. Г. Радченко, Е. Ю. Хрусталева. – 3-е изд., Москва : СФУ, 2022. - 10 с. 2. Архитектура платформы 1C:Предприятие[Электронный ресурс]. URL: https://v8.1c.ru/platforma/sreda-bystroy-razrabotki/ 23.05.2023). 17 (дата обращения: