Имя: Пароль:
1C
1С v8
1с 8.2
, ,
0 Arutynov
 
25.07.12
10:06
Здравствуйте, я начинающий прграммист 1с 8.2. Только устроивщись на работу мне дали задание написать платежный календарь, справочкики и документы я сделал, а вот с отчетом проблема(я в тонком клиенте работаю)я могу вывести всю информацию, но не могу вывести например по периоду или документы определенного контрагента. Помогите пожалуйста если знаете.Я пробовал как на толстом клиенте-не работает!!!!!Заранее спасибо!!!!
1 Азат
 
25.07.12
10:07
(0) давай начнем с предоплаты в 5000 рублей...
2 kuromanlich
 
25.07.12
10:07
(1) ну что так сразу?
3 Гефест
 
25.07.12
10:07
Значит, ты что то там сделал, оно не работает, а почему не работает - мы должны знать?
4 butterbean
 
25.07.12
10:08
(0) а отбор в скд?? причем это пользователь делает
5 Arutynov
 
25.07.12
10:08
пишет не определена дата
6 Arutynov
 
25.07.12
10:08
Неодходимо без СКД
7 Arutynov
 
25.07.12
10:13
Процедура Заполнить(ТабДок)
   ТабДок.Очистить();
   макет=Отчеты.Отчет1.ПолучитьМакет( "Макет1");
   //ОблШапка=Макет.ПолучитьОбласть("Шапка" );
   //ОблЭлемент=Макет.ПолучитьОбласть("Элемент" );
   //ОблШапка.Параметры.Дата=ТекущаяДата();
   //ТабДок.Вывести (ОблШапка);
Макет = Отчеты.Отчет1.ПолучитьМакет("Макет1");
   Запрос = Новый Запрос;
   
   Запрос.Текст =
       "ВЫБРАТЬ
       |    Счет_На_Оплату.Номер,
       |    Счет_На_Оплату.Дата,
       |    Счет_На_Оплату.Номер_Клиента,
       |    Счет_На_Оплату.Контрагент,
       |    ПРЕДСТАВЛЕНИЕ(Счет_На_Оплату.Контрагент),
       |    Счет_На_Оплату.Платеж,
       |    ПРЕДСТАВЛЕНИЕ(Счет_На_Оплату.Платеж),
       |    Счет_На_Оплату.Форма_Оплаты_К,
       |    Счет_На_Оплату.Критичная_Дата_Платежа,
       |    Счет_На_Оплату.Сумма
       |ИЗ
       |    Документ.Счет_На_Оплату КАК Счет_На_Оплату
       |ГДЕ
       |   Счет_На_Оплату.Дата МЕЖДУ &Дат И &Дат1"
       ;
       

               

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

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
       ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;
           ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);
   
   
       
   //Выборка = Документы.Счет_На_Оплату.Выбрать(НачПериода,КонецДня(КонПериода));
   //Пока Выборка.Следующий() Цикл
   //    Если Выборка.Дата Тогда
   //        Продолжить;
   //    КонецЕсли;
   //КонецЦикла;


   
//Выборка=Документы.Счет_На_Оплату.Выбрать();

//
//Пока Выборка.Следующий()цикл
//    ОблЭлемент.Параметры.Заполнить(Выборка);
//    ТабДок.Вывести(ОблЭлемент);
   
   //КонецЦикла
КонецПроцедуры


&НаСервере
Процедура ВыбПериодНажатие(Элемент)
   НастройкаПериода = Новый НастройкаПериода;
   НастройкаПериода.РедактироватьКакИнтервал = Истина;
   НастройкаПериода.РедактироватьКакПериод = Истина;
   НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
   НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
   Если НастройкаПериода.Редактировать() Тогда
       НачПериода = НастройкаПериода.ПолучитьДатуНачала();
       КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
   КонецЕсли;
КонецПроцедуры





Код примерно такой!!!!
8 Agent ООЗ
 
25.07.12
10:13
прекрасное название темы, не хватает только КАПСЛОКА.
9 Азат
 
25.07.12
10:14
(0) ну так что, помочь тебе?
10 neomarat
 
25.07.12
10:15
напиши ошибку полностью - телепатия не в моде
11 Arutynov
 
25.07.12
10:17
{Отчет.Отчет1.Форма.ФормаОтчета.Форма(43,35)}: Переменная не определена (НачПериода)
   Запрос.УстановитьПараметр("Дат", <<?>>НачПериода);
{Отчет.Отчет1.Форма.ФормаОтчета.Форма(44,45)}: Переменная не определена (КонПериода)
   Запрос.УстановитьПараметр("Дат1", КонецДня(<<?>>КонПериода));
12 Agent ООЗ
 
25.07.12
10:18
лицорука
13 neomarat
 
25.07.12
10:20
ну так у тебя не определены НачПериода и КонПериода - в чем вопрос то?
14 Arutynov
 
25.07.12
10:22
На форме у меня есть поля ввода  НачПериода и КонПериода, почему они не определены?
15 vicof
 
25.07.12
10:22
(14) это не 7.7
16 Arutynov
 
25.07.12
10:23
8.2
17 vicof
 
25.07.12
10:23
(14) Данные у этих элементов формы какие?
18 neomarat
 
25.07.12
10:23
Сделай так: Отчет.НачПериода если это реквизиты отчета конечно
19 geka-geka
 
25.07.12
10:23
Моежет сначала параметры установить, а потом выполнить запрос?
20 Cashtane
 
25.07.12
10:24
(19) Дело говорит.
21 neomarat
 
25.07.12
10:24
эх, Азат походу не сможет заработать - народу в тему набилось...
22 neomarat
 
25.07.12
10:25
(19) а точно блин. даже в голову не пришло что можно так сделать ))
23 Азат
 
25.07.12
10:33
(21) да пофиг, пойду в старбакс кофе попью лучше
24 Arutynov
 
25.07.12
11:11
Я Устонавил параметр вручную перед запросом вот таким образом
   НачПериода='2012-07-01';
   КонПериода='2012-07-06';
Теперь он говорит
{Отчет.Отчет1.Форма.ФормаОтчета.Форма(51)}: Ошибка при вызове метода контекста (Выполнить)
   Результат = Запрос.Выполнить();
по причине:
{(15, 30)}: Не задано значение параметра "НачПериода"
Счет_На_Оплату.Дата МЕЖДУ <<?>>&НачПериода И &КонПериода
25 vasilii85
 
25.07.12
11:20
"Вручную" это как?
26 Arutynov
 
25.07.12
11:21
НачПериода='2012-07-01';
  КонПериода='2012-07-06';
Я это имел ввиду вручную
27 vasilii85
 
25.07.12
11:23
НачПериода='2012-07-01';  - Это что?
28 Arutynov
 
25.07.12
11:25
когда указываешь период чтобы вывести документ нужно указать начало и конец, так это начало
29 VasjaIvanov
 
25.07.12
11:26
20120701
30 Arutynov
 
25.07.12
11:27
можно и так 20120701 и так 2012-07-01 -это одно и тоже
31 vasilii85
 
25.07.12
11:32
Ты параметры установил? см(19)
32 vasilii85
 
25.07.12
11:32
Покажи как.
33 WASSAW
 
25.07.12
14:13
Та же проблемма была. От неопытности ушел на "Обычное приложение" и "Толстый клиент". Сразу все пошло - я Семерочник со стажем.
Самому интересно узнать как тебе помогут.
Причина: У меня так же грозит написание управляемого приложения под тонким клиентом, причем однозначно под WEB.
34 WASSAW
 
25.07.12
14:16
То есть "как корректно передать из формы на тонком клиенте период на сервер, что бы потом заформировать запрос по переданному периоду, и получить обратно на клиент результаты отработки запроса".
35 EasyRider
 
25.07.12
14:17
Слабо вяжется это "Счет_На_Оплату.Дата МЕЖДУ <<?>>&НачПериода И &КонПериода" и это "Запрос.УстановитьПараметр("Дат", <<?>>НачПериода);"
36 WASSAW
 
25.07.12
14:32
могу ошибаться, но это была попытка использовать заготовку (имеющийся) отчет от толстого клиента обычного приложения. И попытка его использовать для тонкого клиента управляемого приложения. ТАК НЕ ПРОКАТИТ. )) и еще, если я прав, то на толстом произойдет присвоение НачПериода переменной Дат и.т.д и все будет вязаться. А вот для тонкого - нет.
37 WASSAW
 
25.07.12
14:35
как для тонкого правильно сделать - не знаю - опыта маловато. поэтому не умничаю - жду гуру отзывов.
38 hhhh
 
25.07.12
14:47
может за Азатом пора сходить?
39 Cashtane
 
25.07.12
14:48
(38) Думаешь не перебор?
40 Cashtane
 
25.07.12
14:51
Я тоже в хлам новичок, но задача не сложна. У меня тонкий клиент только дома. Вечером доберусь - решим.
41 hhhh
 
25.07.12
14:53
просто все чувствуется накурились, он один кофе пил.
42 WASSAW
 
25.07.12
15:04
а что не понятно то?
Если клиент толстый, то форма то на СЕРВЕРЕ и НачДата - это переменная УЖЕ НА СЕРВЕРЕ, запрос просто ныряет и берет из неё значение.
А вот если клиент тонкий и управляемое приложение, то НачДата на КЛИЕНТЕ (даже в браузере на другом конце света через инет), тогда СЕРВЕР её НЕ НАЙДЕТ у себя. То есть нужно позаботится о передаче значения переменной НачДата из КЛИЕНТА на СЕРВЕР.
43 nikitaclanbox
 
25.07.12
15:13
(14) обратиться к значениям элементов формы можно так:
ЭлементыФормы.НачПериода.Значение
ЭлементыФормы.КонПериода.Значение
44 Yorokonde
 
25.07.12
15:16
Для начала хотелось бы все таки понять с какими данными связаны поля ввода на форме? :)
С реквизитами формы? С реквизитами отчета?
Выбирай поле ввода, Alt+Enter и кинь сюда содержание свойства "ПутьКДанным"
45 Yorokonde
 
25.07.12
15:26
В общем если это реквизиты формы, тогда при установке параметров используешь их напрямую (при условии что процедура с директивой &НаСервере, и реквизиты формы там видны:
Запрос.УстановитьПараметр("Дат", НачПериода);
Запрос.УстановитьПараметр("Дат1", КонецДня(КонПериода));

Если это реквизиты отчета, тогда если ты создал Внешнюю обработку вместо Внешнего отчета
Запрос.УстановитьПараметр("Дат", Объект.НачПериода);
Запрос.УстановитьПараметр("Дат1", Объект.КонецДня(КонПериода));

А если всетаки внешний отчет то
Запрос.УстановитьПараметр("Дат", Отчет.НачПериода);
Запрос.УстановитьПараметр("Дат1", Отчет.КонецДня(КонПериода));

В остальном все должно работать, только строка
Сообщить("Номер= "+Результат.Номер+" Дата= "+Результат.Дата);
напрягает. Не совсем понятно как ты хочешь взять поля дата и номер из РезультатаЗапроса
46 WASSAW
 
25.07.12
15:45
Yorokonde - красава. Я вообще не заметил (блин опыта бы побольше :-(, что ведь верно - это мало того, что заготовка от толстого клиента, но и еще и от "Внешней обработки", которую пытаются прилепить к "тонкому" к "Внешнему отчету".
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс