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

    −139

    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
    Функция ПолучитьЕдиницу(ТекЕдиница)
    	Тек = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТекЕдиница.Наименование);
    	Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
    		Тек = Справочники.КлассификаторЕдиницИзмерения.СоздатьЭлемент();
    		Тек.Наименование = ТекЕдиница.Наименование;
    		Тек.НаименованиеПолное = ТекЕдиница.Наименование;
    		СтроковыйКод = "001";
    		Запрос = Новый Запрос;
    		Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
    		               |	КлассификаторСтранМира.Код КАК Код
    		               |ИЗ
    		               |	Справочник.КлассификаторСтранМира КАК КлассификаторСтранМира
    		               |
    		               |УПОРЯДОЧИТЬ ПО
    		               |	Код УБЫВ";
    					   
    					   Результат = Запрос.Выполнить().Выгрузить();
    					   ЧисловойКод = Число(Результат[0].Код) + 1;
    					   Если ЧисловойКод < 10 Тогда
    						   СтроковыйКод = "00"+ЧисловойКод
    					   ИначеЕсли ЧисловойКод < 100 Тогда
    						   СтроковыйКод = "0"+ЧисловойКод
    					   Иначе
    						   СтроковыйКод = ""+ЧисловойКод
    					   КонецЕсли;
    					   
    		Тек.Код = СтроковыйКод;
    		
    		Попытка
    			Тек.Записать();
    		Исключение
    			ЕстьОшибка = Истина;
    			Сообщить("Не могу записать единицу измерения "+ТекЕдиница.Наименование+" !");
    			Сообщить(ОписаниеОшибки());
    			Возврат "";
    		КонецПопытки;
    	КонецЕсли;
    	Если Тек = Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка() Тогда
    		ЕстьОшибка = Истина;
    		Возврат "";
    	Иначе
    		Возврат Тек;
    	КонецЕсли;
    КонецФункции

    Получила в наследство от команды разработчиков во главе с неким Леонидом. Порадовало формирование кода для нового элемента классификатора единиц измерения. И правда, почему бы не поискать максимальный код в каком-нибудь неожиданном месте? А такое оригинальное формирование строки с лидирующими нулями просто убило до смерти.

    Запостил: Shapokljak, 12 Сентября 2011

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

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