Имя: Пароль:
1C
1С v8
Построитель отчета 8.2
,
0 Валидатор
 
30.04.13
11:07
Делаю отчет на построителе: нарисовал макет, добавил форму отчета, с размещенным на ней параметром (СсылкаНаОбъект) отчет формирует данные по выбранному документу в этом поле. Далее задаю действие для кнопки сформировать:

Процедура КнопкаСформироватьНажатие(Кнопка)
   Построитель = Новый ПостроительОтчета;
   
   ПолучениеКода = СтрЗаменить(СсылкаНаОбъект.Подразделение.ПолныйКод(), "/", Символы.ПС);
   НаименованиеПодразделения = Справочники.Подразделения.НайтиПоКоду(ПолучениеКода);
   
   Построитель.Текст ="ВЫБРАТЬ
   |    ПланЗакупокСоставПлана.Номенклатура.Артикул КАК НоменклатураАртикул,
   |    ПланЗакупокСоставПлана.Номенклатура КАК Номенклатура,
   |    ПланЗакупокСоставПлана.Количество,
   |    ПланЗакупокСоставПлана.Цена КАК Цена,
   |    ПланЗакупокСоставПлана.ттДатаИзвещения КАК ДатаИзвещения,
   |    ПланЗакупокСоставПлана.Ссылка.ДатаПланирования,
   |    ПланЗакупокСоставПлана.ЕдиницаИзмерения.Код,
   |    ПланЗакупокСоставПлана.ЕдиницаИзмерения.Наименование,
   |    ПланЗакупокСоставПлана.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК МинимальныеТребования,
   |    ПланЗакупокСоставПлана.ттСпособЗакупки КАК СпособЗакупки,
   |    ВЫБОР
   |        КОГДА ПланЗакупокСоставПлана.Ссылка.КПЗ = ИСТИНА
   |            ТОГДА ""да""
   |        ИНАЧЕ ""нет""
   |    КОНЕЦ КАК Закупка,
   |    ВЫБОР
   |        КОГДА ЕСТЬNULL(ПланЗакупокСоставПлана.Номенклатура.Артикул, """") = """"
   |            ТОГДА """"
   |        ИНАЧЕ ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 1, 2) + ""."" + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 3, 2) + ""."" + ПОДСТРОКА(ПланЗакупокСоставПлана.Номенклатура.Артикул, 5, 100)
   |    КОНЕЦ КАК Артикул,
   |    &Параметр
   |ПОМЕСТИТЬ втПараметр
   |{ВЫБРАТЬ
   |    НоменклатураАртикул,
   |    Номенклатура.*,
   |    Количество,
   |    Цена,
   |    ДатаИзвещения,
   |    ДатаПланирования,
   |    ЕдиницаИзмеренияКод,
   |    ЕдиницаИзмеренияНаименование,
   |    МинимальныеТребования,
   |    СпособЗакупки.*,
   |    Закупка,
   |    Артикул,
   |    Параметр}
   |ИЗ
   |    Документ.ПланЗакупок.СоставПлана КАК ПланЗакупокСоставПлана
   |ГДЕ
   |    ПланЗакупокСоставПлана.Ссылка = &Ссылка
   |;
   |
   |////////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ
   |    ттРегионПоставки.кодОКАТО,
   |    ттРегионПоставки.Наименование,
   |    втПараметр.НоменклатураАртикул,
   |    втПараметр.Номенклатура,
   |    втПараметр.Количество,
   |    втПараметр.Цена,
   |    втПараметр.ДатаИзвещения,
   |    втПараметр.ДатаПланирования,
   |    втПараметр.ЕдиницаИзмеренияКод,
   |    втПараметр.ЕдиницаИзмеренияНаименование,
   |    втПараметр.МинимальныеТребования,
   |    втПараметр.СпособЗакупки,
   |    втПараметр.Закупка,
   |    втПараметр.Артикул,
   |    втПараметр.Параметр
   |{ВЫБРАТЬ
   |    кодОКАТО,
   |    Наименование,
   |    НоменклатураАртикул,
   |    Номенклатура.*,
   |    Количество,
   |    Цена,
   |    ДатаИзвещения,
   |    ДатаПланирования,
   |    ЕдиницаИзмеренияКод,
   |    ЕдиницаИзмеренияНаименование,
   |    МинимальныеТребования,
   |    СпособЗакупки.*,
   |    Закупка,
   |    Артикул,
   |    Параметр}
   |ИЗ
   |    втПараметр КАК втПараметр
   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ттРегионПоставки КАК ттРегионПоставки
   |        ПО втПараметр.Параметр = ттРегионПоставки.Подразделение";
   
   Построитель.Параметры.Вставить("Ссылка", СсылкаНаОбъект);
   Построитель.Параметры.Вставить("Параметр", НаименованиеПодразделения);
   Построитель.ЗаполнитьНастройки();
   //Здесь можно дать пользователю возможность
   //изменить настройки построителя отчета
   Построитель.Макет = ПолучитьМакет("Макет");
   Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Классика);
   Построитель.ОформитьМакет();
   Построитель.Выполнить();
   Построитель.Вывести();
КонецПроцедуры
но в результате открывается пустой табличный документ
1 Wobland
 
30.04.13
11:07
это ты хвастаешься?
2 Валидатор
 
30.04.13
11:09
это я спрашиваю, почему пустой документ в итоге
3 НЕА123
 
30.04.13
11:11
(2)
нету полей, нечего выводить, имхо.
4 Wobland
 
30.04.13
11:11
(2) спрашиваешь? а куда ты его выводишь?
5 Конфигуратор1с
 
30.04.13
11:12
(0) Построитель отчета на 8.2? чем скд то не угодило?
6 Валидатор
 
30.04.13
11:26
да там проблема вот в чем, если посмотреть в (0), то
 ПолучениеКода = СтрЗаменить(СсылкаНаОбъект.Подразделение.ПолныйКод(), "/", Символы.ПС);
   НаименованиеПодразделения = Справочники.Подразделения.НайтиПоКоду(ПолучениеКода);
в этих строчках мы получаем параметр, который в дальнейшем передаем в запрос, но получается так, что этот параметр сработает только при выборе определенного документа, то есть, если я захочу посмотреть документы за период, будет ошибка, и я не знаю как сделать по другому(
7 Wobland
 
30.04.13
11:28
(6) в этих строчках ты получаешь пустую ссылку. не находит оно у тебя головное подразделение по такому коду
8 Wobland
 
30.04.13
11:29
СтрЗаменить(ПодразделениеВДокументе.ПолныйКод(), "/", Символы.ПС) - в первой строке полученного текста код нужного тебе головного подразделения. © MSII
читать до просветления
9 Валидатор
 
30.04.13
11:29
(7) конечно не находит, потому что документ не выбран, по которому искать, а нужно чтобы автоматически брались доки за период какой то, вот я о чем спрашиваю
10 Wobland
 
30.04.13
11:30
(9) ты ещё ни разу в этой ветке не спросил. и определись уже с вопросом
11 Валидатор
 
30.04.13
11:31
(10) Как вывести данные по всем документам за период в отчет?
12 Wobland
 
30.04.13
11:32
(11) я вот так делал (ГДЕ Дата МЕЖДУ)

   "ВЫБРАТЬ
   |    КассовыйДокумент.Ссылка
   |ИЗ
   |    Документ.<<ТаблицаДокумента>> КАК КассовыйДокумент
   |ГДЕ
   |    КассовыйДокумент.Организация = &Организация
   |    И КассовыйДокумент.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
   |
   |УПОРЯДОЧИТЬ ПО
   |    КассовыйДокумент.Дата";
   Запрос.Текст=СтрЗаменить(Запрос.Текст, "<<ТаблицаДокумента>>", ВидДокумента);
13 Валидатор
 
30.04.13
16:55
делаю через СКД, скажите, можно ли
СтрЗаменить(ПодразделениеВДокументе.ПолныйКод(), "/", Символы.ПС) - в первой строке полученного текста код нужного тебе головного подразделения. © MSII
вот такое условие запихнуть в СКД, потому что результатом этого условия мы получаем параметр, который используем при построении отчета
14 Wobland
 
30.04.13
17:03
(13) можно. поискать подразделение по коду и запихать его в параметр
2 + 2 = 3.9999999999999999999999999999999...