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

    −138

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

    Ищем заказ по номеру. А номер берем из заказа. И, конечно же, их может оказаться множество. (КонтрольУникальности = Истина, периодичность = Непериодический).
    А также хитровылепленный способ убедиться, что заказ попадает в указанный период и имеет указанного ответственного.
    И, конечно же, запрос надо создавать заново для каждой СтрПЛ, а вдруг он испортился...
    Вот такие у нас крайне осторожные прогромисты.

    mrbus, 13 Февраля 2012

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

    −143

    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
    Функция ПолучитьМаксимальныйДокументРеализации(ТЗРеализаций)
    	МаксДок = ПолучитьПустоеЗначение("Документ");
    	ТЗРеализаций.ВыбратьСтроки();
    	Пока ТЗРеализаций.ПолучитьСтроку()=1 Цикл
    		Если МаксДок = ПолучитьПустоеЗначение("Документ") Тогда
    			МаксДок =  ТЗРеализаций.ДокументРеализации;
    		ИначеЕсли МаксДок.ДатаДок < ТЗРеализаций.ДокументРеализации.ДатаДок Тогда
    		    МаксДок =  ТЗРеализаций.ДокументРеализации;
    		КонецЕсли;
    		
    	КонецЦикла;
    	Возврат МаксДок;
    КонецФункции

    Во как надо получать последний документ из таблицы!

    jerokee, 10 Февраля 2012

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

    −135

    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
    Процедура ЗаписатьТрижды(Док)
    	Попытка
    		Док.Записать();
    	
    	Исключение
    		Для ХХХ=1 По 1000 Цикл
    			УУУ = ХХХ;
    		КонецЦикла;
    		Попытка
    			Док.Записать();
    		
    		Исключение
    			Для ХХХ=1 По 1000 Цикл
    				УУУ = ХХХ;
    			КонецЦикла;
    			Попытка
    				Док.Записать();
    			
    			Исключение
    				Сообщить("И с третьей попытки не удалось записать документ "+Док);
    				Сообщить(ОписаниеОшибки());
    			КонецПопытки;
    		КонецПопытки;
    	КонецПопытки;

    Разбирал тут обработку, наткнулся на этот шедевр...

    jerokee, 10 Февраля 2012

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

    −147

    1. 1
    спВидТорговли.ДобавитьЗначение(Перечисление.ВидыТорговли.Нал,Строка(Перечисление.ВидыТорговли.Нал));

    Типовая торговля для Украины.
    Подозреваю , ШО текст датируется концом 90-х.

    Xbrut, 09 Февраля 2012

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

    −134

    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
    Если Сумма25<>0 Тогда
    				с25=Сумма25/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма26<>0 Тогда
    				с26=Сумма26/Итог("Материалы")*Материалы;
    			КонецЕсли;
    			Если Сумма60<>0 Тогда
    				с60=Сумма60/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма691<>0 Тогда
    				с691=Сумма691/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма692<>0 Тогда
    				с692=Сумма692/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма6921<>0 Тогда
    				с6921=Сумма6921/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма6922<>0 Тогда
    				с6922=Сумма6922/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    
    			Если Сумма693<>0 Тогда
    				с693=Сумма693/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма6931<>0 Тогда
    				с6931=Сумма6931/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма6932<>0 Тогда
    				с6932=Сумма6932/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма694<>0 Тогда
    				с694=Сумма694/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма695<>0 Тогда
    				с695=Сумма695/Итог("Материалы")*Материалы;
    			КонецЕсли;
    			Если Сумма70<>0 Тогда
    				с70=Сумма70/Итог("Материалы")*Материалы;
    			КонецЕсли; 
    			Если Сумма97<>0 Тогда
    				с97=Сумма97/Итог("Материалы")*Материалы;
    			КонецЕсли;

    glavdir, 06 Февраля 2012

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

    −136

    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
    ВыполнениеОплаченнойУслугиТранспорт="1";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиОплатаТруда="2";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиОтчисления="3";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиАрендаОС="4";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиАмортизацияОС="5";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиРемонтОС="6";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиИзносМБП="7";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиТопливо="8";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиХранение="9";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиРеклама="Q";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиПроценты="W";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиПотери="E";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиТара="R";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиПрочие="T";  // выполнение Услуги
    ВыполнениеОплаченнойУслугиНеПринимаемые="Y";  // выполнение Услуги
    
    НеоплаченноеВыполнениеУслугиТранспорт="!";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиОплатаТруда="@";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиОтчисления="#";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиАрендаОС="$";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиАмортизацияОС="%";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиРемонтОС="^";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиИзносМБП="&";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиТопливо="*";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиХранение="(";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиРеклама="q";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиПроценты="w";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиПотери="e";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиТара="r";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиПрочие="t";  // выполнение Услуги
    НеоплаченноеВыполнениеУслугиНеПринимаемые="y";  // выполнение Услуги

    Шо це такое непонятно. Но впечатление производит пугающее

    glavdir, 06 Февраля 2012

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

    −134

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

    Человек, написавший такой запрос явно был с перепоя. С учетом его двухлетнего опыта программирования в 1С - никогда бы на него не подумал... но факт.

    Maikl_kar, 31 Января 2012

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

    −137

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

    Конфа Бухгалтерия 2.0 - официальный код 1С. Просто нет слов.

    1. Передаваемый процедуре параметр "СписокСчетов" по умолчанию имеет значение "".
    2. В первом "Если" идет инициализация объекта "ФормаВыбораСчета", но в это "Если" мы попадем не всегда (п.1)
    3. Ну а дальше без всякого рода сомнений происходит получение реквизита объекта, который на ура может быть неинициализированным: ПолеОтбора = ФормаВыбораСчета.Отбор.Код

    1С - ты всегда будешь в нашей памяти, СЦУКО!

    squeez, 25 Января 2012

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

    −134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    с = 0;
    Для Каждого стчТовары Из ЗаказНаряд.Товары Цикл
    	нстчТовары = НоваяНалоговая.Товары.Добавить();
    	нстчТовары.Номенклатура = ЗаказНаряд.Товары[с].Номенклатура;
    	нстчТовары.Количество = ЗаказНаряд.Товары[с].Количество;
    	нстчТовары.Цена = ЗаказНаряд.Товары[с].Цена; 
    	...
    	нстчТовары.СуммаВсего = ЗаказНаряд.Товары[с].СуммаВсего;
    	с = с + 1;
    КонецЦикла;

    Ни шагу без счетчика! Особенно в итераторе. =)

    zfilin, 16 Января 2012

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

    −138

    1. 1
    вайп

    TarasGovno, 04 Января 2012

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