-
−19
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
БланкПостроителяОтчетаНоменклатура = Новый ПостроительОтчета;
Если Конфигурация = "ТорговляУкраина"
ИЛИ Конфигурация = "УТПУкраина" Тогда
Если Истина Тогда
БланкПостроителяОтчетаНоменклатура.Текст=
ЗапросПодготовкаДанных +
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| НоменклатураДетализация.Номенклатура.Код КАК Код,
| НоменклатураДетализация.Номенклатура.Артикул КАК Артикул,
| НоменклатураДетализация.Номенклатура КАК Номенклатура,
| НоменклатураДетализация.Детализация КАК Детализация,
| ЕСТЬNULL(ОстаткиРезервы.Остаток, 0) КАК Остаток,
| НоменклатураДетализация.ТипДетализации КАК ТипДетализации,
//................................................................................................................................................................. //
Если Истина Тогда ...
Действительно, а вдруг Истина = Ложь!
saturn5,
21 Марта 2017
-
−18
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
А ведь и так можно обойти таблицу значений, если подойти к задаче творчески!
Счетчик=0;
Пока 1=1 Цикл
Если Счетчик>=Табл.Количество() Тогда
Прервать;
КонецЕсли;
Стр=Табл[Счетчик];
//.....
//Здесь лютый говнокод,
//не имеющий отношения к этому фееричному паттерну "Итератор"!
// .....
КонецЕсли;
Паттерн "Итератор" для 1С 8.
saturn5,
13 Марта 2017
-
−51
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
Если ПустоеЗначение(Клиент.ТипРасхЦены) = 0 Тогда
Если Продавец.Выбран() = 1 Тогда
Если Продавец.Направление.Выбран() = 1 Тогда
СпрТЦН = СоздатьОбъект("Справочник.ТипыЦенПоНаправлениям");
СпрТЦН.ИспользоватьВладельца(Клиент);
Если СпрТЦН.НайтиПоРеквизиту("Направление", Продавец.Направление, 0) = 1 Тогда
ТипЦен = СпрТЦН.ТипЦены.ТипЦены;
Иначе
ТипЦен = Клиент.ТипРасхЦены;
КонецЕсли;
Иначе
ТипЦен = Клиент.ТипРасхЦены;
КонецЕсли;
Иначе
ТипЦен = Клиент.ТипРасхЦены;
КонецЕсли;
ПриВыбореКатЦен();
Иначе
Если (Продавец.Выбран() = 1) И (Клиент.Выбран() = 1) Тогда
Если Продавец.Направление.Выбран() = 1 Тогда
СпрТЦН = СоздатьОбъект("Справочник.ТипыЦенПоНаправлениям");
СпрТЦН.ИспользоватьВладельца(Клиент);
Если СпрТЦН.НайтиПоРеквизиту("Направление", Продавец.Направление, 0) = 1 Тогда
ТипЦен = СпрТЦН.ТипЦены.ТипЦены;
ПриВыбореКатЦен();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Суть этой сложной конструкции проста:
если тип цены есть в справочнике ТипыЦенПоНаправлениям для определенной комбинации - то берем из него,
иначе берем из реквизита ТипРасхЦены.
Причем этот говнокод еще и раскопирован в два десятка мест по конфигурации и внешним обработкам и отчетам.
Palmer,
03 Февраля 2017
-
−45
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
Если РаздельнаяДоставка И МассивОшибок.Количество() = Получатели.Количество() Тогда
ТекстСообщения = "Сообщения НЕ отправлены !!!";
ИначеЕсли РаздельнаяДоставка И МассивОшибок.Количество() Тогда
ТекстСообщения = "Не все сообщения отправлены !!!";
ИначеЕсли НЕ РаздельнаяДоставка И МассивОшибок.Количество() Тогда
ТекстСообщения = "Сообщение НЕ отправлено !!!";
ИначеЕсли РаздельнаяДоставка И НЕ МассивОшибок.Количество() Тогда
ТекстСообщения = "Сообщения отправлены.";
ИначеЕсли НЕ РаздельнаяДоставка И НЕ МассивОшибок.Количество() Тогда
ТекстСообщения = "Сообщение отправлено.";
Иначе
ТекстСообщения = "Непонятка какая-то!?";
КонецЕсли;
Непонятка какая-то!?
grandatlant,
01 Февраля 2017
-
−49
- 1
- 2
- 3
- 4
ДатаКурса = ДатаДока;
Если НЕ СтруктураШапкиДокумента.Свойство("ДатаКурса", ДатаКурса) Тогда
ДатаКурса = ДатаДока;
КонецЕсли;
Смысла не лишено, но зачем так?
grandatlant,
26 Января 2017
-
−48
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
Количество = Окр(Строка.Количество,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; ЧВН=; ЧГ=")
105_306330_ru,
21 Декабря 2016
-
−51
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
...
ОбластьВесСтр = ТабличныйДокумент.Область(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 вложенных циклов с счетчиками й, к, м и т.д.?
При чем макет то размечен более менее, но там области перезаписываются и вобще дичь какая то происходит. Добавить колонку в результат просто нереально.
Квинтесенция говнокода.
Jet,
16 Декабря 2016
-
−47
- 1
- 2
- 3
- 4
- 5
- 6
Функция ОпределитьПроцентМотивации(_Заказ)
Если 1=2 Тогда
_Заказ = Документы.ЗаказПокупателя.СоздатьДокумент();
КонецЕсли;
...
КонецФункции
Я вот даже не знаю, отнести к какой категории говнокода это отнести.
То ли 1С не достаточно хорошо проработала автозаполнение, то ли автор гений.
Jet,
14 Декабря 2016
-
−49
- 1
Ячейка = ТабДокумент.НайтиТекст("Уважаемые Клиенты! Мы стараемся");
blMbl,
12 Декабря 2016
-
−35
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
Функция ПредопределенныйЭлемент(Знач ПолноеИмяПредопределенного) Экспорт
ИмяПредопределенного = ВРег(ПолноеИмяПредопределенного);
Точка = СтрНайти(ИмяПредопределенного, ".");
ИмяКоллекции = Лев(ИмяПредопределенного, Точка - 1);
ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1);
Точка = СтрНайти(ИмяПредопределенного, ".");
ИмяТаблицы = Лев(ИмяПредопределенного, Точка - 1);
ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1);
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 Ссылка ИЗ &ПолноеИмяТаблицы ГДЕ ИмяПредопределенныхДанных = &ИмяПредопределенного";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяТаблицы", ИмяКоллекции + "." + ИмяТаблицы);
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("ИмяПредопределенного", ИмяПредопределенного);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Возврат Результат.Выгрузить()[0].Ссылка;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Видимо, таким образом разработчики стандартных подсистем решили бороться с ошибкой платформы, когда при попытке получения некорректного значения падает рабочий процесс.
Клин-клином, говнокод-говнокодом.
UncleFedor,
06 Декабря 2016