Имя: Пароль:
1C
1С v8
Запрос к регистру бухгалтерии.
,
0 Labrador
 
26.04.13
08:27
Необходимо сделать запрос по остаткам в разрезе субсчетов 10 счета. Получилось так:

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Организация",Организация);
   Запрос.УстановитьПараметр("Склад",Склад);
   Запрос.УстановитьПараметр("Счет",СчетОтправитель);
   Запрос.УстановитьПараметр("Дата",ТекущаяДата());
   Запрос.Текст = "ВЫБРАТЬ
                   |    ОсновнойОстатки.Организация,
                   |    ОсновнойОстатки.Субконто1                КАК Ном,
                   |    ОсновнойОстатки.Субконто3                КАК НомСклад,
                   |    ОсновнойОстатки.КоличествоОстаток        КАК Количество,
                   |    ОсновнойОстатки.Счет                    КАК Счет
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата) КАК ОсновнойОстатки
                   |ГДЕ
                   |    ОсновнойОстатки.Счет В ИЕРАРХИИ (&Счет) И ОсновнойОстатки.Субконто3 = &Склад И ОсновнойОстатки.Организация = &Организация  И ОсновнойОстатки.КоличествоОстаток > 0                    
                   |УПОРЯДОЧИТЬ ПО
                   |    ОсновнойОстатки.Счет";
                   
   Возврат Запрос.Выполнить().Выбрать();

Знаю, что криво. Собсно вопрос в том, как использовать в этом запросе параметры виртуальной таблицы? Необходимо чтобы запрос отрабатывал даже если партийного учета, т.е. Субконто3 превратится в субконто2 =) Ну вот как то так.
1 Labrador
 
26.04.13
08:30
З.Ы. Тапками не закидывать, в ОдинЭске около 2х месяцев=) еще мало опыта и знаний =) Благодарю за понимание и терпение =)
2 Aprobator
 
26.04.13
08:34
я бы чем нибудь другим кинул, потяжелее. СП не прочитать? Там все прекрасно описано.
3 НЕА123
 
26.04.13
08:35
(0)
по F1 работа запросами - таблица РБ - параметры смотри.
4 Aprobator
 
26.04.13
08:36
единственно тока, виды субконто пропиши в параметры виртуальной таблицы (см СП как). и Субконто1 - первый элемент массива виды субконто, а Субконто3 будет 3 элемент данного массива, а не номер субконто по порядку на счете.
5 Aprobator
 
26.04.13
08:38
условие по счету тоже внутрь. А условие на 0 для количества при данном запросе нафиг не упало. Учись читать хелп вдумчиво и до конца.
6 Labrador
 
26.04.13
08:41
(3), (4) Спасибо, уполз перечитывать, видимо чтото понял неправильно =(
(5) Хм.. ну пока делаю по демонстрационной базе, а там даже с 0м остатком данные хватаются. Это там де прочитать можно?
7 Aprobator
 
26.04.13
08:44
(6) хм - чудно как то. Может я упустил чего в этой жизни?
8 butterbean
 
26.04.13
08:44
(6) нулевой остаток — это отсутствие остатка, и поэтому он выводиться не может
если нужны просто актуальные остатки, то дату лучше убери из параметров
9 НЕА123
 
26.04.13
08:45
(7)
в первых релизах 81 нулики вылазили.
10 Aprobator
 
26.04.13
08:46
(9) ну если тока так. А то я уж решил, что пора к доктору склероз лечить.
11 Labrador
 
26.04.13
08:46
(7) (8) Спорить не буду, не знаю=) Но кажется там даже не ноль а просто пустое значение =) Потому остатки и выводит =)
12 Aprobator
 
26.04.13
08:47
какое пустое значение???? Там ресурс тока число.
13 butterbean
 
26.04.13
08:47
(11) может ты из ОстаткиИОбороты сначала выбирал??
14 Labrador
 
26.04.13
08:52
(12) (13) Прощу прощения, на еще одной Демке запрос прогнал. И правда не достает. Ну значит я в другом месте косякнул, буду искать. Спасибо и прощу прощения за дизинформацию =)
15 Labrador
 
26.04.13
08:55
Хотя в ресурсе Количество проверка на заполнение не используется, допускаю что оно может быть просто не заполнено =)
16 НЕА123
 
26.04.13
09:01
(15)
в 1С количество - тип число. и не может оно быть ничем другим. незаполнено - значит 0.
17 Labrador
 
26.04.13
09:14
Буду знать, спасибо =)
18 Labrador
 
26.04.13
10:38
Вот так получилось =) Правильно?

   МассивСубконто = Новый Массив(2);
   МассивСубконто[0] = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады;
   МассивСубконто[1] = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура;

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

Если правильно, то еще один вопрос:
Можно ли при формировании ВТаблицы Остатков учитывать еще и организацию? Чтоб вообще "ГДЕ" не использовать.
19 НЕА123
 
26.04.13
10:39
Субконто1 = &Склад И Организация = &Орг
20 НЕА123
 
26.04.13
10:40
(18)
не в конструкторе что-ли делаешь?
21 Labrador
 
26.04.13
10:42
Нет =( Пока вручную. А сейчас посмотрел, а ведь так действительно удобнее =) Ребят огромное спасибо, что бы я без вас делал =)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший