Проблема с отчетом по регистру

  • Автор темы fly-fire-fox
  • Дата начала
F

fly-fire-fox

#1
Здравсвуйте! Проблема собственно такая - создал регситр создал процедуру проведения по регистру :
Процедура ОбработкаПроведения()

//Проведение документа по регистру ВыданныеТМЦ
ТаблицаНоменклатуры = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТаблицаНоменклатуры);
ТаблицаНоменклатуры.ВыбратьСтроки();
Пока ТаблицаНоменклатуры.ПолучитьСтроку() = 1 Цикл
//ЗаписьРегистра = СоздатьОбъект("Регистр.ВыданныеТМЦ");
Регистр.ВыданныеТМЦ.Сотрудник = Сотрудник;
Регистр.ВыданныеТМЦ.Выдавший = ПолученоОт;
Регистр.ВыданныеТМЦ.НаименованиеМЦ = ТаблицаНоменклатуры.Товар;
Регистр.ВыданныеТМЦ.Количество = ТаблицаНоменклатуры.Количество;
Регистр.ВыданныеТМЦ.Цена = ТаблицаНоменклатуры.Цена;
Регистр.ВыданныеТМЦ.Сумма = ТаблицаНоменклатуры.Сумма;
Регистр.ВыданныеТМЦ.Дата = ТаблицаНоменклатуры.ДатаВыдачи;
Регистр.ВыданныеТМЦ.ДвижениеВыполнить();
КонецЦикла;
//ЗаписьРегистра.ДвижениеВыполнить();
КонецПроцедуры


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

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Наименование = Регистр.ВыданныеТМЦ.НаименованиеМЦ;
|Количество = Регистр.ВыданныеТМЦ.Количество;
|Цена = Регистр.ВыданныеТМЦ.Цена;
|Сумма = Регистр.ВыданныеТМЦ.Сумма;
|Сотрудник = Регистр.ВыданныеТМЦ.Сотрудник;
|Дата = Регистр.ВыданныеТМЦ.Дата;
|Группировка Сотрудник;
|//Условие(Сотрудник = ВыбСотрудник);
|";
Если Запрос.Выполнить(ТекстЗапроса) = 0 тогда
Сообщить("Хреновый запрос");
Возврат;
КонецЕсли;
Номер = 0;
Пока Запрос.Группировка(1) = 1 Цикл
Сообщить("Здесь я был");
Номер = Номер + 1;
Если Запрос.Сотрудник.ЭтоГруппа() = 1 Тогда
Сообщить("Здесь я был");
ПечатьОтчет.ВывестиСекицию("ТМЦ");
КонецЕсли;
КонецЦикла;
 
I

Isabela

#2
1. Период запроса не указан
2. А может, проще сделать так :
Reg = CreateObject("Регистр.ВыданныеТМЦ");
Reg.SelectActs(Date1,Date2);
While Reg.GetDocAct() > 0 do
Message(Reg.Сотрудник);
и т.д.
enddo;
 

Zab

Well-known member
07.08.2006
583
0
#3
<!--QuoteBegin-fly-fire-fox+5:01:2008, 08:29 -->
<span class="vbquote">(fly-fire-fox @ 5:01:2008, 08:29 )</span><!--QuoteEBegin-->Как можно посмотреть содержимое регистра
[snapback]92241" rel="nofollow" target="_blank[/snapback]​
[/quote]
Правой кнопкой по документу в журнале, там ищи пункт "Движения документа" откроется окошко, где сможешь выбрать по какому регистру движения смотреть.
Пробежав по коду, вижу, что ты выводишь секцию, только если у тебя сотрудник - группа. Это так надо? В движениях у тебя тоже группы сотрудников?
 
F

fly-fire-fox

#4
Изменил запрос так

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Период с ДатаНач по ДатаКон;
|Наименование = Регистр.ВыданныеТМЦ.НаименованиеМЦ;
|Количество = Регистр.ВыданныеТМЦ.Количество;
|Цена = Регистр.ВыданныеТМЦ.Цена;
|Сумма = Регистр.ВыданныеТМЦ.Сумма;
|Сотрудник = Регистр.ВыданныеТМЦ.Сотрудник;
|Дата = Регистр.ВыданныеТМЦ.Дата;
|Функция КолСтрок = Счётчик();
|Функция ПриходИмя = Приход(Сумма);
|";
Если Запрос.Выполнить(ТекстЗапроса) = 0 тогда
Сообщить("Хреновый запрос");
Возврат;
КонецЕсли;
Сообщить(Запрос.КолСтрок);

КолСтрок = 0 получается, т.е. выбока не происходит, почему это может быть?Условий нет в этот период в регистре точно есть данные

Если выбирать не через запрос то как сделать фильтр по сотруднику? Перебирать все значения и выводить только те где есть нужный сотрудник?
 

Zab

Well-known member
07.08.2006
583
0
#5
<!--QuoteBegin-fly-fire-fox+5:01:2008, 17:49 -->
<span class="vbquote">(fly-fire-fox @ 5:01:2008, 17:49 )</span><!--QuoteEBegin-->КолСтрок = 0 получается, т.е. выбока не происходит, почему это может быть?Условий нет в этот период в регистре точно есть данные
[snapback]92272" rel="nofollow" target="_blank[/snapback]​
[/quote]
походу, нет группировки в запросе<!--QuoteBegin-fly-fire-fox+5:01:2008, 17:49 -->
<span class="vbquote">(fly-fire-fox @ 5:01:2008, 17:49 )</span><!--QuoteEBegin-->Если выбирать не через запрос то как сделать фильтр по сотруднику? Перебирать все значения и выводить только те где есть нужный сотрудник?
[snapback]92272" rel="nofollow" target="_blank[/snapback]​
[/quote]
можно и так, но есть еще варианты:
ВыбратьДвижения(<ДатаНачала>,<ДатаКонца>,<ГрафаОтбора>) - обрати внимание на последний параметр, и :УстановитьФильтр(<?>,);
А вообще, такие вопросы решаются методом залезания в нужную ветку синтакс-помошника, и обзора возможных методов.
 
P
#6
1. Регистр накопительный?!
2.
Код:
|Функция ПриходИмя = Приход(Сумма);
тогда пользовать нельзя
3. нет группировки...