Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 05.12.2019
Сообщений: 8
1C 8.x

Как можно проверять на дублирование реквизит в справочнике?

05.12.2019, 15:01. Показов 8099. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите мне,пожалуйста!
У меня есть справочник "Номера". У него есть реквизиты: код, наименование, номер, количество проживающих. Справочник содержит следующие данные: код:0001, Наименование номера: Люкс, номер:301;код:0002, Наименование номера: Стандарт, номер:302; Наименование номеров может повторяться, а вот номер(301,302,304) должен быть уникальным.
Как это можно реализовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2019, 15:01
Ответы с готовыми решениями:

Как сделать в справочнике идентичный реквизит?
У меня в справочнике есть реквизит Идентификационный номер надо чтоб значение было идентичным во всем справочнике Кто знает как сделать?

Как избежать дублирование записей в справочнике?
Здрасте, такой вопросик появился: Есть справочник номенклатура. Очень простой. Реквизит "Наименование" и табличная часть с...

Реквизит в справочнике 1с
Как сделать в справочнике при создании нового элемента в реквизите идентификационный номер присваился номер автоматически? К примеру...

10
14 / 13 / 1
Регистрация: 03.12.2019
Сообщений: 52
05.12.2019, 15:19
Это можно реализовать с помощью обработки события ПриЗаписи() в модуле объекта. Вы с помощью запроса выбираете все значения реквизита Номер и в цикле сравниваете их с введенным.
Если работают несколько пользователей одновременно, то не забудьте про блокировки, т.к. есть возможность одновременного создания одного и того же значения.
1
0 / 0 / 0
Регистрация: 05.12.2019
Сообщений: 8
05.12.2019, 15:26  [ТС]
Спасибо большое за ответ! Я только начала изучать 1С. А вы не могли написать, как примерно будет выглядеть запрос на выборку всех значений реквизита "номер"?
0
14 / 13 / 1
Регистрация: 03.12.2019
Сообщений: 52
05.12.2019, 15:57
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    Номера.Номер
    |ИЗ
    |    Справочник.Номера КАК Номера
    |ГДЕ
    |    Номера.Номер <> &НовыйНомер";
 
    Запрос.УстановитьПараметр("НовыйНомер", НовыйНомер);
 
    Результат = Запрос.Выполнить();
    
    Если НЕ Результат.Пустой() Тогда
 
        Сообщить("Такой номер уже есть!");
        Отказ = Истина;
 
    КонецЕсли;
1
0 / 0 / 0
Регистрация: 05.12.2019
Сообщений: 8
05.12.2019, 18:47  [ТС]
Возникла такая ошибка(см. рисунок). Вы не знаете почему?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
&НаКлиенте
Процедура НомерПриИзменении(Элемент)
ДублиНомеров()  
КонецПроцедуры
&НаСервере
Процедура ДублиНомеров()
    Передаваемоезначение=Элементы.Номер;
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    Номер.Номер
    |ИЗ
    |    Справочник.Номер КАК Номер
    |ГДЕ
    |    Номер.Номер <> &НовыйНомер";
 
    Запрос.УстановитьПараметр("НовыйНомер", Передаваемоезначение);
 
    Результат = Запрос.Выполнить();
    
    Если НЕ Результат.Пустой() Тогда
        Сообщить("Такой номер уже есть!");
        Отказ = Истина;
 
    КонецЕсли;
КонецПроцедуры
Миниатюры
Как можно проверять на дублирование реквизит в справочнике?  
Изображения
 
