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

    +6

    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

    +3

    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

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

    +2

    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

    +2

    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

    0

    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

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

    +5

    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

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

    −3

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

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

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

    +52

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

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

    ilya2184, 09 Августа 2016

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

    +7

    1. 1
    2. 2
    3. 3
    4. 4
    Функция ПеревестиДеньги(СчетИсточник, СчетПолучатель, Сумма)
            СнятьСоСчета(СчетИсточник, Сумма);
            ПополнитьСчет(СчетПолучатель, Сумма);
    КонецФункции

    Как написать эту функцию безопасно? Что делать, если ПополнитьСчет упадет с исключением, например?

    LispGovno, 03 Августа 2016

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

    +5

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

    blMbl, 03 Августа 2016

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