Имя: Пароль:
1C
1С v8
Проверка на совпадения двух таблиц
0 MAPATNK2
 
naïve
17.02.17
09:19
Утро доброе(у кого утро). Есть два вложенных запроса. Каждый из которых выдает перечень проданных товаров смены. (2 смены - 2 запроса). теперь нужно проверить сколько товаров продала 1 смена, которые не продала 2 смена. XD ТОЕСТЬ 1 смена продала товар1 и товар2 а вторая смена продала товар1 и товар3 нужно вывести "товар2" тоесть 1 смена продала товар2, который не продала 2 смена. пробовал так. (Не так давно начал программировать, за банальные ошибки не ругайте, лучше подскажите)...и прошу сильно не смеяться


ВЫБРАТЬ
    ВЫБОР
        КОГДА НЕ Смена1.Значение В (Смена2.Значение)
            ТОГДА КОЛИЧЕСТВО(НЕ Смена1.Значение В (Смена2.Значение))
        ИНАЧЕ 0
    КОНЕЦ КАК Поле1
ИЗ
    (ВЫБРАТЬ
        РегистрБухгалтерииСубконто.Значение КАК Значение,
        ВЫБОР
            КОГДА ДЕНЬ(РегистрБухгалтерии.Период) В (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30)
                ТОГДА "1"
        КОНЕЦ КАК Смена
    ИЗ
        РегистрБухгалтерии.РегистрБухгалтерии КАК РегистрБухгалтерии
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Субконто КАК РегистрБухгалтерииСубконто
            ПО РегистрБухгалтерии.Регистратор = РегистрБухгалтерииСубконто.Регистратор) КАК Смена1,
    (ВЫБРАТЬ
        РегистрБухгалтерииСубконто.Значение КАК Значение,
        ВЫБОР
            КОГДА НЕ ДЕНЬ(РегистрБухгалтерии.Период) В (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30)
                ТОГДА "2"
        КОНЕЦ КАК Смена
    ИЗ
        РегистрБухгалтерии.РегистрБухгалтерии КАК РегистрБухгалтерии
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Субконто КАК РегистрБухгалтерииСубконто
            ПО РегистрБухгалтерии.Регистратор = РегистрБухгалтерииСубконто.Регистратор) КАК Смена2

СГРУППИРОВАТЬ ПО
    Смена1.Значение,
    Смена2.Значение





Но к сожалению ничего не работает. Из за ВЫБОР КОГДА НЕ Смена1.Значение В (Смена2.Значение) ТОГДА КОЛИЧЕСТВО(НЕ Смена1.Значение В (Смена2.Значение)) ИНАЧЕ 0 КОНЕЦ КАК Поле1 как раз таки нужных строк.
1 osa1C
 
17.02.17
09:23
(0) ТС зачем ты ветки плодишь на одну и ту же тему?
Язык запросов
2 osa1C
 
17.02.17
09:27
КОГДА НЕ ДЕНЬ(РегистрБухгалтерии.Период) В (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30)
                ТОГДА "2"
КОНЕЦ КАК Смена
Это кто же тебя на такой код надоумил?
3 osa1C
 
17.02.17
09:29
+ (2) попробуй для начала этим кодом получить какая смена работала в определенный день, но не за один месяц, а с 1 января по 31 марта
4 h-sp
 
17.02.17
09:42
(0) ВЫБРАТЬ
        Смена1.Товар КАК Товар
    ИЗ
        Документы.Смена.Товары КАК Смена1
        ЛЕВОЕ СОЕДИНЕНИЕ Документы.Смена.Товары КАК Смена2
        ПО Смена1.Товар = Смена2.Товар
    ГДЕ
        Смена1.Ссылка = &Смена1
        И Смена2.Ссылка = &Смена2
        И Смена2.Товар ЕСТЬ NULL
5 MAPATNK2
 
naïve
17.02.17
10:13
(3) Все работает ведь. Это главное)) Просто есть 2 смены, одни работают по четным дням, другие по нечетным, вот и пришлось выкручиваться. А есть другая возможность проверки даты на четность в Запросе?
6 Naf2017
 
17.02.17
10:50
(5) у даты нет понятия четности, есть понятие у дня месяца как числа

ВЫБОР КОГДА ДЕНЬ(Период)/2=ВЫРАЗИТЬ(ДЕНЬ(Период)/2 КАК ЧИСЛО(3,0)) ТОГДА "Четное"
ИНАЧЕ "Нечетное" КОНЕЦ
7 Живой Ископаемый
 
17.02.17
11:09
Tot можно пихнуть ТЗ в ХранилищеЗначений, и взять от него хэш. Два одинаковых хэша - две одинаковые таблицы
8 MAPATNK2
 
