Имя: Пароль:
1C
 
помогите вс использованием метода СтрЗаменить()
0 millim
 
13.11.07
10:05
Необходимо получить название месяца в родительном падеже,
  реализация в 8.1. Как один из подходов я использовала метод СтрЗаменить().
  Ошибка в реализации функции,
  и где правильно будет вызвать функцию ОтчетныйМесяцСклонение(ОтчетныйМесяц),чтобы не нарушить формат даты?
  а он должен быть таким: 1 января 2007 года
                          1 февраля 2007 года
                          .... и т.д.
1 millim
 
13.11.07
10:52
Знатоки,АУ!
Функция ОтчетныйМесяцСклонение(ОтчетныйМесяц)
   
   Если ОтчетныйМесяц=1 Тогда
       СтрЗаменить(ОтчетныйМесяц,"январь","января");
       
       Если ОтчетныйМесяц=2 Тогда
           СтрЗаменить(ОтчетныйМесяц,"февраль","февраля");
           
       КонецЕсли;        
   КонецЕсли;        
   
КонецФункции
 
У меня с ошибкой отрабатывает(
"Встроенная функция можеь быть использованна только в выражении."
2 Рэйв
 
13.11.07
10:53
откуда ты ее вызываешь?
3 millim
 
13.11.07
10:59
Мне в отчете строчку в опред.формате сформировать надо.
Как пробный вариант можно просто на форму бросить ПолеВывода с именем ОтчетныйМесяц.
И прописать ф-ю в модуле формы.
4 Рэйв
 
13.11.07
11:00
(3)а чем тебе для "определенного" формата не подходит функция Формат()?
5 zbv
 
13.11.07
11:04
Во-первых:
   Если ОтчетныйМесяц=1 Тогда
       Возврат СтрЗаменить(ОтчетныйМесяц,"январь","января");
   КонецЕсли;    
   Если ОтчетныйМесяц=2 Тогда
       Возврат СтрЗаменить(ОтчетныйМесяц,"февраль","февраля");
   КонецЕсли;
       
   ОтчетныйМесяц - Должен быть строкой!!

Во-вторых:
   Возврат Формат(<Дата>,"ДЛФ=DD")
6 marvak
 
13.11.07
11:09
(0) эх, сразу виден женский подход к программированию :(
обычно создают массив или структуру или таблицу соответствий месяцев в разных падежах а не пишут огромную конструкцию вида если ... тогда
7 hhhh
 
13.11.07
11:09
(1) ОтчетныйМесяц = СтрЗаменить(ОтчетныйМесяц,"январь","января");
8 zbv
 
13.11.07
11:12
гы.

Только заметил... "ОтчетныйМесяц" - оказывается число от 1 до 12. :)
9 millim
 
13.11.07
11:14
так она у меня в процедуре так и прописана
Шапка.Параметры.СТР="на "+Строка(Формат(НачалоМесяца(ОтчетныйМесяц),"ДЛФ=Д"))+"года";
СТРОКОЙ!Вопрос был ещё: как её правильно вызвать в процедуре,т.к. надо только месяц без числа и года изменять?
10 millim
 
13.11.07
11:15
marvak
Попрошу без указания на пловую принадлежность:(
11 zbv
 
13.11.07
11:19
(9) почитай (6) он дело говорит...

если я правильно понял, что нужно получить только месяц в родительном падеже.
12 millim
 
13.11.07
11:28
набросайте,пожалуйста,структуру таблицы соответствий месяцев...
нагловато,наверно,звучит..,но я загибаюсь...параллельно с др.отчетом работаю
13 marvak
 
13.11.07
11:47
Ну, например ТаблицаМесяцев из 12 строк и колонок "именительный", "родительный", ...

функция может выглядеть так:

Функция ПолучитьМесяцВПадеже(НомерМесяца, Падеж = "именительный")

Если НомерМесяца<1 ИЛИ НомерМесяца<1 Тогда
  Возврат "";
Конецесли;

Возврат ТаблицаМесяцев[НомерМесяца][Падеж];

конецфункции
14 marvak
 
13.11.07
11:48
пардон, там исправить нужно
Если НомерМесяца<1 ИЛИ НомерМесяца>12 Тогда
  Возврат "";
Конецесли;
15 marvak
 
13.11.07
11:49
а еще лучше создать какой-нить справочник или настроечную таблицу
16 millim
 
13.11.07
11:54
мне только в родительном надо...
остальные ни к чему
можно метод СтрЗаменить() в таблице использовать?
17 marvak
 
13.11.07
11:55
(16) а зачем тебе СтрЗаменить?
ты что хочешь в функцию передавать? Номер месяца или его название в именительном падеже
18 Ursus maritimus
 
13.11.07
12:05
Формат(Дата("2007"+Прав("0"+ОтчетныйМесяц,2)+"01"),"ДЛФ=DD")
19 millim
 
13.11.07
12:12
(17) его название.
см.первую постановку вопроса.
надо получать формат: 1 января 2007 г.
                     1 февраля 2007 г.
                      и т.д.....
20 millim
 
13.11.07
12:13
НачалоМесяца(); обязательно!
21 Ленивый
 
13.11.07
13:08
как вариант
ОтчетныйМесяц=?(Прав(СокрЛП(ОтчетныйМесяц),1)="ь",СтрЗаменить(СокрЛП(ОтчетныйМесяц),"ь","я"),?(Прав(ОтчетныйМесяц,1)="т",СокрЛП(ОтчетныйМесяц)+"а",?(Прав(СокрЛП(ОтчетныйМесяц),1)="й",СтрЗаменить(СокрЛП(ОтчетныйМесяц),"й","я"))))
22 Ленивый
 
13.11.07
13:10
(21)Чето у меня плохо отбражается:

ОтчетныйМесяц=?(Прав(СокрЛП(ОтчетныйМесяц),1)="ь",
СтрЗаменить(СокрЛП(ОтчетныйМесяц),"ь","я"),
?(Прав(ОтчетныйМесяц,1)="т",
СокрЛП(ОтчетныйМесяц)+"а",
?(Прав(СокрЛП(ОтчетныйМесяц),1)="й",
СтрЗаменить(СокрЛП(ОтчетныйМесяц),"й","я"))))
23 s1s
 
13.11.07
13:14
Если смотреть на (1) то
Формат(Дата(2007,ОтчетныйМесяц,1),"ДЛФ=DD")
если предположить, что ОтчетныйМесяц это тип дата, то
Формат(НачалоМесяца(ОтчетныйМесяц,"ДЛФ=DD")
24 s1s
 
13.11.07
13:14
+23
Формат(НачалоМесяца(ОтчетныйМесяц),"ДЛФ=DD")