|
|
|
v8. Делимся универсальными процедурами и функциями Ø |
☑ | ||
|---|---|---|---|---|
|
0
zalexey
30.12.04
✎
20:58
|
Предлагаю делиться универсальными функциями и процедураками, для дальнейшего использования. Причем лучше все это разбить на разные общие модули. Например:
унУниверсальные Здесь размещать проц. и функ., которые не привязаны ни к какой конкретной конфигурации. утУниверсальнеДляУТ Функция на базе управления торговлей уппУниверсальныеДляУПП бпУниверсальныеДляБП Соответвенно, у каждой свой префикс. Есть чем поделиться? У себя начал собирать, пока вот малость. P.S. можно для начала договориться о стандартах написания (имеется ввиду префиксах) и т.п. Как вообще идея-то? Или уже опередили меня? :) |
|||
|
1
zalexey
30.12.04
✎
21:01
|
//*****************************************************************************
// МОДУЛЬ С УНИВЕРСАЛЬНЫМИ ПРОЦЕДУРАМИ И ФУНКЦИЯМИ // // В модуле собраны процедуры и функции, которые могут быть использованы в // любой конфигурации 1С:Предприятие 8.0 /////////////////////////////////////////////////////////////////////////////// // МОДУЛЬ ДЛЯ РАБОТЫ С ДАТАМИ // // Функция добавляет (отнимает) необходимое количество дней к дате // // Параметры: // Дата - Исходная дата // КоличествоДней - Количество дней, которое необходимо добавить (отнять) к исходной дате // // Возвращаемое значение: // Дата, полученная в результате добавления // Функция унДобавитьДни (Дата, КоличествоДней) Экспорт Возврат Дата + 24*60*60*КоличествоДней; КонецФункции //унДобавитьДни() // Функция предназначена для образования строки с названием месяца прописью // // Параметры: // Дата - дата на основе которой формируется название месяца // СБольшойБуквы - указывает нужно ли название месяца делать с большой буквы // ВРег - указывает нужно ли название месяца делать большими буквами // // Возвращаемое значение: // Название месяца прописью // Функция унМесяцПрописью (Дата, СБольшойБуквы = Ложь, ВРег = Ложь) Экспорт Если Месяц(Дата) = 1 Тогда Результат = "январь"; ИначеЕсли Месяц(Дата) = 2 Тогда Результат = "февраль"; ИначеЕсли Месяц(Дата) = 3 Тогда Результат = "март"; ИначеЕсли Месяц(Дата) = 4 Тогда Результат = "апрель"; ИначеЕсли Месяц(Дата) = 5 Тогда Результат = "май"; ИначеЕсли Месяц(Дата) = 6 Тогда Результат = "июнь"; ИначеЕсли Месяц(Дата) = 7 Тогда Результат = "июль"; ИначеЕсли Месяц(Дата) = 8 Тогда Результат = "август"; ИначеЕсли Месяц(Дата) = 9 Тогда Результат = "сентябрь"; ИначеЕсли Месяц(Дата) = 10 Тогда Результат = "октябрь"; ИначеЕсли Месяц(Дата) = 11 Тогда Результат = "ноябрь"; ИначеЕсли Месяц(Дата) = 12 Тогда Результат = "декабрь"; КонецЕсли; // Если необходимо выводить название месяца с большой буквы, то сделаем // преобразование Если СБольшойБуквы Тогда Результат = ВРег(Лев(Результат,1)) + Сред(Результат,2); КонецЕсли; // Проверим нужно ли переводить строку в верхний регистр Если ВРег Тогда Результат = Врег(Результат); КонецЕсли; Возврат Результат; КонецФункции // унПолучитьМесяцПрописью() |
|||
|
2
zalexey
30.12.04
✎
21:04
|
///////////////////////////////////////////////////////////////////////////////
// МОДУЛЬ СКЛОНЕНИЯ Ф.И.О. И ДОЛЖНОСТЕЙ // // Источник: http://www.superjur.narod.ru/Text/1/1C.RAR<br>//<br>// (c) Jurer Production Begin ( Start ) // Номер версии 42 - последняя оптимизация кода // Номер версии 41 - оптимизация + отчества оканчивающиеся на "ы" считаются женскими ? // Номер версии 40 - подправил склонение фамилий для Кормилец, Силиец // Номер версии 39 - что-то подправил - вроде бы фамилии на -ий для z2=-1 неправильный был возврат. // Номер версии 38 - оптимизация кода - баги // Номер версии 37 - оптимизация кода + добавлена новая функция, специально предназначенная для склонения профессий // Номер версии 36 - оптимизация кода + добавлен новый входной параметр // Номер версии 35 - оптимизация кода + равнодушие к регистрам // В случае, если программа окажется для Вас полезной, и Вы представляете только свои // интересы, а не интересы фирмы, автор будет весьма признателен, если Вы перечислите ему // некую сумму на Ваше усмотрение (автор будет благодарен любым инициативам). // Для этого через сбербанк перечислите N-ую сумму на следующий счет: // филиал 8606/018 Рязанское ОСБ № 8606 СБ РФ г.Рязань // РЕКВИЗИТЫ: ИНН 7707083893 КОР.СЧЕТ 30101810500000000614 БИК 046126614 // ДЛЯ ПЕРЕЧИСЛЕНИЙ ВО ВКЛАД ФИЗИЧ.ЛИЦ - 47422810453009902100 // НОМЕР СБЕРКНИЖКИ: 42301810953002115714/01 Железняков Юрий Юрьевич // __________________________________________________________________ // SuperJur.Narod.Ru // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ SuperJur _ _ _ _ _ _ _ _ _ _ _ _ _ _ // Мыло - SuperJur@Narod.ru ( постоянное ) // - SuperJur@Mail.ru ( постоянное ) // - org@kvint.ryazan.ru (рабочее, а потому не совсем постоянное ) // __________________________________________________________________ // Удаление этих строк незнаконно! // Гарантия 92 года и 3 месяца!!! // Послегарантийное обслуживание - бесплатно!!! // Круглосуточная поддержка - все 48 часов в бою! // Ссылка на источник обязательна! // Эти программы защищены законом об авторских правах. Запрещается перепродажа данной программы. // ПРОВЕРЕНО! ВИРУСОВ НЕТ!!! АНТИВИРУСОВ ТОЖЕ!!! Функция ПадежС(z1,Знач z2=2,z3="*",z5=0) Экспорт z1=?((z2<0)и(z5=1),Лев(z1,1)+".",z1);z2=Макс(z2,-z2);z4=Прав(z1,2);z5=?(z3="1",?(z4="ая",8,?(Найти("па да ца",z4)>0,3,9)),?(z4="ия",7,Найти(".чайяь",Прав(z4,1)))); z6=?(z4="ел","л",?(z1="Лев","ьв",?(z4="ец",?(Прав(z1,3)="лец","ь",?(Найти("аец иец",Прав(z1,3))>0,"й",""))+"ц",""))); Возврат ?((z2=1)или(Найти("ьжан итай",Прав(z1,4))>0),z1,Лев(z1,СтрДлина(z1)-?((z5=8)или(z6<>""),2,?(z5>2,1,0)))+z6+СокрП(Сред("а у а "+?(z3="2",Сред("оыыыее",Найти(" внтч",Прав(z4,1))+1,1),"о")+"ме а у а еме "+?(Найти("гжкхш",Лев(z4,1))>0,"и","ы")+" е у ойе я ю я ем"+?(z4="ий","и","е")+" и е ю ейе и и ь ьюи и и ю ейи ойойуюойойойойу ойой",10*?((z5=6)и(z3<>"а"),4,z5)+2*z2-3,2))) КонецФункции |
|||
|
3
zalexey
30.12.04
✎
21:19
|
// Функция Падеж - предназначена для сколнения фамилий
// Параметры: // z1 - фамилия имя отчество например Железняков Юрий Юрьевич // z2 - Падеж ( по умолчанию = 2 - родительный) // 2 - родительный ( нет кого? ) Железнякова Юрия Юрьевича // 3 - дательный ( кому? ) Железнякову Юрию Юрьевичу // 4 - винительный ( вижу кого? ) Железнякова Юрия Юрьевича // 5 - творительный ( кем? ) Железняковым Юрием Юрьевичем // 6 - предложный ( о ком? ) Железнякове Юрии Юрьевиче // Если задать Z2 меньше 0, то на выходе получим от -1=Железняков Ю. Ю. до -6=Железнякове Ю. Ю. // z3 - параметр Пол может не указываться, но при наличии фамилий с // инициалами точное определение пола невозможно, поэтому предлагается задавать пол этим // параметром // 1 - мужской // 2 - женский // z10 - служебная переменная // В Н И М А Н И Е В Н И М А Н И Е В Н И М А Н И Е В Н И М А Н И Е В Н И М А Н И Е // --------------------------------------------------------------------------------------- // ДЛЯ СКЛОНЕНИЯ ПРОФЕССИЙ ИСПОЛЬЗУЙТЕ ФУНКЦИЮ ПАДЕЖП И БУДЕТ ВАМ СЧАСТЬЕ! // --------------------------------------------------------------------------------------- // Бибик Галушка Цой Николайчик Наталия Петровна Герценберг Кривошей Капица-Метелица // Если Падеж(Профессия,1 ,3,1 ), то на выходе получим Юрий Юрьевич Железняков и т.д. // Если Падеж(Профессия,-1 ,3,1 ), то на выходе получим Ю. Ю. Железняков и т.д. // 08-08-2003 подправил склонение фамилий для Кормилец, Силиец Функция Падеж(Знач z1,Знач z2=2,Знач z3=3,z10=0) Экспорт z1=СтрЗаменить(СокрЛП(СтрЗаменить(НРег(СокрЛП(z1)),".",". "))," "," "); z3=Сред("ча"+Прав(z1,1),z3,1); z4=Найти(z1+" "," "); //участок преобразования фамилия имя отчество --> Фамилия Имя Отчество z5=z4+Найти(Сред(z1+" ",z4+1)," "); z1=?(z10<0,z1,ВРег(Лев(z1,1))+Сред(z1,2,z4-1)+Врег(Сред(z1,z4+1,1))+Сред(z1,z4+2,z5-z4-1)+ВРег(Сред(z1,z5+1,1))+Сред(z1,z5+2,СтрДлина(z1)-z5)); z5=Лев(z1,z4-1);z6=Прав(z5,3);z7=Прав(z6,2);z8=Прав(z7,1); z5=?((z2=1)или(Найти("оеиую",z8)+Найти("аа еа ёа иа оа уа ыа эа юа яа",z7)<>0),z5,?((z3="а")или(z3="ы"),?((z8="а")и(z6<>"ула")или(z7="ая"),ПадежС(z5,z2,"1"),z5),?((Найти("ой ый ий",z7)>0)и(z6<>"Цой"),Лев(z5,z4-3)+СокрП(Сред("огоомуого"+?((z7="ий")или(Найти("гой хой",z6)>0),"и","ы")+"м ом егоемуегоим ем",?(Найти("чшщ",Лев(z6,1))>0,15,0)+z2*3-5,3)),ПадежС(z5,z2,"2")))); z8=z4+Найти(Сред(z1+" ",z4+1)," "); z8=?((z3="ч")и(z4=СтрДлина(z1)+1),ПадежС(z1,z2),z5)+" "+ПадежС(Сред(z1,z4+1,z8-z4-1),z2,z3,1)+" "+ПадежС(Сред(z1,z8+1,СтрДлина(z1)-z8),?(z3="ы",?(z2<0,-1,1),z2),z3,1); Возврат?(z10<1,z8,Сред(z8,Найти(z8+" "," ")+1)+" "+Лев(z8,Найти(z8+" "," ")-1)) КонецФункции// Функция Падеж(z1,z2=2,z3=3) // Функция ПедежП - для сколнения профессий // // z1 - наименование профессии, как одно слово, так и несколько слов. Например // звукорежиссер, инженер - программист 1 категории, заместитель технического директора // z2 - номер падежа (1 - именительный, 2 - родительный, 3 - дательный, 4 - винительный, 5 - творительный, 6 - предложный) // z3 - служебная переменная // Пример вызова ПадежП("агент по снабжению", 2 ) для родительного падежа. // Пример вызова ПадежП("ведущий инженер-программист 2 категории", 3 ) для дательного падежа. // ... Функция ПадежП(Знач z1,Знач z2,z3=0) Экспорт z1=Нрег(СокрЛП(z1));z4=Найти(z1,"-");z1=СтрЗаменить(z1,"-"," ");z5=Найти(z1+" "," ")+1;z6=Лев(z1,z5-2); z7=?((Найти("ая ий ый",Сред(z1,z5-3,2))>0)и(Сред(z1,z5-5,4)<>"ющий")и(z3=0),"1","*"); z1=?((Сред(z1,z5-3,2)="ая")или(Сред(z1,z5-2,1)="а"),ПадежС(z6,z2,z7)+" "+ПадежС(Сред(z1,z5),z2),Падеж(z6,z2,3,-1) + ?((Сред(z1,z5-3,2)="ий")и(Найти(z1," ")=0),"",?(((z3>1)или(z4>0)или(z7="1")),ПадежП(Сред(z1,z5),z2,?(z7="1",?(z4>0,2,1),0)),Сред(z1,z5)))); z5=Найти(Сред(z1,z4)," ")+z4; Возврат?(z4>0,Лев(z1,z5-2)+"-"+СокрЛ(Сред(z1,z5)),z1); КонецФункции// ПадежП(Знач z1, Знач z2) Экспорт // (c) Jurer Production End ( Finish ) // // Конец модуля склонения /////////////////////////////////////////////////////////////////////////////// |
|||
|
4
zalexey
30.12.04
✎
21:22
|
//*****************************************************************************
// МОДУЛЬ С УНИВЕРСАЛЬНЫМИ ПРОЦЕДУРАМИ И ФУНКЦИЯМИ ДЛЯ // 1С ПРЕДПРИЯТИЕ:Управление торговлей // // Эти процедуры и функции расчитаны на работу в типовой конфигурации Управление Торговлей // Функция формирует полное фамилию, имя, отчесто, или фамилию с инициалами // // Параметры // ФизЛицо – Физическое лицо (Справочник "Физические лица") // ПолноеФИО – Булево. Формировать полное ФИМ, или только фамилию с инициалами // По умолчанию - Ложь, т.е. формируется Фамилия и инициалы // // Возвращаемое значение: // Строка с ФИО // Функция утФИОНаПечать(ФизЛицо, ПолноеФИО = Ложь) Экспорт Если обЗначениеНеЗаполнено (ФизЛицо) Тогда Возврат ФизЛицо; КонецЕсли; Если ПолноеФИО Тогда Результат = ФизЛицо.Фамилия + " " + ФизЛицо.Имя + " " + ФизЛицо.Отчество; Иначе Результат = ФизЛицо.Фамилия + " " + Лев(ФизЛицо.Имя,1) + ". " + Лев(ФизЛицо.Отчество, 1) + "."; КонецЕсли; Возврат Результат; КонецФункции // унФИОНаПечать() |
|||
|
5
android
30.12.04
✎
21:55
|
продолжай...
|
|||
|
6
dentist
30.12.04
✎
22:12
|
унМесяцПрописью - нафига? Так не проще - Формат(Дата, "ДФ = 'ММММ'") ?
|
|||
|
7
zalexey
30.12.04
✎
23:27
|
(6) :))) мда. Вот что значит читать справки и книжки только когда припрет. Спасибо.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |