• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

4xter

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

Вложения

  • _____.txt
    12 КБ · Просмотры: 179
V

vbs

Сумбурно изложено, но попробую предположить следующее :
Если акция - конкретный документ, то что мешает вытащить из табличной части этого документа товары ?
 
P

puh14

Все можно сделать в запросе. Максимум в двух ;-)
 
4

4xter

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



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

puh14

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

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

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

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

4xter

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

puh14

Так у тебя должно показывать в каких ПР идет акция для клиента - будет конечно.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!