Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Уникальность реквизита справочника
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
_leon4uk_
Проверку уникальности для Наименования я реализовал таким вот способом:


 ! 

Правила п.12
 


но ещё необходимо сделать уникальность реквизита "Модификация" в табличной части. как это реализовать?


 ! 

Правила, п.9.
Никто за Вами не будет запоминать что было в других темах. Учитесь нормально описывать задачи
 
_leon4uk_
Как создать уникальность для реквизита в Справочнике, чтобы при Сохранении выдавалась ошибка.
Vofka
Цитата(_leon4uk_ @ 18.04.12, 19:16) необходимо зарегистрироваться для просмотра ссылки
Как создать уникальность для реквизита в Справочнике, чтобы при Сохранении выдавалась ошибка.

Уникальность в пределах таб. части конкретного элемента?
_leon4uk_
Цитата(Vofka @ 19.04.12, 7:48) необходимо зарегистрироваться для просмотра ссылки
Уникальность в пределах таб. части конкретного элемента?


нет, не в табличной части.
Vofka
Я догадываюсь, что надо сделать, но всё же опишите нормально задачу.
_leon4uk_
Цитата(Vofka @ 19.04.12, 10:19) необходимо зарегистрироваться для просмотра ссылки
Я догадываюсь, что надо сделать, но всё же опишите нормально задачу.


Есть справочник Модели. На ней добавлены реквизиты, один из них "Модификация"(строка 20). Необходимо чтобы при записи выполняло проверку, нет ли уже записанного такого поля в реквизите "Модификация".
alex040269
Есть процедура ПриПроверкеЗаполнения или где-то так . Выполняется на сервере.
Vofka
_leon4uk_, почему в названии темы присутствует фраза "табличная часть"?
_leon4uk_
Цитата(Vofka @ 19.04.12, 11:59) необходимо зарегистрироваться для просмотра ссылки
_leon4uk_, почему в названии темы присутствует фраза "табличная часть"?


я просто много раз уже переделывал, и ни как не могу справиться... huh.gif не понимаю как это написать всё
Vofka
Ладно, помогу.

В процедуре ПередЗаписью пишете следующее:

Отбор = Новый Структура("НаименованиеРеквизитаУникальностоКоторогоНадоКонтролировать", ЗначениеРеквизитаУникальностоКоторогоНадоКонтролировать);

Выборка = Справочники.МойСправочник.Выбрать(,,Отбор);

Если Выборка.Следующий() Тогда
     Отказ = Истина;
КонецЕсли;


В качестве домашнего задания реализуйте то же самое, но с помощью запроса (хотя результат будет тот же, в т.ч. и по производительности).

ЗЫ. Да, кстати, тему переименовал.
Silantiy
Цитата(Vofka @ 19.04.12, 13:42) необходимо зарегистрироваться для просмотра ссылки
В процедуре ПередЗаписью пишете следующее:

Отбор = Новый Структура("НаименованиеРеквизитаУникальностоКоторогоНадоКонтролировать", ЗначениеРеквизитаУникальностоКоторогоНадоКонтролировать);

Выборка = Справочники.МойСправочник.Выбрать(,,Отбор);

Если Выборка.Следующий() Тогда
     Отказ = Истина;
КонецЕсли;
надо бы ещё добавить:
1. что эту процедуру надо перенести на сервер (т.к. тема у нас про 8.2), а ПередЗаписью на клиенте
2. и в данной обработке возникает отказ, если Вы редактируете уже существующее элемент справочника (он находит сам себя)
Vofka
Цитата(Silantiy @ 16.07.13, 11:06) необходимо зарегистрироваться для просмотра ссылки
эту процедуру надо перенести на сервер (т.к. тема у нас про 8.2), а ПередЗаписью на клиенте

Выше не укзано, поэтому добавлю, что имелась ввиду процедура ПередЗаписью модуля объекта (где нету разделения на клиент/сервер).

Цитата(Silantiy @ 16.07.13, 11:06) необходимо зарегистрироваться для просмотра ссылки
в данной обработке возникает отказ, если Вы редактируете уже существующее элемент справочника (он находит сам себя)

Это да, верно подмечено smile.gif .
Silantiy
Цитата(Vofka @ 16.07.13, 11:22) необходимо зарегистрироваться для просмотра ссылки
Это да, верно подмечено smile.gif .

а Гуру предложит выход? )
Vofka
Цитата(Silantiy @ 16.07.13, 13:01) необходимо зарегистрироваться для просмотра ссылки
а Гуру предложит выход? )

Если в контексте кода выше, то вот, навскидочку:
Отбор = Новый Структура("НаименованиеРеквизитаУникальностоКоторогоНадоКонтролировать", ЗначениеРеквизитаУникальностоКоторогоНадоКонтролировать);

Выборка = Справочники.МойСправочник.Выбрать(,,Отбор);

Пока Выборка.Следующий() Цикл
     Если Выборка.Ссылка = Ссылка Тогда
          Продолжить;
     КонецЕсли;
     Отказ = Истина;
КонецЦикла;


А если делать запросом, то можно сразу ограничить выборку в условии ГДЕ.
Silantiy
Спасибо, просто то всё как )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.