Имя: Пароль:
1C
1С v8
Сравнение ТЗ и ТабЧасти с выявлением расхождений.НУЖНА Подсказка!
0 Sergeich737
 
03.09.14
10:10
Вообщем есть ТЗ и ТабЧасть, нужно выявить расхождения в них. ТЗ получаю из запроса, ТабЧасть уже заполнена. Расхождения нужно отразить в ТабЧасти цветом фона строки. Вообщем сегодня голова варит туго, не могу правильно сообразить как сравнить. Алгоритм правильный не как  не построю.
1 Steini
 
03.09.14
10:12
1 вариант: определиться, какие колонки играют роль измерений (как в регистре), какие - ресурсы, и делать соединение - далее анализировать и подсвечивать
2 palpetrovich
 
03.09.14
10:15
как второй вариант  - тупо в процедуре, к примеру,  приПолученииДанных - искать нужное в ТЗ - ну и красить в зависимости от результата поиска
зы: ну и версию озвучивать как-бы не лишнее :)
3 Steini
 
03.09.14
10:17
(2) ПриПолученииДанных никаких поисков по ТЗ! Долго работать будет, тормозить при листании списка. (ИМХО + опыт)
4 Широкий
 
03.09.14
10:17
Надо сначала определиться - что есть расхождения?
5 Широкий
 
03.09.14
10:18
(3) Опыт :)))
6 Рэйв
 
03.09.14
10:24
(0)Если таблица одинаковые по структуре, то просто пробегай их синхронно по строкам и сравнивай по колонкам.

А если структуры разные то они неодинаковые с самого начала:-)
7 palpetrovich
 
03.09.14
10:25
(3) хз, но остаток считается в  ПриПолученииДанных  вполне себе прилично, не думаю что поиск по ТЗ намного медленней ...мое имхо :)
8 Steini
 
03.09.14
10:27
Аааа давайте-ка поясню, пока обед. Допустим есть ТЧ с колонками Номенклатура, Хар-ка, Цена, колво, статус, спецкод. Понятно, что Номенклатура и характеристика будут играть роль измерений, остальное все - сравниваемые ресурсы.
1. Делаем соединение
Левое соединение ТЧ с ТЗ по Номенклатура и Характеристика
2. Бежим по результату соединения
Если КолонкаТЧ1 <> КолонкаТЗ1 ИЛИ КолонкаТЧ2 <> КолонкаТЗ2 ИЛИ ....
Тогда ищем в ТЧ строку по связке Номенклатура-Характеристика и устанавливаем этой строке флаг=истина.
3. В процедуре приПолученииДанных
Если ТекСтрока.флаг то меняем цвет фона этой строки.
Воооооооот!
9 Широкий
 
03.09.14
10:33
Как будет обрабатываться дублирование строки с одинаковыми данными?
10 Steini
 
03.09.14
10:36
(9) чьи дубли? если в ТЗ будет две строки с одинаковыми Номенклатурой и характеристикой, код отработает правильно, а в ТЧ дублей быть не должно априори, это ж ТЧ! =)
11 Широкий
 
03.09.14
10:38
(10) Я у автора спрашиваю - считается ли это расхождением или нет
12 palpetrovich
 
03.09.14
10:40
(8) пока обед набросай запросец :)--
зы: я за ТЗ.НайтиСтроки(ОтборПоВсемКолонкам) в ПриПолученииДанных
13 Steini
 
03.09.14
10:49
(12) да, кстати, похоже это более лучшее решение, если строк не миллиард =) + в условиях сказано светить всю строку, а я подумал, что чисто конкретно ячейки с расхождениями.

Да что там запрос, запрос как запрос:
выбрать
   ТЧ.Номенклатура,
   ТЧ.Характеристика,
   ТЧ.КолонкаТЧ1,
   ТЗ.КолонкаТЗ1,
   ТЧ.КолонкаТЧ2,
   ТЗ.КолонкаТЗ2,
   <...>
Из
   ТЧ как ТЧ левое соединение ТЗ как ТЗ
По ТЧ.Номенклатура = ТЗ.Номенклатура
    И ТЧ.Характеристика = ТЗ.Характеристика
14 Serginio1
 
03.09.14
10:49
15 Aleksey
 
03.09.14
11:02
(10) Т.е. не может быть 2 строки с разным ГТД?
16 Steini
 
03.09.14
11:07
(15) уважаемый, ну я же условно навыдумывал колонки, если 2 строки с разными ГТД - это нормально, тогда включаем ГТД в список условных измерений, и все, у нас опять нет задвоений =)
17 Крошка Ру
 
03.09.14
11:13
(0) 1. В ТЧ добавить колонку "Разница".
2.При создании ТЧ - выгрузить в запрос, там сравнить с ТЗ, загрузить обратно в ТЧ уже с разницей.
3.При выводе строки - по разнице определять расцветку строки.
...
PROFIT!!!
18 palpetrovich
 
03.09.14
11:49
(17) приВводеНовойСтроки - повторить PROFIT!!!  :)