Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 17:58

Список регистров.

Автор MagistrPavel, 30 июн 2015, 08:13

0 Пользователей и 1 гость просматривают эту тему.

MagistrPavel

Как будет выглядеть запрос?

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10
      |   ТоварыНаСкладах.Регистратор
      |ИЗ
      |   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах"
      |ГДЕ
      |   ТоварыНаСкладах.Регистратор.Дата > 01.01.2015 ;

Примерно похоже или как?

vitasw

Цитата: MagistrPavel от 30 июн 2015, 13:24ВЫБРАТЬ ПЕРВЫЕ 10

по условию - да. А первые 10 зачем?

MagistrPavel

Так не работает, первые 10 чтоб базу долго не листать.

mixqn

ВЫБРАТЬ ПЕРВЫЕ 10
   ТоварыНаСкладах.Регистратор
ИЗ
   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
   ТоварыНаСкладах.Регистратор.Дата > ДАТАВРЕМЯ(2015, 1, 1)

MagistrPavel

А если у меня на форме появятся 2 поля типа дата, ПолеДата1 и ПолеДата2, как в запросе ограничить дату между значениями этих полей?

mixqn

:D :D :D
Добавлено:


извините, не сдержался
Добавлено: 30 июн 2015, 14:19


ВЫБРАТЬ ПЕРВЫЕ 10
   ТоварыНаСкладах.Регистратор
ИЗ
   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
   ТоварыНаСкладах.Регистратор.Дата МЕЖДУ &Дата1 И &Дата2
Добавлено: 30 июн 2015, 14:20


Запрос.УстановитьПараметр("Дата1", Дата1);
Запрос.УстановитьПараметр("Дата2", Дата2);

MagistrPavel


Процедура КнопкаВыполнитьНажатие(Кнопка)
   ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("Регистр");
   ТЗ.Колонки.Добавить("Регистратор");
   Для каждого Регистр Из Метаданные.РегистрыНакопления Цикл
      НоваяСтрока = ТЗ.Добавить();
        НоваяСтрока.Регистр = Регистр.Имя;      
      Запрос = Новый Запрос;
      Запрос.УстановитьПараметр("Дата1", Дата1);
        Запрос.УстановитьПараметр("Дата2", Дата2);
      Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10
      |   ТоварыНаСкладах.Регистратор
      |ИЗ
      |   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
      |ГДЕ
        |ТоварыНаСкладах.Регистратор.Дата > МЕЖДУ &Дата1 И &Дата2";
      Запрос.Текст = СтрЗаменить(Запрос.Текст, "ТоварыНаСкладах", Регистр.Имя);
      
      Результат = Запрос.Выполнить();
      Выборка = Результат.Выбрать();
      
      Пока Выборка.Следующий() Цикл
                  НоваяСтрока = ТЗ.Добавить();
         НоваяСтрока.Регистратор =Символы.Таб + Выборка.Регистратор;
               КонецЦикла;
   КонецЦикла;
   ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ;
   ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
КонецПроцедуры

Выдает ошибку
{Форма.Форма.Форма(21)}: Ошибка при вызове метода контекста (Выполнить)
      Результат = Запрос.Выполнить();
по причине:
{(6, 54)}: Синтаксическая ошибка "МЕЖДУ"
АвансовыеПлатежиИностранцевПоНДФЛ.Регистратор.Дата > <<?>>МЕЖДУ &Дата1 И &Дата2

mixqn

знак больше уберите
Добавлено: 30 июн 2015, 14:35


ну и если уж совсем все "по уму", то еще надо учесть, что дата включает время, поэтому как минимум для даты конца нужно указывать конец дня. можно и для даты начала тоже, чтобы симметрично все было

ВЫБРАТЬ ПЕРВЫЕ 10
   ТоварыНаСкладах.Регистратор
ИЗ
   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
   ТоварыНаСкладах.Регистратор.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата1, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата2, ДЕНЬ)

MagistrPavel

Вывел с 10 по 22, за 10 число вывелись, а за 22 нет, между значит <> или <= >= ? как интервал делать от 00:00:00  начало и конец на 23:59:59 ?

Вы уже ответили поздно я написал.

vitasw


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск