- 1
вайп
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−137
вайп
−89
// Функция для склонения одного слова!!!
// z1 - само слово
// z2 - номер падежа
// z3 - пол
// z4 - 1-склонять как фамилию, 2-имя, 3-отчество
Функция ПадежС(z1,Знач z2=2,Знач z3="*",z4=0) Экспорт
z5=Найти(z1,"-"); z6=?(z5=0,"","-"+ПадежС(Сред(z1,z5+1,СтрДлина(z1)-z5+1),z2,z3,z4)); z1=НРег(?(z5=0,z1,Лев(z1,z5-1))); z7=Прав(z1,3);z8=Прав(z7,2);z9=Прав(z8,1);
z5=СтрДлина(z1); za=Найти("ая ия ел ок яц ий па да ца ша ба та га ка",z8); zb=Найти("аеёийоуэюяжнгхкчшщ",Лев(z7,1)); zc=Макс(z2,-z2); zd=?(za=4,5,Найти("айяь",z9));
zd=?((zc=1)или(z9=".")или((z4=2)и(Найти("оиеу"+?(z3="ч","","бвгджзклмнпрстфхцчшщъ"),z9)>0))или((z4=1)и(Найти("мия мяэ лия кия жая лея",z7)>0)),9,?((zd=4)и(z3="ч"),2,?(z4=1,?(Найти("оеиую",z9)+Найти("их ых аа еа ёа иа оа уа ыа эа юа яа",z8)>0,9,?(z3<>"ч",?(za=1,7,?(z9="а",?(za>18,1,6),9)),?(((Найти("ой ый",z8)>0)и(z5>4)и(Прав(z1,4)<>"опой"))или((zb>10)и(za=16)),8,zd))),zd)));
ze=Найти("лец вей бей дец пец мец нец рец вец аец иец ыец бер",z7);
zf=?((zd=8)и(zc<>5),?((zb>15)или(Найти("жий ний",z7)>0),"е","о"),?(z1="лев","ьв",?((Найти("аеёийоуэюя",Сред(z1,z5-3 ,1))=0)и((zb>11)или(zb=0))и(ze<>45),"",?(za=7,"л",?(za=10,"к",?(za=13,"йц",?(ze=0,"",?(ze<12,"ь"+?(ze=1,"ц",""),?(ze<37,"ц",?(ze<49,"йц","р"))))))))));
zf=?((zd=9)или((z4=3)и(z3="ы")),z1,Лев(z1,z5-?((zd>6)или(zf<>""),2,?(zd>0,1,0)))+zf+СокрП(Сред("а у а "+Сред("оыые",Найти("внч",z9)+1,1)+"ме "+?(Найти("гжкхш",Лев(z8,1))>0,"и","ы")+" е у ойе я ю я ем"+?(za=16,"и","е")+" и е ю ейе и и ь ьюи и и ю ейи ойойу ойойойойуюойойгомуго"+?((zf="е")или(za=16)или((zb>12)и(zb<16)),"и","ы")+"мм",10*zd+2*zc-3,2)));
Возврат ?(""=z1,"",?(z4>0,ВРег(Лев(zf,1))+?((z2<0)и(z4>1),".",Сред(zf,2)),zf)+z6);
КонецФункции
шедевр, кстати!
−123
Функция МесяцПрописью()
М = Месяц(КонПериода);
П = "";
Если М = 1 Тогда П = "январь"
ИначеЕсли
М = 2 Тогда П = "февраль"
ИначеЕсли
М = 3 Тогда П = "март"
ИначеЕсли
М = 4 Тогда П = "апрель"
ИначеЕсли
М = 5 Тогда П = "май"
ИначеЕсли
М = 6 Тогда П = "июнь"
ИначеЕсли
М = 7 Тогда П = "июль"
ИначеЕсли
М = 8 Тогда П = "август"
ИначеЕсли
М = 9 Тогда П = "сентябрь"
ИначеЕсли
М = 10 Тогда П = "октябрь"
ИначеЕсли
М = 11 Тогда П = "ноябрь"
ИначеЕсли
М = 12 Тогда П = "декабрь"
КонецЕсли;
Возврат П;
КонецФункции
Абсолютно реальный код в одном из отчетов...
−102
Сегодня мы отказались от 1С.
Сегодня, когда день апплодировал стоя.
А в штанах остались желтые бумажки. В назидание?
−123
СпрСклады = СоздатьОбъект("Справочник.Склады");
НСкл = 0;
СпрСклады.ВыбратьЭлементы();
Пока СпрСклады.ПолучитьЭлемент() = 1 Цикл
Склад = СпрСклады.ТекущийЭлемент();
НСкл = НСкл + 1;
Если НСкл = 1 Тогда
Прервать
КонецЕсли;
КонецЦикла;
Вот такую "красоту" оставили предыдущие программисты.
−154
case 2: //редактирование таблицы
do
{
for (i = 0; i < size; i++) //вывод таблицы, чтобы видно было, что нужно изменять
{
for (j = 0; j < 4; j++)
{
for (k = 0; k < 4; k++)
{
adres[k] = ((maska << (24 - 8 * k)) & bin_adres[i][j]) >> (24 - 8 * k);
}
cout << adres [0] << "." << adres [1] << "." << adres [2] << "." << adres [3] << "\t";
}
cout << endl;
}
cto ("Наберите необходимый адрес назначения" , s);
cout << s << endl;
for (j = 0; j < 4; j++)
{
cin >> adres [j];
if (adres[j] < 0 || adres[i] > 255) //проверка каждой введенной цифры на соответствие интервалу
{
cto ("Вы ввели неверное число. Введите число в диапазонe 0-255" , s);
cout << s << endl;
j--;
}
else
crv = (adres[0] << 24) + (adres[1] << 16) + (adres[2] << 8) + adres[3];
}
for (i = 0; i < size; i++) //перебор по строкам всего массива
{
if (crv == bin_adres[i][0]) //сравниваем первый элемент каждой строки, с введенным значением
{
temp = i; //получаем номер строки, которую необходимо редактировать
break;
}
}
cto ("Что необходимо изменить?\n Адрес назначения (нажмите 1)\n Адрес источника (нажмите 2)\n Шлюз(Нажмите 3)\n Маску(нажмите 4)\n", s);
cout << s << endl;
number = 0;
cin >> number; //получаем номер столбца для изменения
number--; //для правильного определения индекса элемента в массиве
cto ("Введите элемент", s);
cout << s << endl;
for (i = 0; i < 4; i++)
{
cin >> adres[i];
if (adres[i] < 0 || adres[i] > 255)
{
cto ("Вы выпали из диапазона 0-255. Введите нормальное число", s);
cout << s << endl;
i--;
}
}
bin_adres[temp][number] = (adres[0] << 24) + (adres[1] << 16) + (adres[2] << 8) + adres[3]; //записываем данный элемент в заданную строку
cto ("Для выхода из редактирования нажмите 1 (продолжить - любая цифра)", s);
cout << s << endl;
cin >> number;
}
while (number != 1);
system("cls"); //очиста окна командной строки
break;
Команда стажеров писала маршрутизатор на базе 1С предприятия и вот что получилось.
−137
Для Каждого Стр0 из ДеревоНаФорме.Строки Цикл
Сум0 =0;
Для Каждого Стр1 из Стр0.Строки Цикл
Сум1 =0;
Для Каждого Стр2 из Стр1.Строки Цикл;
Попытка
Стр2.СуммаВсего = Стр2.Количество * Стр2.Нормочасы*ЦенаНормочаса *(1-Стр2.СкидкаНаРаботы/100)+ Стр2.Количество * Стр2.Цена *(1-Стр2.СкидкаНаЗапчасти/100) ;
Стр2.СтоимостьУстановки = Стр2.Количество * Стр2.Нормочасы*ЦенаНормочаса;
Сум1=Сум1+ Стр2.СуммаВсего;
исключение КонецПопытки;
КонецЦикла;
Стр1.СуммаВсего = Сум1;
Сум0 = Сум0+Сум1;
КонецЦикла;
Стр0.СуммаВсего = Сум0;
КонецЦикла;
Умопомрачительный подсчёт итога по колонке "СуммаВсего" в дереве.
ДеревоНаФорме - дерево на форме. При интеркативном изменении числовых реквизитов - пересчитывается строка, но! на всякий случай здесь - в Попытке-Исключении пересчитываем СуммуВсего по строке ещё раз... Ну и конечно порадовала изящность конструкции....
−155
Девушкой, которую я любил
Оказался педофил
Он на 1С все показал
И научил
Теперь я здесь настраиваю все
Прямо как во сне
Александр Сергеевич Пушкин-Блок
−155
1
Минимальная программа на 1С
−143
1С.................
Когда копро уже не вставляет.