Печатная форма с групировкой по МОЛ

1. maestro_voln 27.06.09 15:55 Сейчас в теме
Помогите плиз сделать что бы печатная форма Документа "Счет входящий" групировалась по МОЛ
я написал так

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "//{{ЗАПРОС(Сформировать)
|МОЛ = Документ.СчетВходящий.Товар.МОЛ;
|Товар = Документ.СчетВходящий.Товар;
|Количество = Документ.СчетВходящий.Количество;
|Группировка МОЛ Упорядочить По МОЛ.Наименование;
|Группировка Товар Упорядочить По Товар.Наименование;
|Условие(ТекДок=ТекущийДокумент());
|//}}ЗАПРОС";

Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка(1) = 1 Цикл
ФИО = Запрос.МОЛ.Наименование;

Таб.ВывестиСекцию("МОЛ");

Пока Запрос.Группировка(2) = 1 Цикл
Товар = Запрос.Товар.ПолнНаименование;

Таб.ВывестиСекцию("Строка");

Но почемуто не работает
Что не так?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. jmw 60 30.06.09 05:37 Сейчас в теме
А у тебя в номенклатуре имеется реквизит МОЛ ?
3. CheBurator 3125 30.06.09 07:00 Сейчас в теме
Введи в запрос функцию!
4. CheBurator 3125 30.06.09 07:02 Сейчас в теме
посмотри вот эти метод.материалы, м.б. пригодятся...
http://infostart.ru/projects/1212/
5. maestro_voln 30.06.09 09:14 Сейчас в теме
Re Jurii:
В номенклатуре реквизит МОЛ имеется, он относится к справочнику МОЛ
7. jmw 60 30.06.09 09:49 Сейчас в теме
(5) Тогда проще перебрать строки документа с вытаскиванием из них нужных данных.
Примерно так:

ТЧ = СоздатьОбъект("ТаблицаЗначений");
ТЧ.НоваяКолонка("Товар", "Справочник.Номенклатура");
ТЧ.НоваяКолонка("Количество", "Число");
Заготовка = ЗначениеВСтрокуВнутр(ТЧ);

тМОЛ = СоздатьОбъект("ТаблицаЗначений");
тМОЛ.НоваяКолонка("МОЛ", "Справочник.МОЛ");
тМОЛ.НоваяКолонка("ТЧ"  , "ТаблицаЗначений");

Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
    Товар = Док.Товар;
    Количество = Док.Количество;

    стрМОЛ = 0;
    Если тМОЛ.НайтиЗначение(Товар.МОЛ, стрМОЛ, "МОЛ") = 0 Тогда
        тМОЛ.НоваяСтрока();
        тМОЛ.МОЛ = Товар.МОЛ;
        тМОЛ.ТЧ = ЗначениеИзСтрокиВнутр(Заготовка);
    Иначе
        тМОЛ.ТекущаяСтрока(стрМОЛ);
    КонецЕсли;

    тМОЛ.ТЧ.НоваяСтрока();
    тМОЛ.ТЧ.Товар = Товар;
    тМОЛ.ТЧ.Количество = Количество;
КонецЦикла;
Показать

Выводить результат:

тМОЛ.Сортировать("МОЛ");

тМОЛ.ВыбратьСтроки();
Пока тМОЛ.ПолучитьСтроку() = 1 Цикл
    МОЛ = тМОЛ.МОЛ;
    Количество = тМОЛ.ТЧ.Итог("Количество");
    Таб.ВывестиСекцию("МОЛ");
   
    ТЧ = тМол.ТЧ;
    ТЧ.Сортировать("Товар");
    ТЧ.ВыбратьСтроки();
    Пока ТЧ.ПолучитьСтроку() = 1 Цикл
        Товар = ТЧ.Товар;
        Количество = ТЧ.Количество;
        Таб.ВывестиСекцию("Товар");
    КонецЦикла;
КонецЦикла;
Показать
6. maestro_voln 30.06.09 09:15 Сейчас в теме
Re Che Burashka Сергей :
Какую функцию ввести?
8. maestro_voln 30.06.09 11:26 Сейчас в теме
Чета оно не правильно отсортировало (((
9. jmw 60 30.06.09 13:07 Сейчас в теме
(8) "Чета" там нет!
Ты поправил под свою базу?
10. maestro_voln 30.06.09 14:00 Сейчас в теме
Дело в том что написано вроде как правильно, незнаю что может быть не так
11. maestro_voln 30.06.09 14:01 Сейчас в теме
единственное что добавил Док=ТекущийДокумент();
12. jmw 60 30.06.09 14:34 Сейчас в теме
А что выдаёт?
Попробуй без сортировки.
Прогони отладчиком...
13. maestro_voln 30.06.09 15:57 Сейчас в теме
14. maestro_voln 30.06.09 16:27 Сейчас в теме
Док=ТекущийДокумент();


ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Товар", "Справочник.Номенклатура");
ТЗ.НоваяКолонка("МОЛ", "Справочник.МОЛ");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
ТЗ.НоваяСтрока();
ТЗ.Товар = Док.Товар;
ТЗ.Мол=Док.Товар.МОЛ;

КонецЦикла;

ТЗ.Сортировать("МОЛ");
ТЗ.ВыбратьСтроки();
МОЛ="";
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если ТЗ.МОЛ=МОЛ Тогда
Товар=ТЗ.Товар;
Таб.ВывестиСекцию("Строка");

Иначе
МОЛ=ТЗ.Товар.МОЛ;
Таб.ВывестиСекцию("МОЛ");
Товар=ТЗ.Товар;
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
15. jmw 60 01.07.09 10:20 Сейчас в теме
Ну не знаю. У меня ВСЁ работает.
Только МОЛ у товаров у меня нет, но есть "Сектор".
Вот эта процедура из внешнего отчета работает на ура:
Процедура Сформировать()
	Таб = СоздатьОбъект("Таблица");
	
	Док = ВыбДок; // Реквизит с формы отчета
	
	ТЧ = СоздатьОбъект("ТаблицаЗначений"); 
	ТЧ.НоваяКолонка("Товар", "Справочник.Номенклатура"); 
	ТЧ.НоваяКолонка("Количество", "Число"); 
	Заготовка = ЗначениеВСтрокуВнутр(ТЧ); 
	
	тМОЛ = СоздатьОбъект("ТаблицаЗначений"); 
	тМОЛ.НоваяКолонка("МОЛ", "Справочник.Сектора"); 
	тМОЛ.НоваяКолонка("ТЧ" , "ТаблицаЗначений"   ); 
	
	Док.ВыбратьСтроки(); 
	Пока Док.ПолучитьСтроку() = 1 Цикл 
		Товар = Док.Товар; 
		Количество = Док.Количество; 
		
		стрМОЛ = 0; 
		Если тМОЛ.НайтиЗначение(Товар.Сектор, стрМОЛ, "МОЛ") = 0 Тогда 
			тМОЛ.НоваяСтрока(); 
			тМОЛ.МОЛ = Товар.Сектор; 
			тМОЛ.ТЧ = ЗначениеИзСтрокиВнутр(Заготовка); 
		Иначе 
			тМОЛ.ТекущаяСтрока(стрМОЛ); 
		КонецЕсли; 
		
		тМОЛ.ТЧ.НоваяСтрока(); 
		тМОЛ.ТЧ.Товар = Товар; 
		тМОЛ.ТЧ.Количество = Количество; 
	КонецЦикла; 
	
	тМОЛ.Сортировать("МОЛ"); 

	тМОЛ.ВыбратьСтроки(); 
	Пока тМОЛ.ПолучитьСтроку() = 1 Цикл 
		МОЛ = тМОЛ.МОЛ; 
		Количество = тМОЛ.ТЧ.Итог("Количество"); 
		Таб.ВывестиСекцию("МОЛ"); 
		
		ТЧ = тМол.ТЧ; 
		ТЧ.Сортировать("Товар"); 
		ТЧ.ВыбратьСтроки(); 
		Пока ТЧ.ПолучитьСтроку() = 1 Цикл 
			Товар = ТЧ.Товар; 
			Количество = ТЧ.Количество; 
			Таб.ВывестиСекцию("Товар"); 
		КонецЦикла; 
	КонецЦикла; 
	
	Таб.Показать();
КонецПроцедуры
Показать
16. maestro_voln 01.07.09 14:24 Сейчас в теме
скинь пож. сюда maestro_voln@list.ru свою обработку
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот