| 
    
            
         
         | 
    
  | 
Проверка на соответствие двух таблиц документа | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    06:09 
 | 
         
        Необходимо сделать проверку на соответствие двух таблиц документа.
 
        Проверить поля Номенклатура, Характеристика, Количество в одной таблице, на соответствие полям Номенклатура, Характеристика, Количество поступления в другой таблице. Для установки статуса документа закрыт. Как правильнее проверить, что содержимое одной таблицы, равно содержимому другой таблицы?  | 
|||
| 
    1
    
        Mihasya    
     29.08.22 
            ✎
    06:15 
 | 
         
        ПОЛНОЕ СОЕДИНЕНИЕ     
         | 
|||
| 
    2
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    07:19 
 | 
         
        (1) Если таблица Товары, будет соответствовать таблице ОтметкиСклада, то будет происходить выборка?
 
        Если в них будет разница, например разное количество, то выборки не будет? ВЫБРАТЬ ХХХ_ПредварительныйЗаказПоставщикуТовары.Номенклатура КАК Номенклатура, ХХХ_ПредварительныйЗаказПоставщикуТовары.Характеристика КАК Характеристика, ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество КАК Количество, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Номенклатура КАК Номенклатура1, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Характеристика КАК Характеристика1, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.КоличествоПолученоСкладом КАК КоличествоПолученоСкладом ИЗ Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада ПОЛНОЕ СОЕДИНЕНИЕ Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары ПО (ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка = ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка) ГДЕ ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка = &Ссылка  | 
|||
| 
    3
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    07:20 
 | 
         
        поставил разное количество, все равно выбирает, какие тут тонкости ?     
         | 
|||
| 
    4
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    07:21 
 | 
         
        Соответствия полей нужно на равенство устанавливать? всех трех?     
         | 
|||
| 
    5
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    07:24 
 | 
         
        Верно ли будет так?
 
        ВЫБРАТЬ ХХХ_ПредварительныйЗаказПоставщикуТовары.Номенклатура КАК Номенклатура, ХХХ_ПредварительныйЗаказПоставщикуТовары.Характеристика КАК Характеристика, ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество КАК Количество, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Номенклатура КАК Номенклатура1, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Характеристика КАК Характеристика1, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.КоличествоПолученоСкладом КАК КоличествоПолученоСкладом ИЗ Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада ПОЛНОЕ СОЕДИНЕНИЕ Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары ПО (ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка = ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка) ГДЕ ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка = &Ссылка И ХХХ_ПредварительныйЗаказПоставщикуТовары.Номенклатура = ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Номенклатура И ХХХ_ПредварительныйЗаказПоставщикуТовары.Характеристика = ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Характеристика И ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество = ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.КоличествоПолученоСкладом  | 
|||
| 
    6
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    07:30 
 | 
         
        (3) На вот, занимайся, лень читать потом бред в 200 постов
 
        Выбрать Табличка.Номенклатура, Табличка.Харрактиристика, Сумма(Табличка.Количество) ИЗ( Выбрать ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Номенклатура КАК Номенклатура, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Характеристика КАК Характеристика, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.КоличествоПолученоСкладом КАК Количество ИЗ Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада ГДЕ ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка = &Ссылка Объединить все ХХХ_ПредварительныйЗаказПоставщикуТовары.Номенклатура, ХХХ_ПредварительныйЗаказПоставщикуТовары.Характеристика, -ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество ИЗ Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары ГДЕ ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка = &Ссылка ) как Табличка Сгруппировать По Табличка.Номенклатура,Табличка.Характеристика Имеющие Сумма(Табличка.Количество)<>0 ........... ЕстьРазница = НЕ Запрос.Выполнить().Пустой();  | 
|||
| 
    7
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    07:38 
 | 
         
        (8) Количество у таблиц, по разному называется .
 
        Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Номенклатура КАК Номенклатура, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Характеристика КАК Характеристика, | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.КоличествоПолученоСкладом КАК КоличествоПолученоСкладом, | ХХХ_ПредварительныйЗаказПоставщикуТовары.Номенклатура КАК Номенклатура1, | ХХХ_ПредварительныйЗаказПоставщикуТовары.Характеристика КАК Характеристика1, | ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество КАК Количество |ИЗ | Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада | ПОЛНОЕ СОЕДИНЕНИЕ Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары | ПО ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка = ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка |ГДЕ | ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Ссылка = &Ссылка | И ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Номенклатура = ХХХ_ПредварительныйЗаказПоставщикуТовары.Номенклатура | И ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Характеристика = ХХХ_ПредварительныйЗаказПоставщикуТовары.Характеристика | И ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.КоличествоПолученоСкладом = ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество";  | 
|||
| 
    8
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    07:39 
 | 
         
        (7) Сначала делаю связь таблицы ОтметкиСклада потом Товары. И по полям.     
         | 
|||
| 
    9
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    07:42 
 | 
         
        (6) Хотя да у вас псевдонимы устанавливаются же в первом запросе объединения.
 
        Понял спасибо. Но а (7) то же, же будет работать правильно? В (6) другая структура запроса, с той же логикой? (7) -> (6)  | 
|||
| 
    10
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    07:46 
 | 
         
        (9) Читать то умеешь ? Тебе дали готовый код, пользуйся. Своё выкинь в топку.     
         | 
|||
| 
    11
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    08:36 
 | 
         
        (10) Понятно. Хотел узнать, что не так в моем коде. У вас своя технология.     
         | 
|||
| 
    12
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    08:57 
 | 
         
        (11) нет никакой "технологии", почитай на ночь, что еть full join и чем это отличается от union all     
         | 
|||
| 
    13
    
        Ryzeman    
     29.08.22 
            ✎
    09:00 
 | 
         
        (12) Как говорили умные люди - ливингстара учить - только портить. Не почитает, а если почитает и поймёт, то не усвоит и не запомнит точно)     
         | 
|||
| 
    14
    
        6awkup_true    
     29.08.22 
            ✎
    09:01 
 | 
         
        а еще можно добавить строки второй таблицы в первую и свернуть итоговую таблицу. если количество строк не изменилось по сравнению с первой - таблицы идентичны     
         | 
|||
| 
    15
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    09:19 
 | 
         
        (6) Я хотел в консоле ваш запрос открыть не открывается.     
         | 
|||
| 
    16
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    09:20 
 | 
         
        (6) Как это применять , если это не работает.
 
        Я понимаю, что вы набросали. и все понимаете, как там и что.  | 
|||
| 
    17
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    09:21 
 | 
         
        (16) а чего, копипасте сломал уже ?     
         | 
|||
| 
    18
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    09:21 
 | 
         
        что значит "не работает" ?     
         | 
|||
| 
    19
    
        СеменовСемен    
     29.08.22 
            ✎
    09:22 
 | 
         
        (1) лучше объединить     
         | 
|||
| 
    20
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    09:25 
 | 
         
        (16) если че, после Объединить все воткни слово выбрать     
         | 
|||
| 
    21
    
        rsv    
     29.08.22 
            ✎
    09:34 
 | 
         
        (0) union all  . В первой табличке доп поле -1
 
        Во второй +1. Группировка по полям и Сумма по доп . полю и having <>0  | 
|||
| 
    22
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    09:36 
 | 
         
        так открывается конструктор
 
        ВЫБРАТЬ ТАБЛИЧКА.Номенклатура КАК Номенклатура, ТАБЛИЧКА.Характеристика КАК Характеристика, СУММА(ТАБЛИЧКА.Количество) КАК Количество ИЗ (ВЫБРАТЬ ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Номенклатура КАК Номенклатура, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.Характеристика КАК Характеристика, ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада.КоличествоПолученоСкладом КАК Количество ИЗ Документ.ХХХ_ПредварительныйЗаказПоставщику.ОтметкиСклада КАК ХХХ_ПредварительныйЗаказПоставщикуОтметкиСклада ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ХХХ_ПредварительныйЗаказПоставщикуТовары.Номенклатура, ХХХ_ПредварительныйЗаказПоставщикуТовары.Характеристика, ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество ИЗ Документ.ХХХ_ПредварительныйЗаказПоставщику.Товары КАК ХХХ_ПредварительныйЗаказПоставщикуТовары ГДЕ ХХХ_ПредварительныйЗаказПоставщикуТовары.Ссылка = &Ссылка) КАК ТАБЛИЧКА СГРУППИРОВАТЬ ПО ТАБЛИЧКА.Номенклатура, ТАБЛИЧКА.Характеристика ИМЕЮЩИЕ СУММА(ТАБЛИЧКА.Количество) <> 0  | 
|||
| 
    23
    
        rsv    
     29.08.22 
            ✎
    09:41 
 | 
         
        (0) но лучше конечно выгрузить в xml потом в json и обратно. 
 
        Хоия бы 1с задействуем  | 
