Главная страница
Навигация по странице:

  • Склад В (МассивСкладов) И Товар В (МассивТоваров)

  • ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(ДатаОтчета, "ДЕНЬ"),"СЕКУНДА",1)

  • Разработка ИС для учета товаров. Задача заказчик просит разработать конфигурацию для учета товаров


    Скачать 4.95 Mb.
    НазваниеЗадача заказчик просит разработать конфигурацию для учета товаров
    Дата10.03.2022
    Размер4.95 Mb.
    Формат файлаdocx
    Имя файлаРазработка ИС для учета товаров.docx
    ТипЗадача
    #391120
    страница3 из 3
    1   2   3
    Часть слева отображает все объекты конфигурации, имеющиеся в нашей базе данных. Нужно выбрать лишь те объекты, из которых мы хотим получать данные.

  • Посередине находятся таблицы – это выбранные нами объекты, откуда мы хотим получать данные для конкретного запроса.

  • Справа поля – это те значения (поля), которые мы хотим получить.

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

    Чтобы перенести данные из одного окна в другое, просто перетащите нужные поля с помощью мыши, либо воспользуйтесь стрелочками, расположенными между окнами.

    В результате данное окно должно быть заполнено следующим образом:



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



    По окончании работы с данным конструктором нажимаем на кнопку «ОК». Конструктор выдаст предупреждение об ошибке, которое следует проигнорировать. Обратите внимание на текст запроса. Необходимо удалить знак амперсанта (&) перед нулем в условии.

    Запрос должен выглядеть так:



    С помощью данного запроса из базы данных можно получить отрицательные остатки по всем товарам со всех складов. Но нам нет необходимости получать такую большую выборку, нужно сузить запрос до склада, который указан в шапке документа и товаров, перечисленных в табличной части.

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



    Следует наложить условия на виртуальную таблицу регистра накопления.





    В открывшемся окне нужно написать следующее выражение:

    Склад В (&МассивСкладов) И Товар В (&МассивТоваров)



    Нажмите на кнопку «ОК».



    Данное условие поможет ограничить запрос по складам и товарам, которые указаны в табличной части документа.

    Нажимаем на кнопку «ОК». Текст запроса изменился:



    Мы добавили параметры. Теперь запрос будет проводить поиск только по конкретному складу и конкретному списку товаров. Осталось лишь указать этот склад и эти товары сразу после текста запроса.



    Ну, и последний шаг – выдать сообщение пользователю, если запрос вернул отрицательные остатки. В первую очередь, добавим блок условия сразу после определения параметров.



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



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







    Переходим в режим «1С:Предприятие».

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



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

    Если все было сделано правильно, и вы пытаетесь продать товаров больше, чем имеется на складе, то система выдаст ошибку:





    «Нужно построить отчет по остаткам товаров».

    Построим отчет. Для этого воспользуемся соответствующим объектом конфигурации.

    Определение

    Отчет – это такой объект конфигурации, который формирует данные в понятном для пользователя виде, например, в виде таблицы или диаграммы (подробнее про отчеты можно прочитать здесь: https://v8.1c.ru/platforma/otchet/).

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





    Добавим новый запрос к базе данных.



    Для формирования запроса воспользуемся конструктором запроса.



    Открывается конструктор запроса. Эта вкладка имеет три части:

    • Часть слева отображает все объекты конфигурации, имеющиеся в нашей базе данных. Нужно выбрать лишь те объекты, из которых мы хотим получать данные.

    • Посередине находятся таблицы – это выбранные нами объекты, откуда мы хотим получать данные для конкретного отчета.

    • Справа поля – это те значения (поля), которые мы хотим увидеть в отчете.

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

    Чтобы перенести данные из одного окна в другое, просто перетащите нужные поля с помощью мыши либо воспользуйтесь стрелочками, расположенными между окнами.

    В результате данное окно должно быть заполнено следующим образом:



    Закрываем конструктор запроса, нажав на кнопку «ОК». Сформировался запрос.



    Теперь система понимает, какие данные ей нужны для формирования отчета.

    Переходим на вкладку «Ресурсы» и устанавливаем реквизит «КоличествоОстаток» в качестве ресурса: это позволит нам в отчете получать итоговые (просуммированные) значения.



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

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



    Чтобы у пользователя была возможность выбирать только даты, без указания секунд, нужно настроить формат редактирования параметра «ДатаОтчета».







    После нажатия кнопки «ОК» нужно настроить стандартный параметр «Период» для корректного учета последней секунды дня:

    • во-первых, этот параметр должен быть недоступен пользователю, так как носит вычислительный характер;

    • во-вторых, для корректного расчета требуется написать выражение для стандартного параметра «Период»:

    ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&ДатаОтчета, "ДЕНЬ"),"СЕКУНДА",1)

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



    Теперь переходим на вкладку «Настройки» для оформления внешнего вида отчета. Воспользуемся конструктором настроек отчета.



    Построим отчет в виде таблицы.



    Далее нужно выбрать ресурс, который будет отображен в таблице. В данном случае реквизит у нас всего один, его и выбираем.



    На следующем шаге следует определить те реквизиты, которыми будут заполняться колонки и строки таблицы.



    Ну, и на последнем шаге нужно установить сортировку. Установим сортировку по товарам по возрастанию (то есть по алфавиту).



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





    Отчет готов. Запустим систему в режиме «1С:Предприятие».

    Добавьте еще несколько отчетов по получению товаров и продаже товаров, чтобы убедиться, что отчет работает корректно.



    Поставленная задача решена.

    В результате выполнения лабораторного задания необходимо Выгрузить информационную базу
    1   2   3


  • написать администратору сайта