Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запросы , Ну не везет мне с запросами....          
ReDll Подменю пользователя
сообщение 13.10.09, 14:25
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 68
Спасибо сказали: 1 раз
Рейтинг: 0

Задание вроде бы проще некуда, выбрать документы по регистрам за определенный период...

У меня получается код:


Процедура ТекстЗапроса()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ТекстЗапроса)
|Период с ВыбНачПериода по ВыбКонПериода;
|Докум = Регистр.Касса.Чек;
|Сумма = Регистр.Касса.Сумма;
|Фирма = Регистр.Касса.Чек.Предприятие;
|Функция СуммаНачОст = НачОст(Сумма);
|Функция СуммаКонОст = КонОст(Сумма);
|Группировка Докум;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("ТекстЗапроса");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Докум
Таб.ВывестиСекцию("Докум");
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("ТекстЗапроса", "");
КонецПроцедуры



Документы выбирает...
Но за весь период существования базы, а не за указанный период...
Конфигурация не стандартная... Но не могли же авторы поменять суть запросов... Или могли?
Помогите пожалуйста, подскажите в чем ошибка...
Спасибо.


Signature
God is real, unless difined as integer.

Fynjy Подменю пользователя
сообщение 13.10.09, 14:33
Сообщение #2

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Плохо с логикой у тебя в запросе ...
Получаешь остатки за период в которых могут быть различные документы за разные периоды ...
Период с д1 по д2;
ТекущийДокумент = Регистр.Р.ТекущийДокумент; //Это документ движения он тебе нужен ...
Группировка ТекущийДокумент;


Signature

ReDll Подменю пользователя
сообщение 13.10.09, 14:45
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 68
Спасибо сказали: 1 раз
Рейтинг: 0

Если я правильно поняла, то Вы имете ввиду так:

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ТекстЗапроса)
|Период с ВыбНачПериода по ВыбКонПериода;
|Докум = Регистр.Касса.ТекущийДокумент.Чек.ТекущийДокумент;
|Сумма = Регистр.Касса.Сумма;
|Фирма = Регистр.Касса.Чек.Предприятие;
|Функция СуммаНачОст = НачОст(Сумма);
|Функция СуммаКонОст = КонОст(Сумма);
|Группировка Докум;
|"//}}ЗАПРОС
;

Но в данном случае мне не вывелись документы вообще....


Signature
God is real, unless difined as integer.

Fynjy Подменю пользователя
сообщение 13.10.09, 14:48
Сообщение #4

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Не правильно поняли ... Вам нужен документ движения -
Цитата
выбрать документы по регистрам
. Соответственно в запросе указывается период для чего? Правильно для регистра ... А не для значений реквизита этого регистра ...


Signature

Спасибо сказали: ReDll,

ReDll Подменю пользователя
сообщение 13.10.09, 14:59
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 68
Спасибо сказали: 1 раз
Рейтинг: 0

Получается, что в регистрах за один день есть документы за все время существование базы?

упд.

Вроде дошло...
И как же тогда указать, что б по регистрам выбрало одокументы за нужный период, если первая строка указывает период для регистров....?


Signature
God is real, unless difined as integer.

Batchir Подменю пользователя
сообщение 13.10.09, 16:20
Сообщение #6

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Так как написал Fynjy


"//{{ЗАПРОС(ТекстЗапроса)
|Период с ВыбНачПериода по ВыбКонПериода;
|Докум = Регистр.Касса.ТекущийДокумент;
|Группировка Докум;
|";


Запросом выбирешь записи из регистра с группировкой по документу (он является регистратором записи)

Спасибо сказали: ReDll,

ReDll Подменю пользователя
сообщение 13.10.09, 17:04
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 68
Спасибо сказали: 1 раз
Рейтинг: 0

ТекстЗапроса =
"//{{ЗАПРОС(ТекстЗапроса)
|Период с ВыбНачПериода по ВыбКонПериода;
|Докум = Регистр.Касса.ТекущийДокумент;
|Сумма = Регистр.Касса.Сумма;
|Фирма = Регистр.Касса.Чек.Предприятие;
|Функция СуммаНачОст = НачОст(Сумма);
|Функция СуммаКонОст = КонОст(Сумма);
|Группировка Докум;
|"//}}ЗАПРОС
;

Документы не выводит совсем (в группировку не заходит)

Ладно, как выход, ставлю отбор по дате после запроса....
Правда запрос долго работает sad.gif


Signature
God is real, unless difined as integer.

alex1c Подменю пользователя
сообщение 13.10.09, 20:15
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Цитата(ReDll @ 13.10.09, 19:04) *
ТекстЗапроса =
"//{{ЗАПРОС(ТекстЗапроса)
|Период с ВыбНачПериода по ВыбКонПериода;
|Докум = Регистр.Касса.ТекущийДокумент;
|Сумма = Регистр.Касса.Сумма;
|Фирма = Регистр.Касса.Чек.Предприятие;
|Функция СуммаНачОст = НачОст(Сумма);
|Функция СуммаКонОст = КонОст(Сумма);
|Группировка Докум;
|"//}}ЗАПРОС
;

Документы не выводит совсем (в группировку не заходит)

Ладно, как выход, ставлю отбор по дате после запроса....
Правда запрос долго работает sad.gif


что-бы выводилась "Группировка Докум" тогда добавьте в запрос:
|Функция СуммаПриход = Приход(Сумма);
или
|Функция СуммаРасход = Расход(Сумма);
ивсе....

Спасибо сказали: ReDll,

