я создаю внешний отчет, с помощью скд в 1с. отчет называется "просроченные паспорта"
мне необходимо создать пользовательские поля, в которых будут происходит проверки. в таких полях пишут на языке языка компоновки.

у меня есть следующие поля: фамилия, имя, отчество, подразделение, серия документа, номер документа, датавыдачи, датарождения.
1. если паспорт выдан ранее чем в 2012 году, его нужно было меня в 25 лет, в 45, когда получаешься паспорт в 45 то следующий раз его нужно было бы менять в 100 лет.
2. если паспорт выдан позже 2012 года, то его срок годности 10 лет, но когда человеку исполняется 64 года, то следующий раз паспорт нужно менять в 100 лет

сейчас конфигуратор ругается на ошибку синтаксиса

Выбор
  Когда ДатаВыдачи < '01.08.2012'
    Выбор
      Когда Год(ТекущаяДата()) - Год(ДатаРождения)< 25
        Тогда
        ДобавитьКДате(ДатаРождения, "год", 16)
      Иначе Когда Год(ТекущаяДата()) - Год(ДатаРождения)>= 25 И Год(ТекущаяДата()) - Год(ДатаРождения) < 45
        Тогда
        ДобавитьКДате(ДатаРождения, "год", 25)
      Иначе Когда Год(ТекущаяДата()) - Год(ДатаРождения) >= 45
        Тогда
        ДобавитьКДате(ДатаРождения, "год", 45)
      Иначе
        Истина
      Конец
    КонецВыбора
  Тогда
    Истина
  Иначе
    Выбор
      Когда Год(ТекущаяДата()) - Год(ДатаРождения) < 64
        Тогда
        ДобавитьКДате(ДатаРождения, "год", 10)
      Иначе Когда Год(ТекущаяДата()) - Год(ДатаРождения) >= 64
        Тогда
        ДобавитьКДате(ДатаРождения, "год", 100)
      Иначе
        Истина
      Конец
    КонецВыбора
  Истина
Конец
---
После каждого "Когда" должно идти условие и ключевое слово "Тогда", у вас после второй строки нет слова "Тогда"
Не верная конструкции "Иначе Когда", надо использовать "Иначе Выбор Когда"
"КонецВыбора" - нет такого ключевого слова, надо использовать "Конец"

еще нельзя использовать символ перевода строки
ну и по мелочи, но это уже видимо из-за того что, не там и не то вставили

попробуйте

```1c
    Выбор Когда ДатаВыдачи < ДатаВремя(2012, 8, 1) Тогда Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения)< 25 Тогда ДобавитьКДате(ДатаРождения, "год", 16) Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения)>= 25 И Год(ТекущаяДата()) - Год(ДатаРождения) < 45 Тогда ДобавитьКДате(ДатаРождения, "год", 25)Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения) >= 45 Тогда ДобавитьКДате(ДатаРождения, "год", 45) Иначе Истина Конец Конец Конец Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения) < 64 Тогда ДобавитьКДате(ДатаРождения, "год", 10) Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения) >= 64 Тогда ДобавитьКДате(ДатаРождения, "год", 100) Иначе Истина Конец Конец Конец
```

должно сработать без синтаксических ошибок, а уж логику, извините, я не проверял
---
следующий раз паспорт нужно менять в 100 лет
Эта что у вас за страна такая?
---
это не конец, это капец! где ошибка? при создании внешнего отчета надо делать форму и выводить его туда для отладки
---
После каждого "Когда" должно идти условие и ключевое слово "Тогда", у вас после второй строки нет слова "Тогда"
Не верная конструкции "Иначе Когда", надо использовать "Иначе Выбор Когда"
"КонецВыбора" - нет такого ключевого слова, надо использовать "Конец"

еще нельзя использовать символ перевода строки
ну и по мелочи, но это уже видимо из-за того что, не там и не то вставили

попробуйте

```1c
    Выбор Когда ДатаВыдачи < ДатаВремя(2012, 8, 1) Тогда Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения)< 25 Тогда ДобавитьКДате(ДатаРождения, "год", 16) Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения)>= 25 И Год(ТекущаяДата()) - Год(ДатаРождения) < 45 Тогда ДобавитьКДате(ДатаРождения, "год", 25)Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения) >= 45 Тогда ДобавитьКДате(ДатаРождения, "год", 45) Иначе Истина Конец Конец Конец Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения) < 64 Тогда ДобавитьКДате(ДатаРождения, "год", 10) Иначе Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения) >= 64 Тогда ДобавитьКДате(ДатаРождения, "год", 100) Иначе Истина Конец Конец Конец
```

должно сработать без синтаксических ошибок, а уж логику, извините, я не проверял
---
спасибо большое, почитал лучше про синтаксис "выбор когда тогда" и разобрался!
---
ДобавитьКДате(ДатаРождения, "год", 16) строку к дате добавляете? кавычки не нужны
ТекущаяДата() в запросе работать не будет, в качестве параметра ее передавать нужно.
Вообще конфигуратор должен бы писать, что именно не нравится ему.
---
это вычисляемое поле, там нужны кавычки и ТекущаяДата() работает, как и другие функции глобального контекста.
---
М-да. Вчера автор зарегистрировался как "Рина Векслер", а сегодня - "почитал", "разобрался".

Похоже, сегодня ему/ей как раз исполнилось 100 лет и оно поменяло паспорт! ;-)
---
Пиши строго по делу! Не смей самоутверждаться за счет небинарного квир новичка!
Зачем ты пришел на форум! От тебя нет никакой пользы! Ряяяяяяяяяяяяяяяя!

Сообщество, я же всё правильно делаю?