0
Эксперт 1С
6334 / 1754 / 640
Регистрация: 16.01.2015
Сообщений: 7,288
05.12.2019, 22:00
Ksusha7, Два одинаковых названия. Справочник назвали Номер и поле Номер. Или
1C
1
2
ВЫБРАТЬ ПЕРВЫЕ 1
| Номер.Номер КАК ЛюбоеДругоеИмя
Или
1C
1
2
3
4
ВЫБРАТЬ ПЕРВЫЕ 1
| ЛюбоеДругоеИмя.Номер
|ИЗ
| Справочник.Номер КАК ЛюбоеДругоеИмя
И научитесь пользоваться тегами для выделения кода, глаза сломаешь
1
0 / 0 / 0
Регистрация: 05.12.2019
Сообщений: 8
06.12.2019, 13:43  [ТС]
Здравствуйте! Спасибо за ответ, у меня возникла ошибка. При вводе номера, всегда появляется сообщение"Такой номер уже есть", но номер вводится уникальный.

1C
1
2
3
4
&НаКлиенте
Процедура НомерПриИзменении(Элемент)
ДублиНомеров()  
КонецПроцедуры
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
&НаСервере
Процедура ДублиНомеров()
    Передаваемоезначение=Объект.Номер;
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    Номера.Номер
    |ИЗ
    |    Справочник.Номера КАК Номера
    |ГДЕ
    |    Номера.Номер <> &НовыйНомер";
 
    Запрос.УстановитьПараметр("НовыйНомер", Передаваемоезначение);
 
    Результат = Запрос.Выполнить();
    
    Если НЕ Результат.Пустой() Тогда
        Сообщить("Такой номер уже есть!");
        Отказ = Истина;
 
    КонецЕсли;
КонецПроцедуры
Миниатюры
Как можно проверять на дублирование реквизит в справочнике?  
0
14 / 13 / 1
Регистрация: 03.12.2019
Сообщений: 52
06.12.2019, 14:17
Посмотрите с помощью отладчика, что записывается в переменную Передаваемое значение. Скорее всего не то, что нужно.

Лучше использовать обработку события ПриЗаписи или ПередЗаписью
0
0 / 0 / 0
Регистрация: 05.12.2019
Сообщений: 8
06.12.2019, 15:25  [ТС]
В передаваемое значение записывается то, что нужно(см. рисунок). В чем еще может быть проблема?
Миниатюры
Как можно проверять на дублирование реквизит в справочнике?  
0
Эксперт 1С
6334 / 1754 / 640
Регистрация: 16.01.2015
Сообщений: 7,288
06.12.2019, 17:05
Ksusha7, Условие-то свое посмотрите.
Цитата Сообщение от Ksusha7 Посмотреть сообщение
|ГДЕ
   |    Номера.Номер <> &НовыйНомер";
У вас ВСЕ остальные номера НЕ РАВНЫ Новому. Может надо наоборот, равно
1C
1
Номера.Номер = &НовыйНомер?
ЗЫ Отдыхать надо
1
47 / 39 / 10
Регистрация: 23.04.2018
Сообщений: 139
09.12.2019, 11:07
polax, Ksusha7, после первой записи будет снова выдавать неуникальность номера.
Нужно проверять, не занят ли этот номер другим элементом справочника (сравнивая с текущим), например, так:

1C
1
2
3
|ГДЕ
|    Номера.Номер = &НовыйНомер
|    И Номера.Ссылка <> &ТекСсылка";
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2019, 11:07
Помогаю со студенческими работами здесь

Заполнить реквизит в справочнике из регистра сведений.
Доброго времени суток читатели данной темы, могли бы вы помочь в решении задачи? Имеется: 1 справочник &quot;абоненты&quot; - с...

Приложение, работающее с БД Oracle - как можно через код проверять запущен ли Listener?
Здравствуйте, пишу приложение, работающее с БД Oracle. Подскажте как можно через код проверять запущен ли листенер?

Можно ли изменить данные в справочнике без сохранения в журнале регистрации
Можно каким либо образом заменить все содержимое справочника на предшествующую версию данных без сохранения этого действия в журнале...

Можно ли в условии if проверять стиль?
почему то не работает... вобщем profile = document.getElementsByClassName('profile'); styleProfi = profile.style; if...

Можно-ли в if-е присваивать и проверять одновременно?
У меня имеется bool-ева переменная a (точнее поле класса), которой я присваиваю значение из метода Method_A(), а после проверяю результат в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru