Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 07:55

Иерархический поиск картинки.

Автор sveya, 02 апр 2014, 19:28

0 Пользователей и 1 гость просматривают эту тему.

sveya

Обращаюсь к знающим людям. Задача: необходимо во внешней печатной форме "Счет на оплату" вывести картинку снизу. Для этого создается дополнительный справочник "Реклама" (см. прилагаемый файл), в котором указывается путь к картинке и в табличной части выбирается номенклатура (а именно группы, в моем случае группа "Проф"), для которой эта картинка будет действовать. Если  документ "Счет на оплату покупателю" в своей табличной части содержит номенклатуру, которая входит в эту группу "Проф", то, соответственно, в печатной форме выводится картинка, назначенная родителю - группе "Проф". Пишу запрос:

"ВЫБРАТЬ
| Номенклатура.Родитель КАК ГруппаНоменклатуры
|ПОМЕСТИТЬ Группы
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В(&МассивНоменклатуры)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РекламаНоменклатура.Ссылка,
| РекламаНоменклатура.Ссылка.ПутьККартинке
//| РекламаНоменклатура.Номенклатура
|ИЗ
| Группы КАК Группы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Реклама.Номенклатура КАК РекламаНоменклатура
| ПО Группы.ГруппаНоменклатуры = РекламаНоменклатура.Номенклатура
|ГДЕ
| РекламаНоменклатура.Ссылка.ДатаНач <= &Дата
| И РекламаНоменклатура.Ссылка.ДатаКон >= &Дата";
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() цикл
МассивРекламы.Добавить(Результат.Ссылка);
КонецЦикла;

Если МассивРекламы.Количество() = 0 тогда
Выборка = Справочники.Реклама.Выбрать();
Пока Выборка.Следующий() цикл
Если Выборка.ДатаНач <= ТекущаяДата() И Выборка.ДатаКон > ТекущаяДата() И Выборка.ПометкаУдаления = Ложь тогда
МассивРекламы.Добавить(Выборка.Ссылка);
КонецЕсли;
КонецЦикла;
КонецЕсли;

Если МассивРекламы.Количество() = 0 тогда
Сообщить("Нет подходящих рекламных вставок");
Возврат ТабДок;
КонецЕсли;



Но! Проблема в том, что я ищу картинку только у родителя, поэтому если у родителя картинки нет, то нужно искать у вышестоящей папки, то есть у "родителя родителя" и так далее. И, следовательно, запрос изменится. Помогите, пожалуйста. Уже все перепробовала, больше нет мыслей. Спасибо!

Besart

1. вам нужно не внутреннее соединение, а левое, чтобы выходили все группы номенклатуры
2. группы у которых нет ссылки - РекламаНоменклатура.Ссылка помещать в таблицу значений, которую затем гонять в цикле пока не заполняться все РекламаНоменклатура.Ссылка или у группы будет Родитель = ПустаяСсылка, т.е. пока не будет достигнута самая верхняя группа

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск