|
Не работает проверка справочника на уникальность имени элемента | ☑ | ||
---|---|---|---|---|
0
0level
15.10.13
✎
11:04
|
Здравствуйте.
Процедура СоздатьКатегорию (наименование, Владелец) Запрос = Новый Запрос("Запрос"); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Категория.Ссылка |ИЗ | Справочник.КвалификационнаяКатегорияСотрудника КАК Категория |ГДЕ | Категория.Наименование = &Наименование | И Категория.Владелец = &Владелец"; Запрос.Параметры.Вставить("Наименование", наименование); Запрос.Параметры.Вставить("Владелец", Владелец); Выборка = Запрос.Выполнить().Выбрать(); Если Не Выборка.Следующий() Тогда НоваяКатегория = Справочники.КвалификационнаяКатегорияСотрудника.СоздатьЭлемент(); НоваяКатегория.Владелец= Справочники.Организации.НайтиПоНаименованию(Владелец).ПолучитьОбъект().Ссылка; НоваяКатегория.Наименование = наименование; НоваяКатегория.Записать(); //Возврат НоваяСпециальность.Ссылка; //Иначе // Возврат Выборка.Ссылка; КонецЕсли; КонецПроцедуры Функция ЗаполнитьДок(ТаблицаДанных) ----------------------------------------------------- Для Каждого Строк из ТаблицаДанных Цикл -------------------------------------------- //вставка СоздатьСпециальность(строк.специальность, Объект.Организация.Наименование); СоздатьКатегорию(строк.категория, Объект.Организация.Наименование); СоздатьВидДолжности(строк.виддолжности, Объект.Организация.Наименование); // конец вставка //// ------------------------- КонецЦикла; НовыйДокумент.Записать(); НовыйДокумент.Ссылка.ПолучитьФорму().Открыть(); КонецФункции |
|||
1
Nenaviwu1c20
15.10.13
✎
11:07
|
СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
НайтиПоКоду (FindByCode) Синтаксис: НайтиПоКоду(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>) Параметры: <Код> (обязательный) Тип: Число; Строка. Искомый код. Строка или число в зависимости от настроек справочника в конфигураторе. <ПоискПоПолномуКоду> (необязательный) Тип: Булево. Определяет режим поиска по полному коду. Истина - искомый код следует задавать в виде строки, состоящей из последовательности кодов по уровням справочника, разделенных символом "/". Значение по умолчанию: Ложь <Родитель> (необязательный) Тип: СправочникСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. <Владелец> (необязательный) Тип: СправочникСсылка. Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. Возвращаемое значение: Тип: СправочникСсылка.<Имя справочника>; Неопределено. Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка. Если для справочника код не задан (длина = 0), то будет возвращено Неопределено. Описание: Осуществляет поиск элемента по его коду. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: СтрокаКода = "840"; Валюты = Справочники.Валюты; НайденнаяСсылка = Валюты.НайтиПоКоду(СтрокаКода); Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда Сообщить("Валюты """ + СтрокаКода + """ еще нет"); КонецЕсли; |
|||
2
hhhh
15.10.13
✎
11:08
|
так у вас Владелец - это ссылка или наименование всё-таки?
|
|||
3
Nenaviwu1c20
15.10.13
✎
11:08
|
СправочникМенеджер.<Имя справочника>.НайтиПоНаименованию (CatalogManager.<Имя справочника>.FindByDescription)
СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>) НайтиПоНаименованию (FindByDescription) Синтаксис: НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>, <Родитель>, <Владелец>) Параметры: <Наименование> (обязательный) Тип: Строка. Строка, содержащая искомое наименование. <ТочноеСоответствие> (необязательный) Тип: Булево. Определяет режим поиска по полному соответствию. Поиск будет успешным, если строка поиска: в случае значения параметра Ложь - будет соответствовать левой части наименования; в случае значения параметра Истина - будет полностью совпадать с наименованием (за исключением "хвостовых" пробелов в наименовании). Значение по умолчанию: Ложь <Родитель> (необязательный) Тип: СправочникСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. <Владелец> (необязательный) Тип: СправочникСсылка. Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике. Возвращаемое значение: Тип: СправочникСсылка.<Имя справочника>; Неопределено. Ссылка на найденный элемент справочника. Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. Если для справочника наименование не задано (длина = 0), то будет возвращено Неопределено. Описание: Осуществляет поиск элемента по его наименованию. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Если существует несколько элементов с указанным наименованием, то будет найден только один из них. Пример: СтрокаНаименования = "USD"; Валюты = Справочники.Валюты; НайденнаяСсылка = Валюты.НайтиПоНаименованию(СтрокаНаименования); Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда Сообщить("Валюты """ + СтрокаНаименования + """ еще нет"); КонецЕсли; |
|||
4
Nenaviwu1c20
15.10.13
✎
11:08
|
(2) Зачем запрос лишний.Пускай по наименование ищет
|
|||
5
0level
15.10.13
✎
11:09
|
Блин как тут редактировать тему??? )))
Вопрос в следующем. Процедура проверяет есть ли совпадение по имени и владельцу если нет то создает данный элемент. Данные загружаются из эксель. В итоге данные в справочнике дублируются, создается несколько элементов с одним именем. |
|||
6
Nenaviwu1c20
15.10.13
✎
11:09
|
там и владелейц есть
|
|||
7
Nenaviwu1c20
15.10.13
✎
11:09
|
(5) Чувак ты как в экзеле проверяешть владельца?
|
|||
8
Nenaviwu1c20
15.10.13
✎
11:10
|
Фактичечки владелец - это ссылка на элемент,а я думаю что твой владелец это тип строка с наименованием владельца
|
|||
9
0level
15.10.13
✎
11:10
|
владелец организация, она выбирается на форме обработки
|
|||
10
hhhh
15.10.13
✎
11:11
|
(9) тогда вот это нереальный бред у вас
НоваяКатегория.Владелец= Справочники.Организации.НайтиПоНаименованию(Владелец).ПолучитьОбъект().Ссылка; должно быть НоваяКатегория.Владелец=Владелец; или Справочники.Организации.НайтиПоНаименованию(Владелец) |
|||
11
hhhh
15.10.13
✎
11:11
|
да, НоваяКатегория.Владелец=Владелец;
|
|||
12
0level
15.10.13
✎
11:18
|
НоваяКатегория.Владелец=Владелец не работает. я думаю по тому что в процедуру под именем перем владелец передается Объект.Организация.Наименование
|
|||
13
hhhh
15.10.13
✎
11:21
|
(12) тогда вот здесь бредите
| И Категория.Владелец = &Владелец"; ну как строка может быть владельцем чего-то? |
|||
14
0level
15.10.13
✎
11:27
|
Использовал вместо запроса пример
СтрокаНаименования = "USD"; Валюты = Справочники.Валюты; НайденнаяСсылка = Валюты.НайтиПоНаименованию(СтрокаНаименования); Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда Сообщить("Валюты """ + СтрокаНаименования + """ еще нет"); КонецЕсли; Теперь работает! Но хотелось бы разобраться почему запрос лажает! есть точно такие же запросы по другим справочникам и все работает |
|||
15
0level
15.10.13
✎
11:28
|
Процедура СоздатьКатегорию2 (наименование, Владелец)
Категории = Справочники.КвалификационнаяКатегорияСотрудника; НайденнаяСсылка = Категории.НайтиПоНаименованию(наименование); Если НайденнаяСсылка = категории.ПустаяСсылка() Тогда НоваяКатегория = Справочники.КвалификационнаяКатегорияСотрудника.СоздатьЭлемент(); НоваяКатегория.Владелец= Справочники.Организации.НайтиПоНаименованию(Владелец).ПолучитьОбъект().Ссылка; НоваяКатегория.Наименование = наименование; НоваяКатегория.Записать(); КонецЕсли; КонецПроцедуры |
|||
16
0level
15.10.13
✎
11:30
|
Спасибо . вот вчем было
| И Категория.Владелец.Наименование = &Владелец"; вместо | И Категория.Владелец = &Владелец"; |
|||
17
hhhh
15.10.13
✎
11:30
|
(15) Запрос.Параметры.Вставить("Владелец", Владелец);
Владелец у вас символьная строка. А должно быть ссылка. |
|||
18
0level
15.10.13
✎
11:30
|
тоесть наоборот
|
|||
19
Defender aka LINN
15.10.13
✎
11:44
|
(12) Феерично
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |