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