Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Контроль при записи документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Noviscok
Стоит задача: что нельзя записывать более одного документа за одну дату. (Выдавать предупреждение и не позволять записывать). Как это сделать?
Bernet
Noviscok @ Сегодня, 8:32 необходимо зарегистрироваться для просмотра ссылки ,
В модуле объекта в обработчике "ПередЗаписью" добавляете такое:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВАШДОКУМЕНТ.Ссылка) КАК Колво
    |ИЗ
    |    Документ.ВАШДОКУМЕНТ КАК ВАШДОКУМЕНТ
    |ГДЕ
    |    ВАШДОКУМЕНТ.Дата МЕЖДУ &НачалоДня И &КонецДня
    |";
    
    Запрос.УстановитьПараметр("НачалоДня", НачалоДня(Дата));
    Запрос.УстановитьПараметр("КонецДня", КонецДня(Дата));
    
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда // раз есть результат значит уже есть документ
        Выборка = Результат.Выбрать();
        Выборка.Следующий();
        Сообщить("В этот день уже есть "+Строка(Выборка.Колво)+" документов.");
        Отказ = Истина;
        Возврат;
    КонецЕсли;
    
КонецПроцедуры
Noviscok
Bernet @ Сегодня, 13:09 необходимо зарегистрироваться для просмотра ссылки ,
Не могу понять пишет что поле Дата не найде

Вот дурак, разобрался. СПАСИБО ОГРОМНОЕ
logist
Мне больше такой вариант нравится
   Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    |  ВАШДОКУМЕНТ.Ссылка



Это не имеет смысла, т.к. документа никогда не будет больше одного.
     Выборка = Результат.Выбрать();
        Выборка.Следующий();
Noviscok
Цитата(logist @ 19.10.17, 14:24) необходимо зарегистрироваться для просмотра ссылки
Если НЕ Результат.Пустой() Тогда // раз есть результат значит уже есть документ

Почему пишем ЕСЛИ НЕ Результат.Пустой?
salton
Цитата(Noviscok @ 19.10.17, 16:29) необходимо зарегистрироваться для просмотра ссылки
Почему пишем ЕСЛИ НЕ Результат.Пустой?


ну если написать:

Если Результат.Пустой() Тогда


Тогда весь код будет выглядеть как:

Если Результат.Пустой() Тогда
  //ничего не происходит, можно
  Сообщить("Документов нет");
Иначе
  Выборка = Результат.Выбрать();
        Выборка.Следующий();
        Сообщить("В этот день уже есть "+Строка(Выборка.Колво)+" документов.");
КонецЕсли;


громоздко как-то... зачем нам обрабатывать ситуацию когда нет документа?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.