Файл: Разработка конфигурации «Складской учет» в среде 1С:Предприятие 8.3. (1. Разработка конфигурации).pdf
Добавлен: 30.06.2023
Просмотров: 67
Скачиваний: 2
Движение = Движения. ОстаткиТовара. Добавить ();
Движение. ВидДвижения = ВидДвиженияНакопления. Приход;
Движение. Период = Дата;
Движение. Товары = ТекСтрокаТовары. Наименование;
Движение. Контрагент = Поставщик;
Движение. Сумма = ТекСтрокаТовары. Сумма;
Движение. КолВо = ТекСтрокаТовары. КолВо;
КонецЦикла;
КонецПроцедуры.
Документ ЗаявкаПокупателя:
Процедура ОбработкаПроведения (Отказ, Режим)
// регистр ОстаткиТовара Приход
Движения. ОстаткиТовара. Записывать = Истина;
Движения. ОстаткиТовара. Очистить ();
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения. ОстаткиТовара. Добавить ();
Движение. ВидДвижения = ВидДвиженияНакопления. Приход;
Движение. Период = Дата;
Движение. Контрагент = Покупатель;
Движение. Товары = ТекСтрокаТовары. Наименование;
Движение. Сумма = ТекСтрокаТовары. Сумма;
Движение. КолВо = ТекСтрокаТовары. КолВо;
КонецЦикла;
Документ ПродажаТовара:
Процедура ОбработкаПроведения (Отказ, Режим)
// регистр ОстаткиТовара Расход
Движения. ОстаткиТовара. Записывать = Истина;
Движения. ОстаткиТовара. Очистить ();
Для Каждого ТекСтрокаТовары Из Товары Цикл
Движение = Движения. ОстаткиТовара. Добавить ();
Движение. ВидДвижения = ВидДвиженияНакопления. Расход;
Движение. Период = Дата;
Движение. Товары = ТекСтрокаТовары. Наименование;
Движение. Контрагент = Покупатель;
Движение. Сумма = ТекСтрокаТовары. Сумма;
Движение. КолВо = ТекСтрокаТовары. КолВо;
КонецЦикла;
КонецПроцедуры.
Работа с журналами документов. Создаем 2 журнала: Документы по закупкам и Документы по продажам. Журналы должны включать дополнительные реквизиты Контрагент и Сумма по документу.
Работа с отчетами. Создаем 4 отчета: Прайс-лист, Остатки товаров на складе, Отчет по закупкам и Отчет по продажам. Отчёт Остатки товаров на складе должен иметь возможность детализации по отдельным товарам. Отчёты по закупкам и продажам должны формироваться за период с детализацией по контрагентам. Существует необходимость осуществления сложной обработки данных, которую очень сложно получить, непосредственно работая со справочниками, документами, регистрами и журналами, для выполнения такой обработки существует механизм запросов. Запросы мы используем при создании отчета Остатки, а остальные создаем с помощью схемы компоновки данных.
Рисунок 13 - Окно отчета Прайс - лист
Рисунок 14 - Окно отчета Отчет по закупкам
Рисунок 15 - Окно отчета Отчет по продажам
Отчет Остатки товаров на складе создали с помощью запроса, процедуру прописываем в модуле формы отчета.
Процедура КнопкаСформироватьНажатие (Кнопка)
ТабДок = Новый ТабличныйДокумент;
Макет = ЭтотОбъект. ПолучитьМакет ("Макет");
ОбластьМакета = Макет. ПолучитьОбласть ("Шапка");
ОбластьМакета. Параметры. ТекущаяДата = ТекущаяДата ();
ТабДок. Вывести (ОбластьМакета);
Запрос = Новый Запрос;
Если Товары. Наименование <> "" Тогда
Запрос. Текст = "
|Выбрать
| ОстаткиТовараОстатки. Товары,
| ОстаткиТовараОстатки. Товары. Наименование КАК Наименование,
| ОстаткиТовараОстатки. КолВоОстаток КАК Количество
| Из
| РегистрНакопления. ОстаткиТовара. Остатки КАК ОстаткиТовараОстатки
| Где
| ОстаткиТовараОстатки. Товары В (&Товары)
|";
Иначе
Запрос. Текст = "
|ВЫБРАТЬ
| ОстаткиТовараОстатки. Товары,
| ОстаткиТовараОстатки. Товары. Наименование КАК Наименование,
|ОстаткиТовараОстатки. КолВоОстаток КАК Количество
| Из
| РегистрНакопления. ОстаткиТовара. Остатки КАК ОстаткиТовараОстатки
|";
КонецЕсли;
Запрос. УстановитьПараметр ("Товары", Товары);
Результат = Запрос. Выполнить ();
Выборка = Результат. Выбрать ();
Пока Выборка. Следующий () Цикл
ОбластьМакета = Макет. ПолучитьОбласть ("Товар");
ОбластьМакета. Параметры. Товар = Выборка. Наименование;
ОбластьМакета. Параметры. Количество = Выборка. Количество;
ТабДок. Вывести (ОбластьМакета);
КонецЦикла;
ТабДок. Показать ();
КонецПроцедуры
Рисунок 16 - Окно отчета Остатки
Создание пользователей.
В системе 1С: Предприятие 8.3 для авторизации используется список пользователей, для разграничения полномочий мы создаем в объекте роли 2 пользователей и создаем 2 интерфейса, устанавливаем в каждом набор прав, для разрешения доступа только к необходимым объектам.
Для работы с конфигурацией мы создали двух пользователей. Первый пользователь - Иванов (Администратор) с полными правами и интерфейсом, а второй - Петров (менеджер) с ограниченными правами (нельзя редактировать константы) и с ограниченным интерфейсом (нет пункта Операции в главном меню).
2. Разработка управляемого приложения
Изменяем свойство конфигурации Основной режим запуска на "Управляемое приложение". Создаем подсистемы Закупки и Продажи, и определяем состав объектов каждой подсистемы.
Рисунок 17 - Окно подсистемы
Для каждой подсистемы сформировываем панель навигации, действий Создать и Отчеты.
Рисунок 18 - Окно рабочего стола
Рисунок 19 - Окно подсистемы Закупки
Рисунок 20 - Окно подсистемы Продажи
Сформируем отчет по закупкам в управляемом приложении.
Рисунок 21 - Окно отчета
3. Реализация бизнес - процесса "Продажа товара"
Режим запуска "Обычное приложение". Создаем справочники Сотрудники (данные: Иванов, Петров, Сидоров), Подразделения (данные: отдел продаж, склад), Роли Исполнителей (данные: кладовщик, продавец, руководитель отдела). В форме документа Заявка покупателя создаем реквизит ОплатаСчета.
Создаем регистр сведений РегистрАдресации.
Рисунок 22 - Окно регистра
Определяем параметр сеанса Текущий исполнитель.
Рисунок 23 - Окно свойства
Создаем объект конфигурации Задача.
Рисунок 24 - Окно свойства задачи
В модуле объекта определяем обработчики событий.
Процедура ПередВыполнением (Отказ)
Если ДатаВыполнения = '00010101' Тогда
ДатаВыполнения = ТекущаяДата ();
КонецЕсли; Если Исполнитель. Пустая () Тогда
Исполнитель = ПараметрыСеанса. ТекущийИсполнитель;
КонецЕсли;
КонецПроцедуры.
Процедура ПриВыполнении ()
Сообщить ("Задача выполнена: "+""""+Наименование+"""");
КонецПроцедуры.
Процедура ПриЗаписи ()
Если ЭтоНовый () Тогда
Сообщить ("Сформирована задача: "+""""+Наименование+"""");
Сообщить ("Исполнитель"+Исполнитель);
Сообщить ("Подразделение"+подразделение);
КонецЕсли;
КонецПроцедуры.
Создаем объект конфигурации бизнес - процесс "Продажа товара".
Рисунок 25 - Окно свойства бизнес - процесса
Создаем карту маршрута.
Рисунок 26 - Окно карты маршрута
Процедуры описываем в модуле объекта:
Процедура СтартПередСтартом (ТочкаМаршрутаБизнесПроцесса, Отказ)
НужноЗаписать = Ложь;
ЕСЛИ Счет. Пустая () ТОГДА
СчетОбъект = Документы. ЗаявкиПокупателя. СоздатьДокумент ();
СчетОбъект. Дата = ТекущаяДата ();
СчетОбъект. Записать ();
Счет = СчетОбъект. Ссылка;
НужноЗаписать = Истина;
КОНЕЦЕСЛИ;
ЕСЛИ РасходнаяНакладная. Пустая () ТОГДА
РасходнаяНакладнаяОбъект = Документы. ПродажаТовара. СоздатьДокумент ();
РасходнаяНакладнаяОбъект. Дата = ТекущаяДата ();
РасходнаяНакладнаяОбъект. Записать ();
РасходнаяНакладная = РасходнаяНакладнаяОбъект. Ссылка;
НужноЗаписать = Истина;
КОНЕЦЕСЛИ;
ЕСЛИ НужноЗаписать ТОГДА
Записать ();
КОНЕЦЕСЛИ;
СООБЩИТЬ ("Старт бизнес-процесса: " + """" + ЭтотОбъект. МетаДанные (). Синоним+"""");
КонецПроцедуры.
Процедура СчетОплаченПроверкаУсловия (ТочкаМаршрутаБизнесПроцесса, Результат)
Результат = Счет. ОплатаСчета;
КонецПроцедуры.
Процедура ВыпискаСчетаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Счет. ПолучитьФорму ("ФормаДокумента"). Открыть ();
СтандартнаяОбработка=Ложь;
КонецПроцедуры.
Процедура ВыпискаСчетаПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
Если Счет. Товары. Количество () =0 тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры.
Процедура ВыпискаНакладнойОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();
СтандартнаяОбработка=Ложь;
КонецПроцедуры.
Процедура ВыпискаНакладнойПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
Если РасходнаяНакладная. Товары. Количество () =0 тогда
Отказ=Истина;
КонецЕсли;
КонецПроцедуры.
Процедура ОтгрузкаСоСкладаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();
СтандартнаяОбработка=Ложь;
КонецПроцедуры.
Процедура НормальноеЗавершениеПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить ("Завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");
КонецПроцедуры.
Процедура НетПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить ("Досрочное завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");
КонецПроцедуры.
В модуле обычного приложения определяем процедуры:
Процедура ПриНачалеРаботыСистемы ()
ПараметрыСеанса. ТекущийИсполнитель=Справочники. Сотрудники. НайтиПоКоду (ИмяПользователя ());
ПодключитьОбработчикОповещения ("ОбработчикОповещения");
КонецПроцедуры.
Процедура ОбработчикОповещения (ИмяСобытия, Параметр, Источник) Экспорт
Если ИмяСобытия="ЗаписьСчета" Тогда
Запрос=Новый Запрос;
Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);
Запрос. Текст="ВЫБРАТЬ
|Задача. Ссылка
|Из
|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача
|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс
|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. Счет=&Парам)";
Выборка=Запрос. Выполнить (). Выбрать ();
Пока Выборка. Следующий () Цикл
ТекущаяЗадача=Выборка. Ссылка. ПолучитьОбъект ();
Если ТекущаяЗадача. ТочкаМаршрута=БизнесПроцессы. ПродажаТовара. ТочкиМаршрута. ВыпискаСчета Тогда
ФормаСчета=ТекущаяЗадача. БизнесПроцесс. Счет. ПолучитьФорму ();
Если ФормаСчета. Открыта () =Истина Тогда
Если Вопрос ("Пометить задачу"""+ТекущаяЗадача. Наименование+"""как выполненную?",РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда
ТекущаяЗадача. ВыполнитьЗадачу ();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ИмяСобытия="Списание" Тогда
Запрос=Новый Запрос;
Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);
Запрос. Текст="ВЫБРАТЬ
|Задача. Ссылка
|Из
|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача
|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс
|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. РасходнаяНакладная=&Парам)";