Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:36

Заполнение табличной части документа при изменении реквизита шапки документа

Автор filomonko, 27 мар 2022, 14:30

0 Пользователей и 1 гость просматривают эту тему.

filomonko

Здравствуйте!))
Очень нужна помощь!))
Необходимо рассчитать количество дней между двумя датами. Результат вывести в строку табличной части "Суток".
Есть код. Ошибок нет. Не работает
2022-03-27_18-19-06.png
2022-03-22_20-50-06.png

alexandr_ll


Yotram

Обратите внимание на то что у вас функция. И она возвращает неопределенно. Давайте рассмотрим что делает ваша программа. Вы присваиваете переменной стр.суток назовем её [1] функцию "РасчетДней" и в эту же функцию передаете эту же переменную параметром назовем её [2]. Теперь функция выполняет операцию: присваивает в [2] ваш расчет. Потом отрабатывает до конца и возвращает в переменную [1] неопределенно.

решение
В конце функции РасчетДней() добавьте
Возврат СутокP.S. Стоит обратить внимание что переменная "Суток" переданная параметром так же лишняя.
P.S.S Если этот больше не вызывается с серверных процедур, лучше сделать его &НаКлиенте

filomonko


alexandr_ll

filomonko, Да, спасибо, сразу не заметил. Код лучше сразу приводить в тексте сообщения. Для этого есть кнопка.

filomonko

Yotram, не помогает
&НаКлиенте
Функция РасчетДней()
Если ЗначениеЗаполнено(Объект.ДатаВыезда) и ЗначениеЗаполнено(Объект.ДатаЗаезда) и Объект.ДатаЗаезда < Объект.ДатаВыезда
Тогда
         Суток = (Объект.ДатаВыезда - Объект.ДатаЗаезда) / 86400;
  Возврат Суток
    КонецЕсли;
КонецФункции

&НаКлиенте
Процедура ДатаВыездаПриИзменении(Элемент)
   Стр=Элементы.ТЧ.ТекущиеДанные;
   Стр.Суток=РасчетДней();
КонецПроцедуры

Выходит ошибка, что значение не является значением объектного типа (Суток).

Oscar

filomonko,
При выполнении никакой ошибки не выходит?
И еще Вы сначала заполняете ДатуВыезда, а потом ДатуЗаезда?

P.S. Не заметил Вы оказывается написали ошибку.

Oscar

filomonko,
Я бы попробывал так:

&НаСервере
Функция РасчетДней()
   
    Суток = 0;

    Если ЗначениеЗаполнено(Объект.ДатаВыезда) и ЗначениеЗаполнено(Объект.ДатаЗаезда) и Объект.ДатаЗаезда < Объект.ДатаВыезда Тогда
         Суток = (Объект.ДатаВыезда - Объект.ДатаЗаезда) / 86400;
    КонецЕсли;   

    Возврат Суток;

КонецФункции

И еще так как не увидел Процедура ДатаЗаездаПриИзменении(Элемент), то я бы сначала заполнил ДатуЗаезда, а потом ДатуВыезда

filomonko

Oscar, Спасибо большое! Всё работает))
И перед тем как рассчитывать количество дней, нужно добавить строку в тч (без этого будет ошибка).

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск