| 
    
            
         
         | 
    
    
  | 
Запрет повторно введенного значения на текущий день? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        VSpicy    
     naïve 
    20.09.19 
            ✎
    13:35 
 | 
         
        Добрый день!
 
        В документе "Заявка на ремонт" есть поля: "Автомобиль", "Вид обслуживания" - нужно чтоб пользователи не могли на текущий день выбирать повторно один и тот же "Вид обслуживания" с выбранным автомобилем??? Какое лучше событие использовать и в каком поле: "Автомобиль" и "Вид обслуживания"? Если можно - пример кода. Заранее огромное спасибо!  | 
|||
| 
    1
    
        catena    
     20.09.19 
            ✎
    13:38 
 | 
         
        Писать автомобиль/вид обслуживания в периодический регистр с периодичностью - День. Физически не смогут дважды в день записать.     
         | 
|||
| 
    2
    
        unenu    
     20.09.19 
            ✎
    13:39 
 | 
         
        Подписки на событие перед записью достаточно     
         | 
|||
| 
    3
    
        VSpicy    
     naïve 
    20.09.19 
            ✎
    13:46 
 | 
         
        (2) Можно чуть подробнее, код в пример...     
         | 
|||
| 
    4
    
        Очевидно    
     20.09.19 
            ✎
    13:48 
 | 
         
        (1) - записать смогут, думаю провести не смогут...
 
        (0) правильный вариант думаю будет - организация проверки этих реквизитов перед записью документа в модуле объекта или - организация этой проверки в событии ОбработкаПроведения в модуле объекта. зависит от того: - Можно ли записывать документы с повторными реквизитами за день ? (Например 100 записанных и только 1 за день может быть проведен) - это тогда в обработку проведения - даже записывать нельзя - тогда "ПередЗаписью". https://its.1c.ru/db/v8std#content:463:hdoc  | 
|||
| 
    5
    
        D_E_S_131    
     20.09.19 
            ✎
    14:07 
 | 
         
        (4) в (1) Не предлагается сделать документом движения в новом регистре. Предлагается просто записать.     
         | 
|||
| 
    6
    
        Очевидно    
     20.09.19 
            ✎
    14:24 
 | 
         
        (5) "Предлагается просто записать" : 
 
        1. Зачем эту информацию где-то отдельно записывать, если нужна проверка на корректность заполнения документа ? 2. Видимо придётся записывать "При записи" в новый РС, и отдельно удалять запись при удалении / пометке удалении документа. 3. Создали сегодня документ, записали/провели. Через час изменили дату "на вчера", вводят новый ... запись осталась с первичного документа. кто удалять будет ? и отслеживать перемещения между датами (Он же не будет регистратором, т.е. ссылки на документ не будет ?) ... короче городить отдельный РС, только чтоб юзать его проверку уникальности - имхо плохая идея. Для этого есть такие события "Обработка проверки заполнения" и "Перед записью" / "При записи" - для осуществления всех проверок, имеющих отношение к этому объекту (Документу).  | 
|||
| 
    7
    
        VSpicy    
     naïve 
    20.09.19 
            ✎
    15:21 
 | 
         
        (6) При создании документа у пользователя нет прав на изменение даты документа...     
         | 
|||
| 
    8
    
        VSpicy    
     naïve 
    20.09.19 
            ✎
    15:23 
 | 
         
        (4) Я по сути понял.
 
        Можно пример в виде кода - скажем в событие "Перед записью"? Заранее спасибо!  | 
|||
| 
    9
    
        Очевидно    
     20.09.19 
            ✎
    15:36 
 | 
         
        (8)
 
        Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) ПараметрыПроверки = Новый Структура(); ПараметрыПроверки.Вставить("Автомобиль",Автомобиль); ПараметрыПроверки.Вставить("ВидОбслуживания",ВидОбслуживания); ПараметрыПроверки.Вставить("Дата",?(ЗначениеЗаполнено(Дата),Дата,НачалоДня(ТекущаяДата())); Если ПроверкаУникальностиДокументовЗаДату(ПараметрыПроверки) Тогда Отказ = Истина; Сообщить("За эту дату уже есть документы на эту машину."); Возврат; КонецЕсли; ... КонецПроцедуры Функция ПроверкаУникальностиДокументовЗаДату(Знач ПараметрыПроверки) Запрос = Новый Запрос(); Запрос.Текст = ""; Запрос.УстановитьПараметр("Автомобиль" ,ПараметрыПроверки.Автомобиль); Запрос.УстановитьПараметр("ВидОбслуживания" ,ПараметрыПроверки.ВидОбслуживания); Запрос.УстановитьПараметр("Дата" ,ПараметрыПроверки.Дата); Возврат Запрос.Выполнить().Пустой(); КонецФункции  | 
|||
| 
    10
    
        VSpicy    
     naïve 
    20.09.19 
            ✎
    15:37 
 | 
         
        (9) Спасибо огромное!!!     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |