Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 8.2 + Управляемая форма + динамический список + произвольный запрос (число прочтений - 12955 )
kentavr27
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 40
Зарегистрирован: 04. Июня 2008
8.2 + Управляемая форма + динамический список + произвольный запрос
12. Июня 2012 :: 14:53
Печать  
Вопрос знатокам управляемых форм.
в списке товаров есть динамический список, отображающий справочник.
Динамический список формируется на основании произвольного запрса. Запрос этот имеет вид:
[code]       //**************
     
     ТекстЗапроса="ВЫБРАТЬ
                  |      СправочникНоменклатура.Код,
                  |      СправочникНоменклатура.Наименование,
                  |      СправочникНоменклатура.Артикул,
                  |      СправочникНоменклатура.ЕдиницаИзмерения КАК Единица,
                  |      ТоварныйЗапасОстатки1.КоличествоОстаток1 КАК Остаток1,
                  |      ТоварныйЗапасОстатки2.КоличествоОстаток2 КАК Остаток2
                  |ИЗ
                  |      Справочник.Номенклатура КАК СправочникНоменклатура
                  |            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                  |                  ТоварныйЗапасОстатки.Товар КАК Товар,
                  |                  СУММА(ТоварныйЗапасОстатки.КоличествоОстаток) КАК КоличествоОстаток1
                  |            ИЗ
                  |                  РегистрНакопления.ТоварныйЗапас.Остатки КАК ТоварныйЗапасОстатки
                  |            ГДЕ
                  |                  ТоварныйЗапасОстатки.Подразделение = &текСклад1
                  |                  И ТоварныйЗапасОстатки.Фирма = &текФирма1
                  |            
                  |            СГРУППИРОВАТЬ ПО
                  |                  ТоварныйЗапасОстатки.Товар) КАК ТоварныйЗапасОстатки1
                  |            ПО СправочникНоменклатура.Ссылка = ТоварныйЗапасОстатки1.Товар
                  |            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                  |                  ТоварныйЗапасОстатки.Товар КАК Товар,
                  |                  СУММА(ТоварныйЗапасОстатки.КоличествоОстаток) КАК КоличествоОстаток2
                  |            ИЗ
                  |                  РегистрНакопления.ТоварныйЗапас.Остатки КАК ТоварныйЗапасОстатки
                  |            ГДЕ
                  |                  ТоварныйЗапасОстатки.Подразделение = &текСклад2
                  |                  И ТоварныйЗапасОстатки.Фирма = &текФирма2
                  |            
                  |            СГРУППИРОВАТЬ ПО
                  |                  ТоварныйЗапасОстатки.Товар) КАК ТоварныйЗапасОстатки2
                  |            ПО СправочникНоменклатура.Ссылка = ТоварныйЗапасОстатки2.Товар";
     
      //****************[/code]

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

Самомоу динамическому списку запрос передается след. способом
[code]       СписокСОстатками.ПроизвольныйЗапрос=Истина;
      СписокСОстатками.ТекстЗапроса=ТекстЗапроса;
      СписокСОстатками.ДинамическоеСчитываниеДанных=Истина;
      СписокСОстатками.ОсновнаяТаблица="Справочник.Номенклатура";[/code]

НО столкнулся с проблемой отображения результата в динамическом списке...
Ручками предусмотреть количество и содержание колонок невозможно. А как программно объяснить этим умным формам, что нужно отображать результат выполнения запрса, причем с программным выбором колонок (напрмер колонка "Стандарная картинка" в выводе не должна участвовать)?

И воторой (вытекающий) вопрос...
Как программно задать заголовки колонок? Вместо Остаток1 и Остаток2 нужно указать имена складов.
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: 8.2 + Управляемая форма + динамический список + произвольный запрос
Ответ #1 - 15. Июня 2012 :: 09:29
Печать  
Ну у тебя же на форме в любом случае есть элемент, который в свойстве "ПутьКДанным" ссылается на динамический список. А поскольку количество колонок в результирующем запросе динамическое, то и колонки списка на форме генерируются программно. Тебе нужно поменять заголовок поля надписи.
Я вот , например, в форме выбора справочника "Номенклатура" (УТ 11) в запрос ручками добавлял нужные мне колонки, а еще потом на форме в список добавлял эти колонки с конкретным заголовком, т.к. сама система их не выводит.
  

15-06-2012_13-30-04.png ( 132 KB | Загрузки )
15-06-2012_13-30-04.png
Наверх
 
IP записан
 
kentavr27
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 40
Зарегистрирован: 04. Июня 2008
Re: 8.2 + Управляемая форма + динамический список + произвольный запрос
Ответ #2 - 23. Июня 2012 :: 15:04
Печать  
[quote author=ReLock link=1339512820/0#1 date=1339752562]
Я вот , например, в форме выбора справочника "Номенклатура" (УТ 11) в запрос ручками добавлял нужные мне колонки, а еще потом на форме в список добавлял эти колонки с конкретным заголовком, т.к. сама система их не выводит.[/quote]

Вот именно! Ключевая фраза... "ручками добавлял на форме", чего я сделать не могу, потому как на момент конфигурирования неизвестно количество колонок и их заголовки.
Ведь текст окончательного запроса строится программно.
Теоретически доп. колонок может не быть вовсе, а может быть и 15 штук... Все решают установленные пользователем флажки в соответствующих справочниках.

В любом случае спасибо.
Проблема решена программным добавлением отображаемых колонок на форму:

[code]Для Каждого СтрокаСписка Из СписокДоступныхСкладов Цикл
      текСклад=СтрокаСписка.Значение;
      Если НЕ текСклад.ОтображатьВСправочнике Тогда
            Продолжить;
      КонецЕсли;
      ИмяКолонки=текСклад.ИмяКолонки;
      Эл=Элементы.Добавить(ИмяКолонки,Тип("ПолеФормы"),Элементы.СписокСОстатками);
      Эл.ПутьКДанным="СписокСОстатками."+ИмяКолонки;
КонецЦикла;[/code]





  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать