Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 июл 2021, 02:41

Помогите с кодом (проверка при записи)

Автор Алексей_1985_06, 08 янв 2021, 21:25

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Всем привет! Подскажите пжл, при записи элемента справочника, происходит проверка чтоб нельзя было записать две должности с соответствующей отметкой командира одного подразделения, и все вроде бы работает.... Но только в данном случае, при изменении любого реквизита, например "Классификации должности" и последующий записи элемента - инициируется эта самая проверка и соответственно записать элемент нельзя, что крайне не удобно.... Подскажите как можно оптимизировать это? :dfbsdfbsdf::dfbsdfbsdf::dfbsdfbsdf:


Процедура ПередЗаписью(Отказ)

Если КомандирСтруктурногоПодразделения  Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ШтатныеДолжности.Владелец КАК Подразделение,
| ШтатныеДолжности.Ссылка КАК Должность,
| ШтатныеДолжности.КомандирСтруктурногоПодразделения КАК Командир
|ИЗ
| Справочник.ШтатныеДолжности КАК ШтатныеДолжности
|ГДЕ
| ШтатныеДолжности.КомандирСтруктурногоПодразделения = ИСТИНА
| И ШтатныеДолжности.Владелец = &Подразделение";
Запрос.УстановитьПараметр("Подразделение",Владелец);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если НЕ Результат.Пустой() Тогда
Выборка.Следующий();

Сообщение = Новый СообщениеПользователю;
Сообщение.Поле = "КомандирСтруктурногоПодразделения";
Сообщение.УстановитьДанные(ЭтотОбъект); 
Сообщение.Текст = "Руководитель уже определен...";
Сообщение.Сообщить();
Отказ = Истина; // отказ от записи
    КонецЕсли;
КонецЕсли;
КонецПроцедуры



LexaK

попробуйте так

Процедура ПередЗаписью(Отказ)
   
    Если КомандирСтруктурногоПодразделения  Тогда
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    ШтатныеДолжности.Владелец КАК Подразделение,
        |    ШтатныеДолжности.Ссылка КАК Должность,
        |    ШтатныеДолжности.КомандирСтруктурногоПодразделения КАК Командир
        |ИЗ
        |    Справочник.ШтатныеДолжности КАК ШтатныеДолжности
        |ГДЕ
        |    ШтатныеДолжности.КомандирСтруктурногоПодразделения = ИСТИНА
        |    И ШтатныеДолжности.Владелец = &Подразделение
        |    И ШтатныеДолжности.Ссылка <> &Ссылка
|";
        Запрос.УстановитьПараметр("Подразделение",Владелец);
        Запрос.УстановитьПараметр("Ссылка",Ссылка);

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

КонецПроцедуры
ответ Понравился? (в смысле пригодился?)

Алексей_1985_06

Цитата: LexaK от 08 янв 2021, 23:23
попробуйте так

Процедура ПередЗаписью(Отказ)
   
    Если КомандирСтруктурногоПодразделения  Тогда
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    ШтатныеДолжности.Владелец КАК Подразделение,
        |    ШтатныеДолжности.Ссылка КАК Должность,
        |    ШтатныеДолжности.КомандирСтруктурногоПодразделения КАК Командир
        |ИЗ
        |    Справочник.ШтатныеДолжности КАК ШтатныеДолжности
        |ГДЕ
        |    ШтатныеДолжности.КомандирСтруктурногоПодразделения = ИСТИНА
        |    И ШтатныеДолжности.Владелец = &Подразделение
        |    И ШтатныеДолжности.Ссылка <> &Ссылка
|";
        Запрос.УстановитьПараметр("Подразделение",Владелец);
        Запрос.УстановитьПараметр("Ссылка",Ссылка);

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

КонецПроцедуры


LexaK Огромное Вам спасибо за помощь :btbzdb::btbzdb::btbzdb:! Все ок !!!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск