Как создать алгоритм для правильной подстановки в прогр.код где нужно- "лет", а где нужно-"года"

1. 24.06.22 00:29 Сейчас в теме
Здравствуйте! - извините пожалуйста, я только учусь и хочется полностью разобраться в заданном уроке.

-Пожалуйста подскажите как написать программный код так, чтобы в тексте СтрШаблон( "... ему уже целых %3 года ! ... ); подставлялось правильное значение в соответствии с числом лет - например: « 22 годА» , «30 лет », « 41 год » ...

Задача:

•Дано: Сздать Списки Значений : ФИО, Качества, Возраст .

• Требуется вывести сообщение : « < ФИО > - самый < Качество > в нашем коллективе ! А, между прочим, ему уже целых < Возраст > лет ! ».

Решение :

 СписокФИО = Новый СписокЗначений ;    

         СписокФИО.Добавить("Витя  Иванов");   
         СписокФИО.Добавить("Петя Степанов");
         СписокФИО.Добавить("Саша Хороший "); 

     СписокКачеств = Новый СписокЗначений ; 
     СписокКачеств.Добавить("Добрый") ;       
     СписокКачеств.Добавить(" Отзывчивый") ;
     СписокКачеств.Добавить(" Веселый") ;
 

         СписокВозрастов = Новый СписокЗначений ;    
         СписокВозрастов.Добавить( 30);   
         СписокВозрастов.Добавить(20);
         СписокВозрастов.Добавить(50);
 
 

    ФИО = СписокФИО.ВыбратьЭлемент("Какая Фамилия сотрудника", ФИО ) ;
    Качество  = СписокКачеств.ВыбратьЭлемент("Какое Качество сотрудника : ", Качество );   
    Возраст = СписокВозрастов.ВыбратьЭлемент("Какой Возраст сотрудника : ", Возраст ) ;
    
    
     СтрокаВывода = СтрШаблон( " %1 - самый %2 в нашем коллективе!
    | А, между прочим, ему уже целых %3 года! ",  ФИО,  Качество, Возраст );

     Сообщить(СтрокаВывода);
Показать



Буду очень сильно благодарна всем кто подскажет решение :)
С уважением ко всем на форуме.
Найденные решения
3. ishelper 24.06.22 01:41 Сейчас в теме
(2)
а в каком случае пишется "года", а в каком "лет"? От чего это зависит?
Капитан Очевидность: "От возраста зависит!" :-)

Капитан Неочевидность: "От знания языка! И не языка 1С, а русского языка... с чем у современных программистов трудностей не меньше, чем с созданием алгоритмов."

Поэтому, так и быть, поможем новичку (с алгоритмом):
1. Если возраст меньше 20 - тогда "лет".
2. Если последняя цифра возраста равна 1 - "год".
3. Если эта цифра равна 2,3, или 4 - "года".
4. В остальных случаях - "лет".

Посмотрим, как автор переведет этот нехитрый алгоритм на язык 1С.
FatPanzer; PhoenixAOD; muskul; +3 Ответить
4. spacecraft 24.06.22 07:25 Сейчас в теме
(1) 1С ввела метод СтрокаСЧислом (доступна в платформе начиная с 8.3.10). Как раз для таких случаев.

