Вход | Регистрация


1С:Предприятие ::

Метки: 

Отбор во внешних печатных формах

Я
   mzelensky
 
11.01.13 - 13:59
Доброго всем!
В типовых имеется механизм подключения внешних печатных форм с отбором.
Отбор реализован через построитель:

Функция ИнициализироватьПостроительДопПечатныхФорм(ИмяТаблицы, СинонимТаблицы) Экспорт

    ПостроительОтчета = Новый ПостроительОтчета;
    ПостроительОтчета.Текст = "
    |ВЫБРАТЬ ПЕРВЫЕ 1
    |    Объект.Ссылка КАК Ссылка
    |ИЗ
    |    " + ИмяТаблицы + " КАК Объект
    |ГДЕ
    |    Объект.Ссылка = &Ссылка
    |{ГДЕ
    |    Объект.Ссылка.*}
    |";
    
    ПолеОбъекта = ПостроительОтчета.ДоступныеПоля.Найти("Ссылка");
    ПолеОбъекта.Представление = ?(НЕ ЗначениеЗаполнено(СинонимТаблицы), ИмяТаблицы, СинонимТаблицы);
    
    Возврат ПостроительОтчета;

КонецФункции// (
 


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




В принципе все просто и понятно, но как всегда есть "НО"!Заключается оно в этой строчке:

ПостроительОтчета.Параметры.Вставить("Ссылка", Объект.ссылка);

Т.е. для сравнения (отбора) передается ссылка на объект. А в моем случае объект может быть еще не записанным (т.е. ссылка как таковой еще нет). Следовательно отбор не отрабатывает. Как можно допилить все это для "нового объекта"?!
 
 
   mzelensky
 
1 - 11.01.13 - 14:01
П.С. самое просто это конечно перевод выполнением алгоритма записать объект, но делать этого не хочется т.к. вызов данного алгоритма происходит (например) при вводе на основании и получится, что объект при создании сразу будет записываться еще даже ДО показа пользователю (а этого делать не хочется)
   mzelensky
 
2 - 11.01.13 - 14:09
ну апну что ле
   Wobland
 
3 - 11.01.13 - 14:10
ну апни. меня когда-то интересовал вопрос, зачем оно меня просит записать документ перед печатью (типовое решение), но потом сделал себе так же и забыл
   mzelensky
 
4 - 11.01.13 - 14:12
(3) мне это не нравится. Я понимаю прекрасно зачем оно это просит, но мне нужно обойти это как-то :(
   mzelensky
 
5 - 11.01.13 - 14:22
что-то народ какой-то тухлый...все видать в пятнице сидят
   steptostep
 
6 - 11.01.13 - 14:32
Попробуй через        УстановитьСсылкуНового(Документы.ВидДокумента.ПолучитьСсылку(Новый УникальныйИдентификатор))
   mzelensky
 
7 - 11.01.13 - 14:46
сейчас сделал через транзакцию

Проверяю объект на "новый". и если он таковой, то в транзакции записываю его, произвожу отбор, а затем отменяю транзакцию...

Твой вариант сейчас тоже попробую
   mzelensky
 
8 - 11.01.13 - 14:50
(6) не, не канает :(
   mzelensky
 
9 - 14.01.13 - 08:00
попробую поднять в понедельник, а то вечер пятницы не очень хорошее время для интелектуальных вопросов.
   mzelensky
 
10 - 14.01.13 - 09:52
ну так кто-нить проснулся уже?!
 
 Рекламное место пустует
   Defender aka LINN
 
11 - 14.01.13 - 09:58
(0) Ащета перед печатью документ в типовых записывается. И во внешнюю ПФ передается ссылка, а не объект.
   mzelensky
 
12 - 14.01.13 - 10:02
(11) а кто тебе сказал ,что это типовая?
   mzelensky
 
13 - 14.01.13 - 10:03
(12) + читаем в (0)
"А в моем случае объект может быть еще не записанным (т.е. ссылка как таковой еще нет). Следовательно отбор не отрабатывает. Как можно допилить все это для "нового объекта"?!"

Т.е. в моем случе данный механизм "отбора" может запускаться еще ДО записи нового объекта!
   pessok
 
14 - 14.01.13 - 10:06
(13) ну в твоем уникальном случае ты нашел нормальное решение с транзакцией, хоть и от лукавого это, имхо
   mzelensky
 
15 - 14.01.13 - 10:08
(14) согласен, мне тоже через "транзакцию не нравится", но другого варианта сам не нашел, а у народа видать тоже мыслей не очень то...
   pessok
 
16 - 14.01.13 - 10:12
странно, что не работает (6)...
   mzelensky
 
17 - 14.01.13 - 10:16
(16) как я понимаю таким образом устанавливается идентификатор, который БУДЕТ установлен при записи объекта, но по факту до записи ссылки как не было, так и нет.

Я только такое объяснение вижу. Попробуй сам, может я что-то косякнул?
   pessok
 
18 - 14.01.13 - 10:18
(17) да все правильно ты понимаешь, это я туплю :) откуда быть ссылке, когда документ не записан? неоткуда, так что транзакция, да
   Defender aka LINN
 
19 - 14.01.13 - 10:20
(12) Я символизирую, что там не зря так сделано.
   pessok
 
20 - 14.01.13 - 10:30
(19) да дело понятное, особенно с учетом того, что в типовых данные тащятся запросом с условием на ссылку документа, но ведь всякие случаи бывают
   pessok
 
21 - 14.01.13 - 10:30
+(20) _чаще_ всего тащятся
   steptostep
 
22 - 14.01.13 - 13:04
(0) (15) так из постановки задачи "Отбор реализован через построитель" явно следует, что документ должен быть записан. Так что, кроме решения с транзакцией может быть только решение со значительной переделкой кода типового механизма.



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует