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

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

              Задача:

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

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

         Решение :

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

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

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

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

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

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

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

Буду очень сильно благодарна всем кто подскажет решение :)
С уважением ко всем на форуме.
---
а в каком случае пишется "года", а в каком "лет"? От чего это зависит? Капитан Очевидность: "От возраста зависит!" :-)

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

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

Посмотрим, как автор переведет этот нехитрый алгоритм на язык 1С.
---
1С ввела метод СтрокаСЧислом (доступна в платформе начиная с 8.3.10). Как раз для таких случаев.

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

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

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

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

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

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

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

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

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

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

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

    Сообщить(Вывод);
---
Возраст = СписокВозрастов.ВыбратьЭлемент("Выберите возраст сотрудника : ") ;
Возвраст получает не тип число, а элемент списка значения.
Число хранится в свойстве Значение у элемента.

```1c
    СтрокаВыводаЛет = СтрокаСЧислом(" ; %1 год; ; %1 года ; %1 лет ; %1 года ", Возраст.Значение, ВидЧисловогоЗначения.Количественное, "L = ru" ) ;
```
---
Возвраст получает не тип число, а элемент списка значения.
Число хранится в свойстве Значение у элемента.
- спасибо огромное!, все сразу получилось )) - а по какому пути я могу посмотреть эту Функцию в Справке ? - что т о искала-искала и не могу найти
---
это нужно смотреть в СП (синтакс-помощник) Выбрать метод и нажать Ctrl+F1 (или использовать контекстное меню)
---
где у меня ошибка? - вроде код точно переписала М-да, рождение программиста не состоялось - родился еще один 1Сник, который на каждую дурную хотелку (заказчика или свою) будет искать "готовую функцию 1С".
---
зачем вам нужно все сразу обругать??? ... я только начала учиться, учусь самостоятельно , и что ? - сразу такие выводы надо сделать ? :(
---
Надо же, какое существует...
---
До 10 лет тоже действует общее правило про "1 год / 2,3,4 года / X лет". В принципе - верно, но в условиях данной задачи это неважно:
(1) ФИО = СписокФИО.ВыбратьЭлемент("Какая Фамилия сотрудника", ФИО ) ;
Сотрудник младше 11 лет? Пока что это запрещено законом! ;-)
---
В задаче нет ни слова про сотрудников ))) В задаче есть коллектив. А про сотрудников это уже автор сама в своем коде отсебятину наваяла ;-)
(Пример того, как надо неправильно читать ТЗ)
---
ну считайте, что ТЗ я сама задала... там детский текст - он мне не понравился и я его изменила и суть не изменилась от этого ...
-мне механизм программного кода понять важнее ...
---
Сотрудник младше 11 лет? Пока что это запрещено законом! ;-)

- а кстати ))) в этой задачке в Списке Возрастов указан первый возраст число 10 ))) ... поэтому я исправила его на цифру 20 и 30 , 50 и дописала в Выборе Элемента "Сотрудника" - на решение задачи, надеюсь это никак не сказалось?
---
Нет. Это в твоем решении возраст начинается с 10. А в условиях твоей же задачи ничего про это нет.
---
Для начала надо подумать - а в каком случае пишется "года", а в каком "лет"? От чего это зависит?
---
а в каком случае пишется "года", а в каком "лет"? От чего это зависит? Капитан Очевидность: "От возраста зависит!" :-)

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

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

Посмотрим, как автор переведет этот нехитрый алгоритм на язык 1С.
---
1. Если возраст меньше 20 - тогда "лет". Не совсем так. Если между 11 и 20. До 10 лет тоже действует общее правило про "1 год / 2,3,4 года / X лет".
Посмотрим, как автор переведет этот нехитрый алгоритм на язык 1С. Научиться переводить закономерности в нехитрые алгоритмы - вопрос технический. А вот научиться видеть эти самые закономерности в условиях задачи - вот это намного важнее для программиста, особенно для начинающего.
---
Научиться переводить закономерности в нехитрые алгоритмы - вопрос технический. А вот научиться видеть эти самые закономерности в условиях задачи - вот это намного важнее для программиста, особенно для начинающего.

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

 - Незнакомых Функций так много и пока нет практики, чтобы их применить и запомнить ... просто сидеть и повторять их ...
---
Причём тут функции? Речь же о русском языке, а не о программировании.
---
Причём тут функции? Речь же о русском языке, а не о программировании. вообще то я о программировании интересуюсь а не о русском языке :(
---
Не серди меня!!! Ты должна была понять о закономерностях русского языка, а потом эти понятия перенести в алгоритм!
Это называется - предметная область. То есть правила определения неких данных, обращение с которыми ты пытаешься автоматизировать!
---
для лучшего понимания рекомендую начать изучать алгоритмы программирования. Они как правило без привязки к конкретному языку, но могут и основываться на классических языках программирования.
Это никак не поможет в работе с формами 1С, но даст пространственное мышление заточенное на обработку данных. Без этого нормально программировать будет сложно.
---
Спасибо за подсказку! ... ну там в решении я таких Методов или Функций пока нигде не встречала!

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

А обижаться ты должна на себя, потому что не зная базовых конструкций любого языка программирования пришла на сайт к профессионалам. Ты же не приходишь в мишленовские рестораны к поварам с вопросом "как пользоваться мясорубкой"?
---
Спасибо большое! - в следующий раз буду знать как начинать правильно думать )
---
В школе не объясняют, что бывает единственное число, паукальное число и множественное число.
Ед и множественное как-то объясняют, а паукальное (не большое количество) умалчивают, к нему относится полтора, два, три, четыре.
---
В школе не объясняют, что бывает единственное число, паукальное число и множественное число.
Ед и множественное как-то объясняют, а паукальное (не большое количество) умалчивают, к нему относится полтора, два, три, четыре.

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

 СтрокаВыводаЛет = СтрокаСЧислом(";%1 год;;%1 года;%1 лет;%1 года", Возраст,
 ВидЧисловогоЗначения.Количественное, "L=ru")
---
Большое. А если бы 1С не ввела специальный метод для таких случаев? А если вообще не язык 1С, а другой?
Программист должен понимать закономерность, в каких случаях надо применять то или иное написание (склонение) единицы измерения.
---
- "А если бы 1С не ввела специальный метод для таких случаев? " ... -

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

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

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

ну чтоб это понимать, наверно сначала надо узнать все про эти единицы измерения ? Конечно. Для правильного написания склонения единицы измерения "килограмм" надо обязательно знать физические свойства эталона, знать его расшифровку с латыни, и понимать, что килограмм не всегда равен килограмму.
---
и понимать, что килограмм не всегда равен килограмму.
как раз килограмм всегда равен килограмму. Это масса. А вот вес может меняться, но это уже не килограмм :)
---
И ты попал )) А теперь попробуй уронить себе на ногу килограмм пуха и килограмм чугуна...

Это же старая шутка, ну ты чо???
---
шутка конечно бородатая. Только ведь мы программисты? Осталось дополнить, что уронить нужно еще и в вакууме.
И тут происходит понимание, что оперируем не массой, а весом. А это уже килограмм-сила (ну или в Ньютонах).
Это как раз отличный пример постановки ТЗ клиентом.
---
Почему сразу в вакууме? Я как выпускник физмата яростно протестую против таких левых условий испытаний!
А вдруг заказчик с Марса???
---
Сообщение было скрыто модератором.
---
А обижаться ты должна на себя "Женщина никому ничего не должна!" (с)

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

P.P.S. Опять я встрял в женскую ветку, да еще и необремененную возрастом и жизненным опытом... старый дурак.