Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Поиск ошибки в коде 1с

я создаю внешний отчет, с помощью скд в 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)
Иначе
Истина
Конец
КонецВыбора
Истина
Конец

По дате
По рейтингу
Аватар пользователя
Мыслитель

Вообще конструкция на языке запросов:
ВЫБОР КОГДА ........ ТОГДА ...... ИНАЧЕ ...... КОНЕЦ
Лучше брать эту конструкцию и при необходимости ее друг в друга вкладывать

У вас много лишнего, попробуйте так:

Выбор Когда ДатаВыдачи < ДАТАВРЕМЯ(2012,8,1,0,0,0) Тогда
Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения)< 25 Тогда
ДобавитьКДате(ДатаРождения, "год", 16)
Иначе
Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения)>= 25 И Год(ТекущаяДата()) - Год(ДатаРождения) < 45 Тогда
ДобавитьКДате(ДатаРождения, "год", 25)
Иначе //здесь условие уже не надо, потому что если не меньше 25 и не от 25 до 45, то автоматом больше 45
ДобавитьКДате(ДатаРождения, "год", 45)
Конец
Конец
Иначе // дата выдачи больше или равно 01.08.2012
Выбор Когда Год(ТекущаяДата()) - Год(ДатаРождения) < 64 Тогда
ДобавитьКДате(ДатаРождения, "год", 10)
Иначе // опять здесь условие уже не надо
ДобавитьКДате(ДатаРождения, "год", 100)
Конец
Конец

Для наглядности картинка

Аватар пользователя
Мудрец

Если этот код написан в вычисляемых полях, то там свой синтаксис.