Бухгалтерия / Говнокод #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)

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

0

  1. 1
  2. 2
  3. 3
  4. 4
ДокОбъект = ДокСсылка.ПолучитьОбъект();
			ДокОбъект.ОбменДанными.Загрузка = Истина;
			ДокОбъект.ПометкаУдаления = Истина;
			ДокОбъект.Записать();

znsoft znsoft, (Updated )

Комментарии (0)