Дополнительный реквизит документа. Тип Булево
Привет всем.
Есть небольшая загвостка.
Есть документ "Отчет комиссионера"
Добавил Доп реквизит "Возвраты"
Тоесть если это возвраты то ставиться галочка тоесть принимает реквизит "Истина", если продажи соответственно "Ложь"
Начинаю Запросом выбирать документы:
Если Возвраты = Истина, то возвраты показывает, а если Ложь Ни одного документа не показывает.
Я так понимаю, когда галка не стоит, то доп реквизит отсутствует, так как если из запроса убираю условия по планам харрактеристик, то все доки показываются.
Как выйти из этой ситуации?
КА 2.4 УФ
Есть небольшая загвостка.
Есть документ "Отчет комиссионера"
Добавил Доп реквизит "Возвраты"
Тоесть если это возвраты то ставиться галочка тоесть принимает реквизит "Истина", если продажи соответственно "Ложь"
Начинаю Запросом выбирать документы:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтчетКомиссионера.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтчетКомиссионера КАК ОтчетКомиссионера
|ГДЕ
| ОтчетКомиссионера.НомерВходящегоДокумента = &Накладная
| И ОтчетКомиссионера.ДополнительныеРеквизиты.Свойство = &Возвраты
| И ОтчетКомиссионера.ДополнительныеРеквизиты.Значение = &Булево";
Запрос.УстановитьПараметр("Накладная", Накладная);
Запрос.УстановитьПараметр("Возвраты", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Возвраты"));
Запрос.УстановитьПараметр("Булево", Возвраты);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат Истина;
КонецЦикла;
ПоказатьЕсли Возвраты = Истина, то возвраты показывает, а если Ложь Ни одного документа не показывает.
Я так понимаю, когда галка не стоит, то доп реквизит отсутствует, так как если из запроса убираю условия по планам харрактеристик, то все доки показываются.
Как выйти из этой ситуации?
КА 2.4 УФ
По теме из базы знаний
- Акт на списание материалов для Бухгалтерии 2.0 с сохранением комиссии в доп. реквизитах документа
- Дополнительные реквизиты и сведения в управляемом приложении - это просто... с БДРС
- Заполнение дополнительных реквизитов при программном открытии формы из другой формы
- Табличная часть из дополнительных реквизитов с обработкой событий в расширении
- Об общих реквизитах
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) перечитал проблему ещё раз....
есть вероятность, что Ложь вообще не записывается, или записывается но не всегда
(не создаётся соответствующая строка в табличной части Доп.Рек)
тогда отсутствие такой записи надо трактовать как Ложь:
а если Ложь Ни одного документа не показывает
есть вероятность, что Ложь вообще не записывается, или записывается но не всегда
(не создаётся соответствующая строка в табличной части Доп.Рек)
тогда отсутствие такой записи надо трактовать как Ложь:
Запрос.Текст =
"ВЫБРАТЬ
| ОтчетКомиссионера.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтчетКомиссионера КАК ОтчетКомиссионера
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.ОтчетКомиссионера.ДополнительныеРеквизиты КАК ДопРек
| ПО ДопРек.Ссылка=ОтчетКомиссионера.Ссылка
| И ДопРек.Свойство = &Возвраты
|ГДЕ
| ОтчетКомиссионера.НомерВходящегоДокумента = &Накладная
| И ЕстьNull(ДопРек.Значение,Ложь) = &Булево";
Показать
(1) Значение ложь для доп реквизита не записывается в таблицу доп реквизитов объекта, так как считается не установленным. А не заполненные значения не записываются в таблицу доп реквизитов объекта!
Совет (5) как и запрос в (5) - правильный ответ на ваш вопрос.
Совет (5) как и запрос в (5) - правильный ответ на ваш вопрос.
В первом пакете получить все документы у которых возвраты истина, а во втором пакете получить все документы, у которых ссылка не входит в первый пакет.
Не ВторойПакет.Ссылка В (ВЫБРАТЬ ПервыйПакет.Ссылка Из ПервыйПакет как ПервыйПакет)
(2) если честно, не понял.
Мой запрос:
Мой запрос:
Функция ПроверитьНакладную(Накладная, Возвраты)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОтчетКомиссионера.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтчетКомиссионера КАК ОтчетКомиссионера
|ГДЕ
| ОтчетКомиссионера.НомерВходящегоДокумента = &Накладная
| И ОтчетКомиссионера.ДополнительныеРеквизиты.Свойство = &Возвраты
| И ОтчетКомиссионера.ДополнительныеРеквизиты.Значение = &Булево";
Запрос.УстановитьПараметр("Накладная", Накладная);
Запрос.УстановитьПараметр("Возвраты", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Возвраты"));
Запрос.УстановитьПараметр("Булево", Возвраты);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат ВыборкаДетальныеЗаписи.ссылка;
КонецЦикла;
КонецФункции
Показать
Если фильтруется по условию, должно быть так:
а если нужно значение дополнительного реквизита то так:
PS "Возвраты" лучше сделать предопределённым значением и сразу в теле запроса писать
Запрос.Текст =
"ВЫБРАТЬ
| ОтчетКомиссионера.Ссылка КАК Ссылка
|ИЗ
| Документ.ОтчетКомиссионера КАК ОтчетКомиссионера
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ОтчетКомиссионера.ДополнительныеРеквизиты КАК ДопРек
| ПО ДопРек.Ссылка=ОтчетКомиссионера.Ссылка
| И ДопРек.Свойство = &Возвраты
| И ДопРек.Значение = &Булево
|ГДЕ
| ОтчетКомиссионера.НомерВходящегоДокумента = &Накладная";
Показатьа если нужно значение дополнительного реквизита то так:
Запрос.Текст =
"ВЫБРАТЬ
| ОтчетКомиссионера.Ссылка КАК Ссылка,
| ДопРек.Значение КАК Возвраты
|ИЗ
| Документ.ОтчетКомиссионера КАК ОтчетКомиссионера
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.ОтчетКомиссионера.ДополнительныеРеквизиты КАК ДопРек
| ПО ДопРек.Ссылка=ОтчетКомиссионера.Ссылка
| И ДопРек.Свойство = &Возвраты
|ГДЕ
| ОтчетКомиссионера.НомерВходящегоДокумента = &Накладная";
ПоказатьPS "Возвраты" лучше сделать предопределённым значением и сразу в теле запроса писать
| И ДопРек.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Возвраты)
(4)
Неверные параметры ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Возвраты
И ДопРек.Свойство = ДопРек.Свойство = ЗНАЧЕНИЕ(<<?>>ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Возвраты)
ДопРек.Свойство = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Возвраты)
Неверные параметры ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Возвраты
И ДопРек.Свойство = ДопРек.Свойство = ЗНАЧЕНИЕ(<<?>>ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Возвраты)
(4)
Так же с булево ложь не показывает
Запрос.Текст =
"ВЫБРАТЬ
| ОтчетКомиссионера.Ссылка КАК Ссылка,
| ДопРек.Значение КАК Возвраты
|ИЗ
| Документ.ОтчетКомиссионера КАК ОтчетКомиссионера
| ЛЕВОЕ СОЕДИНЕНИЕ
| Документ.ОтчетКомиссионера.ДополнительныеРеквизиты КАК ДопРек
| ПО ДопРек.Ссылка=ОтчетКомиссионера.Ссылка
| И ДопРек.Свойство = &Возвраты
|ГДЕ
| ОтчетКомиссионера.НомерВходящегоДокумента = &Накладная";
ПоказатьТак же с булево ложь не показывает
если смотреть в отладчике:
если ставить галку Возвраты, то при запросе к Объект.ДополнительныеРеквизиты.Количество() - 1
Тоесть реквизит Возвраты присутствует.
Если галка снята то Объект.ДополнительныеРеквизиты.Количество() показывает 0
если ставить галку Возвраты, то при запросе к Объект.ДополнительныеРеквизиты.Количество() - 1
Тоесть реквизит Возвраты присутствует.
Если галка снята то Объект.ДополнительныеРеквизиты.Количество() показывает 0
Столкнулся в подобной проблемой. Сначала подумал, либо шизуха, либо такое поведение платформы. Решение в 5 комментарии.
Я сначала не врубился, как это в моей задаче реализовать.. но при ОБЪЕДЕНИТЬ ВСЕ со второй таблицы этот NULL в поле появился. Завернул во временную таблицу и там уже NULL в Ложь преобразовал в итоговом запросе.
Я сначала не врубился, как это в моей задаче реализовать.. но при ОБЪЕДЕНИТЬ ВСЕ со второй таблицы этот NULL в поле появился. Завернул во временную таблицу и там уже NULL в Ложь преобразовал в итоговом запросе.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот