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

    −93

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Для эстетов. Мы за это платим овердохуя, в получаем:
    
    Текст.запроса = Текст.Запроса + Сред(ТекстЗапроса,Врезка8+33,Врезка9-Врезка8+24-33+1) ;
    Мало того - что тут по буквам ТЕКСТ собирают, так еще и ошиблись - не +33 а +33-3 надо! ПИЗДЕЦ!
    Вот эта хуета - Сред(ТекстЗапроса,Врезка8+33,Врезка9-Врезка8+24-33+1)  - возвращает "ОР" - и компилятор орет на ошибку
    А вот эта наша хуета - Сред(ТекстЗапроса,Врезка8+33-3,Врезка9-Врезка8+24-33+1)  - возвращает "ВЫБОР" в все заебись работает.

    Из глубин прикладной 1С

    balabass, 31 Октября 2016

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

    −97

    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
    Функция ПроставитьНули (ЧислоНулей)
    	
    Если ЧислоНулей = 7 Тогда 	
    СтрокаНулей = "000000";	
    ИначеЕсли ЧислоНулей = 6 Тогда 	
    СтрокаНулей = "00000";		
    ИначеЕсли ЧислоНулей = 5 Тогда 		
    СтрокаНулей = "0000";		
    ИначеЕсли ЧислоНулей = 4 Тогда 		
    СтрокаНулей = "000";		
    ИначеЕсли ЧислоНулей =3 Тогда 		
    СтрокаНулей = "00";		
    ИначеЕсли ЧислоНулей =2 Тогда 		
    СтрокаНулей = "0";	
    ИначеЕсли ЧислоНулей =1 Тогда
    СтрокаНулей = "0";
    КонецЕсли;
    
    Возврат СтрокаНулей;
    		
    КонецФункции

    Разгребал завалы от предшественника. Случайно наткнулся.
    Правильно было бы так:
    Функция ПроставитьНули (ИсходноеЧисло, ЧислоНулей)
    Возврат Формат(ИсходноеЧисло, "ЧЦ="+ЧислоНулей+"; ЧВН=; ЧГ=0");
    КонецФункции

    Vince, 28 Октября 2016

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

    −98

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

    В модуле формы документа проверяем заполнение одного (!) реквизита дичайше оптимальным образом

    eternium, 25 Октября 2016

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

    −97

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

    Мы уже даже привыкли к запросам с поиском ссылки по наименованию, полученному из уже имеющейся ссылки... Но парсинг представления ссылки документа с вычлененнием оттуда номера и даты, чтоб найти этот документ - это нельзя придумать даже специально.

    elizir, 24 Октября 2016

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

    −100

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

    Функции языка запросов???

    Asaharu, 24 Октября 2016

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

    −29

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

    иди в 1С - говорили они,
    будет много денег говорили они,
    они говорили там всё легко, потому что по-русски,
    а в итоге?
    чтобы писать по русски надо постоянно переключать раскладку для <>, &
    ТУПОЙ КОМПИЛЯТОР, который вообще нихрена не подсказывает, потому что не строгая типизация
    Постоянная хрень типа в переменной "Список" лежит Строка, или Массив
    ПОСТОЯННЫЕ ТАНЦЫ С ЗАПЯТЫМИ, ПРИ ОПЕРАЦИЯХ СО СТРОКОЙ!!!
    Реализуйте 1 раз регулярные выражения типа Массив = Строка.Разделить("\\,") - нет! Хотим обмазываться запятыми и дрочить!
    Ну и прочее... конкретно сейчас не понятны танцы с запятыми и Лев() Прав() позиция запятой... просто бесит!

    levxxx, 03 Октября 2016

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

    −81

    1. 1
    2. 2
    3. 3
    4. 4
    Говнокотаны!
    У меня дочка родилась!
    Я научу её питону, жс, познакомлю с пидаром, тридаром, Тарасом, и вообще!
    Боже, дай мне силы не набухаться с утра!

    bakagaijin, 18 Сентября 2016

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

    −95

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

    Когда на клавиатуре сломались кнопки Б и Ю.

    Sanki, 15 Сентября 2016

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

    −103

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    &НаСервере
     Процедура ОтсортироватьЧТ()
         ТЧсерНомера = Объект.СерийныеНомера;
     	 ТЧсерНомера.Сортировать("IDСтрокиТЧМатериалы Возр, СерийныйНомер Убыв");
     КонецПроцедуры // ()

    blMbl, 01 Сентября 2016

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

    −47

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    Запись = РегистрыСведений.СтатусыОповещенийПредстоящихПлатежей.СоздатьМенеджерЗаписи();
    		Запись.Период = Выборка.Период;
    		Запись.Контрагент = Выборка.Контрагент;
    		Запись.Прочитать();
    		Запись.ДатаПолучения = ТекущаяДата();
    		
    		НачатьТранзакцию();
    		Запись.Записать(Истина);
    		ЗафиксироватьТранзакцию();

    Дополнительная транзакция - лишняя.

    ilya2184, 09 Августа 2016

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