|
Сравнение двух таблиц 1с | ☑ | ||
---|---|---|---|---|
0
VismuT
25.03.24
✎
16:22
|
Всем здравствуйте !
1с 8.3.Обычное приложение . Есть таблица в обработке , которая подгружается с Рег.свед. Вторую таблицу значений получаю запросом из документа. Нужно сравнить первую таблицу со второй и подкрасить совпадающую номенклатуру в первой таблице. Например: Таблица с обработки. Банан
Яблоко Огурец Груша Апельсин Лимон Таблица значений получена с запроса из документа . Банан
Апельсин Груша Делаю. Получается лажа. Если ли статья по этой теме нормальная ? |
|||
1
Злопчинский
25.03.24
✎
15:34
|
Надо делать так как надо, а как не надо - делать не надо...
(с) В.Пух . Что не получается-то..? задача же тривиальная даже втупую решить. Вряд ли там в ТЗ десятки тысяч строк... |
|||
2
АгентБезопасной Нацио
25.03.24
✎
15:40
|
"Делай п..то, х..во само получится!"©
Т.е. делай так, чтоб не получалась лажа. Только и всего. А что именно ты делаешь - нам неведомо... |
|||
3
Злопчинский
25.03.24
✎
15:47
|
тупое решение:
Цикл по тЗ из запроса Для каждой из ТЗЗапрос ТЗсписок.НайтиЗначение(); Если найдено тогда подкрасить найденную строку циклВсе . в таком решении-то что не получается? |
|||
4
VismuT
25.03.24
✎
15:50
|
(1) Да ,там больше 100 строк не бывает хД
|
|||
5
Жан Пердежон
25.03.24
✎
15:59
|
а вот на УФ сделал бы дин.список с условным оформлением...
|
|||
6
Злопчинский
25.03.24
✎
16:00
|
(4) ну, получилось по (3)..?
|
|||
7
Галахад
25.03.24
✎
16:07
|
(0) Почитай про соединения в запросе.
|
|||
8
tesei
25.03.24
✎
16:10
|
1-я таблица, 2 колонки, 1-я колонка значение, 2-я колонка Количество = 1.
2-я таблица, 2 колонки, 1-я колонка значение, 2-я колонка Количество = -1. 3-я таблица = сумма таблиц 1 и 2. Сворачиваем по ("Значение", "Количество"). Если в таблице количество = 1, то значение есть только в первой таблице, если количество = -1, то значение есть только во 2-й таблице. |
|||
9
Злопчинский
25.03.24
✎
16:14
|
(8) тут еще надо модифицировать первую таблицу...
|
|||
10
VismuT
25.03.24
✎
16:16
|
(6) ДокументССылка = ПолеВводаДокумент;
ТоварыСписок = Новый СписокЗначений; ТоварыСписок.ЗагрузитьЗначения(Товары.ВыгрузитьКолонку("Номенклатура")); Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ДокументССылка); ТаблицаЗначений = Запрос.Выполнить().Выгрузить(); Для Каждого СтрокаТаблицы Из ТаблицаЗначений Цикл ТоварыСписок.НайтиЗначение(); Если КонецЦикла; Я на правильном пути? |
|||
11
Злопчинский
25.03.24
✎
16:17
|
Идите, идите...
|
|||
12
Волшебник
25.03.24
✎
16:19
|
(10) Нет. Сопоставление надо делать запросом
|
|||
13
Волшебник
25.03.24
✎
16:22
|
(8) Да, так можно, только это надо сделать ЗАПРОСОМ.
|
|||
14
Галахад
25.03.24
✎
16:24
|
Тогда уж.
"ВЫБРАТЬ | Т.Номенклатура |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК Т |ГДЕ | Т.Ссылка = &Ссылка И Т.Номенклатура В (&ТоварыСписок)"; |
|||
15
VismuT
25.03.24
✎
16:33
|
(7) Спасибо.Делаю.
|
|||
16
Гена
25.03.24
✎
16:47
|
Соединить в одну обе ТЗ и стандартный поиск дублей.
|
|||
17
Волшебник
25.03.24
✎
17:54
|
(16) Он как раз пишет поиск дублей
|
|||
18
Злопчинский
25.03.24
✎
18:40
|
Осталось понять/увидеть как в запросе запихнуть в совпадающие строки в первую ТЗ что-то что дает подкраску...
. |
|||
19
Волшебник
25.03.24
✎
19:10
|
(18) подсказываю:
ВЫБРАТЬ поле КАК ПолеВТаблице1, ЕСТЬNULL(Таблица2.поле, ЛОЖЬ) КАК ПолеВТаблице2 ИЗ Таблица1 ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 ПО Таблица1.поле = Таблица2.поле Можно внедрить в запрос динамического списка. Подкрашивать по условию ПолеВТаблице2= ЛОЖЬ/ИСТИНА |
|||
20
Гена
25.03.24
✎
19:00
|
Дожили... бананы стали красить...
|
|||
21
Волшебник
25.03.24
✎
19:08
|
(20) Партия бананов, пришедшая после нормативного срока годности, обязана быть выложена на прилавки первой, чтобы не сгнить до момента продажи. Вполне рабочий запрос для мерчендайзера, который подсказывает, из какой коробки брать бананы для торгового зала.
|
|||
22
Волшебник
25.03.24
✎
19:25
|
Выдуманные примеры запросов с временными таблицамиВыбираем свежие для мерчендайзера: ВЫБРАТЬ товар КАК ТоварВЗонеРазгрузки, ЕСТЬNULL(ПросроченныеТовары.товар, ЛОЖЬ) КАК ПросроченныйТовар ИЗ ТоварыВЗонеРазгрузки ЛЕВОЕ СОЕДИНЕНИЕ ПросроченныеТовары ПО ТоварыВЗонеРазгрузки.товар = ПросроченныеТовары.товар ГДЕ ЕСТЬNULL(ПросроченныеТовары.товар, ЛОЖЬ) = ЛОЖь Выбираем просроченные для списания в утиль: ВЫБРАТЬ товар КАК ТоварВЗонеРазгрузки, ЕСТЬNULL(ПросроченныеТовары.товар, ЛОЖЬ) КАК ПросроченныйТовар ИЗ ТоварыВЗонеРазгрузки ЛЕВОЕ СОЕДИНЕНИЕ ПросроченныеТовары ПО ТоварыВЗонеРазгрузки.товар = ПросроченныеТовары.товар ГДЕ НЕ ЕСТЬNULL(ПросроченныеТовары.товар, ЛОЖЬ) = ЛОЖь |
|||
23
Злопчинский
25.03.24
✎
22:09
|
Ну, ждём итоговый код от ТС
|
|||
24
Волшебник
25.03.24
✎
22:28
|
(23) Жди, баран, пока трава вырастет... Пословица
|
|||
25
DimVad
26.03.24
✎
07:02
|
Можно сделать как в (3) только ТЗсписок проиндексировать.
А можно сперва ТЗсписок загнать в соответствие. Что в соответствии что в проиндексированном ТЗ поиск ссылки будет ну очень быстрый. |
|||
26
АгентБезопасной Нацио
26.03.24
✎
08:37
|
(25) да можно сделать разными путями - хоть одним запросом,
к РС и документу, хоть обработкой выгруженных ТЗ (хоть перебором, хоть запросом, хоть сверткой), хоть соответствием. Просто ТС хочет, чтоб сделали за него... |
|||
27
VismuT
27.03.24
✎
15:37
|
(26) Сделал запросом, и выполнил внутреннее соединение. В ТЗ осталось ,что мне нужно.
Я никогда не просил , чтобы за меня что-то сделали . |
|||
28
Волшебник
27.03.24
✎
15:39
|
(27) Покажите запрос
|
|||
29
VismuT
27.03.24
✎
16:32
|
(28) ДокументССылка = ПолеВводаДокумент;
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Товары", Товары.Выгрузить()); Запрос.УстановитьПараметр("Ссылка", ДокументССылка); Запрос.Текст ="ВЫБРАТЬ | ВЫРАЗИТЬ(ВТ_Товары.Печатать КАК БУЛЕВО) КАК Печатать, | ВЫРАЗИТЬ(ВТ_Товары.Весы КАК Справочник.ТорговоеОборудование) КАК Весы, | ВЫРАЗИТЬ(ВТ_Товары.КодПЛУ КАК ЧИСЛО(15, 0)) КАК КодПЛУ, | ВЫРАЗИТЬ(ВТ_Товары.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура, | ВЫРАЗИТЬ(ВТ_Товары.Цена КАК ЧИСЛО(15, 2)) КАК Цена, | ВЫРАЗИТЬ(ВТ_Товары.ПредставлениеКнопки КАК ЧИСЛО(15, 0)) КАК ПредставлениеКнопки |ПОМЕСТИТЬ ВТ_товары |ИЗ | &Товары КАК ВТ_Товары |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_товары.Печатать, | ВТ_товары.КодПЛУ, | ВТ_товары.Номенклатура, | ВТ_товары.Цена, | ВТ_товары.Весы, | ВТ_товары.ПредставлениеКнопки |ИЗ | ВТ_товары КАК ВТ_товары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ПО (ПоступлениеТоваровУслугТовары.Номенклатура = ВТ_товары.Номенклатура) |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка"; Товары.Очистить(); ТаблицаЗначений = Запрос.Выполнить().Выгрузить(); Товары.Загрузить(ТаблицаЗначений); |
|||
30
Волшебник
27.03.24
✎
16:38
|
(29) А в задании было "Нужно сравнить первую таблицу со второй и подкрасить совпадающую номенклатуру в первой таблице."
|
|||
31
VismuT
27.03.24
✎
16:45
|
(30)
Не нужно выбирать товар который подкрашен ,и тыкать галочки вручную. Печатается то, что пришло по документу поступление. |
|||
32
Волшебник
27.03.24
✎
16:47
|
(31) По мне так бред. Но если Вас устраивает, то ок
|
|||
33
VismuT
27.03.24
✎
16:54
|
(32) Показал. Сказали лучше ,чем с подкрашиванием . Не нужно выбирать позиции . Просто печать нажал и все .
Всем спасибо . |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |