Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Рассчитать число дней между двумя датами
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
vadim007
Поделитесь пожалуйста текстом функции для расчета числа дней между двумя датами.
ps: функцию Дней(...) календаря не предлагать.
pps: поясню источник вопроса: в тексте отчета следующий код:
// Максимальная разница между датой платежного поручения и документом оплаты - 3 дня
Если ДокументОплаты.ДатаДок - ПП.ДатаДок <= 3 Тогда
   РеквизитыДокумента = "п/д від "+СокрЛП(ПП.ДатаДок)+" № "+СокрЛП(ПП.Номер)+", ";
КонецЕсли;

В отладчике четко видно, что условие выполняется:
ДокументОплаты.ДатаДок - ПП.ДатаДок = 3
ДокументПродажи = Банковская выписка ВВП-000003 (04.06.11)
ПП = Плат.пор. ВВП-000003 (01.06.11)
РеквизитыДокумента = ""
но на деле условие не выполняется.

Сделал следующим образом:
// Максимальная разница между датой платежного порочения и документом оплаты - 3 дня
Дней = ДокументОплаты.ДатаДок - ПП.ДатаДок;
Если Дней <= 3 Тогда
    РеквизитыДокумента = "п/д від "+СокрЛП(ПП.ДатаДок)+" № "+СокрЛП(ПП.Номер)+", ";
КонецЕсли;

и проблема исчезла. Чудеса...
Pudovan
Цитата(vadim007 @ 19.09.11, 22:49) необходимо зарегистрироваться для просмотра ссылки
// Максимальная разница между датой платежного поручения и документом оплаты - 3 дня
Если ДокументОплаты.ДатаДок - ПП.ДатаДок <= 3 Тогда
   РеквизитыДокумента = "п/д від "+СокрЛП(ПП.ДатаДок)+" № "+СокрЛП(ПП.Номер)+", ";
КонецЕсли;

и проблема исчезла. Чудеса...

Жодних див, а лише стандартна логіка роботи вансі. Просто в логічних вираз можна порівнювати співмірні величини, а от агрегатні об'єкти до них не відносяться.
Я би написав код так:
// Максимальная разница между датой платежного поручения и документом оплаты - 3 дня
Дата1=ДокументОплаты.ДатаДок;
Дата2=ПП.ДатаДок;
Если (Дата1-Дата2)<=3 Тогда
   РеквизитыДокумента = "п/д від "+СокрЛП(ПП.ДатаДок)+" № "+СокрЛП(ПП.Номер)+", ";
КонецЕсли;

Дуже часто, якщо змінна не була визначена явно, то щоб її віднести до певно типу, просто потрібно обнулити і тоді все стає гаразд...
Dimon_Energy
Цитата(Pudovan @ 19.09.11, 23:57) необходимо зарегистрироваться для просмотра ссылки
Жодних див, а лише стандартна логіка роботи вансі. Просто в логічних вираз можна порівнювати співмірні величини, а от агрегатні об'єкти до них не відносяться.
Я би написав код так:
// Максимальная разница между датой платежного поручения и документом оплаты - 3 дня
Дата1=ДокументОплаты.ДатаДок;
Дата2=ПП.ДатаДок;
Если (Дата1-Дата2)<=3 Тогда
   РеквизитыДокумента = "п/д від "+СокрЛП(ПП.ДатаДок)+" № "+СокрЛП(ПП.Номер)+", ";
КонецЕсли;

Дуже часто, якщо змінна не була визначена явно, то щоб її віднести до певно типу, просто потрібно обнулити і тоді все стає гаразд...


Достатньо і так

// Максимальная разница между датой платежного поручения и документом оплаты - 3 дня
Если (ДокументОплаты.ДатаДок-ПП.ДатаДок)<=3 Тогда
   РеквизитыДокумента = "п/д від "+СокрЛП(ПП.ДатаДок)+" № "+СокрЛП(ПП.Номер)+", ";
КонецЕсли;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.