Бухгалтерия / Говнокод #28944 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
Функция ЭтоVIN(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт 
	
	Если ТипЗнч(Значение) <> Тип("Строка") Тогда
		Возврат Ложь;
	КонецЕсли;   
	
	Если Не ПробелыЗапрещены Тогда
		Значение = СтрЗаменить(Значение, " ", "");
	КонецЕсли;
	
	Возврат ЗначениеЗаполнено(Значение)
	И (СтрДлина(Значение) = 17)
	И 	
	// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
	// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
	СтрДлина(  
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(	СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(	СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( 
	СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
	СтрЗаменить( СтрЗаменить( СтрЗаменить( 
	Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")
	, "A", ""), "B", ""), "C", ""), "D", ""), "E", ""), "F", ""), "G", ""), "H", ""), "J", ""), "K", ""), "L", ""), "M", "")
	, "N", ""), "P", ""), "R", ""), "S", ""), "T", ""), "U", ""), "V", ""), "W", ""), "X", ""), "Y", ""), "Z", "")) = 0; 
	
КонецФункции

Функция определяет является ли строка VIN, метода выбрана забавная - в строке удаляются все допустимые символы, то что осталось, по мнению автора - мусор, т.е. vin невалидный. Видимо просто проверить каждый символ на вхождение в допустимый алфавит это слишком просто ;).

VladC VladC, (Updated )

Комментарии (15, +15)

Бухгалтерия / Говнокод #28782 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
Функция СоответствиеСодержитКлюч(Соответствие, Ключ)
    
    Если НЕ Соответствие[Ключ] = Неопределено Тогда
        Возврат Истина;
    КонецЕсли;
    
    КоличествоЭлементов = Соответствие.Количество();
    Соответствие.Удалить(Ключ);
    
    Если КоличествоЭлементов = Соответствие.Количество() Тогда
        Возврат Ложь;
    КонецЕсли;
    
    Соответствие.Вставить(Ключ);
    Возврат Истина;
    
КонецФункции

Как тебе такое Илон (зачеркнуто) Нуралиев?!

hujaboy hujaboy, (Updated )

Комментарии (59, +59)

Бухгалтерия / Говнокод #28550 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
Функция ЗначениеКонстанты(ИмяКонстанты) Экспорт
 
 Если  ИмяКонстанты = "_ИмяФайловогоСервера" тогда
  возврат "jrumos03fscp010";
 КонецЕсли;
 
 Возврат Константы[ИмяКонстанты].Получить();
КонецФункции

Файловый сервер может быть только такой.

TrollNeedsDoll TrollNeedsDoll, (Updated )

Комментарии (7, +7)

Бухгалтерия / Говнокод #28397 Ссылка на оригинал

0

  1. 1
ВремяВыезда = Строка(Формат(ВыборкаМаршШапка[0].ВремяВыезда, "ДФ=ЧЧ")) + ":" + Строка(Формат(ВыборкаМаршШапка[0].ВремяВыезда, "ДФ=мм")) + " выезд из гар.";

Выводит время без секунд

serving12 serving12, (Updated )

Комментарии (3, +3)

Бухгалтерия / Говнокод #28343 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
&НаКлиенте
Процедура НастройкаВидимости()
          НастройкаВидимости();
КонецПроцедуры

&НаКлиенте
Процедура ВидЗаявкиПриИзменении(Элемент)
	НастройкаВидимости();
КонецПроцедуры

Когда отвлекли телефонным звонком, а потом сидишь полчаса и думаешь почему при выборе значения на форме в поле "Вид заявки" 1ска крашиться)))

mordik mordik, (Updated )

Комментарии (2, +2)

Бухгалтерия / Говнокод #28338 Ссылка на оригинал

0

  1. 1
СТРЗАМЕНИТЬ(СОКРЛ(СТРЗАМЕНИТЬ(уатПутевойЛист.Номер, "0", " ")), " ", "0") КАК НомерПЛ,

Удаляет нули в номере документа для вывода на печатную форму

serving12 serving12, (Updated )

Комментарии (15, +15)

Бухгалтерия / Говнокод #28173 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
Функция ПолучитьСеб (Номенклатура,ДатаОстатков) Экспорт
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	УчетПартийОстатки.Номенклатура,
		|	УчетПартийОстатки.Партия КАК Партия,
		|	УчетПартийОстатки.СуммаБезНДСОстаток / УчетПартийОстатки.КоличествоОстаток КАК бухСС
		|ИЗ
		|	РегистрНакопления.УчетПартий.Остатки(&ДатаОстатков, Номенклатура В (&Номенклатура)) КАК УчетПартийОстатки
		|		ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииНоменклатуры.Остатки(&ДатаОстатков, Номенклатура В (&Номенклатура)) КАК ПартииНоменклатурыОстатки
		|		ПО УчетПартийОстатки.Характеристика = ПартииНоменклатурыОстатки.Характеристика
		|			И УчетПартийОстатки.МестоХранения = ПартииНоменклатурыОстатки.МестоХранения
		|			И УчетПартийОстатки.Статус = ПартииНоменклатурыОстатки.Статус
		|			И УчетПартийОстатки.Номенклатура = ПартииНоменклатурыОстатки.Номенклатура
		|			И УчетПартийОстатки.Партия = ПартииНоменклатурыОстатки.Партия
		|ГДЕ
		|	УчетПартийОстатки.КоличествоОстаток > 0
		|
		|УПОРЯДОЧИТЬ ПО
		|	Партия";
		
		Запрос.УстановитьПараметр("ДатаОстатков", ДатаОстатков);
		Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
		
		РезультатЗапроса = Запрос.Выполнить();
		
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		Если ВыборкаДетальныеЗаписи.Следующий() Тогда
			Возврат ВыборкаДетальныеЗаписи.бухсс;
		КонецЕсли;
		
	КонецФункции

Нашёл сие поделие в базе одного клиента, придраться хочется ко всему, начиная с лютого нэйминга - имя функции ПолучитьСеб(), не намного лучше чем Функция1(), имя переменной в запросе бухСС тоже так себе.
Задача функции вернуть себестоимость единицы товара, при этом число она возвращает только если в запросе что-то есть, понятно что в остальных случаях вернет Неопределено, но себестоимость это всегда число, никаких Неопределено быть не должно.
Если посмотреть текст запроса, то видно, что поля выборки на 100% беруться из одной таблицы, зачем там ещё одну прилепили, да ещё и с полным соединением - теряюсь в догадках.
Упорядочивание по полю Партия вообще смысла не имеет, если уж речь идёт о получении себестоимости, то скорей автор хотел получить её из первой партии, что косвенно подвтерждается выражением "ПЕРВЫЕ 1", но дело в том, что упорядочивание по ссылке (Партия - это элемент справочника Партии) не имеет никакой привязки к дате, т.е. нужно было писать так: "Упорядочить По Партия.ДатаПартии".
Здесь не видно, но функция вызывается только в двух местах модуля и всегда с конкретным значением номенклатуры, т.е. условие виртуальной таблицы может быть оптимизировано до "Номенклатура = &Номенклатура".
Ну и на последок - в данном случае полное соединение конечно нужно ликвидировать, но если бы оно действительно было нужно, то виртуальные таблицы не стоит связывать между собой, предварительно их нужно помещать во временные таблицы и индексировать по полям условий соединения.

VladC VladC, (Updated )

Комментарии (1, +1)

Бухгалтерия / Говнокод #28120 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
ЗапросБезСЛ = Новый Запрос;
	ЗапросБезСЛ.Текст = "ВЫБРАТЬ
	|	КарточкаСделкиТовары.Ссылка.Ссылка КАК СсылкаКС
	|ИЗ
	|	Документ.КарточкаСделки.Товары КАК КарточкаСделкиТовары
	|ГДЕ
	|	КарточкаСделкиТовары.Ссылка.Завершена = ЛОЖЬ
	|	И КарточкаСделкиТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
	|	И (КарточкаСделкиТовары.СтатусСтроки = &СтатусСтрокиПлан
	|			ИЛИ КарточкаСделкиТовары.СтатусСтроки = &СтатусСтрокиПланХочуВЗаказано
	|			ИЛИ КарточкаСделкиТовары.Ссылка.Клиент = &Электросистем
	|				И КарточкаСделкиТовары.СтатусСтроки <> &СтатусСтрокиЗавершено)
	|	И КарточкаСделкиТовары.КонтрактнаяДата < НАЧАЛОПЕРИОДА(&ТекДата, ДЕНЬ)
	|	И КарточкаСделкиТовары.Ссылка.Подразделение В ИЕРАРХИИ(&ДРП)
	|	И КарточкаСделкиТовары.Ссылка.ДляПланаПроизводства = ЛОЖЬ
	|	И КарточкаСделкиТовары.Ссылка.Дата > &ПрошлыйГод
	|	И КарточкаСделкиТовары.Ссылка.Статус <> ЗНАЧЕНИЕ(Справочник.СтатусыКарточекСделки.Завершена)
	//|	И КарточкаСделкиТовары.Ссылка.Номер = ""180010002""
	|
	|СГРУППИРОВАТЬ ПО
	|	КарточкаСделкиТовары.Ссылка.Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	КарточкаСделкиТовары.Ссылка.Дата УБЫВ";
	ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиПлан", Справочники.СтатусыСтрокКарточкиСделки.Запланировано);
	ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиПланХочуВЗаказано", Справочники.СтатусыСтрокКарточкиСделки.Заказано);
	ЗапросБезСЛ.УстановитьПараметр("ТекДата", ТекущаяДата());
	ЗапросБезСЛ.УстановитьПараметр("ДРП",Справочники.ФункциональныеОтделыПродаж.НайтиПоКоду("d16"));
	ЗапросБезСЛ.УстановитьПараметр("Электросистем", Справочники.Контрагенты.НайтиПоКоду("140755"));
	ЗапросБезСЛ.УстановитьПараметр("СтатусСтрокиЗавершено", Справочники.СтатусыСтрокКарточкиСделки.Завершено);
	ЗапросБезСЛ.УстановитьПараметр("ПрошлыйГод", НачалоГода(НачалоГода(ТекущаяДата())-3 * 86400)); 	
	
	Выборка = ЗапросБезСЛ.Выполнить().Выбрать();
	
	сПользователь = Справочники.Пользователи.НайтиПоКоду("17 644").Руководитель;
	НоваяКонтрДата = ОбщиеПроцедурыИФункции.ОпределитьДатуЗавершения(сПользователь,  ТекущаяДата(), 3600*8*1); 
	
	Пока Выборка.Следующий() Цикл
		
		КС = Выборка.СсылкаКС.ПолучитьОбъект();		
		НеобходимоЗаписать = Ложь; 
		
		Если ЗначениеЗаполнено(Выборка.СсылкаКС.КодSL) Тогда
			Для каждого Изделие из КС.Товары Цикл
				
				СтатусСтроки = ПолучитьСтатусСтрокиВSL(Выборка.СсылкаКС.КодSL,Изделие.НомерСтроки,Выборка.СсылкаКС.Склад);					
				
				Если СтатусСтроки <> Неопределено И СтатусСтроки <> "F" //выполн.
					и  СтатусСтроки <> "C" //завершено
					Тогда
					
					Если  Изделие.КонтрактнаяДата  < НачалоДня(ТекущаяДата()) Тогда
						Если (Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Запланировано 
							или Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Заказано) ИЛИ (Изделие.СтатусСтроки <> Справочники.СтатусыСтрокКарточкиСделки.Завершено И Выборка.СсылкаКС.Клиент = Справочники.Контрагенты.НайтиПоКоду("140755")) Тогда 
							Изделие.КонтрактнаяДата = НоваяКонтрДата;
							НеобходимоЗаписать = Истина;
						КонецЕсли;
					КонецЕсли;
				КонецЕсли; 
			КонецЦикла;	
			
			Если НеобходимоЗаписать Тогда
				КС.Записать();
				Документы.КарточкаСделки.ОбновитьПараметрыКарточкиСделкиВSL(КС);
				rs = Неопределено;
			КонецЕсли;
			
		Иначе
			Для каждого Изделие из КС.Товары Цикл
				
				Если  Изделие.КонтрактнаяДата  < НачалоДня(ТекущаяДата()) Тогда
					Если (Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Запланировано 
						или Изделие.СтатусСтроки = Справочники.СтатусыСтрокКарточкиСделки.Заказано) ИЛИ (Изделие.СтатусСтроки <> Справочники.СтатусыСтрокКарточкиСделки.Завершено И Выборка.СсылкаКС.Клиент = Справочники.Контрагенты.НайтиПоКоду("140755")) Тогда 
						Изделие.КонтрактнаяДата = НоваяКонтрДата;
						НеобходимоЗаписать = Истина;
					КонецЕсли;
				КонецЕсли;
				
			КонецЦикла; 
			
			Если НеобходимоЗаписать Тогда
				КС.Записать(); 
				
				rs = Неопределено;  
				
			КонецЕсли;
			
		КонецЕсли; 	
		
	КонецЦикла;

testtest69 testtest69, (Updated )

Комментарии (20, +20)

Бухгалтерия / Говнокод #28014 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
Процедура СоздаватьПКОПриИзменении(Элемент)
	Если НЕ ЗаписыватьДокументы Тогда
		ЗаписыватьДокументы = Истина;
	КонецЕсли;
КонецПроцедуры

Нельзя так просто взять и не создавать документы.

Patronize Patronize, (Updated )

Комментарии (1, +1)