СтрокаВыводаЛет = СтрокаСЧислом(";%1 год;;%1 года;%1 лет;%1 года", Возраст, ВидЧисловогоЗначения.Количественное, "L=ru");
СтрокаВывода = СтрШаблон( " %1 - самый %2 в нашем коллективе!
| А, между прочим, ему уже целых %3! ", ФИО, Качество, СтрокаВыводаЛет);
unknown181538; Sharap09; +2 Ответить
2. FatPanzer 16 24.06.22 01:14 Сейчас в теме
Для начала надо подумать - а в каком случае пишется "года", а в каком "лет"? От чего это зависит?
Sharap09; +1 Ответить
9. spacecraft 24.06.22 10:15 Сейчас в теме
(8)
Возраст = СписокВозрастов.ВыбратьЭлемент("Выберите возраст сотрудника : ") ;

Возвраст получает не тип число, а элемент списка значения.
Число хранится в свойстве Значение у элемента.
СтрокаВыводаЛет = СтрокаСЧислом(" ; %1 год; ; %1 года ; %1 лет ; %1 года ", Возраст.Значение, ВидЧисловогоЗначения.Количественное, "L = ru" ) ;
Sharap09; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. spacecraft 24.06.22 07:25 Сейчас в теме
(1) 1С ввела метод СтрокаСЧислом (доступна в платформе начиная с 8.3.10). Как раз для таких случаев.

СтрокаВыводаЛет = СтрокаСЧислом(";%1 год;;%1 года;%1 лет;%1 года", Возраст, ВидЧисловогоЗначения.Количественное, "L=ru");
СтрокаВывода = СтрШаблон( " %1 - самый %2 в нашем коллективе!
| А, между прочим, ему уже целых %3! ", ФИО, Качество, СтрокаВыводаЛет);
unknown181538; Sharap09; +2 Ответить
8. Sharap09 24.06.22 10:05 Сейчас в теме
(4)Пожалуйста посмотрите - где у меня ошибка? - вроде код точно переписала, и на четвертом шаге, когда должно выйти сообщение, выходит окно с ошибкой : « Несоответствие типов ( параметр номер '2' ) :


СписокФИО = Новый СписокЗначений ;
СписокФИО.Добавить("Вася Иванов");
СписокФИО.Добавить("Витя Степанов");
СписокФИО.Добавить("Саша Хороший ");


СписокКачеств = Новый СписокЗначений ;
СписокКачеств.Добавить("Добрый") ;
СписокКачеств.Добавить(" Отзывчивый") ;
СписокКачеств.Добавить(" Веселый") ;

СписокВозрастов = Новый СписокЗначений ;
СписокВозрастов.Добавить( 30);
СписокВозрастов.Добавить(20);
СписокВозрастов.Добавить(52);



ФИО = СписокФИО.ВыбратьЭлемент("Выберите фамилию сотрудника : ") ;

Качество = СписокКачеств.ВыбратьЭлемент("Выберите качество сотрудника : " ) ;

Возраст = СписокВозрастов.ВыбратьЭлемент("Выберите возраст сотрудника : ") ;

СтрокаВыводаЛет = СтрокаСЧислом(" ; %1 год; ; %1 года ; %1 лет ; %1 года ", Возраст, ВидЧисловогоЗначения.Количественное, "L = ru" ) ;

Вывод = СтрШаблон( " %1 - самый %2 в нашем коллективе! А, между прочим, ему уже целых %3 ! ",ФИО,Качество,СтрокаВыводаЛет );

Сообщить(Вывод);
9. spacecraft 24.06.22 10:15 Сейчас в теме
(8)
Возраст = СписокВозрастов.ВыбратьЭлемент("Выберите возраст сотрудника : ") ;

Возвраст получает не тип число, а элемент списка значения.
Число хранится в свойстве Значение у элемента.
СтрокаВыводаЛет = СтрокаСЧислом(" ; %1 год; ; %1 года ; %1 лет ; %1 года ", Возраст.Значение, ВидЧисловогоЗначения.Количественное, "L = ru" ) ;
Sharap09; +1 Ответить
12. Sharap09 24.06.22 15:27 Сейчас в теме
(9)
Возвраст получает не тип число, а элемент списка значения.
Число хранится в свойстве Значение у элемента.

- спасибо огромное!, все сразу получилось )) - а по какому пути я могу посмотреть эту Функцию в Справке ? - что т о искала-искала и не могу найти
30. spacecraft 24.06.22 19:51 Сейчас в теме
(12) это нужно смотреть в СП (синтакс-помощник) Выбрать метод и нажать Ctrl+F1 (или использовать контекстное меню)
10. ishelper 24.06.22 13:50 Сейчас в теме
(8)
где у меня ошибка? - вроде код точно переписала
М-да, рождение программиста не состоялось - родился еще один 1Сник, который на каждую дурную хотелку (заказчика или свою) будет искать "готовую функцию 1С".
13. Sharap09 24.06.22 15:30 Сейчас в теме
(10) зачем вам нужно все сразу обругать??? ... я только начала учиться, учусь самостоятельно , и что ? - сразу такие выводы надо сделать ? :(
38. unknown181538 70 24.06.22 23:18 Сейчас в теме
(4) Надо же, какое существует...
6. ishelper 24.06.22 09:21 Сейчас в теме
(5)
До 10 лет тоже действует общее правило про "1 год / 2,3,4 года / X лет".
В принципе - верно, но в условиях данной задачи это неважно:
(1)
ФИО = СписокФИО.ВыбратьЭлемент("Какая Фамилия сотрудника", ФИО ) ;

Сотрудник младше 11 лет? Пока что это запрещено законом! ;-)
Sharap09; +1 Ответить
7. FatPanzer 16 24.06.22 09:36 Сейчас в теме
(6) В задаче нет ни слова про сотрудников ))) В задаче есть коллектив. А про сотрудников это уже автор сама в своем коде отсебятину наваяла ;-)
(Пример того, как надо неправильно читать ТЗ)
Sharap09; +1 Ответить
14. Sharap09 24.06.22 15:35 Сейчас в теме
(7) ну считайте, что ТЗ я сама задала... там детский текст - он мне не понравился и я его изменила и суть не изменилась от этого ...
-мне механизм программного кода понять важнее ...
15. Sharap09 24.06.22 15:40 Сейчас в теме
(6)
Сотрудник младше 11 лет? Пока что это запрещено законом! ;-)


- а кстати ))) в этой задачке в Списке Возрастов указан первый возраст число 10 ))) ... поэтому я исправила его на цифру 20 и 30 , 50 и дописала в Выборе Элемента "Сотрудника" - на решение задачи, надеюсь это никак не сказалось?
26. FatPanzer 16 24.06.22 17:23 Сейчас в теме
(15) Нет. Это в твоем решении возраст начинается с 10. А в условиях твоей же задачи ничего про это нет.
2. FatPanzer 16 24.06.22 01:14 Сейчас в теме
Для начала надо подумать - а в каком случае пишется "года", а в каком "лет"? От чего это зависит?
Sharap09; +1 Ответить
3. ishelper 24.06.22 01:41 Сейчас в теме
(2)
а в каком случае пишется "года", а в каком "лет"? От чего это зависит?
Капитан Очевидность: "От возраста зависит!" :-)

Капитан Неочевидность: "От знания языка! И не языка 1С, а русского языка... с чем у современных программистов трудностей не меньше, чем с созданием алгоритмов."

Поэтому, так и быть, поможем новичку (с алгоритмом):
1. Если возраст меньше 20 - тогда "лет".
2. Если последняя цифра возраста равна 1 - "год".
3. Если эта цифра равна 2,3, или 4 - "года".
4. В остальных случаях - "лет".

Посмотрим, как автор переведет этот нехитрый алгоритм на язык 1С.
FatPanzer; PhoenixAOD; muskul; +3 Ответить
5. FatPanzer 16 24.06.22 07:56 Сейчас в теме
(3)
1. Если возраст меньше 20 - тогда "лет".
Не совсем так. Если между 11 и 20. До 10 лет тоже действует общее правило про "1 год / 2,3,4 года / X лет".
Посмотрим, как автор переведет этот нехитрый алгоритм на язык 1С.
Научиться переводить закономерности в нехитрые алгоритмы - вопрос технический. А вот научиться видеть эти самые закономерности в условиях задачи - вот это намного важнее для программиста, особенно для начинающего.
Sharap09; +1 Ответить
18. Sharap09 24.06.22 15:49 Сейчас в теме
(5)
Научиться переводить закономерности в нехитрые алгоритмы - вопрос технический. А вот научиться видеть эти самые закономерности в условиях задачи - вот это намного важнее для программиста, особенно для начинающего.


- А подскажите пожалуйста, как я могу научиться "Видеть" эти закономерности побыстрее?
- мне на что нужно в первую очередь смотреть?

