Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 23:06

запрет на запись в справочнике

Автор ls600, 17 сен 2013, 08:45

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

ls600

Доброго времени суток. Помогите разобраться в коде. Ситуация такая нужно запретить создание контрагента в справочнике если такой уже есть.
База самописная, форма обычная.




Функция ПроверкаДубликатовКонтрагента()

КоличествоЗнаковРНН = СтрДлина(ЭлементыФормы.РНН.Значение);
Если КоличествоЗнаковРНН = 12 Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Контрагенты.Ссылка,
| Контрагенты.РНН,
| Контрагенты.Наименование
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Ссылка <> &Ссылка
| И Контрагенты.ЭтоГруппа = ЛОЖЬ
| И Контрагенты.РНН = &РНН";

Запрос.УстановитьПараметр("Ссылка", Ссылка);    
Запрос.УстановитьПараметр("РНН"   , ЭлементыФормы.РНН.Значение);
Результат = Запрос.Выполнить();

Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
ТекстСообщения = "";

КонецЕсли;
КонецЕсли;

возврат истина;     <<<------ что то с возвратом
КонецФункции




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

ПрисутствиеОшибок = ПроверкаДубликатовКонтрагента();

Если ПрисутствиеОшибок Тогда
Предупреждение("Контрагент уже есть в базе ...",,"Контрагент не записан");
Отказ = Истина;


КонецЕсли;



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






если так и оставить то запрет полный на создание контрагента :D


Yura063

Возврат у вас без условия и всегда возвращает истину, не важно на код функции


      Если Не Результат.Пустой() Тогда
            Выборка = Результат.Выбрать();
            ТекстСообщения = "";
            возврат истина;             
         КонецЕсли;
      КонецЕсли;
     
      возврат Ложь;   
КонецФункции

наверно так!!!
Помогли, отблагодари!

mixqn

интересный у вас код :D
вне зависимости от результата запроса ВСЕГДА возвращается ИСТИНА, т.е. ВСЕГДА как бы есть дубль.
Скорее всего в конце функции надо возвращать ЛОЖЬ, а вот если попали в
Если Не Результат.Пустой() Тогда
КонецЕсли;

то как раз вернуть нужно ИСТИНУ - значит нашли контрагента по заданным условиям.
Если Не Результат.Пустой() Тогда
Возврат Истина
КонецЕсли;

ls600

Цитата: Yura063 от 17 сен 2013, 08:52
Возврат у вас без условия и всегда возвращает истину, не важно на код функции


      Если Не Результат.Пустой() Тогда
            Выборка = Результат.Выбрать();
            ТекстСообщения = "";
            возврат истина;             
         КонецЕсли;
      КонецЕсли;
     
      возврат Ложь;   
КонецФункции

наверно так!!!

БЛАГОДАРЮ РАБОТАЕТ!!!!

Dethmontt

Если Не Результат.Пустой() Тогда
            Выборка = Результат.Выбрать();
            ТекстСообщения = "";
            возврат истина;             
         КонецЕсли;
      КонецЕсли;
     
      возврат Ложь;   

А можно одной строкой:

Возврат НЕ Результат.Пустой();
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

ls600


LordWizard

Странно, а если с одним и тем же ИНН и КПП программа хавает и дает записать??
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Теги:

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

Рейтинг@Mail.ru

Поиск