|   |   | 
| 
 | 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 | 
        Используй запрос с тремя параметрами: код, наименование, подразделение. Если результат запроса - пустой, то создавай новый элемент.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |