Имя: Пароль:
1C
1С v8
Удаление пустых строк из результата запроса
,
0 andrew231
 
13.03.13
12:32
Здравстуйте! Подскажите пожалуйства каким способом можно исключить пустые строки из запроса. 1с 8.2.
В запросе при выборке стоит условие

ВЫБОР КОГДА ТЕХКАРТА.НОМЕРОПЕРАЦИИ=КОРЕКТИРОВКА.НОМЕРОПЕРАЦИИ
ТОГДА ВЫРАЖЕНИЕ1
ИНАЧЕ NULL

NULL я сделал для чтого чтобы при такой выборке ненужные строки сделать пустыми, а потом их убрать. А вот как убрать не осмыслю. Вариант выгрзит ь в ТЗ не подходит т.к. дальнейшая работа выполнется именно с результатом запроса. Как быть? Как исключить пустые строки, ну или как по ветке иначе вообще не включать в выборку строку не соотв условию. Спасибо большое!
1 andrew231
 
13.03.13
12:33
+ если нужет текст запроса я кину
2 ДенисЧ
 
13.03.13
12:33
ппц...
3 Reset
 
13.03.13
12:34
Вместо
ВЫБОР КОГДА ТЕХКАРТА.НОМЕРОПЕРАЦИИ=КОРЕКТИРОВКА.НОМЕРОПЕРАЦИИ

ТОГДА ВЫРАЖЕНИЕ1
ИНАЧЕ NULL

написать

ГДЕ ТЕХКАРТА.НОМЕРОПЕРАЦИИ=КОРЕКТИРОВКА.НОМЕРОПЕРАЦИИ
4 Eugene_life
 
13.03.13
12:34
(0) В условие запроса добавь свое сравнение. Если не выполняется - чтобы эти данные не брались вообще.
5 Starhan
 
13.03.13
12:35
просто Иначе NULL убрать XD
6 andrew231
 
13.03.13
12:41
(5) не работает
7 andrew231
 
13.03.13
12:42
(6) сложно объянить лучше запрос кину
8 sapphire
 
13.03.13
12:43
Очередной образец долбобейства....

Наложить условие ТЕХКАРТА.НОМЕРОПЕРАЦИИ=КОРЕКТИРОВКА.НОМЕРОПЕРАЦИИ
9 sapphire
 
13.03.13
12:43
(7) Это надо было сделать в (0)
10 andrew231
 
13.03.13
12:44
(9) сорри
11 andrew231
 
13.03.13
12:44
ВЫБРАТЬ
   Основной.СпецификацияСсылка,
   Основной.ТехнологическаяКартаСсылка,
   Основной.РабочийЦентр,
   60 / Основной.ВремяЦикла * Основной.КоличествоГнезд * 12 КАК НормаВыработки12,
   60 / Основной.ВремяЦикла * Основной.КоличествоГнезд КАК НормаВыработки,
   Основной.ВремяЦикла,
   Основной.МинимальнаяПартия,
   Основной.КоличествоГнезд,
   Основной.ВремяНаНастройку,
   Основной.СпецификацияСсылка.ПрессовщиковНаДеталь КАК ПрессовщиковНаДеталь,
   Основной.Выдержка / 60 КАК Выдержка
