в. 7.7Бухгалтерия. Нужно выводить РН только по одному типу деталей
18.12.2009
16:40
#1
"Собственно проблема стоит в том, что при установке флажка нужно "Выводить только детали 2К" (2К - это наименование производителя).
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
....
|Производитель = Документ.РасходнаяНакладная.Товар.Наименование.Производитель;
....
|"//}}ЗАПРОС
;
Имя2К = "2К";
Если Флаг2 = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Производитель=Имя2К);"
КонецЕсли;
Поидее должно выводить детали только "2К" , но при текущей постановке запроса, без флажка он работает как обычно выводит все ЗН, когда его ставишь то при формировании он показывает пустую строку... Я думаю что неправильно указываю путь запроса... есть справочник Производители, в нем наименования самих производителей, но при создании прямой цепочки запроса в этот справочник он всеравно пишет пустую строку.. кто может подсказать в чем ошибка?"
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
....
|Производитель = Документ.РасходнаяНакладная.Товар.Наименование.Производитель;
....
|"//}}ЗАПРОС
;
Имя2К = "2К";
Если Флаг2 = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Производитель=Имя2К);"
КонецЕсли;
Поидее должно выводить детали только "2К" , но при текущей постановке запроса, без флажка он работает как обычно выводит все ЗН, когда его ставишь то при формировании он показывает пустую строку... Я думаю что неправильно указываю путь запроса... есть справочник Производители, в нем наименования самих производителей, но при создании прямой цепочки запроса в этот справочник он всеравно пишет пустую строку.. кто может подсказать в чем ошибка?"
18.12.2009
16:49
#2
1. Как правильно сказали, "Производитель=Имя2К" - такая запись не правильная, поскольку сравниваете Справочник со строкой.
2. А вот когда сравниваете "Производитель.Наименование=Имя2К", тогда вы не учитываете пробелы. Если Наименование длиной 10 символов, то Производитель.Наименование="2К ", а потому попробуйте добавить пробелов в конец значения переменной Имя2К до длины наименования.
2. А вот когда сравниваете "Производитель.Наименование=Имя2К", тогда вы не учитываете пробелы. Если Наименование длиной 10 символов, то Производитель.Наименование="2К ", а потому попробуйте добавить пробелов в конец значения переменной Имя2К до длины наименования.
18.12.2009
16:58
#3
Наименование требующихся производителей не более 3 символов, это что нужно добавить 5 пробелов к Имя2К ?
я просто не уловил ход вашей мысли
я просто не уловил ход вашей мысли
18.12.2009
17:14
#4
"Можно так:
Условие(СокрЛП(Производитель.Наименование)=Имя2К);
правда работать будет подольше.
Вообще все верно BelikovS написал. При выполнении запроса идет сравнение двух строк, причем каждая из них имеет какую то длину.
Если вы видите наименование контрагента "2К", это вовсе не означает, что оно такое и есть. Реально в таблице базы данных хранится значение "2К ", то есть, еще имеется куча пробелов в количестве, соответствующем тому, которое описано в конфигураторе как "Длина поля" (общая длина строки всегда именно такая). Поэтому если хотите сравнивать побыстрее, надо сделать что то примерно такое:
Имя2К="2К";
Для i=1 По Метаданные.Справочник("Контрагенты").ДлинаНаименования-СтрДлина(Имя2К) Цикл
Имя2К=Имя2К+" ";
КонецЦикла;
и уж потом запрос выполнять
P.S. У вас, кажется, ошибка:
> Производитель = Документ.РасходнаяНакладная.Товар.Наименование.Производитель;
наверное, надо так:
Производитель = Документ.РасходнаяНакладная.Товар.Производитель.Наименование;"
Условие(СокрЛП(Производитель.Наименование)=Имя2К);
правда работать будет подольше.
Вообще все верно BelikovS написал. При выполнении запроса идет сравнение двух строк, причем каждая из них имеет какую то длину.
Если вы видите наименование контрагента "2К", это вовсе не означает, что оно такое и есть. Реально в таблице базы данных хранится значение "2К ", то есть, еще имеется куча пробелов в количестве, соответствующем тому, которое описано в конфигураторе как "Длина поля" (общая длина строки всегда именно такая). Поэтому если хотите сравнивать побыстрее, надо сделать что то примерно такое:
Имя2К="2К";
Для i=1 По Метаданные.Справочник("Контрагенты").ДлинаНаименования-СтрДлина(Имя2К) Цикл
Имя2К=Имя2К+" ";
КонецЦикла;
и уж потом запрос выполнять
P.S. У вас, кажется, ошибка:
> Производитель = Документ.РасходнаяНакладная.Товар.Наименование.Производитель;
наверное, надо так:
Производитель = Документ.РасходнаяНакладная.Товар.Производитель.Наименование;"
18.12.2009
17:22
#5
"Я обычно использую такую конструкцию:
Строка50 = " ";
Имя2К = Имя2К+Лев(Строка50, Метаданные.Справочник("Контрагенты").ДлинаНаименования-СтрДлина(Имя2К));
> Для i=1 По Метаданные.Справочник("Контрагенты").ДлинаНаименования-СтрДлина(Имя2К) Цикл
Тут i должно начинаться с СтрДлина(Имя2К)"
Строка50 = " ";
Имя2К = Имя2К+Лев(Строка50, Метаданные.Справочник("Контрагенты").ДлинаНаименования-СтрДлина(Имя2К));
> Для i=1 По Метаданные.Справочник("Контрагенты").ДлинаНаименования-СтрДлина(Имя2К) Цикл
Тут i должно начинаться с СтрДлина(Имя2К)"
18.12.2009
17:32
#6
Установить этот цикл вместо моего условия? И поместить перед началом старта запроса?
18.12.2009
17:42
#7
блин, вобщем нифига не получается отфильтровать 2К.
Можете подсказать как закрепить в сформированном отчете верхнюю строчку документа, тоесть когда бы мы листали табличку вниз, шапка постоянно была видна
Можете подсказать как закрепить в сформированном отчете верхнюю строчку документа, тоесть когда бы мы листали табличку вниз, шапка постоянно была видна
18.12.2009
17:52
#8
> Можете подсказать как закрепить в сформированном отчете верхнюю строчку документа, тоесть когда бы мы листали табличку вниз, шапка постоянно была видна
У таблицы метод Опции(<ВыводСетки>,<ВыводЗаголовков>,<ФиксСтрок>,<ФиксСтолбцов>,<ИмяОпцийПечати>,<ИмяСохрРазмОкна>,<ФлагЧБПросмотра>,<НаправлПерехода>)
Только в базовом виде он работает только один раз, т.е. один раз вызвал и изменению для этого объекта не подлежит.
У таблицы метод Опции(<ВыводСетки>,<ВыводЗаголовков>,<ФиксСтрок>,<ФиксСтолбцов>,<ИмяОпцийПечати>,<ИмяСохрРазмОкна>,<ФлагЧБПросмотра>,<НаправлПерехода>)
Только в базовом виде он работает только один раз, т.е. один раз вызвал и изменению для этого объекта не подлежит.
18.12.2009
17:54
#9
> блин, вобщем нифига не получается отфильтровать 2К.
Кстати, помимо 2-х предложенных способов, есть еще 3-й:
Найти элемент справочника по наименованию и использовать найденый элемент в условии.
Кстати, помимо 2-х предложенных способов, есть еще 3-й:
Найти элемент справочника по наименованию и использовать найденый элемент в условии.
18.12.2009
18:09
#10
"уже сделал)
А подскажите еще, нужно чтоб результаты обработки обнулялись после формирования отчета, чтобы не приходилось постоянно ее перезапускать?)
А насчет 3го варианта я говорил уже, он не может вытащить то что мне нужно, яж описал пример своего условия.... он отчет формирует но таблица пустая...;("
А подскажите еще, нужно чтоб результаты обработки обнулялись после формирования отчета, чтобы не приходилось постоянно ее перезапускать?)
А насчет 3го варианта я говорил уже, он не может вытащить то что мне нужно, яж описал пример своего условия.... он отчет формирует но таблица пустая...;("
Читают тему
(гостей: 1)