Имя: Пароль:
1C
 
Выбор дублей документов
,
0 falselight
 
10.09.17
08:53
БП 3.0. Необходимо выбрать дубли документов ПТУ, у которых
одинаковые Номер, Дата, Контрагент, Ответственный (возможно).
Как это можно правильнее сделать?
1 Филиал-msk
 
10.09.17
08:55
Вручную, Андрей!
Это будет правильно и ответственно. Никто не сможет тебе сказать, что твоя программа неправильна!
2 Филиал-msk
 
10.09.17
08:56
Когда до ЗУПа-то доберешься уже?
3 falselight
 
10.09.17
08:58
(0+) Есть идея, выбирать с сортировкой по номеру,
выгружать в таблицу значений, потом как то перебирая
выявлять что попадаются одинаковые подряд идущие номера,
дата, контрагент...
4 Ranger_83
 
10.09.17
09:07
(0) Прикалываешься?А как же контроль уникальности по номерам..
5 mistеr
 
10.09.17
09:09
(3) Норм идея, только выгружать не обязательно. Можно сразу выборку перебирать.
6 falselight
 
10.09.17
09:10
(4) Такая задача. Не нашел дубли, хотел сам сделать
не позволило, контроль уникальности номеров.
Значит как то это появляется все же.
Если поставили задачу такую.
Сам пока не пойму.
7 falselight
 
10.09.17
09:11
(5) А как это будет в выборке?
Не совсем пока представляю.
Если к примеру 2 дубля идет или 3, а может и более?
8 Ranger_83
 
10.09.17
09:12
(6) Только при обмене в РИБ возможно.
9 falselight
 
10.09.17
09:14
(8) Было так это сформулированно, -

В настоящее время с учетом внесения  изменений поставщиками в текущие документы в 1С возникают дубли, документы от поставщиков с одним номером, датой и суммой документа.
10 Ranger_83
 
10.09.17
09:17
(9) Да тут речь наверняка о входящем номере и дате :)
11 falselight
 
10.09.17
09:19
(10) Ну написано было как написано.
А что это за входящие номер и дата, не вижу таких в ПТУ
среди реквизитов.
12 falselight
 
10.09.17
09:21
А ну понял эти видимо, -

НомерВходящегоДокумента
ДатаВходящегоДокумента.
13 Ranger_83
 
10.09.17
09:26
14 falselight
 
10.09.17
09:45
(13) То есть в БП 3.0 есть средство для этого типовое?
Ну может они захотят что то ещё в этой обработке, вероятность что придется делать свое есть наверное все же.
А эта обработка выводит перечень совпадающих документов
с номерами?
Спасибо, нужно разбираться.
15 falselight
 
10.09.17
09:55
Мутная какая то эта обработка.
Что то нашла, но что это не понятно.
Где увидеть дубли в журнале?
Перешел в список, вроде дублей нет.
16 falselight
 
10.09.17
09:58
(13) Не понятно что она вообще понимает под дублями (
17 mistеr
 
10.09.17
10:25
(7) Очень просто. Запоминаешь текущие значения ключевых полей.

Пока Выборка.Следующий() Цикл
    Если Выборка.Номер = ПредНомер Тогда
        // дубль
    КонецЕсли;
    ...
    ПредНомер = Выборка.Номер;
КонецЦикла;
18 falselight
 
10.09.17
10:55
(17) Ок, попрактикуюсь.
Так и думал что как время дойдет до самого написания кода,
там и будут идеи появляться.
Пока посмотрел 13, принцип работы пока не понял.
Так все наглядно задаешь поля что считается дублем
и выбираешь. Но что выбралось не понятно.
Нужно время что бы понять.
19 falselight
 
10.09.17
11:08
(17) Ну а если нужно будет вывести и первый вариант и его
дубль? В выборке же не сделать шага назад, а в таблице
значений можно.
20 falselight
 
10.09.17
11:29
Первый вариант, не знаю на сколько правильный. Задача
в получении списка элементов и всех их имеющихся дублей.

Функция ПолучитьТзДублей()
    ТзДублей = Новый ТаблицаЗначений;
    ТзДублей.Колонки.Добавить("ОригинальнаяСсылка");
    ТзДублей.Колонки.Добавить("Дубль");
    Запрос          = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    ПоступлениеТоваровУслуг.Номер КАК Номер,
        |    ПоступлениеТоваровУслуг.Дата,
        |    ПоступлениеТоваровУслуг.Контрагент,
        |    ПоступлениеТоваровУслуг.Ответственный,
        |    ПоступлениеТоваровУслуг.Ссылка
        |ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |    ПоступлениеТоваровУслуг.Проведен = ИСТИНА
        |    И ПоступлениеТоваровУслуг.Дата МЕЖДУ &НачДата И &КонДата
        |
        |УПОРЯДОЧИТЬ ПО
        |    Номер";
    Запрос.УстановитьПараметр("НачДата", ПериодОтчета.ДатаНачала);    
    Запрос.УстановитьПараметр("КонДата", ПериодОтчета.ДатаОкончания);    
    Рез       = Запрос.Выполнить();
    ПредЭлемент = неопределено;
    Если Не Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Пока Выборка.Следующий() Цикл
            Если Выборка.Номер = ПредЭлемент.Номер Тогда
                // дубль
                НоваяСтрока                    = ТзДублей.Добавить();
                НоваяСтрока.ОригинальнаяСсылка = ПредЭлемент;
                //
                НоваяСтрока                    = ТзДублей.Добавить();
                НоваяСтрока.ОригинальнаяСсылка = Выборка.Ссылка;
            КонецЕсли;
            //
            ПредЭлемент = Выборка.Ссылка;
        КонецЦикла;
        //
        Если ТзДублей.Количество() <> 0 Тогда
            Возврат ТзДублей;
        Иначе
            Возврат 0;
        КонецЕсли;
    Иначе
        Возврат 0;
    КонецЕсли;
КонецФункции
21 АнтонБ
 
10.09.17
16:33
(0)
В запросе
select ..здесь через зaпятую поля..
group by ..здесь через зaпятую поля..
having count(*)>1

Религия не позволяет?
22 falselight
 
10.09.17
17:40
(21) Что, что...?
23 falselight
 
10.09.17
17:49
Фили, ты то чё гасишься?
24 АнтонБ
 
10.09.17
17:54
(22) Это запрос который показывает все дубли
25 АнтонБ
 
10.09.17
17:56
(22) По выбранным полям через запятую
|select
        |    ПоступлениеТоваровУслуг.Номер КАК Номер,
        |    ПоступлениеТоваровУслуг.Дата,
        |    ПоступлениеТоваровУслуг.Контрагент,
        |    ПоступлениеТоваровУслуг.Ответственный
from ПоступлениеТоваровУслуг
group by
        |    ПоступлениеТоваровУслуг.Номер КАК Номер,
        |    ПоступлениеТоваровУслуг.Дата,
        |    ПоступлениеТоваровУслуг.Контрагент,
        |    ПоступлениеТоваровУслуг.Ответственный
having count(*)>1
26 АнтонБ
 
10.09.17
17:57
(23) Кто Вас к конфигуратору пустил?
27 ildary
 
10.09.17
18:27
(26) ты еще не понял с кем связался (звездой форума) - почитай прочие его темы.