Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_22_Создание конфигурационного модуля для маг...doc
Скачиваний:
43
Добавлен:
10.11.2019
Размер:
234.5 Кб
Скачать
    1. Снятие заказа

Документ предназначен для отмены ранее сделанных заказов. Можно уменьшить количество заказанного ранее товара.

Экранная форма документа должна выглядеть следующим образом:

Пользователь сначала указывает клиента, и при этом автоматически заполняется табличная часть документа текущими заказами по данному клиенту. Затем Пользователь указывает нужное количество товара в колонке "Снять". После этого в столбце Сумма автоматически появляется суммарная цена снятого товара (напротив наименования товара в таблице) и заполняются поля под таблицей: «Было заказано на сумму», «Остаток заказа на сумму», «Снято на сумму». Для реализации перечисленных задач добавьте приведенный ниже код в модуль формы списка документа.

Перем БылоЗаказаноНаСумму;

Процедура УстКлиент()

УдалитьСтроки();

БылоЗаказаноНаСумму = 0;

РегЗаказы = создатьОбъект("Регистр.Заказы");

РегЗаказы.УстановитьЗначениеФильтра("Клиент",Клиент);

РегЗаказы.ВыбратьИтоги();

Пока РегЗаказы.ПолучитьИтог()=1 Цикл

НоваяСтрока();

Заказ = РегЗаказы.Заказ;

Товар = РегЗаказы.Товар;

Цена = РегЗаказы.Цена;

ДатаДоставки = РегЗаказы.ДатаДоставки;

Заказано = РегЗаказы.Количество;

БылоЗаказаноНаСумму = БылоЗаказаноНаСумму + РегЗаказы.Цена * РегЗаказы.Количество;

КонецЦикла;

КонецПроцедуры

Процедура УстКоличество()

Сумма = Цена * Количество;

КонецПроцедуры

Процедура ПриВводеСтроки()

СтатусВозврата(0);

КонецПроцедуры

Процедура ПриУдаленииСтроки()

СтатусВозврата(0);

КонецПроцедуры

БылоЗаказаноНаСумму = 0;

При проведении документа производятся движения в регистре Заказы. Запишите код процедры ОбработкаПроведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Если Количество > 0 Тогда

Регистр.Заказы.Товар = Товар;

Регистр.Заказы.Клиент = Клиент;

Регистр.Заказы.ДатаДоставки = ДатаДоставки;

Регистр.Заказы.Заказ = Заказ;

Регистр.Заказы.Цена = Цена;

Регистр.Заказы.Количество = Количество;

Регистр.Заказы.Сумма = Сумма;

Регистр.Заказы.ДвижениеРасходВыполнить();

КонецЕсли;

КонецЦикла;

КонецПроцедуры

    1. Путевой лист

Данный документ является заданием для курьера, который доставляет товары покупателю. Экранная форма документа должна выглядеть следующим образом:

Сначала пользователь указывает район, при этом автоматически заполняется табличная часть − формируется путевой лист. Программа просматривает все текущие заказы по данному району, дата доставки которых совпадает с датой путевого листа или просрочена. Пользователь может подредактировать доставляемое количество в колонке "Доставить" в связи с отсутствием товара на складе или тяжести груза для одного курьера.

После этого путевой лист распечатывается и проводится. Печатная форма путевого листа должна выглядеть следующим образом:

Для вывода суммы в столбец «Сумма» и реализации печатной формы документа в модуль формы списка документа запишите приведенный ниже код:

Процедура УстКоличество()

Сумма = Цена * Количество;

КонецПроцедуры

Процедура Сформировать()

УдалитьСтроки();

РегЗаказы = создатьОбъект("Регистр.Заказы");

РегЗаказы.ВыбратьИтоги();

Пока РегЗаказы.ПолучитьИтог()=1 Цикл

Если РегЗаказы.Клиент.Район <> Район Тогда

Продолжить;

КонецЕсли;

Если РегЗаказы.ДатаДоставки > ДатаДок Тогда

Продолжить;

КонецЕсли;

НоваяСтрока();

Заказ = РегЗаказы.Заказ;

Клиент = РегЗаказы.Клиент;

Товар = РегЗаказы.Товар;

ДатаДоставки = РегЗаказы.ДатаДоставки;

Цена = РегЗаказы.Цена;

Заказано = РегЗаказы.Количество;

Количество = Заказано;

Сумма = РегЗаказы.Сумма;

КонецЦикла;

СортироватьСтроки("Клиент");

КонецПроцедуры

Процедура Печать()

Таб = создатьОбъект("Таблица");

Таб.ВывестиСекцию("Все<");

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Таб.ВывестиСекцию("Товар");

КонецЦикла;

Таб.ВывестиСекцию("Все>");

Таб.Опции(0);

Таб.Показать();

КонецПроцедуры

При проведении документа совершаются движения в регистрах Остатки и Доставка. Вставьте в модуль программный код, реализующий проведение документа.

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

//доставляемые товары

Регистр.Доставка.Товар = Товар;

Регистр.Доставка.Клиент = Клиент;

Регистр.Доставка.Заказ = Заказ;

Регистр.Доставка.Цена = Цена;

Регистр.Доставка.ДатаДоставки = ДатаДоставки;

Регистр.Доставка.Количество = Количество;

Регистр.Доставка.Сумма = Сумма;

Регистр.Доставка.ДвижениеПриходВыполнить();

//уменьшаются остатки по данному товару

Регистр.Остатки.Товар = Товар;

Регистр.Остатки.Количество = Количество;

Регистр.Остатки.ДвижениеРасходВыполнить();

КонецЦикла;

КонецПроцедуры