19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Часть слева отображает все объекты конфигурации, имеющиеся в нашей базе данных. Нужно
выбрать лишь те объекты, из которых мы хотим получать данные.
Посередине находятся таблицы – это выбранные нами объекты, откуда мы хотим получать данные для конкретного запроса.
Справа поля – это те значения (поля), которые мы хотим получить.
Данные будем брать не из регистра накопления напрямую, а из виртуальной таблицы, которую создает этот регистр автоматически. Данная виртуальная таблица способна обработать основную таблицу и самостоятельно посчитать остатки товаров.
Чтобы перенести данные из одного окна в другое, просто перетащите нужные поля с помощью мыши, либо воспользуйтесь стрелочками, расположенными между окнами.
В результате данное окно должно быть заполнено следующим образом:
Переходим на вкладку «Условие» и добавим новое условие. Пусть в запрос попадут только данные с отрицательными остатками.
По окончании работы с данным конструктором нажимаем на кнопку «ОК». Конструктор выдаст предупреждение об ошибке, которое следует проигнорировать. Обратите внимание на текст запроса. Необходимо удалить знак амперсанта (&) перед нулем в условии.
Запрос должен выглядеть так:
С помощью данного запроса из базы данных можно получить отрицательные остатки по всем товарам со всех складов. Но нам нет необходимости получать такую большую выборку, нужно сузить запрос до склада, который указан в шапке документа и товаров, перечисленных в табличной части.
Откроем конструктор запроса. Для этого нужно щелкнуть в любом месте самого запроса (черный текст в двойных кавычках) правой кнопкой мыши и вызвать конструктор запроса.
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
21/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Следует наложить условия на виртуальную таблицу регистра накопления.
В открывшемся окне нужно написать следующее выражение:
Склад В (&МассивСкладов) И Товар В (&МассивТоваров)
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
22/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Нажмите на кнопку «ОК».
Данное условие поможет ограничить запрос по складам и товарам, которые указаны в табличной части документа.
Нажимаем на кнопку «ОК». Текст запроса изменился:
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
23/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Мы добавили параметры. Теперь запрос будет проводить поиск только по конкретному складу и
конкретному списку товаров. Осталось лишь указать этот склад и эти товары сразу после текста запроса.
Ну, и последний шаг – выдать сообщение пользователю, если запрос вернул отрицательные остатки. В первую очередь, добавим блок условия сразу после определения параметров.
Внутрь цикла можно попасть только в том случае, если запрос пришел не пустой, то есть если были найдены отрицательные остатки. В таком случае нужно отменить проведение документа и выдать пользователю сообщение.
Код процедуры полностью должен выглядеть следующим образом:
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
24/35 |
19.02.2021 |
Выполнение :: Сборник лабораторных работ для студентов учебных заведений, изучающих программирование в системе 1… |
Переходим в режим «1С:Предприятие».
Если у вас уже имеются документы «ПродажаТоваров», отмените их проведение. Для этого нажмите по документу в списке правой кнопкой мыши и выберите «Отменить проведение». Сделайте это для всех документов.
Проведите документы заново. Добавьте новый документ «Продажа товаров» так, чтобы хотя бы одного из вида товаров не хватало на одном из складов.
Если все было сделано правильно, и вы пытаетесь продать товаров больше, чем имеется на складе, то система выдаст ошибку:
https://its.1c.ru/db/content/publab82021/src/text/64.html#_print |
25/35 |