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

    −142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Если РучнойВводОтработанногоВремени И СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда 
    	Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда 
    			СТЧ.ОтработаноДней  = НачислениеИзРегистрыРасчета.ОтработаноДней;
    			СТЧ.ОтработаноЧасов = НачислениеИзРегистрыРасчета.ОтработаноЧасов;
    	КонецЕсли;	
    КонецЕсли;

    Бонд, Джеймс Бонд.

    Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда
    Если СТЧ.ОтработаноДней = 0 И СТЧ.ОтработаноЧасов = 0 Тогда

    Jivchic, 12 Марта 2012

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

    −133

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

    glavdir, 02 Марта 2012

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

    −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
    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
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    	
    	Если ЭтоНовый() Тогда
    		Запрос = Новый Запрос;
    		Запрос.УстановитьПараметр("Период", НачалоГода(ТекущаяДата()));
    		Запрос.Текст = "ВЫБРАТЬ
    		|	Максимум(ПлатежноеПоручение.Номер) КАК Номер
    		|ИЗ
    		|	Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
    		|ГДЕ
    		|	ПлатежноеПоручение.Дата >= &Период";
    		Выборка = Запрос.Выполнить().Выбрать();
    		НомерМакс = 0;
    		Пока Выборка.Следующий() Цикл
    			Если НомерМакс < Число(Выборка.Номер) Тогда
    				НомерМакс = Число(Выборка.Номер);
    				Если СтрДлина(НомерМакс) = 1 И НомерМакс<9 Тогда
    					НомерДок ="0000000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 2 И НомерМакс<>99) Или НомерМакс=9 Тогда
    					НомерДок ="000000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 3 И НомерМакс<>999) Или НомерМакс<>99 Тогда
    					НомерДок ="00000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 4 И НомерМакс<>9999) Или НомерМакс<>999 Тогда
    					НомерДок ="0000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 5 И НомерМакс<>99999) Или НомерМакс<>9999 Тогда
    					НомерДок ="000000" + Строка(Число(Число(Выборка.Номер) + 1));
    				ИначеЕсли (СтрДлина(НомерМакс) = 6 И НомерМакс<>999999) Или НомерМакс<>99999 Тогда
    					НомерДок ="00000" + Строка(Число(Число(Выборка.Номер) + 1));
    				КонецЕсли;
    			КонецЕсли;
    		КонецЦикла;
    		ЭтотОбъект.Номер = НомерДок;
    	КонецЕсли;
    	
    КонецПроцедуры

    Мое творение, писАл на полном серьезе. В одном из документов БП пользователь отредактировал вручную номер документа, после этого сбилась нумерации. Документы с "неправильными" номерами удалили и добавили вновь - было поздно. Типового решения проблемы не нашлось и был написан этот код.
    Можно увидеть очень интересное: нахождение максимального значения в запросе и одновременный бесполезный прогон всего цикла, чтобы снова найти максимальное значение и много чего другого.

    ErrorEd88, 24 Февраля 2012

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

    −151

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Процедура ВводНаОсновании(ДокОснование) 
        // .....
        ДатаДок=РабочаяДата();
       // .....
    КонецПроцедуры

    Типовая торговля для Украины.
    Зачем то явно указывается рабочая дата. Причём ровно один раз.

    Xbrut, 24 Февраля 2012

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

    −146

    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
    Процедура ОбработкаНоменклатуры()
        
    НомерЛистаТипы = 1;
    Попытка ExcelТипы = СоздатьОбъект("Excel.Application");
     ФайлДанныхТипы = ExcelТипы.Workbooks.Open(НазваниеФайла);        
    Исключение
    КонецПопытки;
    //Лист = ФайлДанныхТипы.WorkSheets(НазваниеФайла);
     
    ЗагрузкаТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange;    
    //КоличествоСтрокЭкселеТипы = Лист.Rows.Count;    
     
    КоличествоСтрокЭкселеТипы = ФайлДанныхТипы.Worksheets(НомерЛистаТипы).UsedRange.Rows.Count;
    ExcelТипы.Sheets(НомерЛистаТипы).Select();    
    
    Спр2 = СоздатьОбъект("Справочник.Номенклатура");
    СпрВидНом = СоздатьОбъект("Справочник.ВидыНоменклатуры");
    СпрНДС = СоздатьОбъект("Справочник.СтавкиНДС");
    СпрНП = СоздатьОбъект("Справочник.СтавкиНП");
    СпрЕд = СоздатьОбъект("Справочник.ЕдиницыИзмерений");
    
    Для СтрТипы = НачСтр+1 По КонСтр Цикл      
        
    Спр = СоздатьОбъект("Справочник.Номенклатура");
    Если Спр.НайтиПоНаименованию(Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value))) =  1 Тогда
        Сообщить("Номенклатура найдена");
    Если ВидыЦен = 1 Тогда
        Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
    ИначеЕсли ВидыЦен = 2 Тогда
        Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
    КонецЕсли;
    Спр.Записать(); 
    Иначе
    Спр.Новый(); 
    Спр.ИспользоватьДату('01.11.2011');
    Если Спр2.НайтиПоКоду("Сй111")=1 Тогда
    Спр.Родитель =Спр2.ТекущийЭлемент(); 
    Конецесли;
    Спр.Наименование = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,1).Value));  
    Сообщить("Создается номенклатура" + Спр.Наименование);
    Спр.ТипТовара = Перечисление.ТипыТоваров.Собственный; 
    Если СпрВидНом.НайтиПоНаименованию("Товар")=1 Тогда
    Спр.ВидНоменклатуры = СпрВидНом.ТекущийЭлемент();
    КонецЕсли;
    Спр.ПолнНаименование = Спр.Наименование;
    Если ВидыЦен = 1 Тогда
        Спр.Себестоимость = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
    ИначеЕсли ВидыЦен = 2 Тогда
        Спр.Цена = Строка(СокрЛП(ExcelТипы.Cells(СтрТипы,4).Value));
    КонецЕсли;
    Спр.СтранаПроисхожд = 1;   
    Если СпрНДС.НайтиПоКоду("3")=1 Тогда
    Спр.СтавкаНДС = СпрНДС.ТекущийЭлемент(); 
    КонецЕсли;
    Если СпрНП.НайтиПоКоду("1")=1 тогда
    Спр.СтавкаНП = СпрНП.ТекущийЭлемент(); 
    КонецЕсли;        
    Если СпрЕд.НайтиПоНаименованию("шт")=1 Тогда
    Спр.ЕдиницаИзмерения = СпрЕд.ТекущийЭлемент(); 
    КонецЕсли;
    Спр.Записать();
    КонецЕсли;     
    
    КонецЦикла;
    
    КонецПроцедуры

    В бух 7.7 нужно было загрузить определенный данные из экселя. С 7.7 не работаю - начал сочинять. В начале писал по аналогии с 8.х:
    Спр.СтавкаНДС = СпрНДС.НайтиПоКоду("3") и т.д.
    Потом на инфостарте и мисте подсказали как правильно сделать и посоветовали создать здесь эту запись)

    ErrorEd88, 24 Февраля 2012

    Комментарии (15)
  6. 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)
  7. 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)
  8. 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)
  9. 1C / Говнокод #9368

    −147

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

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

    Xbrut, 09 Февраля 2012

    Комментарии (69)
  10. 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)