ReDll Подменю пользователя
сообщение 14.10.09, 16:33
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 68
Спасибо сказали: 1 раз
Рейтинг: 0

Спасибо огромное, все заработало!!! smile.gif icon_beer17.gif

А вот другой запрос...
Не отбирает ни по товару ни по фирме... 19000000.gif



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

Если ВыбФирма.Выбран()=1 Тогда
ТекстЗап=ТекстЗап+"
|Условие (Фирма = ВыбФирма);
|"//}}ЗАПРОС
;
КонецЕсли;
Если ВыбТовар.Выбран()=1 Тогда
ТекстЗап=ТекстЗап+"
|Условие (Товар.ПринадлежитГруппе(ВыбТовар)=1);
|"//}}ЗАПРОС
;
КонецЕсли;

// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;



Выдает все документы вне зависимости от выбранной фирмы и группы товаров... sad.gif

З.Ы. Есть ли толковая книга по тонкостям запросов?


Signature
God is real, unless difined as integer.

liksoft Подменю пользователя
сообщение 14.10.09, 16:51
Сообщение #10

Говорящий
Иконка группы
Группа: Местный
Сообщений: 72
Спасибо сказали: 31 раз
Рейтинг: 0

Насколько я понимаю, Условие(...) должно стоять до функции и группировки. где то так...


Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ПродВсегоСклад)
|Период с ВыбНачПериода по ВыбКонПериода;
|Товар = Регистр.ОстаткиТоваров.Товар;
|Док = Регистр.ОстаткиТоваров.ТекущийДокумент;
|Фирма = Регистр.ОстаткиТоваров.Предприятие;
|Кол = Регистр.ОстаткиТоваров.Количество;
|БазСто = Регистр.ОстаткиТоваров.СуммаСНДСЗак;
|";

Если ВыбФирма.Выбран()=1 Тогда
ТекстЗап=ТекстЗап+"
|Условие (Фирма = ВыбФирма);
|";

КонецЕсли;
Если ВыбТовар.Выбран()=1 Тогда
ТекстЗап=ТекстЗап+"
|Условие (Товар.ПринадлежитГруппе(ВыбТовар)=1);
|";
КонецЕсли;

ТекстЗап = ТекстЗап + "
|Функция ПрихКол = Приход(Кол);
|Функция РасхКол = Расход(Кол);
|Функция ПрихСто = Приход(БазСто);
|Функция РасхСто = Расход(БазСто);
|Группировка Товар;
|Группировка Док;
|";


// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

zetovich Подменю пользователя
сообщение 15.10.09, 8:33
Сообщение #11

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 718
Из: Северодонецк
Спасибо сказали: 121 раз
Рейтинг: 0

ответ дали еще 2 постом.
и вопрос уже давно наверно решен.

ReDll Подменю пользователя
сообщение 15.10.09, 9:30
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 68
Спасибо сказали: 1 раз
Рейтинг: 0

Далее следовал второой вопрос по другому запросу, на который дали ответ.
Или мне на каждую проблему с запросом создавать отдельную тему? (учитывая, что проблема может быть на 1 ответ...)


Signature
God is real, unless difined as integer.

MATEVI Подменю пользователя
сообщение 15.10.09, 11:58
Сообщение #13

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 957 раз
Рейтинг: 0

Почему |Условие (Товар.ПринадлежитГруппе(ВыбТовар)=1);

А не |Условие (Товар В ВыбТовар);

А еще есть полезная штука конструктор запросов и отчетов. Я бы порекомендовал ее использовать при первом построении запроса...

Batchir Подменю пользователя
сообщение 15.10.09, 12:01
Сообщение #14

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Цитата(ReDll @ 15.10.09, 10:30) *
Далее следовал второой вопрос по другому запросу, на который дали ответ.
Или мне на каждую проблему с запросом создавать отдельную тему? (учитывая, что проблема может быть на 1 ответ...)


Ну 1 - 2 вопроса ещё можно совместить, но больше не желательно. Поймите, желания перечитывать то что уже решено нет, а представте что Вы напишите пять проблемных запросов, два решаться три нет, прийдется постоянно бегать между топиками что бы понять к какому запросу относится ответ? Такие топики я прохожу мимо. Так что создавайте на каждую проблему отдельныую ветку. В первом посте описываем её, а в последующих ищем решение и не будет возникать лишних вопросов.

W-divin Подменю пользователя
сообщение 15.10.09, 20:00
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 25
Спасибо сказали: 5 раз
Рейтинг: 0

Цитата(ReDll @ 14.10.09, 18:33) *
Спасибо огромное, все заработало!!! smile.gif icon_beer17.gif

А вот другой запрос...
Не отбирает ни по товару ни по фирме... 19000000.gif



Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ПродВсегоСклад)
|Период с ВыбНачПериода по ВыбКонПериода;
...
|"//}}ЗАПРОС
;

Если ВыбФирма.Выбран()=1 Тогда
ТекстЗап=ТекстЗап+"
|Условие (Фирма = ВыбФирма);
|"//}}ЗАПРОС
;
КонецЕсли;
...
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;



Выдает все документы вне зависимости от выбранной фирмы и группы товаров... sad.gif

З.Ы. Есть ли толковая книга по тонкостям запросов?


А разве дело не в именах переменных? В условии на Фирму и Товар написана переменная "ТЕКСТЗАП" а в начале и параметр в Выполнить "ТЕКСТЗАПРОСА".

Batchir Подменю пользователя
сообщение 16.10.09, 6:41
Сообщение #16

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

Ай, 58000000.gif , и действиельно, и никто даже не обратил внимание ...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.05.24, 21:41
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!