|
Проверка уникальности элементов справочника | ☑ | ||
---|---|---|---|---|
0
amadeus2010
10.08.12
✎
09:15
|
Доброе утро всем. Хочу посоветоваться вот по такому вопросу. Создал обработку по загрузке списка контрагентов из эксель в справочник Контрагенты УПП 1.2. Теперь как сделать проверку уникальности загруженных элементов справочника.Т.е чтобы дважды не был записан один и тот же контрагент с одинаковыми данными. Поставить такую проверку как Если Не ЗначениеЗаполнено(Контрагент) Тогда....., но это только проверяетпустое или нет данное поле справочника, а как сделать проверку чтобы если Контрагент Петров уже записан тогда выдать соообщение что этот Контрагент есть в справочнике и не будет повторно записан? Потому что у нас пользователи могут один и тот же файл или контрагента находящегося в файле под другим именем загнать в базу несколько раз
|
|||
1
shuhard
10.08.12
✎
09:16
|
(0) что-то мешает открыть помощник создания контрагентов и посмотреть как надо делать на самом деле ?
|
|||
2
Живой Ископаемый
10.08.12
✎
09:21
|
элементы любого справочника уникальны, гарантирую это
|
|||
3
Maxus43
10.08.12
✎
09:22
|
ну и задай вопрос - что у контрагента уникально? не наименование, не адрес даже. По ИНН+КПП можно контролить
|
|||
4
shuhard
10.08.12
✎
09:23
|
(3) угу
мало того в УПП есть готовая обработка |
|||
5
pessok
10.08.12
✎
09:24
|
обычно на собеседованиях, где предлагают работать за еду, задают такой вопрос :) (3) все правильно сказал, вот только КПП не надо.
|
|||
6
Maxus43
10.08.12
✎
09:26
|
ИНН+КПП - контрагенты
ИНН - контрагенты с типом физлицо. так надёжней |
|||
7
Нуф-Нуф
10.08.12
✎
09:27
|
каждый элемент справочника уникален сам по себе. это закон
|
|||
8
amadeus2010
10.08.12
✎
09:28
|
вопрос в том чтобы при запуске обработки исключить дублирующие записи. Ведь эту оббработку можно применить и для загрузки других справочников. Вот к примеру создал собственный справочник с определенными элементами, запустил обработку и два раза одни и те же элементы записались в справочник.
|
|||
9
Fish
10.08.12
✎
09:28
|
(5) Очень даже надо, т.к. есть контрагенты с одинаковым ИНН, но разным КПП :))
|
|||
10
Maxus43
10.08.12
✎
09:29
|
(8) универсального способа нет, правила контроля вытекают из назначения справочника, его ключевых полей
|
|||
11
pessok
10.08.12
✎
09:33
|
(9) что??? это как? холдинг, находящийся по разным адресам ИФНС? так там и ИНН будет разный...
|
|||
12
Fish
10.08.12
✎
09:37
|
(11) Обособленные подразделения. ИНН один, а КПП разный.
|
|||
13
amadeus2010
10.08.12
✎
09:38
|
Если быть конкретнее не типовую УПП объединили с Агент Плюс, в котром есть справочник торговые точки. В этом справочнике есть поля контрагент, адрес,телефон и т.д Создал обработку по загрузке контрагентов из эксель в этот справочник.Если запустить обработку дважды то один и тот же контрагент записывается в справочник со своими полями, а этого допустить нельзя. Вот исходный код
//////////////////////////////////////////////////////////////////// ТорговыеТочки=Справочники.кпкТорговыеТочки.СоздатьЭлемент(); ТорговыеТочки.Агент=Справочники.ФизическиеЛица.НайтиПоНаименованию(Строка.Ордертейкер); ТорговыеТочки.Адрес=Строка.Адрес; ТорговыеТочки.Телефоны=Строка.Телефон; ТорговыеТочки.Владелец=Контр.Ссылка; ТорговыеТочки.НаименованиеПолное=Контр.Ссылка; ТорговыеТочки.Наименование=Строка.КодФилиала + " " + Строка.НаименованиеФилиал; ТорговыеТочки.КодФилиала=Строка.КодФилиала; ТорговыеТочки.Регион=?(ПустаяСтрока(Строка.Зона), Справочники.Регионы.ПустаяСсылка(), Справочники.Регионы.НайтиПоНаименованию(Строка.Зона)); ТорговыеТочки.Записать(); ////////////////////////////////////////////////////////////////////// Если добавить Если Не ЗначениеЗаполнено(ТорговыеТочки.Агент) Тогда.... то просто будет проверка на заполнен или нет этот элемент.А как в этом коде исключить проверкой дублирующиеся записи? |
|||
14
pessok
10.08.12
✎
09:42
|
(12) хм, хм... а из каких соображений там разных КПП идет?
|
|||
15
amadeus2010
10.08.12
✎
09:50
|
можете что-нибудь посоветовать исходя из кода?
|
|||
16
Fish
10.08.12
✎
09:52
|
(14) Не изучал досконально этот вопрос. Но бывают филиалы - у них ИНН головной организации, а названия и КПП - разные.
|
|||
17
hhhh
10.08.12
✎
09:54
|
(14) например РЖД (железная дорога), у них тысяча отделений и все с одним ИНН. Только КПП разные.
|
|||
18
amadeus2010
10.08.12
✎
09:59
|
может что-то конкретное по вопросу можете подсказать,а не устраивать междусобойчик?
|
|||
19
hhhh
10.08.12
✎
10:04
|
(18) ну уже ведь всё подсказали, вытаскиваешь обработку из УПП или УТ и вставляешь к себе.
А насчет Петрова - это ты бредишь, такая проверка не нужна. Ведь на самом деле может быть в жизни два Петрова и даже три и все контрагенты вашей фирмы. |
|||
20
ВотЭтоДа
10.08.12
✎
10:09
|
Если у контрагента все реквизиту стопудово заполняются, то ИНН+КПП. И лучше тогда брать последнее наименование контрагента, скорее всего оно более точное
|
|||
21
amadeus2010
10.08.12
✎
10:17
|
(19)насчет Петрова это просто пример, но у компании есть контрагенты с уникальным наименованием, кодом, которых не может быть два.Кстати а как называется обработка?
|
|||
22
pessok
10.08.12
✎
10:20
|
(17) не знал, если честно, что КПП у них разные. Спасибо за науку :)
(21) ты не поверишь... в (1) написано |
|||
23
Fish
10.08.12
✎
10:21
|
ТС явно путается в показаниях. В (13) он заявляет: "один и тот же контрагент записывается в справочник со своими полями". При этом приводит код, в котором контагентами и не пахнет :)) ИМХО тема вопроса не раскрыта.
|
|||
24
amadeus2010
10.08.12
✎
10:34
|
(23) Контрагент=Владелец. Хочу исключить дубль записей в справочник
|
|||
25
Fish
10.08.12
✎
10:36
|
(24) В какой именно справочник? В твоём коде Владелец=Контр.Ссылка. Сам контр нигде не создаётся.
|
|||
26
ВотЭтоДа
10.08.12
✎
10:43
|
(13)Отбираешь записи по владельцу контрагенту, а потом смотришь есть ли там такой агент
|
|||
27
amadeus2010
10.08.12
✎
11:02
|
(25) в (13) Справочник ТорговыеТочки
|
|||
28
Fish
10.08.12
✎
11:07
|
(27) Тогда всё просто. Сначала смотришь, есть ли уже торговая точка с такими же реквизитами и владельцем, и создаёшь новую только в том случае, если нету.
|
|||
29
amadeus2010
10.08.12
✎
11:10
|
(28) об этом и спрашиваю, как сделать проверку, подскажите плз.
|
|||
30
Fish
10.08.12
✎
11:12
|
(29) Как угодно, например запросом.
|
|||
31
acsent
10.08.12
✎
11:13
|
(3) инн+кпп тоже не всегда уникальны: например офис один, а точек несколько
|
|||
32
FIXXXL
10.08.12
✎
11:14
|
(29) поищи в конфе Обработки.ПоискИЗаменаДублирующихсяЭлементов.Создать()
|
|||
33
amadeus2010
10.08.12
✎
12:01
|
(32) кажется понял что вы говорит е надо добавить в обработку в процедуру ПередЗаписью() это кусок кода
/////////////////////////////////////////////////////// ПоискДублей = Обработки.ПоискИЗаменаДублирующихсяЭлементов.Создать(); СтруктураПоиска = Новый Структура("Код,ИНН,Наименование,НаименованиеПолное,КодОракл",Неопределено,"=","=","="); НайденныеОбъекты = ПоискДублей.НайтиДубли(ЭтотОбъект,СтруктураПоиска); Если НайденныеОбъекты.Количество() > 0 Тогда ФормаПоискаДублей = ПоискДублей.ПолучитьФорму("ФормаПоиска", ЭтаФорма); ФормаПоискаДублей.НайденныеОбъекты = НайденныеОбъекты; Результат = ФормаПоискаДублей.ОткрытьМодально(); Если Результат = Неопределено Тогда Отказ = Истина; ИначеЕсли Не Результат = Истина Тогда Отказ = Истина; ОповеститьОЗаписиНовогоОбъекта(Результат); Модифицированность = Ложь; Если ЭтаФорма.Открыта() Тогда Закрыть(); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; /////////////////////////////////////////////////////////// и будет счастье ход мыслей правильный? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |