Имя: Пароль:
1C
 
Как засунуть договор в построитель отчета?
,
0 Мисти
 
03.09.16
22:54
ПостроительОтчета =   Новый  ПостроительОтчета;
    Поле = ПостроительОтчета.Отбор.Добавить("Договор","Договор","Договор");
Украла где-то такой кусочек, но так она не ест!
Мне нужно смоделировать вызов интерактивной процедуры, где отбор заполняется руками. Тип значения передаваемого реквизита потом - ПостроительОтчета, что туда запихнуть я знаю.
1 wertyu
 
03.09.16
22:58
Поле = ПостроительОтчета.Отбор.Добавить("Договор")
2 wertyu
 
03.09.16
22:59
а потом присвоить значение
3 Мисти
 
03.09.16
23:02
wertyu, а вот не нравится ему это!
{ВнешняяОбработка.ВосстановитьВзаиморасчетыПо60счету.Форма.Форма.Форма(93)}: Ошибка при вызове метода контекста (Добавить)
    Поле = ПостроительОтчета.Отбор.Добавить("Договор","Договор","Договор");
по причине:
Недопустимое значение параметра (параметр номер '1')
4 wertyu
 
03.09.16
23:03
у тебя поле Договор есть в построителе?
5 wertyu
 
03.09.16
23:04
сам построитель чему равен?
6 Мисти
 
03.09.16
23:08
ПостроительОтчета.ДоступныеПоля.Добавить("Договор") - может, сначала доступные поля добавить?
Я его только что создала - ПостроительОтчета =   Новый  ПостроительОтчета; Ничего у меня там нет пока
7 wertyu
 
03.09.16
23:16
(6) ты в какой конфигурации?
8 Мисти
 
03.09.16
23:18
упп
9 wertyu
 
03.09.16
23:19
(8) ты новый отчёт делаешь? или меняешь старый?
10 Мисти
 
03.09.16
23:27
Там есть обработка ПодборПараметровРасшифровкиПлатежа
Мне нужно, чтобы она отработала не открываясь. Обычно онаработает интерактивно, но там есть вариант и "изнутри"
Я вызываю процедуру
    УправлениеДенежнымиСредствами.ЗаполнитьРасшифровкуПлатежей(СтруктураПараметров);
А в структуру параметров помимо прочего вставлено
    СтруктураПараметров.Вставить("СтруктураПараметровАвто"        ,СтруктураПараметровАвто);

а в нее предварительно -
    СтруктураПараметровАвто.Вставить("ОтборПоДоговорам",ПостроительОтчета.Отбор);    

И вот в этот построитель мне нужно воткнуть свой договор
11 youalex
 
03.09.16
23:57
(0) а вот не нужно всякую гадость в построитель пихать.
12 wertyu
 
04.09.16
00:01
(10) это для документов платежей
13 wertyu
 
04.09.16
00:04
там нет никаких построителей отчёта
14 Мисти
 