naïve
17.02.17
12:01
(7) Все должно реализоваться в СКД
9 Злопчинский
 
17.02.17
12:10
(5) > Просто есть 2 смены, одни работают по четным дням, другие по нечетным,

31 и 1 числа работает одна и та же смена? этак у вас одна смена всегда будет работать больше другой...
10 MAPATNK2
 
naïve
17.02.17
12:13
(9) Не страшно. Давайте пожалуйста по сути.
11 h-sp
 
17.02.17
12:49
(10) вы базу выложите, на которой тренируетесь. Очень сложно подсказывать, не зная что за конфигурация, какая структура данных.
12 osa1C
 
17.02.17
12:50
(10) А ты упрямый. Давай тогда по сути. Программирование - это не твоё. Займись чем-нибудь другим в этой жизни.
13 MAPATNK2
 
naïve
17.02.17
13:25
(11) Куда же?
14 MAPATNK2
 
naïve
17.02.17
13:28
(12) ну тут почти в каждой теме эту фразу можно найти.
Спасибо за совет, следовать ему я конечно не буду...
15 Мимохожий Однако
 
17.02.17
13:28
(0) Сделай одним запросом к двум сменам
16 FIXXXL
 
17.02.17
13:30
(0) тебе просто ФАКТ продажи по смене нужен?
17 MAPATNK2
 
naïve
17.02.17
13:34
(6) Спасибо. Работает, приму к сведению.
18 h-sp
 
17.02.17
13:37
(13) выкладывай в облако. или яндекс диск
19 MAPATNK2
 
naïve
17.02.17
13:38
(16) Первый столбец "смена" второй столбец "проданный товар".
Есть два вложенных запроса. 1 - это первая смена в первом столбце и "товары" которые она продала во втором.
2 - это вторая смена в первом столбце и "товары" которые она продала во втором.

Мне нужно их сравнивать. тоесть проверить совпадают ли товары которые продали две смены.
20 MAPATNK2
 
naïve
17.02.17
13:44
21 FIXXXL
 
17.02.17
13:50
(19) факт продажи - это наличие продажи хотя бы одной штуки
если так устроит, сделай два запроса через ОБЪЕДИНИТЬ, добавь в оба поле "1", результат положи во временную таблицу(ВТ1)
ВТ1 сгруппируй по товару, у которого "не равно 2" - это товар расхождений, положи его в ВТ2
затем ВТ2 соедини с ВТ1, у кого есть совпадения - тот и "разный"
22 MAPATNK2
 
naïve
17.02.17
14:00
(21) Наверное нужно было сразу же целиком описать задачу. данный метод если и решит, то только пол  задачи. В дальнейшем нужно будет смотреть пересечения множест проданных товаров. и ставить знак > для смены, котораяпродала множество товаров, совпадающих с множеством другой смены + другие.
23 FIXXXL
 
17.02.17
14:01
(22) ну ты не торопись, выдавливай задачу кусками
тут такое любят и сразу помогают :)
24 Serginio1
 
17.02.17
14:54
25 MAPATNK2
 
naïve
17.02.17
15:09
(24) в таблице я бы без проблем свернул. единственный мой вопрос...как это делается в запросах
26 MAPATNK2
 
naïve
17.02.17
15:19
ВЫБРАТЬ
    РегистрБухгалтерииСубконто.Значение КАК Товар,
    ВЫБОР
        КОГДА ДЕНЬ(РегистрБухгалтерии.Период) / 2 = (ВЫРАЗИТЬ(ДЕНЬ(РегистрБухгалтерии.Период) / 2 КАК ЧИСЛО(3, 0)))
            ТОГДА "Четные"
        ИНАЧЕ "Нечетные"
    КОНЕЦ КАК Смена
ИЗ
    РегистрБухгалтерии.РегистрБухгалтерии КАК РегистрБухгалтерии
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Субконто КАК РегистрБухгалтерииСубконто
        ПО РегистрБухгалтерии.Период = РегистрБухгалтерииСубконто.Период











Как вывести только четные или только нечетные?
27 Serginio1
 
17.02.17
15:22
(25) Там есть примеры и на SQL
28 Naf2017
 
17.02.17
15:26
(26) что это зап бред?
29 MAPATNK2
 
naïve
20.02.17
07:07
(28) что не так?
30 MAPATNK2
 
naïve
20.02.17
07:08
(28) Это не рабочая база, а учебная, в ней нет информации, которая могла бы быть в реальных условиях, поэтому и запросы к данным своеобразные.
31 MAPATNK2
 
naïve
20.02.17
07:09
Как МОЖНО ВЫВЕСТИ ТОЛЬКО ЧЕТНЫЕ ИЛИ ТОЛЬКО НЕЧЕТНЫЕ ДАТЫ?
32 Неверный Параметр И
 
20.02.17
07:16
(31) СПРОСИТЬ ОБ ЭТОМ ВО ВСЕХ ТЕМАХ БОЛЬШИМИ БУКВАМИ

Начать уже учиться самому не предлагать?
33 MAPATNK2
 
naïve
20.02.17
07:17
(32) С удовольствием, где бы взять материал?
34 DrZombi
 
гуру
20.02.17
07:19
(31) В цикле, зачем тебе запрос?
Вы запросом реализуйте, то что можете сделать циклом
35 Неверный Параметр И
 
20.02.17
07:21
(33) Материал - это ответы на вопросы? Нигде. Решай сам. С удовольствием.
36 MAPATNK2
 
naïve
20.02.17
07:26
(35) Слушай, если не знаешь как помочь, смысл заходить в каждую тему и поливать людей по чем зря. Если я задаю вопросы и пытаюсь понять, я уже учусь. К сожалению в методических указаниях я не нашел никакой информации по моему вопросу, поэтому и обратился сюда. Ступай мимо)
37 MAPATNK2
 
naïve
20.02.17
07:27
(34) Какой цикл? Главное условие - реализация на СКД. Никакого лишнего кода. Я бы давно все решил, но к сожалению нельзя пользоваться обработками дополнительными и доп кодом. Только то, что можно реализовать в СКД
38 Неверный Параметр И
 
20.02.17
07:28
(36) Я тоже задаю вопросы, пытаюсь понять и учусь. Тебе что-то не нравится?
39 DrZombi
 
гуру
20.02.17
07:28
(36) Ты тут халяву не найдешь. Реши сам. Найти строку в одной ТЗ, и не найти в другой, очень просто.

1. Берем одну ТЗ № 1, и в цикле проходим по каждой строчке
2. Используя Строчки в ТЗ № 1, ищем строку в ТЗ № 2. Если находим, то удаляем её из ТЗ № 2. И Удаляем её из ТЗ № 1
3. Все что останется в ТЗ № 1 и ТЗ № 2, это и будет разница.
4. В промежутке пишем все, куда либо... Вам веднее :)
40 DrZombi
 
гуру
20.02.17
07:29
(37) СКД, это отчет, Используй в СКД в качестве источника ТЗ...
41 DrZombi
 
гуру
20.02.17
07:30
(38) Да он не адекватный, и с СКД работать не умеет :)

(0)ТС держи сайтик, дарю http://1cskd.ru/2010/07/vneshnie-nabori-dannyh/
42 MAPATNK2
 
naïve
20.02.17
07:36
(41) Спасибо, приму к сведению . но необходимо выполнять в се в запросе. а не доп кодом.
43 MAPATNK2
 
naïve
20.02.17
07:38
(41) К сожалению именно СКД и языком запросов владею действительно плохо. Не просто так написал сюда)). Халявы не ищу. Просто необходимо понять , как мне в запросе получить только четные даты.
Тоесть четная дата - товар
        четная дата - товар2

Методом "тогда когда" не получается. Есть ли другие способы? без циклов и тп ?
44 MAPATNK2
 
naïve
20.02.17
07:40
(41) Либо можно поподробнее об этом методе, может литература каккая, статейки. Что это вообще такое и как пользоваться? Может действительно подойдет для моего задания.
45 Неверный Параметр И
 
20.02.17
07:42
(42) И ножкой так - топ. "Мне наааадо". И незакрытые скобочки в конце
46 DrZombi
 
гуру
20.02.17
07:59
(42) Вы можете хотеть и на луну слетать. Но не судьба :)
47 DrZombi
 
гуру
20.02.17
08:01
(43) Используй Временные ТЗ. А так, я всегда думал главное результат, а не то, как оно написано :)
48 DrZombi
 
гуру
20.02.17
08:01
(44) Вы сайтик откройте, там нет вирусов. Я азбуке не учу, увы придется самому осилить чтиво :)
49 MAPATNK2
 
naïve
20.02.17
08:20
Всем спасибо, к сожалению никто толком не помог по вопросу. Разобрался сам.
50 DrZombi
 
гуру
20.02.17
08:39
(49) Покажи хоть нас, что бы мы тоже знали :DDD
51 DrZombi
 
гуру
20.02.17
08:40
(50) нас - Нам :)
52 Мимохожий Однако
 
20.02.17
08:43
(50) Это он отомстил. И чтобы отстали ))
53 Неверный Параметр И
 
20.02.17
08:44
(49) Что пинок-то животворящий делает!
Алилуя, братия, средство найдено!
Независимо от того, куда вы едете — это в гору и против ветра!