- 1
ДобавитьИндексерованиеВТекстЗапроса(ТекстЗапросаПодневынеДанные, "НеИнициализированныеИстчоникиДанных...
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−11
ДобавитьИндексерованиеВТекстЗапроса(ТекстЗапросаПодневынеДанные, "НеИнициализированныеИстчоникиДанных...
ЗУП КОРП 3.1.2.121
Типовой код.
Обработка.МенеджерДанныхУчетаВремениСотр удников.МодульОбъекта - строка 2410
−13
...
ТабличныйДокумент.Вывести(Отчеты[Сред(Лев(ЭтаФорма.ИмяФормы, СтрНайти(ЭтаФорма.ИмяФормы, ".Форма.") - 1), 7)].ПолучитьМакет(Сред(ЭтаФорма.ИмяФормы, СтрНайти(ЭтаФорма.ИмяФормы, "ФормаОтчета")) + "_" + Раздел.ИмяСтраницы));
...
Типовая ЗУП 3.0.25.150, модуль ФОРМЫ регл. отчета 6-НДФЛ.
−19
БланкПостроителяОтчетаНоменклатура = Новый ПостроительОтчета;
Если Конфигурация = "ТорговляУкраина"
ИЛИ Конфигурация = "УТПУкраина" Тогда
Если Истина Тогда
БланкПостроителяОтчетаНоменклатура.Текст=
ЗапросПодготовкаДанных +
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| НоменклатураДетализация.Номенклатура.Код КАК Код,
| НоменклатураДетализация.Номенклатура.Артикул КАК Артикул,
| НоменклатураДетализация.Номенклатура КАК Номенклатура,
| НоменклатураДетализация.Детализация КАК Детализация,
| ЕСТЬNULL(ОстаткиРезервы.Остаток, 0) КАК Остаток,
| НоменклатураДетализация.ТипДетализации КАК ТипДетализации,
//................................................................................................................................................................. //
Если Истина Тогда ...
Действительно, а вдруг Истина = Ложь!
−18
А ведь и так можно обойти таблицу значений, если подойти к задаче творчески!
Счетчик=0;
Пока 1=1 Цикл
Если Счетчик>=Табл.Количество() Тогда
Прервать;
КонецЕсли;
Стр=Табл[Счетчик];
//.....
//Здесь лютый говнокод,
//не имеющий отношения к этому фееричному паттерну "Итератор"!
// .....
КонецЕсли;
Паттерн "Итератор" для 1С 8.
−51
Если ПустоеЗначение(Клиент.ТипРасхЦены) = 0 Тогда
Если Продавец.Выбран() = 1 Тогда
Если Продавец.Направление.Выбран() = 1 Тогда
СпрТЦН = СоздатьОбъект("Справочник.ТипыЦенПоНаправлениям");
СпрТЦН.ИспользоватьВладельца(Клиент);
Если СпрТЦН.НайтиПоРеквизиту("Направление", Продавец.Направление, 0) = 1 Тогда
ТипЦен = СпрТЦН.ТипЦены.ТипЦены;
Иначе
ТипЦен = Клиент.ТипРасхЦены;
КонецЕсли;
Иначе
ТипЦен = Клиент.ТипРасхЦены;
КонецЕсли;
Иначе
ТипЦен = Клиент.ТипРасхЦены;
КонецЕсли;
ПриВыбореКатЦен();
Иначе
Если (Продавец.Выбран() = 1) И (Клиент.Выбран() = 1) Тогда
Если Продавец.Направление.Выбран() = 1 Тогда
СпрТЦН = СоздатьОбъект("Справочник.ТипыЦенПоНаправлениям");
СпрТЦН.ИспользоватьВладельца(Клиент);
Если СпрТЦН.НайтиПоРеквизиту("Направление", Продавец.Направление, 0) = 1 Тогда
ТипЦен = СпрТЦН.ТипЦены.ТипЦены;
ПриВыбореКатЦен();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Суть этой сложной конструкции проста:
если тип цены есть в справочнике ТипыЦенПоНаправлениям для определенной комбинации - то берем из него,
иначе берем из реквизита ТипРасхЦены.
Причем этот говнокод еще и раскопирован в два десятка мест по конфигурации и внешним обработкам и отчетам.
−45
Если РаздельнаяДоставка И МассивОшибок.Количество() = Получатели.Количество() Тогда
ТекстСообщения = "Сообщения НЕ отправлены !!!";
ИначеЕсли РаздельнаяДоставка И МассивОшибок.Количество() Тогда
ТекстСообщения = "Не все сообщения отправлены !!!";
ИначеЕсли НЕ РаздельнаяДоставка И МассивОшибок.Количество() Тогда
ТекстСообщения = "Сообщение НЕ отправлено !!!";
ИначеЕсли РаздельнаяДоставка И НЕ МассивОшибок.Количество() Тогда
ТекстСообщения = "Сообщения отправлены.";
ИначеЕсли НЕ РаздельнаяДоставка И НЕ МассивОшибок.Количество() Тогда
ТекстСообщения = "Сообщение отправлено.";
Иначе
ТекстСообщения = "Непонятка какая-то!?";
КонецЕсли;
Непонятка какая-то!?
−49
ДатаКурса = ДатаДока;
Если НЕ СтруктураШапкиДокумента.Свойство("ДатаКурса", ДатаКурса) Тогда
ДатаКурса = ДатаДока;
КонецЕсли;
Смысла не лишено, но зачем так?
−48
Количество = Окр(Строка.Количество,2);
//
Если СтрЧислоВхождений(Количество,",")=0 Тогда
Если СтрДлина(Количество)=1 Тогда
Количество = "00"+количество+"00";
ИначеЕсли СтрДлина(Количество)=2 Тогда
Количество = "0"+количество+"00";
ИначеЕсли СтрДлина(Количество)=3 Тогда
Количество = количество+"00";
КонецЕсли;
ИначеЕсли СтрЧислоВхождений(Количество,",")=1 Тогда
ДлиннаСтроки = СтрДлина(Количество);
ПозТочки = Найти(Количество,",");
Если ПозТочки = 2 и ДлиннаСтроки = 3 Тогда
Количество ="00"+Количество+"0";
ИначеЕсли ПозТочки = 3 и ДлиннаСтроки = 4 Тогда
Количество = "0"+Количество+"0";
ИначеЕсли ПозТочки = 4 и ДлиннаСтроки = 5 Тогда
Количество = Количество+"0";
ИначеЕсли ПозТочки = 2 и ДлиннаСтроки = 4 Тогда
Количество = "00"+Количество;
ИначеЕсли ПозТочки = 3 и ДлиннаСтроки = 5 Тогда
Количество = "0"+Количество;
ИначеЕсли ПозТочки = 4 и ДлиннаСтроки = 6 Тогда
Количество = Количество;
ИначеЕсли ПозТочки = 4 и ДлиннаСтроки = 4 Тогда
Количество = Количество+"00";
КонецЕсли;
КонецЕсли;
Если СтрЧислоВхождений(Количество,",")=1 Тогда
Количество = СтрЗаменить(Количество,",","");
КонецЕсли;
Нужно было получить Количество типа 5 CHAR (NUM)
Измерение в литрах и штуках
Пример "00200" - 2 шт. "00650" - 6.5 литра
Например можно так:
Формат(Строка.Количество*100,"ЧЦ=5; ЧДЦ=0; ЧВН=; ЧГ=")
−51
...
ОбластьВесСтр = ТабличныйДокумент.Область(2, й - 4);
ОбластьВесСтр.Текст = "Вес:";
НовСтр.СтрокаВес = 3;
НовСтр.СтолбецВес = й - 4;
ТабличныйДокумент.Область(3, й-4, 4, й-4).Объединить();
...
к = й - 5;
Пока к > 4 Цикл
ТабличныйДокумент.Область(2, к, 4, к).Объединить();
к = к - 1;
КонецЦикла;
...
ОбластьСтолбецВесШт = ТабличныйДокумент.Область(ВысотаТаблицы + 1, 13 + Добавка);
ОбластьСтолбецВесШт.Текст = Формат(окр(ВесЕд, 3), "ЧЦ=10; ЧДЦ=3; ЧГ=0");
...
ОбластьИзменение = ТабличныйДокумент.Область(ВысотаТаблицы + 1, 15 + Добавка - й);
ОбластьИзменение.Текст = Формат(Изменение, "ЧЦ=10; ЧДЦ=2; ЧН=0; ЧГ=0") + "%";
...
Ну вы поняли... Зачем использовать по нормальному макет, когда можно использовать 300 вложенных циклов с счетчиками й, к, м и т.д.?
При чем макет то размечен более менее, но там области перезаписываются и вобще дичь какая то происходит. Добавить колонку в результат просто нереально.
Квинтесенция говнокода.
−47
Функция ОпределитьПроцентМотивации(_Заказ)
Если 1=2 Тогда
_Заказ = Документы.ЗаказПокупателя.СоздатьДокумент();
КонецЕсли;
...
КонецФункции
Я вот даже не знаю, отнести к какой категории говнокода это отнести.
То ли 1С не достаточно хорошо проработала автозаполнение, то ли автор гений.