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

    −132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Попытка
    			Если Число(ДисконтнаяКарта.НомерКарты) >= 111065251 И Число(ДисконтнаяКарта.НомерКарты) <= 111065453 И  ПревышенаСуммаДисконта() Тогда 
    				Отказ = Истина;
    				Сообщить("Сумма дисконта превышает оставшийся лимит по карте!",СтатусСообщения.Важное);
    				Возврат
    			КонецЕсли;
    		Исключение
    		КонецПопытки;

    glavdir, 20 Марта 2012

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

    −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
    ////////////////////////////////////////////////////////////////////
    	////////Преобразование горизонтали в вертикаль с дурацким циклом////
    	///////////////////////////////////////////////////////////////////
    	
    	ТекДата = ТекущаяДата();	
    	ТекущийГод = НачалоГода(ТекДата);
    	ТекущийМесяц = НачалоМесяца(ТекДата);
    	
    	Пока Выборка.Следующий() Цикл
    		
    		ДатаЯнварь = ТекущийГод;
    		Если    ДатаЯнварь >= ТекущийМесяц Тогда
    			Январь = ПланПост.Добавить();
    			Январь.Организация =Выборка.Организация;
    			Январь.Расход = Выборка.ПродажиЯнварь;
    			Январь.НормОст = Выборка.ОстаткиФевраль; 
    			Январь.МесяцПрихода =  ТекущийГод;
    		КонецЕсли;
    		
    		ДатаФевраль =  ДобавитьМесяц(ТекущийГод, 1);
    		Если    ДатаФевраль >= ТекущийМесяц Тогда
    			Февраль = ПланПост.Добавить();
    			Февраль.Организация =Выборка.Организация;
    			Февраль.Расход = Выборка.ПродажиФевраль;
    			Февраль.НормОст = Выборка.ОстаткиМарт;
    			Февраль.МесяцПрихода = ДатаФевраль;
    		КонецЕсли;
    		
    		ДатаМарт = ДобавитьМесяц(ТекущийГод, 2);
    		Если    ДатаМарт >= ТекущийМесяц Тогда
    			Март = ПланПост.Добавить();
    			Март.Организация =Выборка.Организация;
    			Март.Расход = Выборка.ПродажиМарт;
    			Март.НормОст = Выборка.ОстаткиАпрель;
    			Март.МесяцПрихода = ДатаМарт; 
    		КонецЕсли;
    		
    		ДатаАпрель = ДобавитьМесяц(ТекущийГод, 3);
    		Если    ДатаАпрель >= ТекущийМесяц Тогда
    			Апрель = ПланПост.Добавить();
    			Апрель.Организация =Выборка.Организация;
    			Апрель.Расход = Выборка.ПродажиАпрель;
    			Апрель.НормОст = Выборка.ОстаткиМай;
    			Апрель.МесяцПрихода =  ДатаАпрель;
    		КонецЕсли;
    		
    		ДатаМай =  ДобавитьМесяц(ТекущийГод, 4);
    		Если    ДатаМай >= ТекущийМесяц Тогда
    			Май = ПланПост.Добавить();
    			Май.Организация =Выборка.Организация;
    			Май.Расход = Выборка.ПродажиМай;
    			Май.НормОст = Выборка.ОстаткиИюнь;
    			Май.МесяцПрихода = ДатаМай;  
    		КонецЕсли;

    Была ТЧ в документе с колонками-названиями месяцев....И руководство поставило задачу вывести ЭТО в отчет...На СКД....

    Necessitudo, 19 Марта 2012

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

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

    ШЕДЕВР!
    Конечно, база данных ведь запоминает, что мы элементы формы сделали недоступными...

    mrbus, 14 Марта 2012

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

    −144

    1. 1
    СуммаРЗ = СуммаРЗ;

    Капитан, это вы?

    mrbus, 14 Марта 2012

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

    −139

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

    Jivchic, 12 Марта 2012

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

    −151

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

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

    Xbrut, 24 Февраля 2012

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