8.х Создание текстового поля с уникальным значением

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем vihuhol, 28 апр 2010.

  1. TopicStarter Overlay
    vihuhol
    Offline

    vihuhol Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    Добрый день, всем!
    Детский вопрос:
    Подскажите, есть ли возможность создать в Номенклатуре текстовое поле(это не Код и не Наименование), чтобы его значение было уникальным, и это контролировалось системой а не ручками написанным кодом?
  2. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Можно! *гордо кивает*

    А теперь, внимание, вопрос: в чём проблема?
  3. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.631
    Симпатии:
    946
    Баллы:
    204
    Интересно как? Добавить реквизит тип-строка и ничего в коде не написав, делать так что бы система сама контролировала уникальность?Нука?Что то ятаких методов не видел.
  4. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    На случай, если это вам вдруг поможет:
    Либо в процедуру при (перед) записью, либо в обработку изменения самого поля внедряете процедурку, которая ищет по базе повторения этого поля и... PROFIT. Собственно, я потому и не понимаю, в чём конкретно у вас возникли трудности.
  5. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.631
    Симпатии:
    946
    Баллы:
    204
    Человек же написал :
    А вы пишите можно. а потом уточняете что дял этого надо код дописать какой то....

    Потому как система сама контролирует только уникальность кодов
  6. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Тьфу ты, ну ты, жёванный торт *обезоруженно разводит руками* Моя ошибка. Признаю и каюсь.

    Я должен был не пафосно кричать "можно", а грустно качать головой и бормотать "нельзя".

    *думаю, мои косячные посты стоит удалить - дабы не смущать человека*
  7. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.631
    Симпатии:
    946
    Баллы:
    204
    Да нет пусть пользователь почитает, просто не вижу смысла, раз добавил реквизит, внесли изменения в конфу, ну добавьте пару строчек в код и все. Не убудет.
    А вывод. что бы просто добавитьреквизит и ничего не писать а где то поставить галочку и система бы сама контролировала НЕТ
  8. TopicStarter Overlay
    vihuhol
    Offline

    vihuhol Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    Спасибо!
    Я ориентируюсь на то, что 1С вроде как бы создавала систему для пользователей, а не для программистов, поэтому и искал какую-то галочку уникальности поля...

    То что это можно сделать программно - имея 10летний опыт программирования на других языках :unsure: - понимаю.
  9. TopicStarter Overlay
    vihuhol
    Offline

    vihuhol Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    В общем сделать это "мышкой" нельзя, нужно дописать кусочек кода для проверки. Тогда в продолжение - есть ли какие-то стандартные функции, облегчающие проверку уникальности вводимого значения в поле?

    не надо удалять :unsure: т.к. в 1с я новичок по программированию, то любая информация мне очень ценна.
  10. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Вот мой примерчик (процедура ПередЗаписью Формы элемента):

    Код:
    Процедура ПередЗаписью(Отказ)
    Если ЭтоНовый() Тогда
    ПроверитьНаЗаполненостьУникальностьУНП(Отказ);	
    КонецЕсли;
    КонецПроцедуры
    
    Процедура ПроверитьНаЗаполненостьУникальностьУНП(Отказать)		
    Если ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо И Покупатель Тогда
    Если ЗначениеНеЗаполнено(ИНН) Тогда
    СообщитьОбОшибке("Элемент не записан! Не заполнен УНП контрагента!");
    Отказать = Истина;
    Иначе	//проверим на наличие заполненного УНП
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |	Контрагенты.Ссылка,
    |	Контрагенты.НаименованиеПолное
    |ИЗ
    |	Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |	Контрагенты.ИНН = &ИНН";
    
    Запрос.УстановитьПараметр("ИНН", СокрЛП(ИНН));
    Выборка = Запрос.Выполнить().Выбрать(); 
    Если Выборка.Количество() > 0 Тогда
    Пока Выборка.Следующий() Цикл
    Сообщить("" + Выборка.Ссылка + ", " + Выборка.НаименованиеПолное);
    КонецЦикла; 
    Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("В справочнике уже существует(-ют) контрагент(-ы) с таким УНП. Записать контрагента?", Режим, 0);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
    Отказать = Истина;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
    
    
    
    

Поделиться этой страницей