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

    −119

    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
    Процедура ДействияФормыДействие5(Кнопка)
    	
    	ТекущиеДанные = ЭлементыФормы.СправочникСписок.ТекущиеДанные;
    	Если ТекущиеДанные = Неопределено Тогда 
    		Возврат;
    	КонецЕсли;
    	
    	ТекПометкаУдаления = ТекущиеДанные.Ссылка.ПометкаУдаления;
    	
    	КонтрагентОбъект = ТекущиеДанные.Ссылка.ПолучитьОбъект();
    	КонтрагентОбъект.ПометкаУдаления = Не ТекПометкаУдаления;
    	Попытка
    		КонтрагентОбъект.записать();
    	Исключение 
    		Сообщить("Не удалось " + ?(ТекПометкаУдаления, "снять", "установить") + " пометку удаления.");
    	КонецПопытки;	
    	
    КонецПроцедуры

    На форме списка справочника "Контрагенты" добавлена кнопка со значком "непосредственное удаление". А это её обработчик.
    НАХРЕНА???

    doom2good, 20 Февраля 2015

    Комментарии (4)
  2. 1C / Говнокод #17596

    −120

    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
    Функция Счет(УсловныйКодСчета, СоответствиеСчетов = Неопределено) Экспорт
    	
    	ПС = ПланыСчетов.Хозрасчетный;
    	Результат = ПС.ПустаяСсылка();
    	
    	Если УсловныйКодСчета = "01" Тогда
    		Результат = ПС.ОсновныеСредства;
    	ИНачеЕсли УсловныйКодСчета = "01.01" Тогда
    		Результат = ПС.ОСвОрганизации;
    	ИначеЕсли УсловныйКодСчета = "01.08" Тогда
    		Результат = ПС.ОСБезГосРегистрации;
    	ИначеЕсли УсловныйКодСчета = "01.09" Тогда
    		Результат = ПС.ВыбытиеОС;
    	ИначеЕсли УсловныйКодСчета = "02" Тогда
    		Результат = ПС.АмортизацияОсновныхСредств;
    //Далее идет подобный треш более чем на 500 строк
    
            ИначеЕсли УсловныйКодСчета = "008" Тогда
    		Результат = ПС.ОбеспеченияОбязательствПолученные;
    	ИначеЕсли УсловныйКодСчета = "009" Тогда
    		Результат = ПС.ОбеспеченияОбязательствВыданные;
    	ИначеЕсли УсловныйКодСчета = "011" Тогда
    		Результат = ПС.ОсновныеСредстваСданныеВАренду;
    	Иначе
    		ОписаниеОшибки = НСтр("ru='Не определен счет с условным кодом %1 в соответствии счетов'");
    		ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ОписаниеОшибки, УсловныйКодСчета);
    		ВызватьИсключение ОписаниеОшибки;
    	КонецЕсли;
    	
    	Возврат Результат;
    	
    КонецФункции
    
    //СоответствиеСчетов так нигде и не используется :(

    Типовая Бухгалтерия КОРП 3.0, модуль ЗаполнениеБухгалтерскойОтчетностиИтоги

    planaric, 07 Февраля 2015

    Комментарии (7)
  3. 1C / Говнокод #17551

    −120

    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
    //определяем сумму начисленной амортизации+ремонтов на заказы документом "РаспределениеАмортизацииНаЗаказы"
    
    	Запрос = Новый Запрос;
    	Запрос.Текст = "ВЫБРАТЬ
    	               |	НезавершенноеПроизводствоБухгалтерскийУчетОбороты.СчетУчета КАК СчетУчета,
    	               |	НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Заказ,
    	               |	НезавершенноеПроизводствоБухгалтерскийУчетОбороты.СтоимостьПриход КАК СтоимостьПриход,
    	               |	НАЧАЛОПЕРИОДА(НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Период, МЕСЯЦ) КАК Период,
    	               |	НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Регистратор КАК Регистратор
    	               |ИЗ
    	               |	РегистрНакопления.НезавершенноеПроизводствоБухгалтерскийУчет.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК НезавершенноеПроизводствоБухгалтерскийУчетОбороты
    	               |ГДЕ
    	               |	(НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Регистратор ССЫЛКА Документ.РаспределениеАмортизацииНаЗаказы
    	               |			ИЛИ НезавершенноеПроизводствоБухгалтерскийУчетОбороты.Регистратор = &Корректировка)
    	               |	И НезавершенноеПроизводствоБухгалтерскийУчетОбороты.СчетУчета = &СчетУчета
    	               |ИТОГИ
    	               |	СУММА(СтоимостьПриход)
    	               |ПО
    	               |	ОБЩИЕ";
    				   
    	Запрос.УстановитьПараметр("ДатаНач",НачалоМесяца(ДатаНач));
    	Запрос.УстановитьПараметр("ДатаКон",КонецМесяца(ДатаКон));
    	Запрос.УстановитьПараметр("СчетУчета", ПланыСчетов.Хозрасчетный.НайтиПоКоду("231"));
    	Запрос.УстановитьПараметр("Корректировка", Документы.ОперацияБух.НайтиПоНомеру("00000056",Дата(2011,05,01)));
    
    	Выборка = Запрос.Выполнить().Выбрать();
    	Выборка.Следующий();
    	СуммаНачисления = Выборка.СтоимостьПриход;

    Есть специальная супер секретная бухгалтерская операция которую нужно исключить )))

    yuriybilous, 31 Января 2015

    Комментарии (4)
  4. 1C / Говнокод #17549

    −118

    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
    Если Сумма<=0 тогда
    		
    		НС = Док.СуммыДолга.Добавить();
    		НС.ВидЗадолженности     = Перечисления.ВидыЗадолженности.Кредиторская;
    		НС.ДоговорКонтрагента     = ПолучитьДоговор(Клиент,Док.ВалютаДокумента);
    		НС.КурсВзаиморасчетов   = Док.КурсДокумента;
    		НС.КратностьВзаиморасчетов=Док.КратностьДокумента;
    		НС.Сумма = -Сумма;
    		НС.СуммаРегл = НС.Сумма*НС.КурсВзаиморасчетов/НС.КратностьВзаиморасчетов;
    		
    		НС.СчетУчетаАвансов  = СчетКонтрагента;
    		НС.СчетУчетаРасчетов = СчетКонтрагента;
    	Иначе
    		
    		НС = Док.СуммыДолга.Добавить();
    		НС.ВидЗадолженности     = Перечисления.ВидыЗадолженности.Дебиторская;
    		НС.ДоговорКонтрагента     = ПолучитьДоговор(Клиент,Док.ВалютаДокумента);
    		НС.КурсВзаиморасчетов   = Док.КурсДокумента;
    		НС.КратностьВзаиморасчетов=Док.КратностьДокумента;
    		НС.Сумма = Сумма;
    		НС.СуммаРегл = НС.Сумма*НС.КурсВзаиморасчетов/НС.КратностьВзаиморасчетов;
    		
    		НС.СчетУчетаАвансов  = СчетКонтрагента;
    		НС.СчетУчетаРасчетов = СчетКонтрагента;
    	
    	КонецЕсли;

    Код исправный, но... любит один наш программер "чтоб побольше строк"... а если добавить дополнительные отступы ("для удобства прочтения"), то будет казаться, что программа невообразимо длинная и сложная

    dsfix, 30 Января 2015

    Комментарии (9)
  5. 1C / Говнокод #17525

    −127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    //200114		
    //ОбластьКонОстаткиДоговор.Параметры.ПеременныйДоговор = ВыборкаДоговор.Договор;  //Убери рем когда договор опять нужен будет 
    
    //210014
    //ОбластьКонОстаткиДоговор.Параметры.ПеенныйДоговор = ВыборкаДоговор.Договор;  //Убери рем когда договор опять нужен будет

    Пенный договор вновь вступил в силу..

    gStill, 27 Января 2015

    Комментарии (1)
  6. 1C / Говнокод #17520

    −125

    1. 1
    КоличествоСтраницПриПечати = Цел(ТабличныйДокумент.ВысотаТаблицы /  40.417) + 1 + 1;

    Разработчик 1С вооруженный линейкой опасен в 1+1 раз.

    safer_bwd, 26 Января 2015

    Комментарии (18)
  7. 1C / Говнокод #17519

    −121

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Функция ПереформатироватьДату(Дата)
     Год  = Формат(Дата, "ДФ=гггг");
     Месяц = Формат(Дата, "ДФ=ММ");
     День = Формат(Дата, "ДФ=дд");
     Час  = Формат(Дата, "ДФ=Ч") ;
     Минута  = Формат(Дата, "ДФ=мм");
     Секунда = Формат(Дата, "ДФ=сс");
     ПолученнаяДата = Год+Месяц+День+Час+Минута+Секунда;
     Возврат ПолученнаяДата; 
    КонецФункции

    Творчечство стажера. Надо было в скл -запрос подсунуть дату в виде строки. Должно быть Формат(Дата, "ДФ=yyyyMMddhhmmss"). Да и отдельной функции не надо

    delph1ct, 26 Января 2015

    Комментарии (1)
  8. 1C / Говнокод #17438

    −125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    ВЫБОР
    	КОГДА &ПоказыватьВсеПотребности
    	ТОГДА ВЫБОР 
    		КОГДА ОсновнаяТаблица.КоличествоПлана <= 0
    			ТОГДА ОсновнаяТаблица.КоличествоПлана
    		ИНАЧЕ ОсновнаяТаблица.КоличествоПлана
    	КОНЕЦ
    ИНАЧЕ ОсновнаяТаблица.КоличествоПлана
    КОНЕЦ КАК КоличествоПлана

    плана было больше количество, это уж точно

    dawgcha, 13 Января 2015

    Комментарии (9)
  9. 1C / Говнокод #17430

    −126

    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
    Если ЗаполненАдрес=0 Тогда
    	Если  ПустаяСтрока(Запрос.ЭлПочта)=0 Тогда
    		Продолжить;
    	Иначе
    		ТЗ.НоваяСтрока();
    		ТЗ.Код			= Запрос.Контрагенты.Код;
    		ТЗ.Контрагент 	= Запрос.Контрагенты.Наименование;
    		ТЗ.ЭлАдрес		= Запрос.ЭлПочта;
    	КонецЕсли;
    иначе
    	Если  ПустаяСтрока(Запрос.ЭлПочта)=1 Тогда
    		Продолжить;
    	Иначе
    		ТЗ.НоваяСтрока();
    		ТЗ.Код			= Запрос.Контрагенты.Код;
    		ТЗ.Контрагент 	= Запрос.Контрагенты.Наименование;
    		ТЗ.ЭлАдрес		= Запрос.ЭлПочта;
    	КонецЕсли;
    Конецесли;

    ЗаполненАдрес - это чекбокс.
    Если сократить код, то получится:

    Если ЗаполненАдрес<>ПустаяСтрока(Запрос.ЭлПоч та) Тогда
    ТЗ.НоваяСтрока();
    ТЗ.Код = Запрос.Контрагенты.Код;
    ТЗ.Контрагент = Запрос.Контрагенты.Наименование;
    ТЗ.ЭлАдрес = Запрос.ЭлПочта;
    КонецЕсли;

    noncode, 12 Января 2015

    Комментарии (9)
  10. 1C / Говнокод #17355

    −124

    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
    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
    //часть текста запроса
                                   |ИЗ
    		               |	ЭтапыОплатыИсходник КАК ЭтапыОплаты
    		       		   |//ТекстОтбора
    		               |{ГДЕ
    .................
    
    		//Добавляем поля если используется отбор
    		ТекстОтбора="ГДЕ ";
    		ТекстОтбора=ТекстОтбора+" ИСТИНА";		
    		НомерПеременнойОтбора=1;
    		Для каждого  СтрокаТекущегоОтбора Из ПостроительОтчета.Отбор Цикл
    
    			if НЕ СтрокаТекущегоОтбора.Использование then
    				continue;
    			endif;
    
    			СложноеИмяПоля=ПолучитьИмяПоляБезТочек(СтрокаТекущегоОтбора.ПутьКДанным);
    			Если  ПостроительОтчета.Отбор.Найти(СложноеИмяПоля)=Неопределено Тогда
    				Если СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Больше Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" > &ПеременнаяОтбора"+НомерПеременнойОтбора;	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.БольшеИлиРавно Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" >= &ПеременнаяОтбора"+НомерПеременнойОтбора;	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии или 
    					СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСписке или 
    					СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВСпискеПоИерархии Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.ВИерархии Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Меньше Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" < &ПеременнаяОтбора"+НомерПеременнойОтбора;	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.МеньшеИлиРавно Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <= &ПеременнаяОтбора"+НомерПеременнойОтбора;	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСписке или 
    					СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВСпискеПоИерархии Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В (&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеВИерархии  Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И НЕ "+"ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" В ИЕРАРХИИ(&ПеременнаяОтбора"+НомерПеременнойОтбора+")";	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.НеРавно Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" <> &ПеременнаяОтбора"+НомерПеременнойОтбора;	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				ИначеЕсли СтрокаТекущегоОтбора.ВидСравнения=ВидСравнения.Равно Тогда
    					ТекстОтбора=ТекстОтбора+Символы.ПС+" И ЭтапыОплаты."+СтрокаТекущегоОтбора.ПутьКДанным+" = &ПеременнаяОтбора"+НомерПеременнойОтбора;	
    					Запрос.УстановитьПараметр("ПеременнаяОтбора"+НомерПеременнойОтбора,СтрокаТекущегоОтбора.Значение);
    					НомерПеременнойОтбора=НомерПеременнойОтбора+1
    				КонецЕсли; 
    			КонецЕсли; 
    		КонецЦикла; 
    
    		Если НомерПеременнойОтбора>1 Тогда
    			Запрос.Текст=СтрЗаменить(Запрос.Текст,"//ТекстОтбора",ТекстОтбора);
    		КонецЕсли;

    При этом при всем, в отчете используется 2 построителя ( на одном не смог построить , одного видимо было было мало для стратегии заложенной в голове:) ) + между ними используется куча запросов , в которых выгружаются таблицы (РезультатЗапроса.Выполнить().Выгрузить( )) и передаются в следующие запросы как параметры.
    От себя добавлю: Добавлял элементарные вещи, чтобы вывести пару дополнительных колонок - убить 1 час , тоже самое, что ничего не сделать..... Да и к тому же отчет рисуется через "ТабДок.Присоеденить".

    Ba_Ka, 22 Декабря 2014

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