Файл: Разработка конфигурации «Складской учет» в среде 1С:Предприятие 8.3 (Организационная структура предприятия).pdf
Добавлен: 23.04.2023
Просмотров: 422
Скачиваний: 4
СОДЕРЖАНИЕ
1 АНАЛИЗ СУЩЕСТВУЮЩЕГО СОСТОЯНИЯ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 Организационная структура предприятия
1.2 Особенности организации складского учета
1.3 Обоснование необходимости использования вычислительной техники для решения задачи
2 РАЗРАБОТКА КОНФИГУРАЦИИ СКЛАДСКОГО УЧЁТА НА БАЗЕ СИСТЕМЫ ПРОГРАММ 1С:ПPЕДПPИЯТИE
2.1 Проектирование структуры приложения
2.3 Разработка управляемого приложения
2.4 Реализация бизнес-процесса «Продажа товара»
2.5 Анализ данных в системе 1С 8.3
2.3 Разработка управляемого приложения
С выпуском в 2003 г. программной системы «1С:Предприятие 8» фирма «1С» заметно ускорила (по сравнению с вариантом 7.x) процесс развития ее базового компонента — технологической платформы.
Причина тому представляется вполне очевидной: именно с появлением «1С:Предприятие 8» компания существенно расширила круг своих потенциальных заказчиков, начав активное освоение корпоративного рынка.
Но в этом сегменте у заказчиков имеются давно устоявшиеся (и постоянно растущие!) требования к бизнес–приложениям, и чтобы соответствовать им, разработчикам «1С» пришлось повысить темпы развития базовых технологий [11].
Основная работа пользователей, по-прежнему, происходит в формах. В управляемом приложении применяются формы, которые построены на основе новой технологии. Такие формы называются управляемые (рис. 2.24).
Главное отличие управляемых форм заключается в том, что они не прорисованы разработчиком детально, «по пикселям». Форма в конфигурации представляется логическим описанием состава формы. А точное размещение элементов производится системой автоматически при появлении формы. Видимая часть формы выглядит как дерево, которое включает элементы формы.
Основные новшества «1С:Предприятие 8. Управляемое приложение» связаны с необходимостью и дальше повышать производительность и масштабируемость платформы, поддерживать работу удаленных пользователей, упростить процесс разработки и сопровождения прикладных решений, а также сделать более удобной работу пользователей.
Одна из ключевых идей системы «Управляемое приложение» заключается в переходе на использование модели декларативного описания программного кода и пользовательского интерфейса. Это существенно повышает управляемость бизнес–приложения и позволяет перейти к применению тонкого Windows- и Web-клиента [1].
Полностью меняется весь слой пользовательского интерфейса (командный интерфейс, формы, оконная система). При этом не просто вводится новая модель разработки интерфейса, но реализуется новая архитектура разделения функциональности между клиентской и серверной частью системы.
Принципиально важно, что реализация всех этих идей выполнена на качественно новом технологическом уровне – на основе модели декларативного описания программного кода и пользовательского интерфейса. Именно это существенно повышает управляемость бизнес-приложения – как на этапе разработки прикладных программ, так и при его настройке на требования конкретных пользователей, а также в случае настроек, сделанных самим пользователем [12].
Что же касается контекстов исполнения собственных процедур или функций – их определяет сам разработчик в зависимости от своих нужд.
Вообще в модуле формы могут быть использованы четыре различные директивы компиляции:
– &НаКлиенте;
– &НаСервере;
– &НаСервереБезКонтекста;
– &НаКлиентеНаСервереБезКонтекста.
В системе 1С: Предприятие 8.3 для авторизации используется список пользователей, для разграничения полномочий мы создаем в объекте роли 2 пользователей и создаем 2 интерфейса, устанавливаем в каждом набор прав, для разрешения доступа только к необходимым объектам.
Изменяем свойство конфигурации Основной режим запуска на "Управляемое приложение".
Создаем подсистемы Закупки и Продажи, и определяем состав объектов каждой подсистемы.
Для каждой подсистемы сформировываем панель навигации, действий Создать и Отчеты.
Для разделения полномочий используются роли, которым назначаются права. Первый пользователь – Директор с полными правами и интерфейсом, а второй – кладовщик с ограниченными правами (нельзя редактировать константы) и с ограниченным интерфейсом (нет пункта Операции в главном меню).
Роль директор (рис. 2.27). Права:
- просмотр и чтение документов;
- возможность изменять реквизиты организации.
Роль кладовщик (рис. 2.28). Права на возможность изменять такие документы, как:
- заказ на склад;
- приходная накладная;
- расходная накладная;
- остатки на склад;
- поступление на склад;
- ввод начальных остатков;
- просмотр прайс-листов.
2.4 Реализация бизнес-процесса «Продажа товара»
Режим запуска «Обычное приложение». Создаем справочники Сотрудники (данные: Иванов, Петров, Сидоров), Подразделения (данные: отдел продаж, склад), Роли Исполнителей (данные: кладовщик, продавец, руководитель отдела). В форме документа Заявка покупателя создаем реквизит ОплатаСчета.
В модуле объекта определяем обработчики событий.
Процедура ПередВыполнением (Отказ)
Если ДатаВыполнения = '00010101' Тогда
ДатаВыполнения = ТекущаяДата ();
КонецЕсли; Если Исполнитель. Пустая () Тогда
Исполнитель = ПараметрыСеанса. ТекущийИсполнитель;
КонецЕсли;
КонецПроцедуры.
Процедура ПриВыполнении ()
Сообщить ("Задача выполнена: "+""""+Наименование+"""");
КонецПроцедуры.
Процедура ПриЗаписи ()
Если ЭтоНовый () Тогда
Сообщить ("Сформирована задача: "+""""+Наименование+"""");
Сообщить ("Исполнитель"+Исполнитель);
Сообщить ("Подразделение"+подразделение);
КонецЕсли;
КонецПроцедуры.
Создаем объект конфигурации бизнес - процесс "Продажа товара".
Создаем карту маршрута.
Процедуры описываем в модуле объекта:
Процедура СтартПередСтартом (ТочкаМаршрутаБизнесПроцесса, Отказ)
НужноЗаписать = Ложь;
ЕСЛИ Счет. Пустая () ТОГДА
СчетОбъект = Документы. ЗаявкиПокупателя. СоздатьДокумент ();
СчетОбъект. Дата = ТекущаяДата ();
СчетОбъект. Записать ();
Счет = СчетОбъект. Ссылка;
НужноЗаписать = Истина;
КОНЕЦЕСЛИ;
ЕСЛИ РасходнаяНакладная. Пустая () ТОГДА
РасходнаяНакладнаяОбъект = Документы. ПродажаТовара. СоздатьДокумент ();
РасходнаяНакладнаяОбъект. Дата = ТекущаяДата ();
РасходнаяНакладнаяОбъект. Записать ();
РасходнаяНакладная = РасходнаяНакладнаяОбъект. Ссылка;
НужноЗаписать = Истина;
КОНЕЦЕСЛИ;
ЕСЛИ НужноЗаписать ТОГДА
Записать ();
КОНЕЦЕСЛИ;
СООБЩИТЬ ("Старт бизнес-процесса: " + """" + ЭтотОбъект. МетаДанные (). Синоним+"""");
КонецПроцедуры.
Процедура СчетОплаченПроверкаУсловия (ТочкаМаршрутаБизнесПроцесса, Результат)
Результат = Счет. ОплатаСчета;
КонецПроцедуры.
Процедура ВыпискаСчетаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Счет. ПолучитьФорму ("ФормаДокумента"). Открыть ();
СтандартнаяОбработка=Ложь;
КонецПроцедуры.
Процедура ВыпискаСчетаПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
Если Счет. Товары. Количество () =0 тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры.
Процедура ВыпискаНакладнойОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();
СтандартнаяОбработка=Ложь;
КонецПроцедуры.
Процедура ВыпискаНакладнойПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
Если РасходнаяНакладная. Товары. Количество () =0 тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры.
Процедура ОтгрузкаСоСкладаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();
СтандартнаяОбработка=Ложь;
КонецПроцедуры.
Процедура НормальноеЗавершениеПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить ("Завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");
КонецПроцедуры.
Процедура НетПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить ("Досрочное завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");
КонецПроцедуры.
В модуле обычного приложения определяем процедуры:
Процедура ПриНачалеРаботыСистемы ()
ПараметрыСеанса. ТекущийИсполнитель=Справочники. Сотрудники. НайтиПоКоду (ИмяПользователя ());
ПодключитьОбработчикОповещения ("ОбработчикОповещения");
КонецПроцедуры.
Процедура ОбработчикОповещения (ИмяСобытия, Параметр, Источник) Экспорт
Если ИмяСобытия="ЗаписьСчета" Тогда
Запрос=Новый Запрос;
Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);
Запрос. Текст="ВЫБРАТЬ
|Задача. Ссылка
|Из
|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача
|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс
|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. Счет=&Парам)";
Выборка=Запрос. Выполнить (). Выбрать ();
Пока Выборка. Следующий () Цикл
ТекущаяЗадача=Выборка. Ссылка. ПолучитьОбъект ();
Если ТекущаяЗадача. ТочкаМаршрута=БизнесПроцессы. ПродажаТовара. ТочкиМаршрута. ВыпискаСчета Тогда
ФормаСчета=ТекущаяЗадача. БизнесПроцесс. Счет. ПолучитьФорму ();
Если ФормаСчета. Открыта () =Истина Тогда
Если Вопрос ("Пометить задачу"""+ТекущаяЗадача. Наименование+"""как выполненную?",РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда
ТекущаяЗадача. ВыполнитьЗадачу ();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ИмяСобытия="Списание" Тогда
Запрос=Новый Запрос;
Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);
Запрос. Текст="ВЫБРАТЬ
|Задача. Ссылка
|Из
|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача
|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс
|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. РасходнаяНакладная=&Парам)";
Выборка=Запрос. Выполнить (). Выбрать ();
Пока Выборка. Следующий () Цикл
ТекущаяЗадача=Выборка. Ссылка. ПолучитьОбъект ();
Если ТекущаяЗадача. ТочкаМаршрута=БизнесПроцессы. ПродажаТовара. ТочкиМаршрута. ВыпискаНакладной Тогда
ФормаДокумента=ТекущаяЗадача. БизнесПроцесс. РасходнаяНакладная. ПолучитьФорму ();
Если ФормаДокумента. Открыта () =Истина Тогда
Если Вопрос ("Пометить задачу"""+ТекущаяЗадача. Наименование+"""как выполненную?",РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда
ТекущаяЗадача. ВыполнитьЗадачу ();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры.
В модуле формы документа Заявка покупателя и Продажа товара прописываем процедуру ПриЗаписи для оповещения:
Процедура ПриЗаписи (Отказ)
Оповестить ("ЗаписьСчета",, ЭтотОбъект);
КонецПроцедуры.
Процедура ПриЗаписи (Отказ)
Оповестить ("Списание",, ЭтотОбъект);
КонецПроцедуры.
2.5 Анализ данных в системе 1С 8.3
Вводим в базу 15 новых документов, по разному сочетая группу товаров. Создаем отчет Статистика, выполняющий анализ данных типа "Общая статистика". В модуле отчета прописываем процедуру:
Процедура КнопкаСформироватьНажатие (Кнопка)
Анализ = Новый АнализДанных;
Анализ. ТипАнализа = Тип ("АнализДанныхОбщаяСтатистика");
запрос = Новый Запрос;
Запрос. Текст = "Выбрать
|ОстаткиТовара. Товары,
|ОстаткиТовара. КолВо
|Из
|РегистрНакопления. ОстаткиТовара КАК ОстаткиТовара";
Анализ. ИсточникДанных = Запрос. Выполнить ();
РезультатАнализа = Анализ. Выполнить ();
Построитель = Новый ПостроительОтчет нализаДанных ();
Построитель. Макет = Неопределено;
Построитель. ТипАнализа = Тип ("АнализДанныхОбщаяСтатистика");
ТабДок = Новый ТабличныйДокумент;
Построитель. Вывести (РезультатАнализа, ТабДок);
ТабДок. Показать ();
КонецПроцедуры.
Создаем отчет ПоискАссоциаций, выполняющий анализ данных типа "Поиск ассоциаций". Процедуру прописываем в модуле:
Процедура КнопкаСформироватьНажатие (Кнопка)