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