8.х Выбрать Документы по Дате

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем k0de, 1 окт 2010.

  1. TopicStarter Overlay
    k0de
    Offline

    k0de

    Регистрация:
    21 сен 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Как сделать выборку документов только за определенную дату.
    Пока я сделал методом таким:
    Код:
    Перем001 = Документы.ЧекККМ.Выбрать;
    Пока Перем001.Следующий() Цикл
    // тут через Если смотрю дату каждого
    // документа, и если она больше или
    // равна нужной мне, то вывожу.
    КонецЦикла;
    
    
    Просто таким методом он пока переберет все документы помереть можно.(( Может есть другой вариант. Помогите плиз!
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Откройте пожалуйста синтакс-помощник и прочитайте про метод Выбрать(). (ДокументМенеджер). Там будет ответ на ваш вопрос.
  3. TopicStarter Overlay
    k0de
    Offline

    k0de

    Регистрация:
    21 сен 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Ух ты! Классно помог! :angry:
    Я знаю про синтакс-помощник, но я подключаюсь через СОМ-соединение из другой программы, не 1С и мне надо сделать выборку по дате.
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    k0de, чтобы тебе еще "классней" помогали, научись задавать вопросы. У меня, как дело к полуночи, и до утра - дар телепатии почему-то пропадает.

    А чтобы остальные участники форума, тоже не занимались гаданием, сделай над собой усилие, опиши свою задачу подробнее, по меньшей мере хотя-бы сообщи, что это за "другая программа".

    З.Ы. В любом случае - убирай свои методы "Выбрать()" и т.п. Используй запросы.
  5. Наташа
    Offline

    Наташа Опытный в 1С

    Регистрация:
    14 авг 2010
    Сообщения:
    1.442
    Симпатии:
    2
    Баллы:
    29
    А пробовали вобще Выбрать(ДатаС, ДатаПо)? Ругается? Что конкретно говорит?
  6. Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    Вам правильно сказали, только запросом.

    Код:
    Запрос    = мБаза.NewObject("Запрос");
    Запрос.Текст    = "
    |Выбрать *
    |Из Документ.ЧекККМ
    |";
    Результат    = Запрос.Выполнить(); 
    
  7. TopicStarter Overlay
    k0de
    Offline

    k0de

    Регистрация:
    21 сен 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Вот именно, shurikvz, так сначала и спросил бы, что за доп. программа и т.д. Отвечаю на все вопросы.
    Программа на Delphi, через СОМ-соединение подключается к 1С, и выполняет Выбрать().

    Siddy, я бы с радостью не не знаю как из внешней программы через COM-соединение послать запрос. А так спору конечно нет, запрос лучше ибо быстрее в разы.

    Наташа, да я пробовал Выбрать(ДатаС, ДатаПо), и да он ругается (( говорит что неверный формат. Скорее всего формат не верный потому что тип Дата в 1С состоит как ГГГГММДД ччммсс, а тип Date в Delphi как с точностью да наоборот. Ну это конечно если я правильно понял что в Выбрать(ДатаС, ДатаПо), переменные типа ДатаС и ДатаПо это переменные типа Дата.

    Спасибо всем откликнувшимся. Жду помощьи в разрешении проблемы.
  8. TopicStarter Overlay
    k0de
    Offline

    k0de

    Регистрация:
    21 сен 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Всем спасибо большое, проблема решена. В Delphi на было сделать строку внутри которой ДатаС, ДатаПо представлены как тип string и выглядит как COMConnect.Выбрать('ГГГГММДДччммсс','ГГГШММДДччммсс'); Просто я раньше делал как ГГГГ.ММ.ДД чч:мм:сс наивно рпедполагая что 1С сама "разберет" формат на то что ему надо.
  9. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Как вариант, в 1С в общем/глобальном модуле создаете импортируемую функцию, которая конвертит строку в дату и используете ее.
    Как вариант:
    Код:
    Функция ВнДата(Строка) Экспорт //Дата в формате "ГГГГММДДччммсс"
    Возврат Дата(Строка);
    КонецФункции
    
    

    опоздал :)
  10. Siddy
    Offline

    Siddy Опытный в 1С

    Регистрация:
    18 мар 2009
    Сообщения:
    311
    Симпатии:
    0
    Баллы:
    26
    Как-то так:
    Код:
    var myQuery: OleVariant;
    
    begin
    myQuery := ConnectBase.NewObject('Запрос');
    myQuery.Текст='ВЫБРАТЬ * Из Документ.ЧекККМ';
    myQuery.Выполнить();
    
    
  11. Наташа
    Offline

    Наташа Опытный в 1С

    Регистрация:
    14 авг 2010
    Сообщения:
    1.442
    Симпатии:
    2
    Баллы:
    29
    В запрос то тоже параметры пришлось бы передавать, а проблема в том, что Делфи не понимает дату 1С-овскую :) Тоже в свое время выкручивалась передачей строки с датой.
  12. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    В запросе есть функция
    Код:
    ДАТАВРЕМЯ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)
    
  13. TopicStarter Overlay
    k0de
    Offline

    k0de

    Регистрация:
    21 сен 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Всем спасибо за ответы, и спасибо за то что показали как запрос делать, и насчет импорта функции, и спасибо за функции разбиения датавремя. Всем еще раз спасибо!

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