Имя: Пароль:
1C
 
Найти разницу между ТЗ и справочником.
,
0 Kongo2019
 
06.02.20
15:48
Доброго.
Найти разницу между ТЗ и справочником.
Есть ТЗ, в ней два поля,
есть справочник, в нем два аналогичных по типу реквизита.
Необходимо найти разницу.
То что есть в ТЗ но нет с справочнике, ТЗ здесь главная.
Никак не соображу какое условие в запросе сделать.
Сравнение по двум полям.
Может кто решал такую задачу?
1 vicof
 
06.02.20
15:50
условие на не равно поставить
2 Kongo2019
 
06.02.20
15:52
А фиг тама.
Работает только первый раз.
Потом выдает все на все.
3 DTX 4th
 
06.02.20
15:54
А как сейчас выглядит запрос?
4 Ненавижу 1С
 
гуру
06.02.20
15:54
левое соединение по равенству и условие на Ссылка ЕСТЬ NULL
5 H A D G E H O G s
 
06.02.20
15:56
ВЫБРАТЬ
ТЗ.Поле1,
ТЗ.Поле2
ИЗ
ТЗ
ЛевоеСоединение
ТЗ.Поле1=Спр.Поле1 и
ТЗ.Поле2=Спр.Поле2
Где Спр.Поле1 ЕСТЬ NULL
6 Garykom
 
гуру
06.02.20
15:57
(4) А вот мне больше нравится правое соединение (можно же справочник взять слева а ТЗ справа) и хочешь сказать не выйдет?
7 Kongo2019
 
06.02.20
15:57
(3) ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ПОМЕСТИТЬ НоменклатураДата
ИЗ
    &НоменклатураДата КАК НоменклатураДата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ИЗ
    Справочник.Партия КАК Партия
        ЛЕВОЕ СОЕДИНЕНИЕ НоменклатураДата КАК НоменклатураДата
        ПО (НоменклатураДата.Номенклатура <> Партия.Номенклатура)
            И (НоменклатураДата.ДатаПартии <> Партия.ДатаПартии)
8 Ненавижу 1С
 
гуру
06.02.20
15:57
(6) я не против, но конструктор запроса любит левое
9 Garykom
 
гуру
06.02.20
15:57
(5) Скосячил
10 Garykom
 
гуру
06.02.20
15:58
(8) Пофиг на конструктор, главное чтобы sql сервер любил
11 H A D G E H O G s
 
06.02.20
16:01
ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ПОМЕСТИТЬ НоменклатураДата
ИЗ
    &НоменклатураДата КАК НоменклатураДата
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ИЗ
    НоменклатураДата КАК НоменклатураДата
        ЛЕВОЕ СОЕДИНЕНИЕ  Справочник.Партия КАК Партия
        ПО (НоменклатураДата.Номенклатура = Партия.Номенклатура)
            И (НоменклатураДата.ДатаПартии = Партия.ДатаПартии)
ГДЕ Партия.Номенклатура ЕСТЬ NULL
12 pechkin
 
06.02.20
16:03
(10) Любителям правых соединений - отдельный котел
13 Garykom
 
гуру
06.02.20
16:05
Я бы так наверно

ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии,
    Партия.Ссылка
ИЗ
    НоменклатураДата КАК НоменклатураДата
        ЛЕВОЕ СОЕДИНЕНИЕ  Справочник.Партия КАК Партия
        ПО (НоменклатураДата.Номенклатура = Партия.Номенклатура)
            И (НоменклатураДата.ДатаПартии = Партия.ДатаПартии)
ГДЕ Партия.Ссылка ЕСТЬ NULL

Но почему хз
14 Kongo2019
 
06.02.20
16:07
(11) Что-то пусто на выходе.
15 Kongo2019
 
06.02.20
16:08
(13) То же не сработало.
16 piter3
 
06.02.20
16:09
(15) Хм,что бы до 100 ветки не доходить,а сам глазами видел в базе нужные входные данные?
17 Garykom
 
гуру
06.02.20
16:10
(15) Убери условие
ГДЕ Партия.Ссылка ЕСТЬ NULL

И глянь что выводит
18 Kongo2019
 
06.02.20
16:12
(16) Выдел.
19 Garykom
 
гуру
06.02.20
16:13
(18) У всех ссылка заполнена?
20 Kongo2019
 
06.02.20
16:15
(17)Пусто, Пусто, Элемент из справочника.
Весь справочник.
Сейчас кеш почищу
21 Garykom
 
гуру
06.02.20
16:19
(20) Ты чего то скосячил, при левом из (13) должна выводиться вся ТЗ и к каждой строчке подбираться из справочника или пусто.
Никаких пустых Номенклатура и ДатаПартии не должно быть
22 Kongo2019
 
06.02.20
16:21
(21)Согласен.
Да вот блин три строчки, косяка не вижу.
23 Kongo2019
 
06.02.20
16:32
(21) Нашел косяк. Соединение было неправильно.
24 Kongo2019
 
06.02.20
16:37
Теперь пофигу есть условие или нет.
Теперь выводится
Номенклатура, дата, пустое полк
и так вся ТЗ.
походу с датой что-то не так.
В запросе дата так - 11.09.2015 0:00:00
а в реквизите просто - 11.09.2015
25 H A D G E H O G s
 
06.02.20
16:43
(24) ну там секунды не показываются
26 H A D G E H O G s
 
06.02.20
16:43
или тупо строка небось
27 pechkin
 
06.02.20
16:45
(26) если выборка пуста, то получаетс все партии есть
28 Kongo2019
 
06.02.20
16:45
(26)Нет. В реквизите  тип - дата, состав дата - дата. То бишь в реквизите времени нет.
может поэтому?
29 Said_We
 
06.02.20
16:46
Даты приведи к началу периоду НАЧАЛОПЕРИОДА(ДатаПартии , ДЕНЬ)
30 Said_We
 
06.02.20
16:46
Обе даты
31 Kongo2019
 
06.02.20
16:46
(27) Выборка вот сейчас тупо выводить мое ТЗ. и пустое поле Ссылка.
32 Said_We
 
06.02.20
16:50
(31) Так такое условие и поставил
ГДЕ Партия.Ссылка ЕСТЬ NULL
33 Kongo2019
 
07.02.20
09:12
(32) Ну так какое порекомендовали такое и вставил.
34 Kongo2019
 
07.02.20
09:13
(29) Ну получается. Даже с одной
Неверные параметры "НАЧАЛОПЕРИОДА"
И НАЧАЛОПЕРИОДА(<<?>>НоменклатураДата.ДатаПартии, День) = Партия.ДатаПартии
35 catena
 
07.02.20
09:23
(34)Не дата в таблице, видимо
36 Kongo2019
 
07.02.20
09:31
(35) Ну да, это я делал в консоли, пакет инструменты разработчика.
Загнал в код, ошибки нет.
Но все равно выводится тупо моя таблица значений.
37 crasler
 
07.02.20
09:31
ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ПОМЕСТИТЬ НоменклатураДата
ИЗ
    &НоменклатураДата КАК НоменклатураДата
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ИЗ
    НоменклатураДата КАК НоменклатураДата
ГДЕ НЕ (НоменклатураДата.Номенклатура, НоменклатураДата.ДатаПартии)
   В (ВЫБРАТЬ Номенклатура, ДатаПартии ИЗ Справочник.Партия)
38 Kongo2019
 
07.02.20
09:33
Вот писание мой ТЗ, может тут косяк?
тзНоменклатураДата = Новый ТаблицаЗначений;
тзНоменклатураДата.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
тзНоменклатураДата.Колонки.Добавить("ДатаПартии", Новый ОписаниеТипов("Дата"));
39 Kongo2019
 
07.02.20
09:40
(37) Это ты что-то жесткое предложил.
Получаю окошко.
Ошибка SDBL:
Вложенный результат в запросе, вложенном в IN
И две кнопки
Завершить работу, Перезапустить.
40 crasler
 
07.02.20
09:47
(39) А так

ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ПОМЕСТИТЬ НоменклатураДата
ИЗ
    &НоменклатураДата КАК НоменклатураДата
;
ВЫБРАТЬ А.Номенклатура, А.ДатаПартии ПОМЕСТИТЬ Партия ИЗ Справочник.Партия КАК А
;
ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ИЗ
    НоменклатураДата КАК НоменклатураДата
ГДЕ НЕ (НоменклатураДата.Номенклатура, НоменклатураДата.ДатаПартии)
   В (ВЫБРАТЬ А.Номенклатура, А.ДатаПартии ИЗ Партия КАК А)
41 Kongo2019
 
07.02.20
09:50
(40) Таблица не найдена "Партия"
В (ВЫБРАТЬ А.Номенклатура, А.ДатаПартии ИЗ <<?>>Партия КАК А)
42 crasler
 
07.02.20
09:57
(41) А так, менеджер временных таблиц установлен?
(39) А так

ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ПОМЕСТИТЬ НоменклатураДата
ИЗ
    &НоменклатураДата КАК НоменклатураДата
;
ВЫБРАТЬ А.Номенклатура, А.ДатаПартии
ПОМЕСТИТЬ Партии
ИЗ
    Справочник.Партия КАК А
;
ВЫБРАТЬ
    НоменклатураДата.Номенклатура,
    НоменклатураДата.ДатаПартии
ИЗ
    НоменклатураДата КАК НоменклатураДата
ГДЕ НЕ (НоменклатураДата.Номенклатура, НоменклатураДата.ДатаПартии)
   В (ВЫБРАТЬ А.Номенклатура, А.ДатаПартии ИЗ Партии КАК А)
43 Said_We
 
07.02.20
10:01
(34) Тебе написали в (35) что не дата у тебя там. Посмотри что. Какой тип?
44 Kongo2019
 
07.02.20
10:04
(43) Дата, проверил.
в (38) описание моей ТЗ.
45 catena
 
07.02.20
10:06
(36)Давай итоговый запрос на данный момент и еще раз внятно, чего хочешь.
46 Said_We
 
07.02.20
10:07
(44) Картинку покажи, где видно что дата.
47 1Сергей
 
07.02.20
10:09
(44) а в справочнике?
48 Kongo2019
 
07.02.20
10:17
Блин, какая-то магия.
Текущий запрос
"ВЫБРАТЬ
                   |    НоменклатураДата.Номенклатура,
                   |    НоменклатураДата.ДатаПартии
                   |ПОМЕСТИТЬ НоменклатураДата
                   |ИЗ
                   |    &НоменклатураДата КАК НоменклатураДата
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    НоменклатураДата.Номенклатура КАК Номенклатура,
                   |    НоменклатураДата.ДатаПартии КАК ДатаПартии,
                   |    Партия.Ссылка
                   |ИЗ
                   |    НоменклатураДата КАК НоменклатураДата
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партия КАК Партия
                   |        ПО НоменклатураДата.Номенклатура = Партия.Номенклатура
                   |            И (НАЧАЛОПЕРИОДА(НоменклатураДата.ДатаПартии, ДЕНЬ) = НАЧАЛОПЕРИОДА(Партия.ДатаПартии, ДЕНЬ))
                   |ГДЕ
                   |    Партия.Ссылка ЕСТЬ NULL";

Добавил только
Партия.Ссылка и все заработало.
Почему так?
49 Kongo2019
 
07.02.20
10:18
(47) В реквизите  тип - дата, состав дата - дата. То бишь в реквизите времени нет
50 Said_We
 
07.02.20
10:32
(49) Дата со временем и дата без времени, это в общем случае две разные даты.
51 Kongo2019
 
07.02.20
10:36
(50) Логично, но блин начал запрос корено работать не тогда когда я дата привел к одному.
А добавил поле.
Партия.Ссылка
52 Said_We
 
07.02.20
10:42
(52) А если сейчас убрать, то перестанет работать?
53 Kongo2019
 
07.02.20
10:50
(52) Ага, выводит всю мою ТЗ.
54 catena
 
07.02.20
10:55
(53)Не верю. Скрин покажи
55 Kongo2019
 
07.02.20
11:00
(54) Сам в шоке. Чего скрин показать?
56 Kongo2019
 
07.02.20
11:01
(13) Мне вот тут тоже так предлагали делать.
57 Said_We
 
07.02.20
11:03
(55) В СКД делаешь или в консоле обычной?
58 Kongo2019
 
07.02.20
11:06
(57)В консоли давал ошибку см на (34). Поэтому я сделал обработку, вынес туда этот кусок, и выводил результат через Сообщить.
59 Said_We
 
07.02.20
11:09
Ошибка могла быть из-за ТЗ. Как её в консоль запихивал?
60 Kongo2019
 
07.02.20
11:13
(59) В параметры, там есть такая возможность, загрузить из файла.
Я понял, что она там как текст грузилась. Поэтому и ушёл код в обработке отлаживать.
61 Said_We
 
07.02.20
11:24
(60) Если как текст, то поэтому и дата это совсем не дата. Поэтому и не отработало НАЧАЛОПЕРИОДА().
Для теста можно было несколько строк загнать руками в консоле в ВТ "НоменклатураДата":

ВЫБРАТЬ &Номенклатура1 как Номенклатура, ДатаВремя(2020,2,7) КАК ДатаПартии Поместить НоменклатураДата
Объединить все &Номенклатура2, ДатаВремя(2020,1,4)
Объединить все &Номенклатура3, ДатаВремя(2019,12,17);
62 Kongo2019
 
07.02.20
11:49
(61) Об этом я не подумал. Спасибо.