• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Получение значения дополнительного реквизита документа

  • Автор темы Skellar
  • Дата начала
S

Skellar

Выручайте, получил задание - сделать отчет по документу Счет по БП 2.0. В отчете должно быть поле Сумма Бонуса, которое получается из суммы двух дополнительных реквизитов - ГонорарМенеджера и ПремияМенеджера. У меня получается сделать сумму только в том случае, если оба реквизита имеют значение (тип значения - число). Если значение не заполнено, в таблицу ничего не попадает. Задать значение 0 доп реквизиту у меня тоже не получилось. Что я делаю не так? Вот текст запроса:

Код:
ВЫБРАТЬ
ГонорарМенеджера.Свойство,
ГонорарМенеджера.Значение КАК Значение,
ПремияМенеджера.Свойство КАК Свойство1,
ПремияМенеджера.Значение КАК Значение1,
СчетНаОплатуПокупателю.Ссылка КАК Документ,
СчетНаОплатуПокупателю.Дата КАК ДатаНачала,
СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаЗаказа,
СчетНаОплатуПокупателю.Ответственный КАК Менеджер,
СчетНаОплатуПокупателю.Дата КАК ДатаКонца
ИЗ
Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ПремияМенеджера
ПО СчетНаОплатуПокупателю.Ссылка = ПремияМенеджера.Объект
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ГонорарМенеджера
ПО СчетНаОплатуПокупателю.Ссылка = ГонорарМенеджера.Объект
ГДЕ
ГонорарМенеджера.Свойство.Наименование = &ГонорарМенеджера
И ПремияМенеджера.Свойство.Наименование = &ПремияМенеджера
 
S

Skellar

Делал уже, получилось вот так:

Код:
ЕСТЬNULL(ГонорарМенеджера.Свойство,NULL) Как Свойство,
ЕСТЬNULL(ГонорарМенеджера.Значение,0) КАК Значение,
ЕСТЬNULL(ПремияМенеджера.Свойство,NULL	) КАК Свойство1,
ЕСТЬNULL(ПремияМенеджера.Значение,0) КАК Значение1,
Все равно не получается. Ошибка в запросе, потому что в таблице результата запроса при никаком значении у реквизита строка с его наименованием просто пропадает.
 
U

unknown181538

Надо сначала получать значения реквизитов по счету, помещать их во временные таблицы, а потом уже соединять.
 
S

Skellar

Проблему решил, пошел со стороны характеристик, если кому интересно - текст запроса:



Код:
ВЫБРАТЬ
СчетНаОплатуПокупателю.Ссылка КАК Ссылка,
СчетНаОплатуПокупателю.Дата КАК ДатаНачала,
СчетНаОплатуПокупателю.Ответственный КАК Менеджер,
СчетНаОплатуПокупателю.СуммаДокумента,
СчетНаОплатуПокупателю.Дата КАК ДатаКонца
ИЗ
Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
{ХАРАКТЕРИСТИКИ
ТИП(Документ.СчетНаОплатуПокупателю)
ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }

Тоесть вообще убрал все таблицы кроме самого документа, а в самой СКД сделал вычисляемое поле СУмма Бонуса = ЕСТЬNULL(Ссылка.ГонорарМенеджера,0)+ЕстьNULL(Ссылка.ПремияМенеджера,0)
Всем спасибо за помощь!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!