Запрет выбора повторяющихся значений в таблицу

1. 8 13.01.22 16:00 Сейчас в теме
Коллеги, есть таблица в документе - в ней поле - элемент справочника. Как запретить добавление/выбор позиций которые уже есть в таблице?
Создать форму выбора в которой мы отсекаем те значения которые уже есть в таблице - слишком грамозко получается.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
10. glek 112 13.01.22 20:50 Сейчас в теме
(1) ИМХО, как сказали коллеги, надо перед записью отрабатывать. А то гем... проблем с разработкой не оберешься.
2. user1278383 13.01.22 16:09 Сейчас в теме
Зачем создавать форму? Переопределить событие начало выбора, установив отбор. Или это и есть громоздко?)
3. user1203706 13.01.22 16:13 Сейчас в теме
ТвояТабличнаяЧасть.Свернуть("список колонок свёртки","список колонок суммирования") в ПередЗаписью и привет
4. ДмитрийС 13.01.22 16:30 Сейчас в теме
Думаю, что тут надо делить задачу:
1. Убрать уже выбранные ранее позиции из списка выбора:
2. При добавлении существующего ничего не добавлять.

Вам как надо?
8. Ujine1313 8 13.01.22 17:29 Сейчас в теме
(4)
1. Убрать уже выбранные ранее позиции из списка выбора:

Именно это и надо.
5. SlavaKron 13.01.22 16:37 Сейчас в теме
Лучше не ограничивать выбор. Просто при изменении таблицы формы удалять строки с дублирующимся элементом.
9. Ujine1313 8 13.01.22 17:31 Сейчас в теме
(5)не опытный пользователь будет шокирован что у него позиции удаляются сами. - так не пойдет.
Вариант что пользователь наколотил таблицу и она не записалась - потому что есть дубли то же не пойдет т.к. надо чистить и вспоминать
- какая правильная строка
11. SlavaKron 14.01.22 09:44 Сейчас в теме
(9)
у него позиции удаляются сами
Удаляться будет только одна позиция, только что введенная, если она дублирует ранее созданную. Это нормальное поведение интерфейса, в ЗУПе, например, такое практикуется при формировании шкалы оценки.
6. user5300 755 13.01.22 16:50 Сейчас в теме
ПередНачаломДобавления()
ТекДанные = Элементы.Таблица.ТекущиеДанные;
Если таблица.найтиСтроки(НовыйСтруктура("Номенклатура",ТекДанные.Номенклатура)) > 0 Тогда
отказ = истина;
возврат;
Конецесли;

Показать
7. SlavaKron 13.01.22 16:57 Сейчас в теме
(6) Перед началом добавления еще никакой элемент не выбран.
Docaru; Ujine1313; +2 Ответить
12. Bosma 69 14.01.22 10:56 Сейчас в теме
Пример из одной нетиповой конфигурации:

&НаКлиенте
Процедура ДатыИсключенийДатаПриИзменении(Элемент)
	ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные;
	Если ТекущиеДанные<>Неопределено Тогда 
		НовоеЗначение = ТекущиеДанные.Дата;
		
		Если ЗначениеЗаполнено(НовоеЗначение) Тогда 
			
			НайденныеСтроки = ДатыИсключений.НайтиСтроки(Новый Структура("Дата",НовоеЗначение));
			
			Если НайденныеСтроки.Количество()>1 Тогда 
				ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				НСтр("ru = 'Дата "+НовоеЗначение+" уже есть в списке.'"), ,
				,
				,
				);
				ТекущиеДанные.Дата = Неопределено;
			Иначе 
				ДатыИсключений.Сортировать("Дата Возр");
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать



попробуйте, но решение специфическое, мне не нравится
Ujine1313; +1 Ответить
13. Ujine1313 8 17.01.22 09:32 Сейчас в теме
т.к. задача писать данные в периодический регистр сведений, то поставил повторяющиеся поле как измерение. Теперь при записи платформа сама ругается что измерение не может быть дублем.
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Аналитик 1С
Санкт-Петербург
зарплата до 150 000 руб.
Полный день

Руководитель отдела разработки
Москва
зарплата от 200 000 руб. до 230 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 120 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству