Имя: Пароль:
1C
1С v8
Как в запросе проверить совпадение табличных частей?
0 RomaH
 
naïve
18.04.12
14:14
Справочник с табличной частью
надо проверить при записи нет ли элеменов с такой же ТЧ (с таким же составом строк)

как такое сделать в запросе?
1 Shurjk
 
18.04.12
14:16
Соединяй и ищи налл, где его не найдешь там значит и есть такая же т.ч.
2 RomaH
 
naïve
18.04.12
14:26
... вот с соединеним и не врубаюсь
3 RomaH
 
naïve
18.04.12
14:27
ВЫБРАТЬ
   ПроизводственныеФакторы.Ссылка,
   ПроизводственныеФакторы.ВредныйПроизводственныйФактор
ПОМЕСТИТЬ втТекущийНабор
ИЗ
   Справочник.НаборыВредныхПроизводственныхФакторов.ВредныеПроизводственныеФакторы КАК ПроизводственныеФакторы
ГДЕ
   ПроизводственныеФакторы.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   втТекущийНабор.Ссылка,
   ПроизводственныеФакторы.Ссылка КАК Ссылка1,
   ВЫБОР КОГДА ПроизводственныеФакторы.ВредныйПроизводственныйФактор ЕСТЬ NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ВредныйПроизводственныйФактор1
ИЗ
   втТекущийНабор КАК втТекущийНабор
       ПОЛНОЕ СОЕДИНЕНИЕ Справочник.НаборыВредныхПроизводственныхФакторов.ВредныеПроизводственныеФакторы КАК ПроизводственныеФакторы
       ПО втТекущийНабор.Ссылка <> ПроизводственныеФакторы.Ссылка
           И втТекущийНабор.ВредныйПроизводственныйФактор = ПроизводственныеФакторы.ВредныйПроизводственныйФактор

фигня получается
4 vmv
 
18.04.12
14:29
а если состав строк ТЧ тот же, но порядок различный - взлетит?
5 vmv
 
18.04.12
14:31
видимо если учитываеть порядок, то ножно использоват соединение двух сортированных ВТ - так для затравки, мож найдется гений который счас решит задачу в лет, я очень надеюсь
6 butterbean
 
18.04.12
14:34
хз как одним запросом, я бы в цикле сделал
7 RomaH
 
naïve
18.04.12
14:35
(4) в смысле - куа взлитит
порядок пофиг

ВЫБРАТЬ
   ПроизводственныеФакторы.Ссылка,
   ПроизводственныеФакторы.ВредныйПроизводственныйФактор
ПОМЕСТИТЬ втТекущийНабор
ИЗ
   Справочник.НаборыВредныхПроизводственныхФакторов.ВредныеПроизводственныеФакторы КАК ПроизводственныеФакторы
ГДЕ
   ПроизводственныеФакторы.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПроизводственныеФакторы.Ссылка КАК Ссылка,
   ПроизводственныеФакторы.ВредныйПроизводственныйФактор,
   ВЫБОР
       КОГДА втТекущийНабор.ВредныйПроизводственныйФактор ЕСТЬ NULL
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ КАК втТекущийНаборВредныйПроизводственныйФактор
ИЗ
   Справочник.НаборыВредныхПроизводственныхФакторов.ВредныеПроизводственныеФакторы КАК ПроизводственныеФакторы
       ПОЛНОЕ СОЕДИНЕНИЕ втТекущийНабор КАК втТекущийНабор
       ПО (втТекущийНабор.Ссылка <> ПроизводственныеФакторы.Ссылка)
           И (втТекущийНабор.ВредныйПроизводственныйФактор = ПроизводственныеФакторы.ВредныйПроизводственныйФактор)
ИТОГИ
   СУММА(втТекущийНаборВредныйПроизводственныйФактор)
ПО
   Ссылка

так что-то похожее, но не то - если есть элемент с меньшим количеством совпадающих строк - тоже попадает
8 gavrikprog
 
18.04.12
14:41
есть типовая процедура - поможет. Инфа есть
9 gavrikprog
 
18.04.12
14:41
сравнивает ТЗ
10 RomaH
 
naïve
18.04.12
14:43
(8) так это в цикле перебрать все элементы справочника надо будет
я именно про запрос спрашиваю
11 Hmster
 
18.04.12
14:44
на сколько помню там 3 запроса надо сделать. 1 с полным соединением другие с левым
12 Shurjk
 
18.04.12
14:44
(4) Чего бы не взлететь?
13 Hmster
 
18.04.12
14:46
(11) точнее с внутренним
14 Shurjk
 
18.04.12
14:48
Выбираем соединением все строки где результат соединения не будет NUUL, групируем все по документу, и количеству строк, где количество будет равно текущему количеству там значит полное совпадение.
15 gavrikprog
 
18.04.12
14:51
ТЧ1
ТЧ2
Объединение ТЧ
Объединение ТЧ Сгруппировать суммирование по ссылке(сначала выбираем 2 ссылки, чтоб одну потом суммировать)
Если есть различие, то на 4 пункте где-то равно 2. То анализируем

Как то так - идея от фонаря
16 Mickeleangelo
 
18.04.12
14:51
ВЫБРАТЬ
   ПроизводственныеФакторы.Ссылка,
   ПроизводственныеФакторы.ВредныйПроизводственныйФактор,
   1 КАК ДляСуммирования
ПОМЕСТИТЬ втТекущийНабор
ИЗ
   Справочник.НаборыВредныхПроизводственныхФакторов.ВредныеПроизводственныеФакторы КАК ПроизводственныеФакторы
ГДЕ
   ПроизводственныеФакторы.Ссылка = &Ссылка
;

ВЫБРАТЬ
   ПроизводственныеФакторы.Ссылка КАК ТакиеЖеНаборы
ИЗ
   Справочник.НаборыВредныхПроизводственныхФакторов.ВредныеПроизводственныеФакторы КАК ПроизводственныеФакторы
ЛЕВОЕ СОЕДИЕНИЕ втТекущийНабор
ПО (втТекущийНабор.Ссылка <> ПроизводственныеФакторы.Ссылка)
           И (втТекущийНабор.ВредныйПроизводственныйФактор = ПроизводственныеФакторы.ВредныйПроизводственныйФактор)
СГРУППИРОВАТЬ ПО
   ПроизводственныеФакторы.Ссылка
ИМЕЮЩИЕ СУММА(-1 + ЕСТЬNULL(втТекущийНабор.ДляСуммирования, 0)) = 0
17 gavrikprog
 
18.04.12
14:52
(15)
ТЧ1 - результат запроса - ТЧ 2 анализирукмая
18 gavrikprog
 
18.04.12
14:52
(17)
сливаюсь, врод не то чето написал =)
19 gavrikprog
 
18.04.12
14:53
(18) не тот случай просто , частный
20 МихаилМ
 
18.04.12
14:53