helpf.pro
Регистрация

v8.2 УП: Объясните смысл программного кода в 1С

asd34
30.09.2011 10:47Прочитано: 2269
День добрый.
Код 1C v 8.2 УП
 ?(ЧислоЛетПользования - Цел(ЧислоЛетПользования) = 0, 0, 1)   

Объясните пожалуйста, смысл программного кода и каков будет результат (для примера, чтобы понял) Вариант1: ЧислоЛетПользования =4; Вариант2:ЧислоЛетПользования = 2,75.
Заранее спасибо.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
30.09.2011 10:55Ответ № 1
Простое условие
Если условие выполняется, то выполняется блок кода 1, а блок кода 2 игнорируется. Если условие НЕ выполняется, то выполняется блок кода 2, а блок кода 1 игнорируется
Код 1C v 8.х
 Если Рейтинг > 7 Тогда
//блок кода 1
Результат = "Хороший фильм!";
Иначе
//блок кода 2
Результат = "Фильм на один раз.";
КонецЕсли;


Краткая запись простого условия:
Код 1C v 8.х
 Результат = ?(Рейтинг > 7, "Хороший фильм!","Фильм на один раз.");   


Если значение переменной Рейтинг больше 7, то переменная Результат получит значение "Хороший фильм!", в противном случае ей
будет присвоено значение "Фильм на один раз.".

в твоем случае:
вариант1: 4-4 = 0, следовательно результат 0
вариант2: 2,75-2=0,75 следовательнорезультат 1
DJ_Serega
30.09.2011 10:58Ответ № 2
Код 1C v 8.х
  ?(ЧислоЛетПользования - Цел(ЧислоЛетПользования) = 0, 0, 1)     

не что иное как:
Код 1C v 8.х
 
Если ЧислоЛетПользования - Цел(ЧислоЛетПользования) = 0 Тогда
Значение = 0
Иначе
Значение = 1
КонецЕсли

В некотрых случая лучше использовать "?". Дабы избежать лишних строк кода.
Изменено 30.09.11 10:59:40
asd34
30.09.2011 11:49Ответ № 3
Благодарю. Я так и думал.. Но решил убедиться, что это действительно так.
Просто считаю амортизацию вручную по забитой в 1С формуле, у меня получается белиберда (результат ручного расчета не сходится с результатом в 1С, да еще и со знаком минус!). Подскажите пожалуйста, где я ошибаюсь?
Формула расчета в 1С:
Код 1C v 8.2 УП
 ЧислоЛетПользования       = Макс(1,СрокИспользованияДляВычисленияАмортизации / 12);
ЧислоЛетПользования = ЧислоЛетПользования + ?(ЧислоЛетПользования
- Цел(ЧислоЛетПользования) = 0, 0, 1); // округляем к наибольшему целому
ГодИспользования = Год(ДатаРасчета) - Год(ДатаВводаВЭксплуатацию) + 1;
Если Месяц(ДатаВводаВЭксплуатацию) >= Месяц(ДатаРасчета) Тогда
ГодИспользования = ГодИспользования - 1;
КонецЕсли;
СуммаГодовойАмортизации = АмортизируемаяСтоимость * (ЧислоЛетПользования - ГодИспользования + 1)
/ (ЧислоЛетПользования * (ЧислоЛетПользования + 1) / 2 );
СуммаАмортизации = СуммаГодовойАмортизации / 12;

Считаю вручную (СрокИспользованияДляВычисленияАмортизации = 48,АмортизируемаяСтоимость=103480,95):
1)Макс(1,48/12)=4
2)4+0=4
3)2011-2004+1=6
4)Месяц(ДатаРасчета)>Месяц(ДатаВводаВЭксплуатацию), поэтому ничего не отнимаем
5)103480,95*(4-6+1)/(4*(4+1)/2)=103480,95*-3/10=310442,85/10=-31044,285
6)31044,285/12= -2 587,02375
А результат в 1С = 3449,37
E_Migachev
30.09.2011 12:15Ответ № 4
(3) asd34, так:
3)2011-2004+1=8
4)Месяц(ДатаРасчета)>Месяц(ДатаВводаВЭксплуатацию), поэтому ничего не отнимаем
5)103480,95*(4-8+1)/(4*(4+1)/2)=103480,95*-3/10=103480,95*-0,3=-31044,285
6)31044,285/12= -2 587,02375
вроде все правильно, а какая дата воода в эксплуатацию?

А результат в 1С = 3449,37
К размышлению
3449,37 * 12 = 41392,44/4 = 10348,11
Изменено 30.09.11 12:15:42
asd34
30.09.2011 13:01Ответ № 5
Если 3)2011-2004+1=8 тогда тоже не получается выйти на 3449,37 и почему со знаком минус?
ДатаВводаВЭксплуатацию =01.06.2004, ДатаРасчета=01.08.2011
E_Migachev
30.09.2011 13:59Ответ № 6
(5) asd34, проверяй через отладчик, каждую строку и найдешь
asd34
30.09.2011 14:32Ответ № 7
(6) E_Migachev, а как это???
typeharley
30.09.2011 14:43Ответ № 8
Что вы тут развели базар на вопросе с 1-го класса???? Закрывайте
E_Migachev
30.09.2011 17:35Ответ № 9
(7) asd34, уууууу.... *13
ну примерно так:
1) Сервис -> Параметры -> Запуск 1С:Предприятия. Установить галочки "Устанавливать режим разрешения отладки" и "Начинать отладку при запуске".
2) Отладка -> Начать отладку. (или нажать F5) - это запускается 1С:Предприятие в режиме отладки.
3) Отладка -> Подключиться. Откроется окно "Предметы отладки", проверить, чтобы в нижней части окна в текстовом поле "Подключенные предметы отладки"
была строка с именем вашего компьютера. Типа тогда конфигурация доступна для отладки. Для чего это вообще показывать пользователю, я пока не поняла.
4) Открыть в Конфигураторе нужный модуль и расставить точки останова.
5) Перейти в 1С:Предприятие и сделать действие, которое вызовет выполнение интересующей процедуры. Например: если точка останова стоит в процедуре
документа ПриОткрытии - открыть документ, ПриИзмененииТовар - выбрать из справочника другой Товар и т.д. На передний план будет выведено окно
Конфигуратора, где можно выполнить пошаговое выполнение кода процедуры (Отладка -> Шагнуть в). Чтобы увидеть значения, которые принимают

встречающиеся в коде переменные, нужно открыть окно Отладка -> Табло, затем выделить мышью имя переменной и перетащить в Табло.
взято от сюда
Изменено 30.09.11 17:40:09 по причине: добавление инфы
asd34
03.10.2011 11:34Ответ № 10
(9) E_Migachev, Спасибо за исчерпывающий ответ. Будем учиться...(8) typeharley, Вы ведь тоже когда-то были в 1-м классе.. Ну да, согласен - надо читать..
asd34
03.10.2011 11:35Ответ № 11
Вопрос закрыт!
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.