ИЗ
   (ВЫБРАТЬ
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА ТехкартыИИсходныеКомплектующие.Спецификация.Ссылка
           ИНАЧЕ NULL
       КОНЕЦ КАК СпецификацияСсылка,
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА ТехкартыИИсходныеКомплектующие.ТехнологическаяКарта.Ссылка
           ИНАЧЕ NULL
       КОНЕЦ КАК ТехнологическаяКартаСсылка,
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА ТехнологическиеКартыПроизводстваМаршрут.РабочийЦентр
           ИНАЧЕ NULL
       КОНЕЦ КАК РабочийЦентр,
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА СпецификацииНоменклатурыВыходныеИзделия.МинимальнаяПартия
           ИНАЧЕ NULL
       КОНЕЦ КАК МинимальнаяПартия,
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА ЕСТЬNULL(ТехнологическиеКартыПроизводстваМаршрут.ТехнологическаяОперация.Коэффициент, 0) * ЕСТЬNULL(ТехнологическиеКартыПроизводстваМаршрут.ВремяВыполнения, 0) * ЕСТЬNULL(ТехнологическиеКартыПроизводстваМаршрут.Количество, 0) / 60
           ИНАЧЕ NULL
       КОНЕЦ КАК ВремяЦикла,
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА КорректировкаТехКартСписокКорректировок.Выдержка
           ИНАЧЕ NULL
       КОНЕЦ КАК Выдержка,
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА ЕСТЬNULL(ТехнологическиеКартыПроизводстваМаршрут.Количество, 0)
           ИНАЧЕ NULL
       КОНЕЦ КАК КоличествоГнезд,
       ВЫБОР
           КОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
               ТОГДА ЕСТЬNULL(ТехнологическиеКартыПроизводстваМаршрут.ТехнологическаяОперацияПодготовительная.Коэффициент, 0) * ТехнологическиеКартыПроизводстваМаршрут.ВремяПодготовительнойОперации / 3600
           ИНАЧЕ NULL
       КОНЕЦ КАК ВремяНаНастройку
   ИЗ
       (ВЫБРАТЬ
           ТехнологическиеКартыСпецификацийПланированияСрезПоследних.Спецификация.Ссылка КАК Спецификация,
           ТехнологическиеКартыСпецификацийПланированияСрезПоследних.ТехнологическаяКарта.Ссылка КАК ТехнологическаяКарта,
           ТехнологическиеКартыСпецификацийПланированияСрезПоследних.КорректировкаТехКарты.Ссылка КАК КорректировкаТехКартыСсылка
       ИЗ
           РегистрСведений.ТехнологическиеКартыСпецификацийПланирования.СрезПоследних(&ДатаКон, Спецификация.Ссылка = &Спецификация) КАК ТехнологическиеКартыСпецификацийПланированияСрезПоследних
       
       СГРУППИРОВАТЬ ПО
           ТехнологическиеКартыСпецификацийПланированияСрезПоследних.Спецификация.Ссылка,
           ТехнологическиеКартыСпецификацийПланированияСрезПоследних.ТехнологическаяКарта.Ссылка,
           ТехнологическиеКартыСпецификацийПланированияСрезПоследних.КорректировкаТехКарты.Ссылка) КАК ТехкартыИИсходныеКомплектующие
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТехнологическиеКартыПроизводства.Маршрут КАК ТехнологическиеКартыПроизводстваМаршрут
           ПО ТехкартыИИсходныеКомплектующие.ТехнологическаяКарта.Ссылка = ТехнологическиеКартыПроизводстваМаршрут.Ссылка
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ВыходныеИзделия КАК СпецификацииНоменклатурыВыходныеИзделия
           ПО ТехкартыИИсходныеКомплектующие.Спецификация.Ссылка = СпецификацииНоменклатурыВыходныеИзделия.Ссылка
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КорректировкаТехКарт.СписокКорректировок КАК КорректировкаТехКартСписокКорректировок
           ПО ТехкартыИИсходныеКомплектующие.КорректировкаТехКартыСсылка.Ссылка = КорректировкаТехКартСписокКорректировок.Ссылка
   ГДЕ
       ТехнологическиеКартыПроизводстваМаршрут.ТехнологическаяОперация.Ссылка = &Прессование
       И ВЫБОР
               КОГДА НЕ ТехкартыИИсходныеКомплектующие.КорректировкаТехКартыСсылка ЕСТЬ NULL
                   ТОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
           КОНЕЦ) КАК Основной
12 andrew231
 
13.03.13
12:46
есть ли какой способ в самом результат убрать пустые строки?
13 НЕА123
 
13.03.13
12:49
ПостроительЗапроса
ИсточникДанных
14 andrew231
 
13.03.13
12:50
(4) в условие запроса нельзя
15 andrew231
 
13.03.13
12:50
(13) это способ убрать пустые строки?
16 НЕА123
 
13.03.13
12:51
(15) нет. это способ получить непустые строки.
17 andrew231
 
13.03.13
12:52
(16) можно как то подробнее пожалуйста
18 НЕА123
 
13.03.13
12:55
(17)
эээ... здесь все жадные. деньгу с тарелкой супа обожают.
19 andrew231
 
13.03.13
12:58
(18) здесь не все жадные!
20 Eugene_life
 
13.03.13
12:58
(17) Интересно, а что дальше ты с результатом запроса будешь делать? Почему нельзя вытащить в таблицу значений и поудалять оттуда пустые строки? На самый крайний случай сделай так:
1. Выполни свой запрос.
2. Выгрузи результат в ТЗ.
3. Пройди по таблице, удали все что не нужно (пустые значения)
4. Выполни запрос к новой таблице, выбери все поля.
Профит, хоть и через ж.
21 samozvanec
 
13.03.13
13:01
интересна логика удаления "пустой" строки. она вся пустая будет? нах выбираешь? не вся пустая? значит свернуть? как сворачивать?
22 andrew231
 
13.03.13
13:02
(20) Т.е. после этих действий тз снова будет типа "РезультатЗапроса". Мне не понятен пункт 4.
23 decdmb
 
13.03.13
13:02
Используй временные таблицы (ПОМЕСТИТЬ) и пакетный запрос
24 Eugene_life
 
13.03.13
13:03
(22) Да, она снова будет РезультатЗапроса, если ты пожелаешь :)
25 andrew231
 
13.03.13
13:05
(21) почитайте запрос. она вся пустая, но пустая она только в случае если нет корректировки (грубо говоря), поэтому и условие
26 samozvanec
 
13.03.13
13:05
(20) совет достоин увесистого леща, кстати. не пятница же. (22) тебе что мешает в запросе указать те же условия, по которым собираешься таблицу потом чистить?
27 andrew231
 
13.03.13
13:05
(24) пункт 4 будьте добры осветите
28 НЕА123
 
13.03.13
13:06
(27)
это те же (13).
29 Eugene_life
 
13.03.13
13:09
(27) Как-то так...
Запрос.ТекстЗапроса =
"Выбрать *
|Из МояТаблица КАК МояТаблица";
Результат = Запрос.Выполнить();
30 sapphire
 
13.03.13
13:09
(11) ТехнологическиеКартыПроизводстваМаршрут.ТехнологическаяОперация.Ссылка = &Прессование

ВОТ ЗАЧЕМ ТАК ПИСАТЬ?!
31 Eugene_life
 
13.03.13
13:10
(26) Автор не ищет легких путей наложения условий :) Предпочитает экзотику..
32 sapphire
 
13.03.13
13:11
(11) Зачем эта долбобейская муета с кейсами?
Объясни внятно, что нужно получить.
33 andrew231
 
13.03.13
13:11
(30) это не я писал я разгребаю
34 sapphire
 
13.03.13
13:12
(26) Его уже спрашивали в (8). Очередной долбобей.
35 sapphire
 
13.03.13
13:12
(33) Там разгребать нечего.
36 andrew231
 
13.03.13
13:15
(32) объясняю все по пунктам!
37 sapphire
 
13.03.13
13:19
(36) запрос в (11) переписать быстрее нежели исправлять
38 sapphire
 
13.03.13
13:20
+(36) а в (0) говорит о технической безграмотности вообще и программиста в частности.
39 samozvanec
 
13.03.13
13:27
(36) свой запрос напиши вместо этого. и не надо ничего объяснять будет
40 andrew231
 