04.09.16
00:04
Да, правильно. У меня всё работало (обработка, которая заполняла все табличные части списания с р/с документами поступления товаров (нужными), пока не оказалось, что там нужно заполнять строго по договору.
15 wertyu
 
04.09.16
00:05
соберись, и опиши задачу
16 Мисти
 
04.09.16
00:05
(13) есть! Реквизит ПостроительОтбораДоговоров типа "построительОтчетов"
17 wertyu
 
04.09.16
00:06
(11) надо помочь, взрослая девушка
18 wertyu
 
04.09.16
00:06
(14) какой документ?
19 Мисти
 
04.09.16
00:08
В цикле работает такая процедура -
Процедура ЗаполнитьПоруч(ПлатПоруч)
    Док = ПлатПоруч.Ссылка;    
    ДокОбъект = ПлатПоруч.ПолучитьОбъект();
    Если ДокОбъект.Проведен Тогда
        ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    КонецЕсли;
    ДДС = ДокОбъект.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств;
    ДокОбъект.РасшифровкаПлатежа.Очистить();
    СтруктураПараметровАвто = Новый Структура;
    СтруктураПараметровАвто.Вставить("УчитыватьФактическиеЗадолженности",Истина);
    СтруктураПараметровАвто.Вставить("УчитыватьОперативныеЗадолженности",Ложь);
    СтруктураПараметровАвто.Вставить("ПодбиратьСумму",Истина);
    СтруктураПараметровАвто.Вставить("СпособЗаполнения","ФИФО");
    СтруктураПараметровАвто.Вставить("СуммаДляПодбора",Док.СуммаДокумента);
    СтруктураПараметровАвто.Вставить("ПоЗаявкам",Ложь);
    СтруктураПараметровАвто.Вставить("ПодбиратьПланируемыеДвижения",Ложь);
    СтруктураПараметровАвто.Вставить("НеПревышатьЗапланированныхЗначений",Ложь);
    СтруктураПараметровАвто.Вставить("ВключенныеВПлатежныйКалендарь",Ложь);
    СтруктураПараметровАвто.Вставить("ПодборПоСуммеПлатежа",Истина);
    
    // Юля сентябрь 2016                                         //СтруктураПараметровАвто.ОтборПоДоговорам
    ПостроительОтчета =   Новый ПостроительОтчета;
    
    Поле = ПостроительОтчета.ДоступныеПоля.Добавить("ДоговорКонтрагента", "Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));
    //Поле.Измерение = Истина;
    //Поле.Отбор = Истина;
    //Отбор =  ПостроительОтчета.Отбор;
    Поле = ПостроительОтчета.Отбор.Добавить("Договор","Договор","Договор");
    Поле.Использование = Истина;
    Поле.ВидСравнения = ВидСравнения.Равно;
    Поле.Значение = Док.РасшифровкаПлатежа[0].ДоговорКонтрагента;
    Поле.ПутьКДанным = "ДоговорКонтрагента";
    
    
    СтруктураПараметровАвто.Вставить("ОтборПоДоговорам",ПостроительОтчета.Отбор);    
    
    СтруктураПараметров = Новый Структура;
    
    СтруктураПараметров.Вставить("Организация"                    ,Док.Организация);
    СтруктураПараметров.Вставить("Контрагент"                    ,Док.Контрагент);
    СтруктураПараметров.Вставить("ВалютаДокумента"                ,Док.ВалютаДокумента);
    СтруктураПараметров.Вставить("СуммаДокумента"                ,Док.СуммаДокумента);
    СтруктураПараметров.Вставить("ДатаДок"                        ,Док.Дата);
    СтруктураПараметров.Вставить("ВидОперацииДок"                ,Док.ВидОперации);
    СтруктураПараметров.Вставить("РасшифровкаПлатежа"            ,ДокОбъект.РасшифровкаПлатежа);
    СтруктураПараметров.Вставить("КурсДокумента"                ,1);
    СтруктураПараметров.Вставить("КратностьДокумента"            ,1);
    Если     ТипЗнч(Док) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее") Тогда
        СтруктураПараметров.Вставить("ТипЗадолженности"                ,"<0");
    Иначе
        СтруктураПараметров.Вставить("ТипЗадолженности"                ,">0");
    КонецЕсли;
    СтруктураПараметров.Вставить("Интерактивно"                    ,Ложь);
    СтруктураПараметров.Вставить("ПлатежПоСуммеВзаиморасчетов"    ,Ложь);
    СтруктураПараметров.Вставить("СтруктураПараметровАвто"        ,СтруктураПараметровАвто);
    СтруктураПараметров.Вставить("ФормаОплаты"                    ,Перечисления.ВидыДенежныхСредств.Безналичные);
    СтруктураПараметров.Вставить("БанковскийСчетКасса"            ,Док.СчетОрганизации);
    СтруктураПараметров.Вставить("ВидОперацииПлан"                ,УправлениеДенежнымиСредствами.ОпределитьВидОперацииПлан(Док.ВидОперации));
    СтруктураПараметров.Вставить("ИмяРегистраПлан"                ,"ПланируемыеПоступленияДенежныхСредств");
    СтруктураПараметров.Вставить("СсылкаНаДокумент"                , ДокОбъект);
    СтруктураПараметров.Вставить("ОтражатьВБухгалтерскомУчете"    ,Док.ОтражатьВБухгалтерскомУчете);
    // - всё
    УправлениеДенежнымиСредствами.ЗаполнитьРасшифровкуПлатежей(СтруктураПараметров);
    //ДокОбъект.РасшифровкаПлатежа[0].СтатьяДвиженияДенежныхСредств = ДДС;
    Для каждого Стр из ДокОбъект.РасшифровкаПлатежа Цикл
        Стр.СтатьяДвиженияДенежныхСредств = ДДС;
    КонецЦикла;
    
    ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
20 Мисти
 
04.09.16
00:09
И всё было хорошо, только нужно еще договор туда вставить.
Вот этот кусок (он недоделанный) не работает -
  // Юля сентябрь 2016                                         //СтруктураПараметровАвто.ОтборПоДоговорам

    ПостроительОтчета =   Новый ПостроительОтчета;
    
    Поле = ПостроительОтчета.ДоступныеПоля.Добавить("ДоговорКонтрагента", "Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));
    //Поле.Измерение = Истина;

    //Поле.Отбор = Истина;

    //Отбор =  ПостроительОтчета.Отбор;

    Поле = ПостроительОтчета.Отбор.Добавить("Договор","Договор","Договор");
    Поле.Использование = Истина;
    Поле.ВидСравнения = ВидСравнения.Равно;
    Поле.Значение = Док.РасшифровкаПлатежа[0].ДоговорКонтрагента;
    Поле.ПутьКДанным = "ДоговорКонтрагента";
    
    
    СтруктураПараметровАвто.Вставить("ОтборПоДоговорам",ПостроительОтчета.Отбор);
21 youalex
 
04.09.16
00:10
(17) "что туда запихнуть я знаю." даже  не сомневаюсь
22 Мисти
 
04.09.16
00:10
(21) В том смысле, что у меня есть этот договор!
23 youalex
 
04.09.16
00:13
(22) то есть что запихнуть - уже есть, но оно - не запихивается? Хм. Попробуйте другой стороной.
24 wertyu
 
04.09.16
00:14
(19) а что у те в УправлениеДенежнымиСредствами.ЗаполнитьРасшифровкуПлатежей(
25 wertyu
 
04.09.16
00:14
у тебя*
26 wertyu
 
04.09.16
00:16
и в обработке проведения
27 youalex
 
04.09.16
00:17
(23) + в смысле - у построителя отчетов есть ДоступныеПоля (вроде так) - это то, куда можно пихать, и высовывать наружу.
Может там посмотреть (они создаются на базе или источника данных, или текста построителя)
28 wertyu
 
04.09.16
00:18
с чего ты вообще решила, что это построитель отчёта? мне просто интересно
29 Мисти
 
04.09.16
00:21
(28) Так обозначен тип реквизита.
30 wertyu
 
04.09.16
00:25
ты саму задачу напиши
31 Мисти
 
04.09.16
00:25
Как взять новый пустой
ПостроительОтчета =   Новый  ПостроительОтчета;
И  заполнить в нем отбор? Больше мне ничего не надо!
Там не строится отчет этим построителем, используется только отбор по договорам для задания данных дальше.
(24,26) Это не имеет значения.
Если у тебя есть УПП - посмотри, пожалуйста - прямо в базе при заполнении списка расшифровки платежей вызывается обработка, на отдельной закладке там список договоров. Вот мне его программно нужно заполнить (остальное всё программно заполняется и работает)
32 wertyu
 
04.09.16
00:27
// Юля сентябрь 2016                                         //СтруктураПараметровАвто.ОтборПоДоговорам

    ПостроительОтчета =   Новый ПостроительОтчета;
    
    Поле = ПостроительОтчета.ДоступныеПоля.Добавить("ДоговорКонтрагента", "Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"));

это просто трата места
33 Мисти
 
04.09.16
00:27
Я в 14 написала. В УПП типовой - или руками проставлять все документы (в ПТУ - оплату, в оплате - ПТУ и т.д.) или встроенной (что-то типа восстановления расчетов_, но если встроенной, то при любом перепроведении всё опять слетает. Мы решили смоделировать ручное заполнение, но чтобы оно работало автоматически. Сейчас речь только об автоматическом подборе документов в "списание с расчетного счета"
34 Мисти
 
04.09.16
00:29
(32) Я экспериментирую!
Поле = ПостроительОтчета.ДоступныеПоля.Добавить("ДоговорКонтрагента", "Договор", Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов")); - это работает, а     Поле = ПостроительОтчета.Отбор.Добавить("Договор","Договор","Договор");
- нет
35 wertyu
 
04.09.16
00:31
(34) это не эксперимент, у него конечного результата не будет

>>> пока не оказалось, что там нужно заполнять строго по договору.

по какому договору?
36 Мисти
 
04.09.16
00:33
Поле.Значение = Док.РасшифровкаПлатежа[0].ДоговорКонтрагента;
37 Мисти
 
04.09.16
00:34
Ну, я не знаю, чего этому построителю не хватает и почему он не понимает, что такое "отбор". Что-то я ему не задала еще!
38 wertyu
 
04.09.16
00:34
(36) это где?
39 youalex
 
04.09.16
00:35
(32) это просто трата места
ПОТРАЧЕНО (С)
40 wertyu
 
04.09.16
00:36
картинку этого построителя дай, на "отбор"
41 wertyu
 
04.09.16
00:37
(39) мисти детям преподаёт
42 Мисти
 
04.09.16
00:37
Нет картинки!!
43 wertyu
 
04.09.16
00:37
(42) сделай!
44 Мисти
 
04.09.16
00:37
(41) я??
45 Мисти
 
04.09.16
00:40
46 Мисти
 
04.09.16
00:43
В модуле "управлениеДенежнымиСредствами" работает такой кусок -
        СтруктураПараметровАвто=СтруктураПараметров.СтруктураПараметровАвто;
        
        ОбработкаОбъект.УчитыватьФактическиеЗадолженности=СтруктураПараметровАвто.УчитыватьФактическиеЗадолженности;
        ОбработкаОбъект.УчитыватьОперативныеЗадолженности=СтруктураПараметровАвто.УчитыватьОперативныеЗадолженности;
        ОбработкаОбъект.ПодбиратьСумму=СтруктураПараметровАвто.ПодбиратьСумму;
        ОбработкаОбъект.СпособЗаполнения=СтруктураПараметровАвто.СпособЗаполнения;
        ОбработкаОбъект.СуммаДляПодбора=СтруктураПараметровАвто.СуммаДляПодбора;
        ОбработкаОбъект.ПоЗаявкам=СтруктураПараметровАвто.ПоЗаявкам;
        ОбработкаОбъект.ПодбиратьПланируемыеДвижения=СтруктураПараметровАвто.ПодбиратьПланируемыеДвижения;
        ОбработкаОбъект.НеПревышатьЗапланированныхЗначений=СтруктураПараметровАвто.НеПревышатьЗапланированныхЗначений;
        ОбработкаОбъект.ВключенныеВПлатежныйКалендарь=СтруктураПараметровАвто.ВключенныеВПлатежныйКалендарь;
        
        Если СтруктураПараметровАвто.Свойство("ОтборПоДоговорам") Тогда
            ОбработкаОбъект.ПостроительОтбораДоговоров.УстановитьНастройки(СтруктураПараметровАвто.ОтборПоДоговорам, Истина, Ложь, Ложь, Ложь, Ложь)
        КонецЕсли;
47 Мисти
 
04.09.16
00:43
СтруктураПараметровАвто.ОтборПоДоговорам - вот эту штуку я пытаюсь задать в своей обработке.
48 wertyu
 
04.09.16
00:45
а в обработке?
49 Мисти
 
04.09.16
00:45
Что в обработке?
50 wertyu
 
04.09.16
00:45
ОбработкаОбъект=Обработки.ПодборПараметровРасшифровкиПлатежа.Создать();
51 Мисти
 
04.09.16
00:47
Я ее не запускаю, я сама задаю все параметры, как если бы она была запущена и передаю их в процедуру в управлениеДенежнымиСредствами
52 wertyu
 
04.09.16
00:48
которая её запускает
53 Мисти
 
04.09.16
00:48
В ней у меня нет построителя отчета. А надо?
54 wertyu
 
04.09.16
00:49
(53) ты обработку открой
55 Мисти
 
04.09.16
00:50
Процедура ЗаполнитьРасшифровкуПлатежей(СтруктураПараметров) Экспорт
    
    Если СтруктураПараметров.Организация.Пустая() Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Не указана организация.");
        Возврат;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(СтруктураПараметров.Контрагент) Тогда
        ОбщегоНазначения.СообщитьОбОшибке("Не указан контрагент.");
        Возврат;
    КонецЕсли;
    
    ОбработкаОбъект=Обработки.ПодборПараметровРасшифровкиПлатежа.Создать();
    ОбработкаОбъект.КурсДокумента                =СтруктураПараметров.КурсДокумента;
    ОбработкаОбъект.КратностьДокумента            =СтруктураПараметров.КратностьДокумента;
    ОбработкаОбъект.ТипЗадолженности            =СтруктураПараметров.ТипЗадолженности;
    ОбработкаОбъект.Контрагент                    =СтруктураПараметров.Контрагент;
    ОбработкаОбъект.ФормаОплаты                    =СтруктураПараметров.ФормаОплаты;
    ОбработкаОбъект.ИмяРегистраПлан                =СтруктураПараметров.ИмяРегистраПлан;
    ОбработкаОбъект.ВидОперацииПлан                =СтруктураПараметров.ВидОперацииПлан;
    ОбработкаОбъект.БанковскийСчетКасса            =СтруктураПараметров.БанковскийСчетКасса;
    ОбработкаОбъект.Организация                    =СтруктураПараметров.Организация;
    ОбработкаОбъект.ВалютаДокумента                =СтруктураПараметров.ВалютаДокумента;
    ОбработкаОбъект.ДатаДок                        =СтруктураПараметров.ДатаДок;
    ОбработкаОбъект.ВидОперацииДок                =СтруктураПараметров.ВидОперацииДок;
    ОбработкаОбъект.РасшифровкаПлатежаДок        =СтруктураПараметров.РасшифровкаПлатежа;
    ОбработкаОбъект.СуммаДляПодбора                =СтруктураПараметров.СуммаДокумента;
    ОбработкаОбъект.ПлатежПоСуммеВзаиморасчетов    =СтруктураПараметров.ПлатежПоСуммеВзаиморасчетов;
    СтруктураПараметров.Свойство("СсылкаНаДокумент", ОбработкаОбъект.ДокументСсылка);
    СтруктураПараметров.Свойство("ОтражатьВБухгалтерскомУчете", ОбработкаОбъект.ОтражатьВБухгалтерскомУчете);
    ОбработкаОбъект.ЕстьПодбор                    =Ложь;
    
    Если СтруктураПараметров.Интерактивно Тогда
        
        ТекстВидОперации=СтруктураПараметров.ВидОперацииДок.Метаданные().Имя;
        
        Если ТекстВидОперации="ВидыОперацийЗаявкиНаРасходование"
            ИЛИ ТекстВидОперации="ВидыОперацийПланируемоеПоступлениеДС" Тогда
            ФормаНастройки=ОбработкаОбъект.ПолучитьФорму("ПараметрыЗаполненияПлан");
            
        Иначе    
            ФормаНастройки=ОбработкаОбъект.ПолучитьФорму("ПараметрыЗаполнения");
        КонецЕсли;
        
        ФормаНастройки.ОткрытьМодально();
        
    Иначе
        
        СтруктураПараметровАвто=СтруктураПараметров.СтруктураПараметровАвто;
        
        ОбработкаОбъект.УчитыватьФактическиеЗадолженности=СтруктураПараметровАвто.УчитыватьФактическиеЗадолженности;
        ОбработкаОбъект.УчитыватьОперативныеЗадолженности=СтруктураПараметровАвто.УчитыватьОперативныеЗадолженности;
        ОбработкаОбъект.ПодбиратьСумму=СтруктураПараметровАвто.ПодбиратьСумму;
        ОбработкаОбъект.СпособЗаполнения=СтруктураПараметровАвто.СпособЗаполнения;
        ОбработкаОбъект.СуммаДляПодбора=СтруктураПараметровАвто.СуммаДляПодбора;
        ОбработкаОбъект.ПоЗаявкам=СтруктураПараметровАвто.ПоЗаявкам;
        ОбработкаОбъект.ПодбиратьПланируемыеДвижения=СтруктураПараметровАвто.ПодбиратьПланируемыеДвижения;
        ОбработкаОбъект.НеПревышатьЗапланированныхЗначений=СтруктураПараметровАвто.НеПревышатьЗапланированныхЗначений;
        ОбработкаОбъект.ВключенныеВПлатежныйКалендарь=СтруктураПараметровАвто.ВключенныеВПлатежныйКалендарь;
        
        Если СтруктураПараметровАвто.Свойство("ОтборПоДоговорам") Тогда
            ОбработкаОбъект.ПостроительОтбораДоговоров.УстановитьНастройки(СтруктураПараметровАвто.ОтборПоДоговорам, Истина, Ложь, Ложь, Ложь, Ложь)
        КонецЕсли;
        
        Если СтруктураПараметровАвто.ПоЗаявкам Тогда
            ОбработкаОбъект.ЗаполнитьРасшифровкуПоПланам();
        Иначе
            ОбработкаОбъект.ЗаполнитьРасшифровкуПоДолгам(СтруктураПараметровАвто.ПодборПоСуммеПлатежа,Ложь);
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры
56 Мисти
 
04.09.16
00:51
(54) Какую?
57 wertyu
 
04.09.16
00:51
ПодборПараметровРасшифровкиПлатежа
58 wertyu
 
04.09.16
00:52
нехило я прокачал
59 Мисти
 
04.09.16
00:52
Ну вот я эту картинку и прислала.
60 wertyu
 
04.09.16
00:53
(59) тебе там надо условие прописать в ПриОткрытии
61 Мисти
 
04.09.16
00:55
Это если не получится извне туда запихнуть, я так и хотела сделать сразу, но мне кажется, что можно и в параметр вызова засунуть, разве нет?
62 Мисти
 
04.09.16
00:56
И потом! Она у меня не открывается!!!
63 Мисти
 
04.09.16
00:58
в (55) написан код - там есть вариант, что это открыто интерактивно, а у меня - второй вариант. Она создается и заполняет мой документ расшифровкой.
64 wertyu
 
04.09.16
00:59
(61) так у тебя и есть параметры, целая структура
65 youalex
 
04.09.16
00:59
(61) я всё
66 Мисти
 
04.09.16
01:05
Есть, и вот эта штука - СтруктураПараметровАвто.ОтборПоДоговорам должна быть построителем отчета, в котором задан мой отбор.
67 Мисти
 
05.09.16
10:21
Не верю, что это невозможно!
68 Мисти
 
06.09.16
11:32
Ну что, не будет больше советов?
Построитель отчета нельзя передать как параметр?