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

Проверка Уникальности

Автор Erkhan, 01 фев 2023, 07:22

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

Erkhan

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


Помогите сделать из этой функции рабочую

Afinogen

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

   Запрос.УстановитьПараметр("Ссылка",Объект.Ссылка);
   Запрос.Текст = СтрЗаменить(Запрос.Текст,"ПараметрНомерСчетФактуры",СокрЛП(Объект.НомерСчетФактуры));
   ПроверкаУник2 = Запрос.Выполнить().Выбрать();
   
   Если ПроверкаУник2.Следующий() Тогда
     
      Сообщить("Счет фактуры с таким номером уже существует");
      Отказ = Истина;
      Возврат ПроверкаУник2;

   КонецЕсли   
КонецФункции

Afinogen

я обычно в таких случаях  параметр в "ПОДОБНО" экранирую %

Реализация.НомерСчетФактуры ПОДОБНО ""ПараметрНомерСчетФактуры%""

ИЛИ

Реализация.НомерСчетФактуры ПОДОБНО ""%ПараметрНомерСчетФактуры%""


это расширит диапазон поиска
 напрмиер у вас есть номер счета фактуры "0001  ", а вы передаете 0001, равенство не найдет такое вхождение

LexaK

Afinogen,
ЦитироватьВозврат ПроверкаУник2;
вот это то вы, зачем возвращаете?
в тонком клиенте приведет к ошибке!

примерно такой конец должен быть


Если ПроверкаУник2.Следующий() Тогда
     
      Сообщить("Счет фактуры с таким номером уже существует");
      //Отказ = Истина;
//проверка не прошла, возвращаем Ложь
      Возврат Ложь; //ПроверкаУник2;

   КонецЕсли   

//проверка прошла
Возврат Истина;

КонецФункции
если помогло нажмите: Спасибо!

Afinogen

Не посмотрел что это выборка)

Теги:

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

Рейтинг@Mail.ru

Поиск