13.03.13
13:27
1 есть регистр сведений (техкартыспецификацийпланирования).измерения "спецификация";ресурсы "техкарта"; в регистр добавлено измерение КорректировкаТехкарты (СправочникСсылка.КорректировкиТехКарт)

2 регистр заполняется в справочнике Спецификации;
3 теперь когда нужно получить отчет выполнятся запрос:
в запросе нужно по спецификации найти техкарту и заменить опр данные данными из корректировки.
41 andrew231
 
13.03.13
13:28
+замена данных в табличной части маршрут из тч справочника корректировки
42 andrew231
 
13.03.13
13:31
наверно проще все таки использовать (29). почему этот способ использовать не желательно?
43 samozvanec
 
13.03.13
13:32
(42) китайцем станешь
44 Eugene_life
 
13.03.13
13:34
(42) Потому что это по сути долбое..зм, так делать. Проще и правильнее включить в запрос условия, которые уберут пустые значения. Но если ты не хочешь идти по этому пути, то дело хозяйское.
45 andrew231
 
13.03.13
13:35
(43) хорошо стану - а нежелательно и использовать почему
46 samozvanec
 
13.03.13
13:35
(45) че ж хорошего?
47 andrew231
 
13.03.13
13:36
(44) я бы рад пойти по этому пути но тут есть свои противоречия.
48 samozvanec
 
13.03.13
13:36
(40) корректировок много, правильно понимаю? в каждой заполнено только изменяемое поле?
49 andrew231
 
13.03.13
13:38
(48) корректировок много, в каждой заполнено только изменяемое поле, вообще их несколько (изменяемых полей), но это не важно - разобраться хотябы с одним
50 samozvanec
 
13.03.13
13:42
(49) на РС с ПВХ такие вещи надо делать. отделался бы срезом последних. а история корректировок нужна? почему справочник выбрали?
51 sapphire
 
13.03.13
13:46
(47) Нет никаких противоречий.
52 andrew231
 
13.03.13
13:46
(50) потому что по каждой техкарте хранится своя корректировка, корректироку удобно хранить в справочнике в тч  с заменяемыми полями
53 andrew231
 
13.03.13
13:51
(51) есть! если поставить техкарта.номерОперации=Коректировка.НомерОпераци в условие запроса, то результат будет верным только если корректировка присутствует. если корректировки нет - запрос вообще ничего не выдаст
54 Borteg
 
13.03.13
13:51
в условии поставить не есть null.
55 andrew231
 
13.03.13
13:53
ВЫБОР
   КОГДА НЕ ТехкартыИИсходныеКомплектующие.КорректировкаТехКартыСсылка ЕСТЬ NULL
       ТОГДА ТехнологическиеКартыПроизводстваМаршрут.НомерОперации = КорректировкаТехКартСписокКорректировок.НомерОперации
КОНЕЦ
56 andrew231
 
13.03.13
13:53
(55) не работает - если нет корректировки - ничего не выдает
57 andrew231
 
13.03.13
13:55
(56) т.е. получается что условие срабатывает в любом случае
58 samozvanec
 
13.03.13
14:44
(52) т.е. корректируемые поля в ТЧ у тебя?
59 andrew231
 
13.03.13
14:54
(58) да!
60 samozvanec
 
13.03.13
14:56
(59) ну пиши их в РС и срезом последних соберешь карточку
61 andrew231
 
13.03.13
14:57
(60) РС? можно расшифровку?
62 samozvanec
 
13.03.13
14:58
Выбрать
ЕстьNULL(ПолеИзРС, ПолеИзКарточки)
ИЗ
  Карточка
     ЛевоеСоединение РСКорректировкиСрезПоследних
63 samozvanec
 
13.03.13
14:58
регистр сведений
64 samozvanec
 
13.03.13
14:59
и корректировка документом должна быть, а не справочником по науке
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший