Постановка задачи
Требуется создать простую учетную систему для магазина с доставкой на дом. Система должна учитывать остатки товаров, оформлять заказы от клиентов и формировать путевые листы для курьеров.
Объекты конфигурации
В конфигурации потребуется создать следующие объекты:
Тип объектов
|
Объекты
|
||||||||||||||||
Справочники |
|
||||||||||||||||
Документы |
|
||||||||||||||||
Регистры |
|
||||||||||||||||
Отчеты |
|
Обслуживаемая магазиномом территория делится на районы. При регистрации клиента указывается его название / ФИО, адрес, телефон и район, в котором он находится. В справочнике Курьеры перечислены фамилии курьеров или названия мобильных отрядов, осуществляющих доставку товаров покупателю. Справочник товары является иерархическим и содержит 3 уровня, т.е. товары могут быть объединены в группы. Для товара указывается цена, по которой он продается клиентам.
Экранная форма документа выглядит следующим образом:
При проведении документа производятся движения в регистре Остатки:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 ЦиклРегистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Количество;
Регистр.Остатки.ДвижениеПриходВыполнить();КонецЦикла;
КонецПроцедуры
Экранная форма документа выглядит следующим образом:
При проведении документа производятся движения в регистре Заказы:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 ЦиклРегистр.Заказы.Товар = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Заказ = ТекущийДокумент();
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Количество = Количество;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеПриходВыполнить();КонецЦикла;
КонецПроцедуры
Документ предназначен для отмены ранее сделанных заказов. Можно уменьшить количество заказанного ранее товара. Экранная форма документа выглядит следующим образом:
Пользователь указывает клиента, при этом автоматически заполняется табличная часть документа текущими заказами по данному клиенту. Пользователь указывает нужное количество товара в колонке «Снять».
При проведении документа производятся движения в регистре Заказы:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 ЦиклЕсли Количество > 0 Тогда
Регистр.Заказы.Товар = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Заказ = Заказ;
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Количество = Количество;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеРасходВыполнить();КонецЕсли;
КонецЦикла;
КонецПроцедуры
Данный документ является заданием для курьера, который доставляет товары покупателю. Экранная форма документа выглядит следующим образом:
Сначала пользователь указывает район, при этом автоматически заполняется табличная часть — формируется путевой лист. Программа просматривает все текущие заказы по данному району, дата доставки которых совпадает с датой путевого листа или просрочена. Пользователь может подредактировать доставляемое количество в колонке «Доставить» в связи с отсутствием товара на складе или тяжести груза для одного курьера.
После этого путевой лист распечатывается и проводится. Печатная форма путевого листа выглядит следующим образом:
При проведении документа совершаются движения в регистрах Остатки и Доставка:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл//доставляемые товары
Регистр.Доставка.Товар = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Количество;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеПриходВыполнить();//уменьшаются остатки по данному товару
Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Количество;
Регистр.Остатки.ДвижениеРасходВыполнить();КонецЦикла;
КонецПроцедуры
Данный документ оформляет результат поездки курьера по путевому листу. Отмечается количество фактически доставленных товаров. Экранная форма документа выглядит следующим образом:
Пользователь указывает путевой лист, по которому отчитывается курьер. При этом автоматически заполняется табличная часть документа. Пользователь может подкорректировать колонку «Доставлено» в соответствии с фактически доставленным количеством товара. При установке флажка «Недоставленные товары возвращены на склад» товары из регистра Доставка переходят в регистр Остатки, т.е. курьер нам ничего не должен.
При проведении документа совершаются движения в регистрах:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 ЦиклЕсли Доставлено > 0 Тогда
Регистр.Доставка.Товар = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Доставлено;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеРасходВыполнить();Регистр.Заказы.Товар = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Заказ = Заказ;
Регистр.Заказы.Количество = Доставлено;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеРасходВыполнить();Регистр.Доходы.Товар = Товар;
Регистр.Доходы.Клиент = Клиент;
Регистр.Доходы.Доход = Сумма;
Регистр.Доходы.ДвижениеВыполнить();КонецЕсли;
Если Фл_ВозвратОстатков=1 Тогда
Если Доставлено < Заказано Тогда
Регистр.Доставка.Товар = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Доставлено;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеРасходВыполнить();Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Заказано — Доставлено;
Регистр.Остатки.ДвижениеПриходВыполнить();КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Данный отчет показывает текущую картину по товарам и оценивает дефицит товаров на указанный будущий период. Экранная форма диалога отчета выглядит следующим образом:
Пользователь может ограничить выборку конкретной группой товаров. Кроме того, пользователь указывает период времени в днях, за который учитываются заказы. Это позволяет заранее определить дефицитные товары и не допустить срыва поставок.
Пример работы отчета представлен ниже:
Дефицит определяется по формуле:
Дефицит = (Заказано — Доставляется) — Остаток;
Определять доходы магазина можно по регистру Доходы с помощью отчетов СводнаяТаблица и ОтчетПоРегистру, разработанных фирмой КИНТ.