Материал: 3

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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