- 1
- 2
- 3
1С::Функторы::АппликативныйФунктор::Монад 1С::Монада::НаЭкран -> 1С::Монада::Символ,1С::Монада::СимволСлед
| Пустота = Отчёт.Откат()
| 1С::Буква = 1С::МонадаМир::ВводВывод::Печать 1С::Буква
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−119
1С::Функторы::АппликативныйФунктор::Монад 1С::Монада::НаЭкран -> 1С::Монада::Символ,1С::Монада::СимволСлед
| Пустота = Отчёт.Откат()
| 1С::Буква = 1С::МонадаМир::ВводВывод::Печать 1С::Буква
Многие интересуются, существует ли в 1С метод вывода монады на экран? Оказывается, существует!
Данный аппликативный функтор не требует теор.ката, хотя и не без улыбки, выводит квантовое состояние функциональной монады в виде стрелок и морфизмов.
PS Автор не я, а мой коллега, который, ковыряясь в 1С, обнаружил в нём "Функциональный режим"
−117
Часто проскальзывают темы, что 1С часто отказывает в монадах.
Я вот этого вообще не понимаю, как такое может выглядеть???
Я со своей восьмёрочкой 2 года, в любой момент, когда я захочу монад, он будет.
Если он скажет, нет, я не хочу, я показываю ему С++, показываю что я недоволен и говорю, почему ты не хочешь монаду?
Ты любишь кресты? Когда монады встречаются в 1С, они должны преобразовываться по первому же желанию программиста.
−125
МояМонада :: МойПарсерТип МойПарсер -> (МойПарсерТип -> МойПарсер МойПарсерТип2) -> МойПарсер МойПарсерТип2
МойСущность МойМонад [] Где
Возврат МойТип = [МойТип]
МойВозвратВозврат >>= МойФункция = МойСклейка (МойВсем МойФункция МойВозвратВозврат)
Коллега выдал - закоммитил в локальный гитхаб 1С парсер хаскелля на 1С.
−124
Function ms2Str(Миллисекунды) export
КолВоЧасов=Цел(Миллисекунды/(60*60*1000));
Остаток=Миллисекунды-КолВоЧасов*60*60*1000;
КолВоМинут=Цел(Остаток/(60*1000));
Остаток=Остаток-КолВоМинут*60*1000;
КолВоСекунд=Цел(Остаток/1000);
КолВоМиллисекунд=Остаток-КолВоСекунд*1000;
h=Формат(КолВоЧасов,"ЧЦ=3;ЧН=;ЧВН=")+":";
if КолВоЧасов=0 then
h="";
endif;
m=Формат(КолВоМинут,"ЧЦ=2;ЧН=;ЧВН=")+":";
if КолВоМинут=0 then
m="";
endif;
return h+m+Формат(КолВоСекунд,"ЧЦ=2;ЧН=;ЧВН=")+":"+Формат(КолВоМиллисекунд,"ЧЦ=3;ЧН=;ЧВН=");
endFunction
Перевод время в миллисекундах в строку. Автор: Жуков А.П.
−125
procedure setParameters(aq)
спДекрет= Новый СписокЗначений;
спДекрет.Добавить(Перечисления.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам);
спДекрет.Добавить(Перечисления.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком);
aq.setParameter("Дат",КонецДня(НачПериода));
aq.setParameter("Уволен",Перечисления.ПричиныИзмененияСостояния.Увольнение);
aq.setParameter("Оклад",Перечисления.СпособыРасчетов.Оклад);
aq.setParameter("МРП",Перечисления.СпособыРасчетов.КолМРП);
aq.setParameter("Сумма",Перечисления.СпособыРасчетов.Сумма);
aq.setParameter("Оклад",Перечисления.СпособыРасчетов.ПроцентОтОклада);
aq.setParameter("Доход",Перечисления.СпособыРасчетов.ПроцентОтДоходов);
aq.setParameter("ПодразделениеОрганизации",ПодразделениеОрганизации);
aq.setParameter("ФизЛицо",Работник);
aq.setParameter("Должность",Должность);
aq.setParameter("ВидЗанятости",ВидЗанятости);
aq.setParameter("ТарифныйРазряд",ТРазряд);
aq.setParameter("ВРЭкология",ВРЭкология);
//Декретники
aq.setParameter("Декрет",спДекрет);
//Состояние общее
aq.setParameter("Состояние",Состояние);
aq.setParameter("Сост",Состояние1);
endprocedure
procedure setБабло(Тз)
Тз.Колонки.Добавить("id",new ОписаниеТипов("Строка"));
Тз.Колонки.Добавить("Размер",new ОписаниеТипов("Число"));
endProcedure
...
q=new Query;
q.Текст=" //--------------------------------------------бабло
|Select
| ПлановыеНачисленияРаботниковОрганизацийСрезПоследнихКон.Размер,
| ПлановыеНачисленияРаботниковОрганизацийСрезПоследнихКон.ФизЛицо.код id
|from
| РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(
| &Дат,
| ВидРасчета.ЯвляетсяОсновнымНачислением
| И Размер <> 0) КАК ПлановыеНачисленияРаботниковОрганизацийСрезПоследнихКон
|";
setParameters(q);
бабло=New ТаблицаЗначений;
setБабло(бабло);
rs=q.Выполнить().Выбрать();
while rs.next() do
s=бабло.Добавить();
s.id=rs.id;
s.Размер=rs.Размер;
enddo;
бабло.Индексы.Добавить("id");
...
Форматирование текста оставил как есть. Автор: Жуков А.П.
−123
Запрос = Новый Запрос;
Запрос.Текст = "какой-то там текст запроса с параметрами <Вариант> и <НеВариант>"
Запрос.УстановитьПараметр("Вариант", ?(Вариант = Истина, Истина, Ложь));
Запрос.УстановитьПараметр("НеВариант", ?(Вариант = Истина, Ложь, Истина));
Упрощается все до ...("Вариант", Вариант) и ...("НеВариант", Не Вариант) (хотя два параметра, зависящие от одной переменной уже не ок)
Теперь по офису на вопрос: "А можно ли упростить?" сразу летит в ответ сакральное "НЕ ВАРИАНТ!!!"
−156
Говнокод, выручай пишу быстро. Работаю дома, так же как и ты наверно, у нас есть модем мегафон 4G.
Я не знал что там трафик не безлимитный. Сейчас мамка хочет сделать запрос сайтов, точнее уже начала смотреть.
Я смотрел на порно и дрочил, что делать?
−126
1CClientBankExchange
ВерсияФормата=1.01
Кодировка=Windows
Получатель=
ДатаНачала=25.09.2012
ДатаКонца=25.09.2012
...
СекцияРасчСчет
...
КонецРасчСчет
СекцияДокумент=Платежное поручение
...
КонецДокумента
КонецФайла
Формат файла: Стандарт обмена с системами "Клиент банка"
http://v8.1c.ru/edi/edi_stnd/100/101.htm
Пидорва изобрела ini-файлы. Но убило не это, а это:
>Кодировка=Windows
−97
Функция Транслит(Имя)
Рез = СокрЛП(Имя);
Рез = СтрЗаменить(Рез,"а","a");
Рез = СтрЗаменить(Рез,"б","b");
Рез = СтрЗаменить(Рез,"в","v");
Рез = СтрЗаменить(Рез,"г","g");
Рез = СтрЗаменить(Рез,"д","d");
Рез = СтрЗаменить(Рез,"е","e");
Рез = СтрЗаменить(Рез,"ё","jo");
Рез = СтрЗаменить(Рез,"ж","zh");
Рез = СтрЗаменить(Рез,"з","z");
Рез = СтрЗаменить(Рез,"и","i");
Рез = СтрЗаменить(Рез,"й","jj");
Рез = СтрЗаменить(Рез,"к","k");
Рез = СтрЗаменить(Рез,"л","l");
Рез = СтрЗаменить(Рез,"м","m");
Рез = СтрЗаменить(Рез,"н","n");
Рез = СтрЗаменить(Рез,"о","o");
Рез = СтрЗаменить(Рез,"п","p");
Рез = СтрЗаменить(Рез,"р","r");
Рез = СтрЗаменить(Рез,"с","s");
Рез = СтрЗаменить(Рез,"т","t");
Рез = СтрЗаменить(Рез,"у","u");
Рез = СтрЗаменить(Рез,"ф","f");
Рез = СтрЗаменить(Рез,"х","h");
Рез = СтрЗаменить(Рез,"ч","ch");
Рез = СтрЗаменить(Рез,"ш","sh");
Рез = СтрЗаменить(Рез,"щ","shh");
Рез = СтрЗаменить(Рез,"ъ","");
Рез = СтрЗаменить(Рез,"ь","");
Рез = СтрЗаменить(Рез,"э","eh");
Рез = СтрЗаменить(Рез,"ю","ju");
Рез = СтрЗаменить(Рез,"ц","c");
Рез = СтрЗаменить(Рез,"я","ja");
Рез = СтрЗаменить(Рез,"ы","i");
Рез = СтрЗаменить(Рез,"А","A");
Рез = СтрЗаменить(Рез,"Б","B");
Рез = СтрЗаменить(Рез,"В","V");
Рез = СтрЗаменить(Рез,"Г","G");
Рез = СтрЗаменить(Рез,"Д","D");
Рез = СтрЗаменить(Рез,"Е","E");
Рез = СтрЗаменить(Рез,"Ё","JO");
Рез = СтрЗаменить(Рез,"Ж","ZH");
Рез = СтрЗаменить(Рез,"З","Z");
Рез = СтрЗаменить(Рез,"И","I");
Рез = СтрЗаменить(Рез,"Й","JJ");
Рез = СтрЗаменить(Рез,"К","K");
Рез = СтрЗаменить(Рез,"Л","L");
Рез = СтрЗаменить(Рез,"М","M");
Рез = СтрЗаменить(Рез,"Н","N");
Рез = СтрЗаменить(Рез,"О","O");
Рез = СтрЗаменить(Рез,"П","P");
Рез = СтрЗаменить(Рез,"Р","R");
Рез = СтрЗаменить(Рез,"С","S");
Рез = СтрЗаменить(Рез,"Т","T");
Рез = СтрЗаменить(Рез,"У","U");
Рез = СтрЗаменить(Рез,"Ф","F");
Рез = СтрЗаменить(Рез,"Х","H");
Рез = СтрЗаменить(Рез,"Ч","CH");
Рез = СтрЗаменить(Рез,"Ш","SH");
Рез = СтрЗаменить(Рез,"Щ","SHH");
Рез = СтрЗаменить(Рез,"Ъ","");
Рез = СтрЗаменить(Рез,"Ь","");
Рез = СтрЗаменить(Рез,"Ы","");
Рез = СтрЗаменить(Рез,"Ц","C");
Рез = СтрЗаменить(Рез,"Э","EH");
Рез = СтрЗаменить(Рез,"Ю","JU");
Рез = СтрЗаменить(Рез,"Я","JA");
Возврат(Рез);
КонецФункции
Суровая транслитерация... Я плакалъ
−121
НомСтрЗаказа = ПолучитьПустоеЗначение("Число");
Нашел тут в загашниках при поддержке "чужого кода".
Вот оказывается как надо присваивать переменной нулевое значение!