1. 1C / Говнокод #27447

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    Функция ОпределитьВидКонтрагента(Контрагент) Экспорт
    	
    	 Запрос = Новый Запрос;
    	 
    	 Запрос.УстановитьПараметр("Контрагент", Контрагент);
    	 
    	 ТекстЗапроса = "ВЫБРАТЬ
    		|	Контрагенты.Ссылка КАК Контрагент,
    		|	Контрагенты.Представление КАК Представление,
    		|	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо
    		|ИЗ
    		|	Справочник.Контрагенты КАК Контрагенты
    		|ГДЕ
    		|	Контрагенты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицоНеРезидент)
    		|	И Контрагенты.Ссылка = &Контрагент";
    	 
    	 Запрос.Текст = ТекстЗапроса;
    	 	 
    	 РезультатЗапроса = Запрос.Выполнить();
    	 
    	 Если РезультатЗапроса.Пустой() Тогда
    		 Возврат Ложь;
    	 КонецЕсли;
    	 
    	 Выборка = РезультатЗапроса.Выбрать();
    	 
    	 Пока Выборка.Следующий() Цикл
    		 
    		 Если Контрагент = Выборка.Контрагент Тогда
    			 Возврат Истина;
    			 
    		 Иначе
    			 Возврат Ложь;
    			 
    		 КонецЕсли;
    		 
    	 КонецЦикла;
    	 
    КонецФункции

    Запостил: cdpoma, 01 Июня 2021

    Комментарии (24) RSS

    • чтобы что?
      функция ОпределитьВидКонтрагента(Контрагент) Экспорт
      возврат (Контрагент.ЮрФизЛицо = Перечисление.ЮрФизЛицо.ЮрЛицоНеРезидент)
      конецфункции
      Ответить
      • Ты 1С'ник?
        Ответить
      • А не может быть такого, что его нету в базе?
        Я просто ХЗ как этот ваш 1С работает

        Но вообще выборка выглядит пидорски в любом случае. Неужели там нету какого-то "Существует" метода у запроса? Или "неПустой'?
        Ответить
        • Может. [Объект не найден 2757-4699-948c-cfa72ba94f86] И насколько я знаю оно и в запросе найдет этот корявый объект и в коде. На все реквизиты вроде неопределенно возвращает, но однохуйственно может проскочить.
          https://programmist1s.ru/nayti-bityie-ssyilki-zaprosom-1s-i-ne-tolko/
          Ответить
          • Если Найти(Строка(Счет.Организация),"Объект не найден") <> 0 Тогда
            
            Сообщить("Ссылка битая!");
            
            КонецЕсли;


            какой пхп ))
            Ответить
        • Есть, значениезаполнено(объект) и насколько я знаю - вернет истину если влетит битая ссылка.
          https://infostart.ru/1c/articles/175898/
          Такой вот багор.
          Ответить
          • насколько я знаю битую ссылку от небитой можно только через ПолучитьОбъект() отличить
            Ответить
            • А откуда битые ссылки берутся, кстати? В 1С констрейнтов на базе нету, чтобы нельзя было удалить что-то, от чего зависят другие записи?
              Ответить
              • Зачем (и как?) в ней вообще что-то удалять??
                Ответить
              • Чаще всего - неправильное удаление данных без подменны ссылок. Или корявый перенос данных программистом. Реже - базе пизда.
                Ответить
                • а если storage engine не ловит неправильное и корявое, это значит что referential integrity немае
                  Ответить
            • Не только. Можно какой нибудь реквизит версии объекта вытащить и если он неопределенный - значит ссылка битая
              Ответить
    • - Определите, пожалуйста, вид контрагента ООО "Ромашка".
      - Да.
      Ответить
    • Это способ проверить, что контрагент сущестсует?
      А Представление на кой чорт?
      Ответить
      • Представление КАК Представление, что доебался..

        Возможно скопипастили неудачно.
        Ответить
    • как говнокодер могу заявить, что тут не все так однозначно.
      1. исходя из возвращаемого результата, она отвечает на вопрос "является ли переданный контрагент юриком?". т.е. названа неправильно, но ведь работает
      2. на строчке 21 можно было бы и остановится. т.е. если результат запроса пустой - то ложь иначе истина. косяк только в порядке следования условий. сначала надо было отбор по контрагенту, потом - по перечислению.
      3. конструкция

      функция ОпределитьВидКонтрагента(Контрагент) Экспорт
      возврат (Контрагент.ЮрФизЛицо = Перечисление.ЮрФизЛицо.ЮрЛицоНеРезидент)
      конецфункции

      вызовет получение всех полей контрагента. а если там заблоблена фотка, например. хорошим тоном является получение конкретного поля из реквизита запросом. например в типовых возврат ОбщегоНазанчения.ЗначениеСвойстваОбъекта (Контрагент, "ВидКонтрагента") = ПредопредленноеЗначение("Перечисление.Юр ФизЛицо.ЮрЛицоНеРезидент");
      Ответить

    Добавить комментарий