- Незнакомых Функций так много и пока нет практики, чтобы их применить и запомнить ... просто сидеть и повторять их ...
21. FatPanzer 16 24.06.22 16:19 Сейчас в теме
(18) Причём тут функции? Речь же о русском языке, а не о программировании.
Sharap09; +1 Ответить
23. Sharap09 24.06.22 17:04 Сейчас в теме
(21) Причём тут функции? Речь же о русском языке, а не о программировании. вообще то я о программировании интересуюсь а не о русском языке :(
24. FatPanzer 16 24.06.22 17:09 Сейчас в теме
(23) Не серди меня!!! Ты должна была понять о закономерностях русского языка, а потом эти понятия перенести в алгоритм!
Это называется - предметная область. То есть правила определения неких данных, обращение с которыми ты пытаешься автоматизировать!
32. spacecraft 24.06.22 20:06 Сейчас в теме
(18) для лучшего понимания рекомендую начать изучать алгоритмы программирования. Они как правило без привязки к конкретному языку, но могут и основываться на классических языках программирования.
Это никак не поможет в работе с формами 1С, но даст пространственное мышление заточенное на обработку данных. Без этого нормально программировать будет сложно.
17. Sharap09 24.06.22 15:43 Сейчас в теме
(3) Спасибо за подсказку! ... ну там в решении я таких Методов или Функций пока нигде не встречала!

( даже в Справке не могу найти :( )
27. FatPanzer 16 24.06.22 17:25 Сейчас в теме
(17) Попробуйте в с правке 1С поискать "Правила определения прогнозируемых надоев у коров английской породы в условиях Воронежской области".
Это же 1С - там на все случаи жизни справка есть!
28. Sharap09 24.06.22 17:32 Сейчас в теме
- « Попробуйте в с правке 1С поискать "Правила определения прогнозируемых надоев у коров английской породы в условиях Воронежской области". »
(27) глупо и не смешно вообще :( вам нравится людей на форуме обижать? -
29. FatPanzer 16 24.06.22 17:34 Сейчас в теме
(28) Мне нравится их учить сначала думать, прежде чем задавать глупые вопросы. Я же всегда переживаю, когда они выглядят глупо.
Ну и иногда подталкиваю их на правильную мысль. Не более.

А обижаться ты должна на себя, потому что не зная базовых конструкций любого языка программирования пришла на сайт к профессионалам. Ты же не приходишь в мишленовские рестораны к поварам с вопросом "как пользоваться мясорубкой"?
16. Sharap09 24.06.22 15:41 Сейчас в теме
(2) Спасибо большое! - в следующий раз буду знать как начинать правильно думать )
11. user1326147 24.06.22 15:05 Сейчас в теме
В школе не объясняют, что бывает единственное число, паукальное число и множественное число.
Ед и множественное как-то объясняют, а паукальное (не большое количество) умалчивают, к нему относится полтора, два, три, четыре.
Sharap09; +1 Ответить
19. Sharap09 24.06.22 15:53 Сейчас в теме
(11)
В школе не объясняют, что бывает единственное число, паукальное число и множественное число.
Ед и множественное как-то объясняют, а паукальное (не большое количество) умалчивают, к нему относится полтора, два, три, четыре.


а какое это имеет значение в разрезе этой задачи и этого прогр. кода?


СтрокаВыводаЛет = СтрокаСЧислом(";%1 год;;%1 года;%1 лет;%1 года", Возраст,
ВидЧисловогоЗначения.Количественное, "L=ru")
20. FatPanzer 16 24.06.22 16:09 Сейчас в теме
(19) Большое. А если бы 1С не ввела специальный метод для таких случаев? А если вообще не язык 1С, а другой?
Программист должен понимать закономерность, в каких случаях надо применять то или иное написание (склонение) единицы измерения.
Sharap09; +1 Ответить
22. Sharap09 24.06.22 17:03 Сейчас в теме
(20) - "А если бы 1С не ввела специальный метод для таких случаев? " ... -

- ... Наверно тогда существует решение без этого метода для таких случаев... интересно как это можно сделать ..

"А если вообще не язык 1С, а другой? "- тогда мы бы не встретились на этом форуме, а были бы на другом ...


- Программист должен понимать закономерность, в каких случаях надо применять то или иное написание (склонение) единицы измерения.
... ну чтоб это понимать, наверно сначала надо узнать все про эти единицы измерения ? и случаи применения ... а я эту Функцию даже в Справке найти не могу :(
25. FatPanzer 16 24.06.22 17:22 Сейчас в теме
(22)
Наверно тогда существует решение без этого метода для таких случаев... интересно как это можно сделать ..
Конечно существует. И любой программист знает что такое условное ветвление.

ну чтоб это понимать, наверно сначала надо узнать все про эти единицы измерения ?
Конечно. Для правильного написания склонения единицы измерения "килограмм" надо обязательно знать физические свойства эталона, знать его расшифровку с латыни, и понимать, что килограмм не всегда равен килограмму.
Sharap09; +1 Ответить
31. spacecraft 24.06.22 20:00 Сейчас в теме
(25)
и понимать, что килограмм не всегда равен килограмму.

как раз килограмм всегда равен килограмму. Это масса. А вот вес может меняться, но это уже не килограмм :)
33. FatPanzer 16 24.06.22 21:38 Сейчас в теме
(31) И ты попал )) А теперь попробуй уронить себе на ногу килограмм пуха и килограмм чугуна...

Это же старая шутка, ну ты чо???
35. spacecraft 24.06.22 22:03 Сейчас в теме
(33) шутка конечно бородатая. Только ведь мы программисты? Осталось дополнить, что уронить нужно еще и в вакууме.
И тут происходит понимание, что оперируем не массой, а весом. А это уже килограмм-сила (ну или в Ньютонах).
Это как раз отличный пример постановки ТЗ клиентом.
37. FatPanzer 16 24.06.22 22:18 Сейчас в теме
(35) Почему сразу в вакууме? Я как выпускник физмата яростно протестую против таких левых условий испытаний!
А вдруг заказчик с Марса???
34. пользователь 24.06.22 21:58
Сообщение было скрыто модератором.
...
36. ishelper 24.06.22 22:03 Сейчас в теме
(29)
А обижаться ты должна на себя
"Женщина никому ничего не должна!" (с)

P.S. Тем более - обижаться на себя: для этого существуют гораздо более подходящие существа мужского пола, за примерами далеко никуда ходить не надо.

P.P.S. Опять я встрял в женскую ветку, да еще и необремененную возрастом и жизненным опытом... старый дурак.
FatPanzer; +1 Ответить
Оставьте свое сообщение
Вакансии
Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 190 000 руб.
Полный день

Ведущий аналитик-разработчик 1С
Москва
зарплата от 230 000 руб. до 270 000 руб.
Полный день

1С:Эксперт по производительности
Москва
зарплата от 400 000 руб. до 950 000 руб.
Полный день

Ведущий аналитик 1С (ERP, ЗУП)
Краснодар
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Тверь
зарплата от 150 000 руб. до 250 000 руб.
Полный день