Поздравление с Новым Годом 2010 для 1С 8.1
Моя обработка основана на аналогичной обработке для 1С 77
//infostart.ru/public/61649
Версия 1.1
+ используются только новогодние анекдоты;
+ текст отображается не только в Агенте, но и на форме;
+ если Агента по разным причинам не удается загрузить, то обработка все равно работает, просто отображая текст на экране;
+ для каждой фоновой картинки используется свой цвет текста для лучшего восприятия.
Версия 1.2
- исправлен подсчет дней до НГ
* доработан показ дней (1 день, 2 дня, 5 дней и т.п.)
Версия 1.2.1
- исправлена ошибка при работе с поздравлениями.
Для новичков - для использования при начале работы пользователей
необходимо в модуле приложения конфигурации 8.1 выполнить следующее
1. в процедуре ПриНачалеРаботыСистемы добавить следующий код:
[code]
ДатаПраздника = 31; МесяцПраздника = 12; //31.12
РаботаемВСубботу = ЛОЖЬ;
Если НужноВыводитьПоздравлениеСПраздниками(ДатаПраздника, МесяцПраздника, РаботаемВСубботу, лТекущаяДата) Тогда
Попытка
Открытка = ВнешниеОбработки.ПолучитьФорму("W:\артПоздравлениеСНовымГодом_2010.epf", "Форма");
Открытка.Открыть();
Исключение
//ОписаниеОшибки()
КонецПопытки;
КонецЕсли;
[/code]
2. В модуль приложения добавить функцию
[code]
Функция НужноВыводитьПоздравлениеСПраздниками(ДатаПраздника, МесяцПраздника, РаботаемВСубботу, ТекущаяДатаДляОтладки = Неопределено)
Если ЗначениеЗаполнено(ТекущаяДатаДляОтладки) Тогда
лТекущаяДата = ТекущаяДатаДляОтладки;
Иначе
лТекущаяДата = ТекущаяДата();
КонецЕсли;
началоДняТекущейДаты = НачалоДня(лТекущаяДата);
Если Месяц(лТекущаяДата) = МесяцПраздника Тогда
ДеньНедели = ДеньНедели(Дата(Год(лТекущаяДата), МесяцПраздника, ДатаПраздника));
Если ДеньНедели > 5 Тогда //Праздник попадает на Сб, Вс, открытку выводить нужно в Пт
Если РаботаемВСубботу Тогда
СмещениеДат = ДеньНедели - 6;
Иначе
СмещениеДат = ДеньНедели - 5;
КонецЕсли;
ИначеЕсли ДеньНедели < 3 Тогда //Праздник попадает на Пн, Вт, открытку выводить нужно в Пт, Сб
Если РаботаемВСубботу Тогда
СмещениеДат = 2;
Иначе
СмещениеДат = 3;
КонецЕсли;
Иначе
СмещениеДат = 1;
КонецЕсли;
Если началоДняТекущейДаты = НачалоДня(Дата(Год(лТекущаяДата),МесяцПраздника,(ДатаПраздника - СмещениеДат))) Тогда
ФизЛицо = глЗначениеПеременной("глТекущийПользователь").ФизЛицо;
Если ЗначениеЗаполнено(ФизЛицо) Тогда
Если ФизЛицо.Пол = Перечисления.ПолФизическихЛиц.Мужской Тогда
Возврат ЛОЖЬ;
КонецЕсли;
КонецЕсли;
Возврат Истина;
КонецЕсли;
КонецЕсли;
Возврат ЛОЖЬ;
КонецФункции
[/code]
Жду предложений по развитию + анекдотов + идей по оформлению/использованию.
PS Мои женщины (менеджеры, бухгалтера) всегда по-детски радуются подобным поздравлениям на праздники.
PPS долго ждал, пока кто-нибудь сделает для 8.1, но народ не спешил, пришлось самому заняться :)