• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Запрос в 1С

  • Автор темы mpoltav
  • Дата начала
M

mpoltav

При выполнении ругается на выделенную красным строку (поле портфель имеется в наличии).

//{{ЗАПРОС(Обороты)
Период с ДатаС по ДатаПо;
Фирмы = Регистр.Обороты.Фирма,Регистр.Остатки.Фирма;
ВУ = Регистр.Обороты.ВидУчета,Регистр.Остатки.ВидУчета;
ТМЦ = Регистр.Обороты.ТМЦ,Регистр.Остатки.ТМЦ;
ЧейТовар = Регистр.Обороты.ТМЦ.ЧейТовар,Регистр.Остатки.ТМЦ.ЧейТовар;
Док = Регистр.Обороты.ТекущийДокумент;
ВидТМЦ = Регистр.Обороты.ТМЦ.Вид,Регистр.Остатки.ТМЦ.Вид;
ПриходКво = Регистр.Обороты.ПриходКво;
ПриходГРН = Регистр.Обороты.ПриходГРН;
РасходКво = Регистр.Обороты.РасходКво;
РасходГРН = Регистр.Обороты.РасходГРН;
КвоОст = Регистр.Остатки.Кво;
СуммаОст = Регистр.Остатки.СуммаГрн;
ДоходГРН = Регистр.Обороты.ДоходГРН;
Условие ((ВидТМЦ = Перечисление.ВидыТМЦ.Товар) или (ВидТМЦ = Перечисление.ВидыТМЦ.Продукция));
Условие((Док.Вид()="РасходнаяНакладная") и (Док.Портфель=ВыбПортфель));
Условие (ВУ = Перечисление.ВидыУчета.Торговля);
Условие (НайтиФирм(Фирмы)=1);
Функция ПрхКво = Сумма(ПриходКво);
Функция ПрхВес = Сумма(ПриходКво*ТМЦ.Вес);
Функция ПрхОбъем = Сумма(ПриходКво*ТМЦ.Емкость);
Функция ПрхГРН = Сумма(ПриходГРН);
Функция РсхКво = Сумма(РасходКво);
Функция РсхВес = Сумма(РасходКво*ТМЦ.Вес);
Функция РсхОбъем = Сумма(РасходКво*ТМЦ.Емкость);
Функция РсхГРН = Сумма(РасходГРН);
Функция остКво = КонОст(КвоОст);
Функция остСумма = КонОст(СуммаОст);
Функция ДохГРН = Сумма(ДоходГРН);
Группировка Фирмы Без Упорядочивания Без Групп;
Группировка Док Без Упорядочивания Без Групп;
 
E

evgenyatam

Условие((Док.Вид()="РасходнаяНакладная") и (Док.Портфель=&ВыбПортфель));
вот так она должна выглядеть. (& - перед ВыбПортфель). дальше сам сообразишь.
 
U

unknown181538

Нельзя вызвать непосредственно метод Вид() в запросе.
Можно вызывать свою функцию,например, в которой определять вид.
 
A

Andruha

Условие((Док.Вид()="РасходнаяНакладная") и (Док.Портфель=&ВыбПортфель));
вот так она должна выглядеть. (& - перед ВыбПортфель). дальше сам сообразишь.
товарищ, это 7.7 - какой & :)
Код:
ДокРН = Регистр.Обороты.ТекущийДокумент.РасходнаяНакладная.ТекущийДокумент;
ПортфельРН = Регистр.Обороты.ТекущийДокумент.РасходнаяНакладная.Портфель;
...
Условие((Док = ДокРн) и (ПортфельРН =ВыбПортфель));
 
M

mpoltav

Спасибо, разобрался уже. & - не надо )
 
Д

Дайнеко

При выполнении ругается на выделенную красным строку
Почему никто не спросит: "А как ругается?" А то так говорят мои клиенты: "Не работает, и что-то там пишет". Для первого раза спрашиваешь: "А как не работает?"

А причина вот в чем. В регистр "Обороты" запись может делать документ любого вида. Значит "Док" может содержать поле "Портфель", а может и нет. Запрос по такому условию не может отработать. Вот если "Портфель" сделать общим реквизитам, тогда - пожалуйста.
Второй вариант применения условия вида "Док.Реквизит=" можно сделать, если запрос выбран только по конкретному виду документов.
 
M

mpoltav

Да, ругалось на вид() и Портфель(). Вставил:

Код:
ДокРН = Регистр.Обороты.ТекущийДокумент.РасходнаяНакладная.ТекущийДокумент;
ПортфельРН = Регистр.Обороты.ТекущийДокумент.РасходнаяНакладная.Портфель;
...
Условие((Док = ДокРн) и (ПортфельРН =ВыбПортфель));
Все заработало. Без вас было бы трудно. Спасибо!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!