• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Запрос в 1С

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

mpoltav

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

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

evgenyatam

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

unknown181538

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

Andruha

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

mpoltav

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

Дайнеко

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

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

mpoltav

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

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

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