
- •Лабораторная работа №22
- •Порядок выполнения:
- •Создайте пустую папку и запустите программу 1с: Предприятие, указав путь к папке.
- •Создайте следующие справочники:
- •Создайте регистры, представленные в таблице.
- •Создайте необходимые документы.
- •Приход товара
- •Снятие заказа
- •Путевой лист
- •Отчет курьера
- •Создайте новый отчет "Товары"
Отчет курьера
Данный документ оформляет результат поездки курьера по путевому листу. Отмечается количество фактически доставленных товаров. Экранная форма документа должна выглядеть так, как показано на рисунке ниже
Примечание: в качестве реквизитов шапки создайте «Путевой лист» (тип значения: Документ.Путевой лист) и Фл_ВозвратОстатков (тип значения: число, длина 1).
Пользователь указывает путевой лист, по которому отчитывается курьер. При этом автоматически заполняется табличная часть документа. Пользователь может подкорректировать колонку "Доставлено" в соответствии с фактически доставленным количеством товара. При установке флажка "Недоставленные товары возвращены на склад" товары из регистра Доставка переходят в регистр Остатки, т.е. курьер нам ничего не должен.
Для вывода суммы в столбец «Сумма» и реализации печатной формы документа в модуль формы списка документа запишите приведенный ниже код:
Процедура ВводНового()
Фл_ВозвратОстатков = 1;
КонецПроцедуры
Процедура УстДоставлено()
Сумма = Цена * Доставлено;
КонецПроцедуры
Процедура УстПутевойЛист()
УдалитьСтроки();
ПутевойЛист.ВыбратьСтроки();
Пока ПутевойЛист.ПолучитьСтроку()=1 Цикл
НоваяСтрока();
Заказ = ПутевойЛист.Заказ;
ДатаДоставки = ПутевойЛист.ДатаДоставки;
Клиент = ПутевойЛист.Клиент;
Товар = ПутевойЛист.Товар;
Цена = ПутевойЛист.Цена;
Заказано = ПутевойЛист.Заказано;
Доставить = ПутевойЛист.Количество;
Доставлено = Доставить;
Сумма = Цена * Доставлено;
КонецЦикла;
КонецПроцедуры
При проведении документа совершаются движения в регистрах. Вставьте в модуль программный код, реализующий проведение документа.
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Доставлено > 0 Тогда
Регистр.Доставка.Товар = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Доставлено;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеРасходВыполнить();
Регистр.Заказы.Товар = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Заказ = Заказ;
Регистр.Заказы.Количество = Доставлено;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеРасходВыполнить();
Регистр.Доходы.Товар = Товар;
Регистр.Доходы.Клиент = Клиент;
Регистр.Доходы.Доход = Сумма;
Регистр.Доходы.ДвижениеВыполнить();
КонецЕсли;
Если Фл_ВозвратОстатков=1 Тогда
Если Доставлено < Заказано Тогда
Регистр.Доставка.Товар = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Доставлено;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеРасходВыполнить();
Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Заказано - Доставлено;
Регистр.Остатки.ДвижениеПриходВыполнить();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры