19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
16/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Продажа товара должна уменьшать количество товаров на складе, значит, тип движения регистра следует выбрать «Расход». Регистр будет обозначаться знаком «-» (минус).
Откроем систему в режиме «1С:Предприятие» и проверим работу регистра накопления.
В первую очередь, необходимо перепровести (провести заново) созданный документ «Поступление товаров», а также создать и провести хотя бы один документ «Продажа товаров». Без проведения документов данные не будут скопированы в регистр накопления.
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
17/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Но мы, будучи разработчиками, можем обратиться к любому объекту конфигурации. Для этого воспользуемся функциями для технического специалиста.
В открывшемся списке найдем созданный нами регистр накопления и откроем его.
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
18/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Регистр накопления является некоторой итоговой таблицей. Сюда заносятся данные из документоврегистраторов по определенным правилам.
Таким образом, мы соединили между собой созданные ранее документы:
документ «ПоступлениеТоваров» увеличивает количество товаров на складах; документ «ПродажаТоваров», наоборот, его уменьшает; информация обо всех движениях товаров дублируется в регистр накопления.
«Продать товар "в минус" нельзя, то есть в момент продажи следует проверять остаток товара».
К сожалению, регистра накопления недостаточно для того, чтобы вести учет отрицательных остатков. Необходимо описать алгоритм работы документа «ПродажаТоваров».
Отроем модуль объекта документа «ПродажаТоваров» и дополним процедуру «ОбработкаПроведения».
Проверять остатки товаров будем следующим образом:
1.Сделаем движение данных из документа в регистр накопления.
2.Проверим, появились ли в регистре остатки, значение которых меньше нуля (то есть отрицательные).
3.Если есть отрицательные остатки, то отменим сделанное движение в регистр накопления и выведем пользователю сообщение об ошибке.
Чтобы сделать движение данных их документа в регистр накопления, допишем после окончания цикла строку «Движения.Записать();». Метод записывает только те движения документа, у которых установлен флаг «Записывать», при этом флаг в итоге снимается, что не приводит к повторной записи движений по окончании транзакции проведения. И главное, «Движения.Записать();» всегда записывают движения в том порядке, в котором таблицы указаны в дереве метаданных, что на порядок уменьшает шансы взаимных блокировок, ведь все транзакции в одинаковом порядке блокируют таблицы.
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
19/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Теперь, когда движение было сделано, можно обратиться к данным регистра накопления.
Чтобы это сделать, воспользуемся конструктором запроса с обработкой результата. Этот конструктор можно открыть из контекстного меню щелчком правой кнопки мыши по области модуля. Данный конструктор обязательно должен быть вызван внутри процедуры «ОбработкаПроведения».
Соглашаемся с созданием нового запроса. Открывается окно конструктора запроса с обработкой результата. Переходим на вкладку «Таблицы и поля».
Открывшееся окно имеет три части:
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
20/35 |