|
v7: Создание нового элемента справочника | ☑ | ||
---|---|---|---|---|
0
sung82
25.09.11
✎
22:01
|
При обработки текстового файла, создаю справочник "Сотрудники". Первый раз проверяю по коду, если такого кода нет, то создаю новый элемент справочника. Но дело в том, что под одним кодом может быть несколько сотрудников, которые в свою очередь могут относиться к разным подразделениям. У мня не получается проверить справочник, убедиться в том что под данным кодом еще не создан элемент справочника для данной фамилии и создать элемент справочника для данной фамилии. Также при последующих загрузках не должен дублироваться элемент справочника. Подскажите как лучше сделать данную обработку.
|
|||
1
GROOVY
25.09.11
✎
22:02
|
Ну так проверяй не только по коду, а еще по фамилии и подразделению. Вопрос не понятен.
|
|||
2
Cthulhu
25.09.11
✎
22:21
|
по владельцу м.б.
|
|||
3
Эльниньо
25.09.11
✎
22:22
|
Уникальность кодов в пределах подчинения. Сверяй по полному коду.
|
|||
4
sung82
25.09.11
✎
22:29
|
Написал
Если Код<> 0 Тогда Если (Спр.НайтиПоКоду(Код) = 0) Тогда Спр.Новый(); Спр.Наименование = Наименование; Спр.КодСпрПодразделения=ПодразделениеЗагр; Спр.Код=Код; ИначеЕсли (Спр.НайтиПоКоду(Код) = 1)и(Спр.ТекущийЭлемент().КодСпрПодразделения <> ПодразделениеЗагр) Тогда Спр.Новый(); Спр.Наименование = Наименование; Спр.КодСпрПодразделения=ПодразделениеЗагр; Спр.Код=Код; КонецЕсли; Спр.Записать(); КонецЕсли; При повторной загрузке создает новй элемент справочника. Хотя мне он уже не нуже. Что сделал не так? |
|||
5
TeddySlaf
25.09.11
✎
22:54
|
Как-то плохая структура хранения у тебя в конфигурации.
1) Либо контроля уникальности кодов у сотрудника нет. Если так, то не получится у тебя по коду найти нужного, используя лишь НайтиПоКоду(). 2) Либо, что хуже, в конфе справочник Сотрудники подчинен какому-то другому с уникальностью кодов в пределах подчинения. Тогда надо сначала найтиПоКоду() подразделение по коду, а уже потом искать в Справочнике после применения метода ИспользоватьВладельца() поиск по коду Сотрудника. Как-то так. или тупо как в (1), например, перебором. |
|||
6
sung82
25.09.11
✎
23:37
|
Дело в том, что из старой досовской программы выгружается список на зачисление з/п на карточки в текстовом формате. И так сформировалась база, что под одним таб. номером, но в разных подразделениях могут быть разные люди. Если я первый раз проверяю по таб. номеру и подразделению, то (Спр.НайтиПоКоду(Код) = 0) равно 0 и (Спр.ТекущийЭлемент().КодСпрПодразделения <> ПодразделениеЗагр) не равно подразделению из файла загрузки. И Создаю новый элемент справочника. Но если в справочнике уже существует сотрудник с таб. номером, который загружается из из файла, но с другим подразделением, то справочник не создается. Что делать?
|
|||
7
73с
25.09.11
✎
23:47
|
(6) А он просто не создается или при записи вылетает ошибка ?
А уникальность в справочнике какова ? |
|||
8
73с
25.09.11
✎
23:50
|
А если так?
ИначеЕсли (Спр.ТекущийЭлемент().КодСпрПодразделения <> ПодразделениеЗагр) Тогда |
|||
9
sung82
25.09.11
✎
23:54
|
Контроль уникальности отключен. Если он будет включен, то как можно создать два элемента справочника с однаковым кодом в одной группе?
|
|||
10
73с
25.09.11
✎
23:59
|
А что (8) ?
В Вашем варианте после ИначеЕсли не второй ли раз происходит поиск по коду ? Поэтому и не создаёт... |
|||
11
only82
26.09.11
✎
00:15
|
Используй запрос с тремя параметрами: код, наименование, подразделение. Если результат запроса - пустой, то создавай новый элемент.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |