Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе С: Предприятие



бет58/58
Дата18.10.2023
өлшемі437,92 Kb.
#118294
түріСборник
1   ...   50   51   52   53   54   55   56   57   58
Байланысты:
Сборник лабораторных работ для студентов учебных заведений, изуч-emirsaba.org

«В системе нужно регистрировать продажу товара».
Добавим новый документ «ПродажаТоваров» путем копирования документа «ПоступлениеТоваров».

Должен появиться документ «ПоступлениеТоваров1». Переименуем его в «ПродажаТоваров» и перейдем на вкладку «Данные».



«При продаже товаров указывается, какие товары были проданы и в каком количестве».
Из данного условия делаем вывод, что в табличной части документа должно быть только два реквизита: «Товар» и «Количество». Значит, нужно удалить реквизит «СрокГодности» из табличной части.

Теперь следует описать логику проведения данного документа. Для этого нужно открыть модуль объекта, который находится на вкладке «Прочее».

Документ был скопирован полностью, в том числе была скопирована обработка проведения. Закомментируем код процедуры. Для этого нужно выделить нужные строки и нажать на кнопку с изображением двух обратных косых черт.

В документ «ПродажаТоваров» пользователь должен добавлять информацию о товаре и количестве, которое он хочет продать. В первую очередь, система должна проанализировать, достаточно ли каждого вида товаров для продажи. Если достаточно, тогда нужно списывать товар партиями по возрастанию срока годности.


Для проведения данного анализа необходимо получить данные как из документа, так и из регистра накопления. Получим эти данные с помощью конструктора запросов.
Этот конструктор можно открыть из контекстного меню щелчком правой кнопки мыши по области модуля. Данный конструктор обязательно должен быть вызван внутри процедуры «ОбработкаПроведения».

Соглашаемся с предложением системы создать новый запрос.


Открывается окно конструктора запроса с обработкой результата. Переходим на вкладку «Таблицы и поля». Здесь нам нужно выбрать поля табличной части документа.

Переходим на вкладку «Группировка» и сгруппируем товары между собой: вдруг пользователь ввел несколько отдельных строк с одинаковым товаром?

Далее переходим на вкладку «Условие» и поставим условие на ссылку. Таким образом, запрос будет обрабатывать табличную часть только того одного документа, чью ссылку мы передадим в запрос.

Теперь все полученные данные из документа «ПродажаТоваров» следует поместить во временную таблицу. Для этого переходим на вкладку «Дополнительно», выбираем пункт «Создание временной таблицы» и зададим ей имя «ДОК».

Переходим на вкладку «Индекс» и проиндексируем таблицу по полю «Товар», поскольку далее нужно будет соединить несколько таблиц.

Переходим на вкладку «Пакет запросов» и добавляем новый запрос.

Снова открывается вкладка «Таблицы поля». Здесь нужно выбрать уже остатки из регистра накопления.

Полученные данные тоже положим во временную таблицу. Переходим на вкладку «Дополнительно» и создаем временную таблицу «ОСТ».

Переходим на вкладку «Индекс» и снова индексируем по товару.

Осталось лишь добавить последний запрос, который сможет объединить в себе данные из двух получившихся временных таблиц. Вкладка «Пакет запросов», кнопка «Добавить».

Необходимо выбрать следующие поля из двух таблиц:

Теперь нужно перейти на вкладку «Связь» и связать между собой две временные таблицы по полю «Товар».

Далее переходим на вкладку «Порядок» и упорядочиваем элементы в запросе по товару и сроку годности.

Далее переходим на вкладку «Итоги» и снова просуммируем все товары.

По окончании работы над итогами нажимаем на кнопку «ОК».
В процедуре «ОбработкаПроведения» появился код, который был сформирован конструктором запроса.
Под текстом запроса можно увидеть цикл в цикле: внешний цикл перебирает товары, а внутренний – сроки годности этих товаров.

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

Теперь будем перебирать партии.


Пример
Предположим, что в документе указано 50 пакетов молока. На складе в одной партии – 20 пакетов, а в другой – 40. Необходимо сначала списать 20 из первой партии, а затем – 30 из второй.
Добавим переменную «ОсталосьСписать» – она будет своеобразным счетчиком, который мы будем вести до нуля.

Теперь проверяем, сколько осталось товаров в конкретной партии и списывать это количество из переменной «ОсталосьСписать», после чего будем переходить к следующей партии.


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

Теперь в переменной «Списать» хранится то значение, которое мы можем легко списать и при этом не получить отрицательных остатков. Можно делать движение в регистр накопления. Скопируем ранее закомментированный текст, добавим в цикл и раскомментируем.

Изменим вид движения на «Расход», поскольку данный документ должен делать движения со знаком «-» (минус), то есть уменьшать значение в регистре. Также изменим «Товар», «Срок годности» и «Количество».

Далее нужно уменьшить количество товаров, которые еще нужно списать, и добавить дополнительное условие на переменную «ОсталосьСписать».

Установим маркер формирования движений в значение «Истина».

Целиком получившаяся процедура должна выглядеть следующим образом:


Проверим работоспособность разработанной информационной системы.
Откроем отчет по остаткам.

Всего имеется 35 единиц молока «Буренка». Попробуем продать 25 единиц молока.


Для этого добавим документ «Продажа товаров». Полученный документ необходимо провести.

Если появились проблемы с проведением документа «Продажа товаров», тогда вернитесь к списку всех документов и отмените их проведение. Для этого выделите документ в списке, нажмите на него правой кнопкой мыши и выберите пункт меню «Отменить проведение». Сделайте это для всех документов. Затем проведите документы заново.

Вернемся к отчету и сформируем его.

Система списала 20 единиц молока из партии со сроком годности до 17 сентября, и еще 5 – из партии со сроком годности до 19 сентября.


Поставленная задача решена.
http://emirsaba.org

Достарыңызбен бөлісу:
1   ...   50   51   52   53   54   55   56   57   58




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет