Имя: Пароль:
1C
1С v8
Как оптимально решить задачу
,
0 pilot_iv
 
02.11.12
05:58
Есть задача - проанализировать элементы справочника, имеющего ТЧ, на наличия в ТЧ дублей строк. Какой подход будет методически правильным

1. Можно получить через выборку ТЧ элемента и в цикле обрабатывать (проверять) ТЧ на дубли.
2. А можно ли реализовать это через временные таблицы, и как это правильно сделать.
1 SeraFim
 
02.11.12
06:03
Левое Соединение с этой же табличной частью по равенству всех реквизитов. У дублирующихся строк будет не NULL
2 golden-pack
 
02.11.12
06:07
(0) т.к. справочник может быть не записан - то запрос отменяется.

Я делал так: КолвоСтрок = ТЗ.Количество;
            КопияТЗ = ТЗ;
            Если НЕ КолвоСТрок = КопияТЗ.Свернуть(хх).Количество() Тогда
//ошибка
КонецЕсли
3 pilot_iv
 
02.11.12
06:11
Считается, что элемент справочника записан
не понятно с запросом
(1)
ВЫБРАТЬ
   СпособыРаспределенияЗатратНаВыпускФильтры.Ссылка,
   СпособыРаспределенияЗатратНаВыпускФильтры.НомерСтроки,
   СпособыРаспределенияЗатратНаВыпускФильтры.НоменклатурнаяГруппа,
   СпособыРаспределенияЗатратНаВыпускФильтры.Продукция,
   СпособыРаспределенияЗатратНаВыпускФильтры.Коэффициент
ПОМЕСТИТЬ ВТ1
ИЗ
   Справочник.СпособыРаспределенияЗатратНаВыпуск.Фильтры КАК СпособыРаспределенияЗатратНаВыпускФильтры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СпособыРаспределенияЗатратНаВыпускФильтры.Ссылка,
   СпособыРаспределенияЗатратНаВыпускФильтры.НомерСтроки,
   СпособыРаспределенияЗатратНаВыпускФильтры.НоменклатурнаяГруппа,
   СпособыРаспределенияЗатратНаВыпускФильтры.Продукция,
   СпособыРаспределенияЗатратНаВыпускФильтры.Коэффициент
ПОМЕСТИТЬ ВТ2
ИЗ
   Справочник.СпособыРаспределенияЗатратНаВыпуск.Фильтры КАК СпособыРаспределенияЗатратНаВыпускФильтры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Ссылка,
   ВТ2.Ссылка КАК Ссылка1,
   ВТ1.НомерСтроки,
   ВТ2.НомерСтроки КАК НомерСтроки1,
   ВТ1.НоменклатурнаяГруппа,
   ВТ2.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа1,
   ВТ1.Продукция,
   ВТ2.Продукция КАК Продукция1,
   ВТ1.Коэффициент,
   ВТ2.Коэффициент КАК Коэффициент1
ИЗ
   ВТ1 КАК ВТ1
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
       ПО ВТ1.Ссылка = ВТ2.Ссылка
           И ВТ1.НомерСтроки = ВТ2.НомерСтроки
           И ВТ1.НоменклатурнаяГруппа = ВТ2.НоменклатурнаяГруппа
           И ВТ1.Продукция = ВТ2.Продукция
           И ВТ1.Коэффициент = ВТ2.Коэффициент

что выводить для анализа
4 golden-pack
 
02.11.12
06:11
(3) попробуй вариант (2) - кода минимум
5 Рэйв
 
02.11.12
06:15
Имхо самый простой способ -

1. Выгружаешь ТЧ в ТЗ.
2. Добавляешь числовую колонку "Проверка" и заполняешь ее 1.
3. Сворачтваешь все поля по которым хочешь проверить дублирование.
4. Перебираешь и смотришь  где Проверка >1
6 kosts
 
02.11.12
06:16
Выгрузить ТЧ в ТЗ.
Добавить колонку. Заполнить колонку числом 1
Свернуть ТЗ.
Где в доп колонке будет > 1 есть дубли
7 Рэйв
 
02.11.12
06:16
п 3  + суммируешь Проверка естессно
8 Рэйв
 
02.11.12
06:16
(6)Не успел:-)
9 pilot_iv
 
02.11.12
06:16
если по (2)
получается необходимо делать запрос в цикле ,выгружать в ТЗ каждую ТЧ и ее там обрабатывать, мне кажется не совсем верным
10 kosts
 
02.11.12
06:17
в (3) нужно И ВТ1.НомерСтроки = ВТ2.НомерСтроки => И ВТ1.НомерСтроки <> ВТ2.НомерСтроки
11 pilot_iv
 
02.11.12
06:18
(7) опять тоже самое  - запрос в цикле по ТЧ элементов справочника,хочется этого избежать
12 pilot_iv
 
02.11.12
06:20
(10) все получилось спасибо
Программист всегда исправляет последнюю ошибку.