1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем bremlin, 1 дек 2008.

  1. bremlin

    bremlin Гость

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

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

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

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

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Это ты хочешь сказать в годе 13 месяцев? поскоку в формуле ДатаМесяц(ТекДата) +1 = 13
    Попробуй вместо этого Строка(?(ДатаМесяц(ТекДата) = 12,1,ДатаМесяц(ТекДата) +1))
     
  3. bremlin

    bremlin Гость

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

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

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

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Строг = Дата(Дада + "." + Строка(?(ДатаМесяц(ТекДата) = 12,1,ДатаМесяц(ТекДата) +1)) + "." + Строка(?(ДатаМесяц(ТекДата) = 12,ДатаГод(ТекДата)+1,ДатаГод(ТекДата))) + ".");

    и не надо никаких еслей
     
  5. bremlin

    bremlin Гость

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

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

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

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    значит месяц у тебя как минимум март, а то и меньше, и пытаешся ты указать число месяца нулевым или отрицательным числом.
     
  7. bremlin

    bremlin Гость

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

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Месяц должен быть представлен ДВУМЯ символами
    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));
    и последняя точка в конце тоже не нужна
     
  9. puh14

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    ТекДата = ТекущаяДата();
    //Для 10 числа текущего месяца
    Дада = "10";

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

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

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

    bremlin Гость

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

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

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

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

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

    puh14 Well-Known Member

    Репутация:
    0
    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Что за конфа? Через сервис ты настраиваешь параметры СВОЕЙ организации, а судя по коду - выводятся данные клиента, который справочник Контрагенты или Клиенты.
     
  12. bremlin

    bremlin Гость

    Репутация:
    0
    Проблема решена, спасибо за участие:)
     

Поделиться этой страницей