ТекДата наносит ответный удар

  • Автор темы bremlin
  • Дата начала
B

bremlin

Доброго времени суток. Возникла проблемка с датой. В одно документе нужно вывести две определенные даты. Выводим их в таблице как константы вычисляемые в модуле:

ТекДата = ТекущаяДата();
//Для 10 числа текущего месяца
Дада = "10";
Строк = Дата(Дада + "." + Строка(ДатаМесяц(ТекДата))+"."+Строка(ДатаГод(ТекДата)));

//Для 10 числа следующего месяца
Строг = Дата(Дада + "." + Строка(ДатаМесяц(ТекДата) +1 ) + "." + Строка(ДатаГод(ТекДата)) + ".");

Программа была написана в ноябре, тогда же все работало просто замечательно :)
Счас наступил декабрь... и дата из переменной "Строг" вообще не выводится. Подскажите пожалуйста в чем дело и как это исправить.
 
P

puh14

Это ты хочешь сказать в годе 13 месяцев? поскоку в формуле ДатаМесяц(ТекДата) +1 = 13
Попробуй вместо этого Строка(?(ДатаМесяц(ТекДата) = 12,1,ДатаМесяц(ТекДата) +1))
 
B

bremlin

Тупость свою осознал, спасибо!:)
Жаль только не работает приведенный кусочек кода:)
Попробовал

Если (ДатаМесяц(ТекДата)) < 12 Тогда
Строг = Дата(Дада + "." + Строка(ДатаМесяц(ТекДата)+1) + "." + Строка(ДатаГод(ТекДата)) + ".");
Иначе
Строг = Дата(Дада + "." + Строка(ДатаМесяц(ТекДата)-11) + "." + Строка(ДатаГод(ТекДата)) + ".");
КонецЕсли;

Тоже ничего...:(Пусто
 
P

puh14

Строг = Дата(Дада + "." + Строка(?(ДатаМесяц(ТекДата) = 12,1,ДатаМесяц(ТекДата) +1)) + "." + Строка(?(ДатаМесяц(ТекДата) = 12,ДатаГод(ТекДата)+1,ДатаГод(ТекДата))) + ".");

и не надо никаких еслей
 
B

bremlin

Не хочет работать кусочек кода:) Поэксперементировал:

Строг = Дата(Дада + "." + Строка(ДатаМесяц(ТекДата)-2)+"."+Строка(ДатаГод(ТекДата)+1) + "."); - такое пашет
Строг = Дата(Дада + "." + Строка(ДатаМесяц(ТекДата)-1)+"."+Строка(ДатаГод(ТекДата)+1) + "."); - такое пашет

Строг = Дата(Дада + "." + Строка(ДатаМесяц(ТекДата)-3)+"."+Строка(ДатаГод(ТекДата)+1) + "."); - и больше 3 уже не выводит
 
P

puh14

значит месяц у тебя как минимум март, а то и меньше, и пытаешся ты указать число месяца нулевым или отрицательным числом.
 
B

bremlin

Нет, нет. Месяц как раз декабрь. Ничего не понимаю:(
Если +1 не работает, то точно Декабрь. При +0 выдает также декабрь. Я в непонятках.
 
V

vbs

Месяц должен быть представлен ДВУМЯ символами
WorkDate = WorkingDate();
M = GetMonth(WorkDate);
Y = GetYear(WorkDate);
D = "10";
Month = String(M-3);
if StrLen(Month) = 1 then Month = "0"+Month endif;
WorkDate = Date(D +"."+Month+"."+String(Y));
и последняя точка в конце тоже не нужна
 
P

puh14

ТекДата = ТекущаяДата();
//Для 10 числа текущего месяца
Дада = "10";

Строг = Дата(?(ДатаМесяц(ТекДата) = 12,ДатаГод(ТекДата)+1,ДатаГод(ТекДата)),?(ДатаМесяц(ТекДата) = 12,1,ДатаМесяц(ТекДата) +1),Дада);

и строки нафиг не нужны. та же дата, только с числами

Дата(<?>,,)
Синтаксис:
Дата(<Год>,<Месяц>,<Число>)
Назначение:
Преобразует переданные в качестве числовых параметров Год, Месяц, Число
в значение типа 'Дата'. Год указывается 4-х значным числом (вместе с веком).
Возвращает значение типа 'Дата'.
Параметры:
<Год> - числовое выражение.
<Месяц> - числовое выражение.
<Число> - числовое выражение.
 
B

bremlin

Вот оказывается в чем дело!:)
puh14, ну просто огроменное спасибо!
Я уж в отладчике посмотрел, в переменной Строк(для 10 числа текущего месяца) год идет двузначно 08, а при добавлении к нему +1, получается 2009, 4 знака. А оказывается на его месте вообще должна быть двузначное число.
Еще раз спасибо!

А еще вот такой вопросик, чтоб новую тему не создавать.
Сервис->Сведения об организации -> Банк -> Ставим новый банк как основной

А в одном документе испотлзуется строчка:

р/с [Получатель.ОсновнойСчет.Номер] в [СокрЛП(Получатель.ОсновнойСчет.БанкОрганизации)] БИК [Получатель.ОсновнойСчет.БанкОрганизации.Код] кор/с [Получатель.ОсновнойСчет.БанкОрганизации.КоррСчет]

По идее это именно основной счет, но эта сволочь печатает все равно информацию о старом банке:(
Может это не тот справочники или как?
 
P

puh14

Что за конфа? Через сервис ты настраиваешь параметры СВОЕЙ организации, а судя по коду - выводятся данные клиента, который справочник Контрагенты или Клиенты.
 
B

bremlin

Проблема решена, спасибо за участие:)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!