|
Проверка на соответствие двух таблиц документа | ☑ | ||
---|---|---|---|---|
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 делать не ннадо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |