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

Данный документ оформляет результат поездки курьера по путевому листу. Отмечается количество фактически доставленных товаров. Экранная форма документа должна выглядеть так, как показано на рисунке ниже

Примечание: в качестве реквизитов шапки создайте «Путевой лист» (тип значения: Документ.Путевой лист) и Фл_ВозвратОстатков (тип значения: число, длина 1).

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

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

Процедура ВводНового()

Фл_ВозвратОстатков = 1;

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

Процедура УстДоставлено()

Сумма = Цена * Доставлено;

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

Процедура УстПутевойЛист()

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

ПутевойЛист.ВыбратьСтроки();

Пока ПутевойЛист.ПолучитьСтроку()=1 Цикл

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

Заказ = ПутевойЛист.Заказ;

ДатаДоставки = ПутевойЛист.ДатаДоставки;

Клиент = ПутевойЛист.Клиент;

Товар = ПутевойЛист.Товар;

Цена = ПутевойЛист.Цена;

Заказано = ПутевойЛист.Заказано;

Доставить = ПутевойЛист.Количество;

Доставлено = Доставить;

Сумма = Цена * Доставлено;

КонецЦикла;

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

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

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

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

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

Если Доставлено > 0 Тогда

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Регистр.Доходы.Товар = Товар;

Регистр.Доходы.Клиент = Клиент;

Регистр.Доходы.Доход = Сумма;

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

КонецЕсли;

Если Фл_ВозвратОстатков=1 Тогда

Если Доставлено < Заказано Тогда

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

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

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

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

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

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

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

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

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

Регистр.Остатки.Количество = Заказано - Доставлено;

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

КонецЕсли;

КонецЕсли;

КонецЦикла;

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