|
null и вид сравнения "не заполнено" в схеме компоновке данных | ☑ | ||
---|---|---|---|---|
0
phoenix777
14.11.11
✎
08:23
|
Здравствуйте. Спецы по 1С (сам я чайник только 3 месяца эской занимаюсь, и это мой первый пост так что сильно не бейте) подскажите
в схеме компоновки данных ставлю отбор по полю которое может принимать значения 0, число и null. В одной группировке указываю в качестве отбора для данного поля вид сравнения "не заполнено", в другой группировке, для этого же поля, указываю в качестве отбора вид сравнения "Равно" 0. При выводе отчета наблюдаю следущее: в группировке где установлен отбор "не заполнено" попадают все записи у которых значение поля равно 0 и null, в другой группировке выводятся только записи, у которых значение поля равно 0. Вопрос: как можно сделать отбор, если значения поля равно null(без 0, как это делает вид сравнения "не заполнено"). Скриншот демонстрирующий возникшую ситуацию:http://i3.imageban.ru/out/2011/11/14/3ff2403fdc7477c40809c6be1436ae4b.jpg В верхней части скриншота видно что если установлен вид сравннения "не заполнено", то берутся поля со значением null и 0. P.S. Пробовал также сделать вычисляемое поле со значением "null", далее для поля в качестве отбора устанвливал вид сравнения "равно" вычисляемое поле(то которое содержит null). В результате в отчете не выводятся ни записи в которых поле равно 0 и null. |
|||
1
catena
14.11.11
✎
08:27
|
=NULL не бывает. Бывает Есть NULL.
|
|||
2
Wobland
14.11.11
✎
08:29
|
(0) слабо всё понял, обрабатывай NULLы в запросе, ибо NULL такой NULL...
|
|||
3
DUDE
14.11.11
✎
08:30
|
Ты бы в отчет пока для отладки выводил поле разности тк сейчас такое ощущение, что у тебя выводится одна и та же строка документа при разных условиях, ненаглядно.
|
|||
4
DUDE
14.11.11
✎
08:37
|
(0)Из справки:
Заполнено (Filled) Описание: Осуществляет проверку поля на то, что его значение отличается от значения данного поля по умолчанию, отличное от значения Null, отличное от пустой ссылки, отличное от значения Неопределено. Для логических значений осуществляется проверка на значение Null. Для строк осуществляется проверка на отсутствие непробельных символов. Ты устанавливаешь отборы для группировок, думаю, если у тебя обрабатываемое поле - не ресурс и не группировочное, то возможно, что для самой группировки отбор не сработает. В общем будет проще, если ты расскажешь: что хочешь сделать и скинешь сюда текущий текст запроса. |
|||
5
phoenix777
14.11.11
✎
08:54
|
(4) Спасибо что откликнулись:-) По поводу того, что надо сделать: сделать надо в отчете много, поэтому опишу только одну задачу - в зависимости от значения поля "РазностьЗаказПоставщикуИПлатежПоруч"(оно как я писал может принимать значения 0, число, null, данное поле вычисляемое) распихать записи по разным группировкам. В одной группировке значение поля равно "0" (это значит заказ оплачен полностью), "число" (это значит что заказ оплачен частично), "null" заказ поставщика не оплачен. Чуть позже приведу скриншоты из консоли запросов подтверждающие что все три описанные значение данное поле принимает. Ниже привожу текст запроса.
ВЫБРАТЬ ВложенныйЗапрос1.Номенклатура, ВложенныйЗапрос1.Ссылка, ВложенныйЗапрос1.Сумма, ВложенныйЗапрос1.СуммаДокумента, ВложенныйЗапрос1.Проект ПОМЕСТИТЬ ЗаказыПоставщику ИЗ (ВЫБРАТЬ ЗаказПоставщикуТовары.Ссылка КАК Ссылка, ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура, ЗаказПоставщикуТовары.Сумма КАК Сумма, ЗаказПоставщикуТовары.Ссылка.СуммаДокумента КАК СуммаДокумента, ЗаказПоставщикуТовары.эврПроект КАК эврПроект, &Проект КАК Проект ИЗ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары ГДЕ ВЫБОР КОГДА ЗаказПоставщикуТовары.эврПроект <> ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяСсылка) ТОГДА ЗаказПоставщикуТовары.эврПроект ИНАЧЕ ЗаказПоставщикуТовары.Ссылка.эврПроект КОНЕЦ = &Проект ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗаказПоставщикуУслуги.Ссылка, ЗаказПоставщикуУслуги.Номенклатура, ЗаказПоставщикуУслуги.Сумма, ЗаказПоставщикуУслуги.Ссылка.СуммаДокумента, ЗаказПоставщикуУслуги.эврПроект, &Проект ИЗ Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщикуУслуги ГДЕ ВЫБОР КОГДА ЗаказПоставщикуУслуги.эврПроект <> ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяСсылка) ТОГДА ЗаказПоставщикуУслуги.эврПроект ИНАЧЕ ЗаказПоставщикуУслуги.Ссылка.эврПроект КОНЕЦ = &Проект) КАК ВложенныйЗапрос1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.СуммаПлатежа КАК СуммаПлатежа, ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка, ЗаказыПоставщику.Ссылка КАК Ссылка1 ПОМЕСТИТЬ ПлатежныеПоручения ИЗ Документ.ПлатежноеПоручениеИсходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеИсходящееРасшифровкаПлатежа, ЗаказыПоставщику КАК ЗаказыПоставщику ГДЕ ЗаказыПоставщику.Ссылка = ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Сделка СГРУППИРОВАТЬ ПО ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка, ЗаказыПоставщику.Ссылка, ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.СуммаПлатежа ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВнутреннийЗаказТовары.Ссылка, ЗаказыПоставщику.Ссылка КАК Ссылка1 ПОМЕСТИТЬ ВнутренниеЗаказы ИЗ Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары, ЗаказыПоставщику КАК ЗаказыПоставщику ГДЕ ВнутреннийЗаказТовары.Размещение = ЗаказыПоставщику.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТребованиеНакладнаяМатериалы.Номенклатура, ТребованиеНакладнаяМатериалы.Ссылка КАК Ссылка, ПартииТоваровНаСкладах.Стоимость КАК Стоимость, ВнутренниеЗаказы.Ссылка1 ПОМЕСТИТЬ ТребованияНакладные ИЗ Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы, РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах, ВнутренниеЗаказы КАК ВнутренниеЗаказы ГДЕ ПартииТоваровНаСкладах.Регистратор = ТребованиеНакладнаяМатериалы.Ссылка И ПартииТоваровНаСкладах.НомерСтроки = ТребованиеНакладнаяМатериалы.НомерСтроки И ПартииТоваровНаСкладах.Номенклатура = ТребованиеНакладнаяМатериалы.Номенклатура И ТребованиеНакладнаяМатериалы.ВнутреннийЗаказ = ВнутренниеЗаказы.Ссылка И ТребованиеНакладнаяМатериалы.Ссылка.Проект = &Проект СГРУППИРОВАТЬ ПО ТребованиеНакладнаяМатериалы.Номенклатура, ТребованиеНакладнаяМатериалы.Ссылка, ПартииТоваровНаСкладах.Стоимость, ВнутренниеЗаказы.Ссылка1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗаказыПоставщику.Номенклатура, ЗаказыПоставщику.Ссылка, ЗаказыПоставщику.Сумма, ЗаказыПоставщику.СуммаДокумента, ТребованияНакладные.Ссылка КАК ТребованиеНакладная, ТребованияНакладные.Номенклатура КАК Номенклатура1, ТребованияНакладные.Стоимость, ПлатежныеПоручения.СуммаПлатежа, ПлатежныеПоручения.Ссылка КАК ПлатежноеПоручение, ЗаказыПоставщику.СуммаДокумента - ПлатежныеПоручения.СуммаПлатежа КАК РазностьЗаказПоставщикуИПлатежПоруч, ЗаказыПоставщику.Сумма - ТребованияНакладные.Стоимость КАК РазностьЗаказПоставщикуИТребованиеНакладная, ЗаказыПоставщику.Проект, NULL КАК Поле1 ИЗ ЗаказыПоставщику КАК ЗаказыПоставщику ЛЕВОЕ СОЕДИНЕНИЕ ТребованияНакладные КАК ТребованияНакладные ПО ЗаказыПоставщику.Ссылка = ТребованияНакладные.Ссылка1 И ЗаказыПоставщику.Номенклатура = ТребованияНакладные.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ПлатежныеПоручения КАК ПлатежныеПоручения ПО ЗаказыПоставщику.Ссылка = ПлатежныеПоручения.Ссылка1 |
|||
6
hhhh
14.11.11
✎
09:03
|
наверно
ЗаказыПоставщику.СуммаДокумента - ЕСТЬNULL(ПлатежныеПоручения.СуммаПлатежа, 0) КАК РазностьЗаказПоставщикуИПлатежПоруч, спасет гиганта мысли. |
|||
7
phoenix777
14.11.11
✎
09:33
|
(6) Нет, маленько не то, в этом случае поле РазностьЗаказПоставщикуИПлатежПоруч, если сумма платежа платежного поручения равна null, принимает сумму сумму документа заказа поставщика и мы не сможем отфильтровать те строки в которых сумма платежа равна нулю. Хотя это подало мне идею сделать вычисляемое поле ЕСТЬNULL(ПлатежныеПоручения.СуммаПлатежа, 0) и делать отбор с видом сравнения "равно" "данное вычисляемое поле", я думал будет выводить строки когда данное поле равно 0, но в отчете вообще ничего не вывел, как и в случае null. Как и обещал, привожу скриншоты с разными значениями поля РазностьЗаказПоставщикуИПлатежПоруч: http://i2.imageban.ru/out/2011/11/14/ef536f2417b69d952bb7d3ce7573556a.jpg http://i4.imageban.ru/out/2011/11/14/67cc5b4087b626c188cb8bcb1a89cdbc.jpg
http://i2.imageban.ru/out/2011/11/14/89597fd07473c7fb59b3101b329de2e9.jpg Извините если сумбурно пишу, просто тороплюсь. Еще раз ворпрос: Как раскидать по трем разным группировкам в отчте в зависимости от значений поля РазностьЗаказПоставщикуИПлатежПоруч. Заранее спасибо. |
|||
8
phoenix777
14.11.11
✎
11:08
|
Все проблема решена, мое начальство подсказало мне использовать конструкцию
ВЫБОР КОГДА ЗаказыПоставщику.СуммаДокумента - ПлатежныеПоручения.СуммаПлатежа > 0 ТОГДА "1" КОГДА ЗаказыПоставщику.СуммаДокумента - ПлатежныеПоручения.СуммаПлатежа = 0 ТОГДА "2" ИНАЧЕ "3" КОНЕЦ КАК Поле1 И соответственно от значения поля "Поля1" делать отбор для разных группировок в схеме компоновки отчета. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |