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

    0

    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
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    Процедура ПоказатьРасчетныеСчета()
    	ТаблицаРасчетныхСчетов.Очистить();
    	
    	Если ЭтоНовый() Тогда
    		Возврат;
    	КонецЕсли;	
    	
    	Выборка = Справочники.ТСЖ.Выбрать();
    	Пока Выборка.Следующий() Цикл
    		ТСЖНеБух = Выборка.Ссылка;
    		Если (ТСЖНеБух.ПометкаУдаления) ИЛИ (ТСЖНеБух.ЭтоУК=1) ИЛИ (ТСЖНеБух.ЭтоУК=2) Тогда 
    			Продолжить;
    		КонецЕсли;
    		
    		//--- (1)--- Все СОБСТВЕННЫЕ счета (выборка по владельцу счета)
    		Если (НЕ ТСЖНеБух.НаБалансеУК) Тогда
    			ВыбСчетов = Справочники.БанковскиеСчета.Выбрать(,ТСЖНеБух,,"Код Возр"); 
    			Пока ВыбСчетов.Следующий() Цикл
    				Если (НЕ ВыбСчетов.ПометкаУдаления) Тогда
    					ДобавитьСчет(ТСЖНеБух, ВыбСчетов.Ссылка, ВыбСчетов.Ссылка.ХранилищеУслуг);
    				КонецЕсли;	
    			КонецЦикла;
    		КонецЕсли;	
    
    		//--- (2)--- Все ЧУЖИЕ счета (обход табличной части СчетаУК)
    		Для Каждого ВыбСчет Из ТСЖНеБух.СчетаУК Цикл
    			Если  (ВыбСчет.Организация   = Справочники.ТСЖ.ПустаяСсылка()) ИЛИ
    				  (ВыбСчет.РасчетныйСчет = Справочники.БанковскиеСчета.ПустаяСсылка()) Тогда
    				  Продолжить;
    			КонецЕсли;	  
    			Если НЕ ВыбСчет.РасчетныйСчет.ПометкаУдаления Тогда
    				ДобавитьСчет(ТСЖНеБух, ВыбСчет.РасчетныйСчет, ВыбСчет.ХранилищеУслуг);
    			КонецЕсли;	
    		КонецЦикла;	
    		//----------
    	КонецЦикла;	
    КонецПроцедуры
    Процедура ДобавитьСчет(ТСЖНеБух, РСчет, Хран)
    		НовСтр               = ТаблицаРасчетныхСчетов.Добавить();
    		НовСтр.Организация   = ТСЖНеБух;
    		НовСтр.Получатель    = РСчет.Владелец;
    		НовСтр.РасчетныйСчет = РСчет;
    			
    		Если ТСЖНеБух.ВсеУслугиВОдной Тогда
    			НовСтр.Флаг      = "Да, может.";
    		Иначе	
    			МассУслуг      = глПолучитьМассивСсылокУслуг(Хран);
    			НовСтр.Флаг      = ?(МассУслуг.Найти( Ссылка ) = Неопределено, "Нет", "Да, может.");
    		КонецЕсли;	
    КонецПроцедуры

    ХранилищеЗначений, любимый(?) костыль людей, не слышавших о нормализации.
    Вместо того, чтобы сделать регистр сведений со связями (хотя бы)счёт-услуга, мы запихнём список услуг в ХЗ - реквизит счёта. Это ведь так удобно(на самом деле нет)!

    Запостил: CtrlAltReset, 25 Ноября 2021

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

    • #define TRUE "Да, может."
      Ответить
    • >Если (НЕ ТСЖНеБух.НаБалансеУК
      > Для Каждого ВыебСчет Из ТСЖНеБух

      Как можно это на полном серьезе читать?
      Ответить
      • А теперь представь, каково англоговорящим в остальных языках.
        Ответить
    • этот код прекрасен во всем , и неявные запросы в цикле и "ЭтоНовый()" в процедуре с названием "показать" (это во мне уже Управляемые формы говорят )
      Ответить

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