|||
| 
    24
    
        rsv    
     29.08.22 
            ✎
    09:42 
 | 
         
        :)     
         | 
|||
| 
    25
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    09:44 
 | 
         
        Не совсем понимаю этот запрос (6) . Есть, документ.
 
        Там 2 тч, ОтметкиСклада и Товары. В них поля, Номенклатура, Характеристика, Количество (КоличествоПолученоСкладом). Нужно что бы, если в 1 тч, количество 1, во второй 2, уже не выбиралось. (6) этого не сделает. (7) это сделает.  | 
|||
| 
    26
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    09:44 
 | 
         
        (26) Так же. если разные номенклатура или характеристика. тоже.     
         | 
|||
| 
    27
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    09:52 
 | 
         
        (25) ну п..ц 
 
        (6) тебе на выходе ЕстьРазница = НЕ Запрос.Выполнить().Пустой(); покажет, есть разница или нет. При желании, можно обойти выборкой запрос (если результат не пустой) и посмотреть, в какой номенклатуре разница  | 
|||
| 
    28
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    09:53 
 | 
         
        (22) Пилять, скажи честно, кто у тебя копипасте отобрал ? 
 
        Куда Минус дел в селект листе вот тут : -ХХХ_ПредварительныйЗаказПоставщикуТовары.Количество  | 
|||
| 
    29
    
        Ryzeman    
     29.08.22 
            ✎
    09:53 
 | 
         
        (25) у тебья две табличный части
 
        Номенклатура Характеристика Количество Персик Свежий 1 Груша Гнилой 2 Персик Свежий 1 В другой Персик Свежий 2 Груша Гнилой 2 Ты делаешь из них одну таблицу, где в первой таблице берёшь количество в плюс, а во второй минус. Потом группируешь (складываешь) по номенклатуре и характеристике - полям которые должны совпадать Персик Свежий 1 Груша Гнилой 2 Персик Свежий 1 Персик Свежий -2 Груша Гнилой -2 Итог Персик Свежий 0 Груша Гнилой 0 Если по сумме обе таблички совпадают, то результат запроса будет пустым и проверка пройдена. Иначе результатом запроса будет разница первой табличной части от второй. Что важно - по суммарному количеству. Так как у тебя ERP да ещё и какой то самописный документ, возможно, надо делать отбор по отменённым строкам или по статусам там, хз что  | 
|||
| 
    30
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    09:54 
 | 
         
        Ливинг стар, дарю:
 
        Ctrl+C или Ctrl+Ins - это Copy Ctrl+v или Shift+Ins - это Paste Пользуйся  | 
|||
| 
    31
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    10:06 
 | 
         
        (14) Интересный вариант. Главное надежный. Тут дело в том что не имеет значение, где что не так.
 
        Нужно пока было. только сравнение. Равны они или нет.  | 
|||
| 
    32
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    10:08 
 | 
         
        (31) Это делает и (6)     
         | 
|||
| 
    33
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    10:16 
 | 
         
        (32) У меня был пример, -
 
        В первой тч количество 1, во второй 2. Ну он выбирает запись с 1. Из 2 минусует 1 и все. А должен ничего не выбрать вообще. так как таблицы не равны. http://joxi.ru/BA0qa4Ni1kY6or Может я что не так понимаю конечно.  | 
|||
| 
    34
    
        Kassern    
     29.08.22 
            ✎
    10:17 
 | 
         
        "Может я что не так понимаю конечно." - более чем вероятно     
         | 
|||
| 
    35
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    10:24 
 | 
         
        (33) 
 
        ЕстьРазница = НЕ Запрос.Выполнить().Пустой()  | 
|||
| 
    36
    
        NIGHTHUNTER    
     29.08.22 
            ✎
    10:24 
 | 
         
        (35) Понятно, он наоборот что то выбирает, если таблицы разные получается?     
         | 
|||
| 
    37
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    10:25 
 | 
         
        Для тех кто в танке, если запрос не пустой - то таблички "не равны". Если пустой- равны.
 
        Хочешь чтоб было наеборот, поменяй условие на так ИМЕЮЩИЕ СУММА(ТАБЛИЧКА.Количество) = 0  | 
|||
| 
    38
    
        Ёпрст    
     гуру 
    29.08.22 
            ✎
    10:26 
 | 
         
        Пилять, тупизна, она заразная.. как в (37) с =0 делать не ннадо     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |