проблема с формированием отчета

  • Автор темы 4xter
  • Дата начала
Статус
Закрыто для дальнейших ответов.
4

4xter

#1
Уважаемые форумчане, есть не типовая конфигурация 1С 7.7 ТиС. В ней Справочник Клиентов, которому подчинен ещё справочник пунктов разгрузки(далее ПР). В 2-х реквизитах справочника ПР содержаться ссылки на документы по скидкам(далее акция и акция1). В этих документов идет перечень товаров, по которым будет скидка. Нужно соорудить такой отчет, который бы показывал активные(т.е. проведенные) акции, подставленные во все ПР, причем выводится ещё должны и позиции товаров, по которым идет акция.Так вот, проблема собственно в чем: каким образов впихнуть эти акционные позиции из документа. Так то я открываю справочник клиентов, пробегаюсь по ПР, запихиваю всё в ТЗ, а потом отсортировав по номеру акции вывожу в печатную форму. Как привязать товары?
p.s. в приложении приблизительный вид печатной формы,файл xls не дало загрузить, переименуйте в xls
pp.s. Сори если вопрос очень простой, возможно пятница на меня повлияла =))))
 

Вложения

vbs

Well-known member
18.02.2007
1 708
1
#2
Сумбурно изложено, но попробую предположить следующее :
Если акция - конкретный документ, то что мешает вытащить из табличной части этого документа товары ?
 

puh14

Well-known member
11.07.2008
1 412
0
#3
Все можно сделать в запросе. Максимум в двух ;-)
 
4

4xter

#4
Что-то у меня не получается увязать всё в одно целое. Делаю так:
СпрК=СоздатьОбъект("Справочник.Клиенты");
Пункт=СоздатьОбъект("Справочник.ПунктыРазгрузки");
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица6");
Таб.ВывестиСекцию("Шапка");
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Клиент");
ТЗ.НоваяКолонка("ПунктРазгрузки");
ТЗ.НоваяКолонка("Акция");
ТЗ.НоваяКолонка("С");
ТЗ.НоваяКолонка("По");
СпрК.ВыбратьЭлементы();
пока СпрК.ПолучитьЭлемент()=1 Цикл
Пункт.ИспользоватьВладельца(СпрК.ТекущийЭлемент());
Пункт.ВыбратьЭлементы();
пока Пункт.ПолучитьЭлемент()=1 Цикл
Если Пункт.ПометкаУдаления()=1 Тогда
Продолжить;
КонецЕсли;
Если Пункт.Акция.Выбран()=1 тогда
Док=СоздатьОбъект("Документ.Скидка");
Док=Пункт.Акция;
Если Док.Проведен()=1 тогда
ТЗ.НоваяСтрока();
ТЗ.Клиент=СпрК.ТекущийЭлемент();
ТЗ.ПунктРазгрузки=Пункт.ТекущийЭлемент();
ТЗ.Акция=Пункт.Акция;
ТЗ.С=Пункт.Акция.ДатаС;
ТЗ.По=Пункт.Акция.ДатаПо;
КонецЕсли;
КонецЕсли;
Если Пункт.Акция1.Выбран()=1 тогда
Док=СоздатьОбъект("Документ.Скидка");
Док=Пункт.Акция1;
Если Док.Проведен()=1 тогда
ТЗ.НоваяСтрока();
ТЗ.Клиент=СпрК.ТекущийЭлемент();
ТЗ.ПунктРазгрузки=Пункт.ТекущийЭлемент();
ТЗ.Акция=Пункт.Акция1;
ТЗ.С=Пункт.Акция1.ДатаС;
ТЗ.По=Пункт.Акция1.ДатаПо;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТЗ.Сортировать("Акция");
Акц="";
Кл="";
Сч=0;
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Если ТЗ.Акция<>"" Тогда
ТабКл=ТЗ.Клиент;
ТабПР=ТЗ.ПунктРазгрузки;
ТабАкц=ТЗ.Акция;
ТабПер="С "+ТЗ.С+" по "+ТЗ.ПО;
Если (Акц<>ТЗ.Акция) или (Кл<>ТЗ.Клиент) Тогда
Если (Кл<>ТЗ.Клиент) и (Акц=ТЗ.Акция) Тогда
ТабАкц="";
ТабПер="";
КонецЕсли;
Таб.ВывестиСекцию("Строка");
Акц=ТЗ.Акция;
Кл=ТЗ.Клиент;
Иначе
ТабКл="";
ТабАкц="";
ТабПер="";
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЕсли;
КонецЦикла;



это у меня выводит только перечень клиентов с ПР по каждой из акции. Не могу смекнуть как привязать товары к акции. Ведь документ привязан к каждому ПР и по несколько раз, а нужно взять его только один раз. ((((
 

puh14

Well-known member
11.07.2008
1 412
0
#5
ТекстЗапроса = "Период с ВыбНач по ВыбКон;
|Обрабатывать Все;
|ОбрабатыватьДокументы Проведенные;
|Клиент = Справочники.Клиенты.ТекущийЭлемент;
|Пр=Справочник.ПунктыРазгрузки.ТекущийЭлемент;
|Акция= Справочник.ПунктыРазгрузки.Акция;
|Акция1= Справочник.ПунктыРазгрузки.Акция1;
|Товар = Документ.ПунктыРазгрузки.Акция.Товар, Документ.ПунктыРазгрузки.Акция1.Товар;
|Группировка Клиент БезГрупп;
|ГРуппировка Пр Все;
|ГРуппировка Акция;
|ГРуппировка Акция1;
|Группировка Товар БезГрупп;
|Условие(Пр.Владелец = Клиент);

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

Потом куришь ТЗ ( выведи его на форму для лучшего отображения) и смотришь что не хватает.

В синтаксисе могут быть ошибки - отлаживай вживую. Даты акций вытаскиваешь при выводе группировки акций
 
4

4xter

#6
а если акция действует в нескольких ПР не будет ли постоянного дублирования позиций? но всё равно спасибо, проверю
 

puh14

Well-known member
11.07.2008
1 412
0
#7
Так у тебя должно показывать в каких ПР идет акция для клиента - будет конечно.
 
Статус
Закрыто для дальнейших ответов.