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

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

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

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

0

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

znsoft znsoft, (Updated )

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

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

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
Функция ПолучитьОсновногоБухгалтераПоОрганизации(организация) Экспорт

	текстЗапроса = "
		|ВЫБРАТЬ ПЕРВЫЕ 1
		|	ПользовательБухгалтер
		|ИЗ
		|	РегистрСведений.СКАНИЯ_ОтветственныеБухгалтерыПоОрганизациям
		|ГДЕ
		|	Организация = &организация
		|	И Основной = ИСТИНА
		|";

	запрос = Новый Запрос(текстЗапроса);
	запрос.УстановитьПараметр("организация", организация);
	
	выборка = запрос.Выполнить().Выбрать();
	Если выборка.Следующий() Тогда
		возврат выборка.ПользовательБухгалтер;
	Иначе
		возврат Справочники.Пользователи.ПустаяСсылка();
	КонецЕсли;

КонецФункции

alexey85 alexey85, (Updated )

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

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

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
Функция ПолучитьПарамтерыОтправкиРеестра()
	Адресат = ПараметрыСеанса.ТекущийПользователь.аОфис.ОфисАрхивации.Ответственный;
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
			               |	ТерриторииИПомещения.Ссылка КАК Ссылка
			               |ИЗ
			               |	Справочник.ТерриторииИПомещения КАК ТерриторииИПомещения
			               |ГДЕ
			               |	ТерриторииИПомещения.аОфисПредприятия = &Архив
			               |	И НЕ ТерриторииИПомещения.ПометкаУдаления";
	Запрос.УстановитьПараметр("Архив", Адресат.аОфис.ОфисАрхивации);
	РЗОф = Запрос.Выполнить().Выгрузить();
	Если РЗОф.Количество() = 0 Тогда
		Сообщить("Офис архивации """ + Адресат.аОфис.ОфисАрхивации + """ не прикреплен к территории. Обратитесь в техническую поддержку");
	ИначеЕсли РЗОф.Количество() > 1 Тогда
		Сообщить("Офис архивации """ + Адресат.аОфис.ОфисАрхивации + """ прикреплен к нескольким территориям:");
		Для Каждого СтрТер ИЗ РЗОф Цикл
			Сообщить(СтрТер.Ссылка);
		КонецЦикла;
		Сообщить("Обратитесь в техническую поддержку.");
	Иначе
		ОфисПолучателя = РЗОф[0].Ссылка;	
		ПодразделениеПолучателя = Адресат.Подразделение;		
	КонецЕсли;

	Возврат Новый Структура("Адресат, ОфисПолучателя, ПодразделениеПолучателя", Адресат, ОфисПолучателя, ПодразделениеПолучателя);
КонецФункции

alexey85 alexey85, (Updated )

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

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

0

  1. 1
  2. 2
Для ТекИндекс = 0 По Объект.Товары.Количество() -1 Цикл       									   
			Стр = Объект.Товары[ТекИндекс];

//Интересе, а чем не устроило?:

Для каждого Стр из Объект.Товары Цикл

timofeysin timofeysin, (Updated )

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