В режиме «Конфигуратор»
Первое, что мы сделаем, – удалим реквизит табличной части Стоимость документа ОказаниеУслуги, который нам больше не пона- добится. Для этого откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги, перейдем на закладку Данные, раскроем список реквизитов табличной части документа, выделим реквизит Стоимость и нажмем кнопку Удалить в командной панели (рис. 14. 13). Также следует удалить соответствующее поле из таблицы Пере- ченьНоменклатуры, расположенной в форме. Для этого откроем форму ФормаДокумента документа ОказаниеУс- луги и в окне структуры элементов формы выделим поле таблицы ПереченьНоменклатурыСтоимость и нажмем кнопку Удалить в командной панели (рис. 14. 14).
Рис. 14. 14. Удаление поля табличной части
Теперь займемся запросом. Временную таблицу мы сформируем с помощью того запроса, который у нас уже написан. Откроем модуль документа ОказаниеУслуги. В процедуре ОбработкаПроведения() перед созданием запроса создадим менеджер временных таблиц и укажем, что этот запрос будет использовать созданный менеджер временных таблиц (листинг 14. 17). листинг 14. 17. Использование менеджера временных таблиц Теперь изменим запрос таким образом, чтобы он создавал временную таблицу, которая будет храниться в нашем менеджере временных таблиц МенеджерВТ. Чтобы конструктор запроса смог открыть наш запрос, удалим из него строку (поля Стоимость у нас больше нет), листинг 14. 18. листинг 14. 18. Изменение запроса | МАКСИМУМ(ОказаниеУслугиПереченьНоменклатуры. Стоимость) КАК Стоимость Также удалим запятую в конце предыдущей строки (листинг 14. 19).
листинг 14. 19. Изменение запроса | СУММА(ОказаниеУслугиПереченьНоменклатуры. Сумма) КАК СуммаВДокументе Теперь установим курсор внутрь текста запроса, например на слове ВЫБРАТЬ, и выполним команду контекстного меню Конструктор запроса. Существующий текст запроса будет показан в форме конструктора запросов (рис. 14. 15). Чтобы результат запроса поместить во временную таблицу, перейдем на закладку Дополнительно и отметим пункт Создание временной таблицы. Зададим имя временной таблицы – НоменклатураДокумента (рис. 14. 16).
Нажмем ОК и посмотрим, какой текст сформировал конструктор запроса (листинг 14. 20). листинг 14. 20. Текст запроса Новым здесь является только строка (листинг 14. 21). листинг 14. 21. Создание временной таблицы |ПОМЕСТИТЬ НоменклатураДокумента Это означает, что результат запроса будет сохранен во временной таблице НоменклатураДокумента. Теперь если мы для другого запроса укажем этот же самый менеджер временных таблиц МенеджерВТ, то в этом другом запросе мы сможем обратиться к данным этой временной таблицы. Таким образом, мы выполнили первую часть нашего плана – создали запрос, помещающий данные табличной части документа во временную таблицу (рис. 14. 17). Рис. 14. 17. Создание первого запроса
Теперь займемся конструированием второго запроса. Установим курсор на следующую строку после оператора Резуль- татЗапроса = Запрос. Выполнить(); (именно здесь выполняется создание временной таблицы) и напишем заготовку будущего запроса (листинг 14. 22).
листинг 14. 22. Создание второго запроса Мы создали новый объект Запрос и назначили ему тот же самый менеджер временных таблиц, чтобы иметь возможность обращаться к созданной нами ранее временной таблице.
Теперь установим курсор внутрь кавычек и выполним команду контекстного меню Конструктор запроса. Согласимся на создание нового запроса. Поскольку мы собираемся выбирать данные из нашей временной таблицы, создадим в запросе описание этой временной таблицы. Для этого над списком Таблицы нажмем кнопку Создать описание временной таблицы (рис. 14. 18).
В открывшемся окне введем имя нашей временной таблицы Номен- клатураДокумента и добавим описание полей: Номенклатура, тип СправочникСсылка. Номенклатура; ВидНоменклатуры, тип ПеречислениеСсылка. ВидыНоменклатуры; КоличествоВДокументе, тип Число, 15, 3; СуммаВДокументе, тип Число, 15, 2. Нажмем ОК. В результате у нас получится следующее описание временной таблицы (рис. 14. 19).
Рис. 14. 19. Создание описания временной таблицы
Нажмем ОК. Выберем из этой таблицы все поля (рис. 14. 20) и нажмем кнопку Запрос в левом нижнем углу окна конструктора запроса.
Рис. 14. 20. Выбранные поля временной таблицы
Текст запроса будет иметь вид (листинг 14. 23).
листинг 14. 23. Текст второго запроса Итак, мы создали первую часть второго запроса – выбрали инфор- мацию из временной таблицы (рис. 14. 21). Рис. 14. 21. Создание второго запроса
Теперь будем соединять эту конструкцию левыми соединениями с таблицами остатков. Начнем со стоимости материалов. Добавим в список таблиц запроса виртуальную таблицу РегистрНакопления. СтоимостьМатериалов. Остатки. Из нее выберем поле СтоимостьОстаток. Перейдем на закладку Связи и зададим связь между таблицами. Из временной таблицы будем выбирать все записи, и поле Номенкла- тура временной таблицы должно быть равно полю Материал таблицы остатков (рис. 14. 22). Нужно не забыть ограничить виртуальную таблицу только той номен- клатурой, которая есть в нашей временной таблице. Поэтому вернемся на закладку Таблицы и поля, выделим в списке таблиц таблицу СтоимостьМатериаловОстатки и нажмем кнопку Параметры виртуальной таблицы, расположенную над списком таблиц. Зададим параметр Условие следующим образом (листинг 14. 24). листинг 14. 24. Условие виртуальной таблицы
Материал В (ВЫБРАТЬ НоменклатураДокумента. Номенклатура ИЗ НоменклатураДокумента) То есть материал должен быть среди номенклатуры, выбранной из временной таблицы.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|