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

1. user1976357 08.08.23 20:10 Сейчас в теме
я создаю внешний отчет, с помощью скд в 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)
Иначе
Истина
Конец
КонецВыбора
Истина
Конец
По теме из базы знаний
Найденные решения
4. Oldsad 09.08.23 07:07 Сейчас в теме
После каждого "Когда" должно идти условие и ключевое слово "Тогда", у вас после второй строки нет слова "Тогда"
Не верная конструкции "Иначе Когда", надо использовать "Иначе Выбор Когда"
"КонецВыбора" - нет такого ключевого слова, надо использовать "Конец"

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

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


должно сработать без синтаксических ошибок, а уж логику, извините, я не проверял
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1936670 08.08.23 21:17 Сейчас в теме
(1)
следующий раз паспорт нужно менять в 100 лет

Эта что у вас за страна такая?
2. karamazoff 96 08.08.23 20:25 Сейчас в теме
это не конец, это капец! где ошибка? при создании внешнего отчета надо делать форму и выводить его туда для отладки
4. Oldsad 09.08.23 07:07 Сейчас в теме
После каждого "Когда" должно идти условие и ключевое слово "Тогда", у вас после второй строки нет слова "Тогда"
Не верная конструкции "Иначе Когда", надо использовать "Иначе Выбор Когда"
"КонецВыбора" - нет такого ключевого слова, надо использовать "Конец"

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

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


должно сработать без синтаксических ошибок, а уж логику, извините, я не проверял
7. user1976357 09.08.23 18:34 Сейчас в теме
(4) спасибо большое, почитал лучше про синтаксис "выбор когда тогда" и разобрался!
5. TormDV 09.08.23 09:33 Сейчас в теме
ДобавитьКДате(ДатаРождения, "год", 16) строку к дате добавляете? кавычки не нужны
ТекущаяДата() в запросе работать не будет, в качестве параметра ее передавать нужно.
Вообще конфигуратор должен бы писать, что именно не нравится ему.
6. antz 09.08.23 12:59 Сейчас в теме
(5) это вычисляемое поле, там нужны кавычки и ТекущаяДата() работает, как и другие функции глобального контекста.
8. user856012 13 09.08.23 21:01 Сейчас в теме
М-да. Вчера автор зарегистрировался как "Рина Векслер", а сегодня - "почитал", "разобрался".

Похоже, сегодня ему/ей как раз исполнилось 100 лет и оно поменяло паспорт! ;-)
9. user1880116 10.08.23 07:25 Сейчас в теме
(8) Пиши строго по делу! Не смей самоутверждаться за счет небинарного квир новичка!
Зачем ты пришел на форум! От тебя нет никакой пользы! Ряяяяяяяяяяяяяяяя!

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот