7.7 Работа с объектом "периодический"

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Samouchka, 13 май 2014.

  1. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Приветствую всех! Мне нужно получить курс валюты на заданную дату. Да вот беда. К примеру, курс на 30.05.2014 неизвестен, а 1с "подсовывает" мне в этом случае последний по дате курс на 13.05.2014. Как исключить эту ситуацию. Т.е. мне надо узнать последний по дате реквизит в справочнике "Валюты", и если эта дата меньше чем ВалютаПоставки (в моем коде), то сообщить об этом. Вот мой недоработанный код, помогите, пожалуйста:
    Код:
    КурсПоставкиПолуч = СоздатьОбъект("Периодический");
        КурсПоставкиПолуч.ИспользоватьОбъект("Курс",ВалютаПоставки);
        КурсПоставки=КурсПоставкиПолуч.ЗначениеНаДату(ДатаПоставки);
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Это свойство периодического реквизита...
    Используйте метод
    ВыбратьЗначения(<ДатаНачала>,<ДатаКонца>)
    в цикле.
  3. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Код:
    КурсПоставкиПолуч = СоздатьОбъект("Периодический");
        КурсПоставкиПолуч.ИспользоватьОбъект("Курс",ВалютаПоставки);
        КурсПоставкиПолуч.ВыбратьЗначения(ДатаПоставки,ДатаПоставки);
        Пока КурсПоставкиПолуч.ПолучитьЗначение()=1 Цикл
        КурсПоставки=КурсПоставкиПолуч.Значение;
        КонецЦикла;
    Этот код также не дает желаемого результата. Думаю поставить метод НайтиЗначение() в условии. Если получится, обязательно отпишусь...
  4. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Короче, вот как надо:
    Код:
    КурсПоставкиПолуч = СоздатьОбъект("Периодический");
        КурсПоставкиПолуч.ИспользоватьОбъект("Курс",ВалютаПоставки);
        Если КурсПоставкиПолуч.НайтиЗначение(ДатаПоставки,0)=1 Тогда
            КурсПоставки=КурсПоставкиПолуч.ЗначениеНаДату(ДатаПоставки);
        Иначе Сообщить("Курс не найден!");
        КонецЕсли;
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Действительно. Про НайтиЗначение как то не подумал... Заработался
  6. eviloid
    Offline

    eviloid Опытный в 1С

    Регистрация:
    15 май 2008
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    если я всё правильно понял, то вот так можно:
    Код:
        Пер = СоздатьОбъект("Периодический");
        Пер.ИспользоватьОбъект("Курс", ВалютаПоставки);
        Пер.ОбратныйПорядок(1);
        Пер.ВыбратьЗначения(, ДатаПоставки);
      
        Если Пер.ПолучитьЗначение() = 1 Тогда
            Если Пер.ДатаЗнач = ДатаПоставки Тогда
                КурсПоставки = Пер.Значение;
                Сообщить(КурсПоставки);
            Иначе
                Сообщить("Не задан курс!");
            КонецЕсли;
        Иначе
            Сообщить("Не задан курс!");
        КонецЕсли;
    

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