Имя: Пароль:
1C
1С v8
Изменить текст запроса динам. списка вне формы.
0 SOLO1C
 
15.07.12
04:02
УТ 11 - попытался не влазя в типовые объекты изменить работу формы списка при вызове определенной команды:

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

&НаСервере
Процедура УстановитьТекстЗапросаСписка(ДинамическийСписок)
   
   ТекстЗамены  =  "ДокументЗаказКлиента.Ссылка КАК Ссылка,";
   ТекстВставки =  "ДокументЗаказКлиента.Ссылка КАК Ссылка, ДокументЗаказКлиента.Настройка КАК Настройка,";
   
   ДинамическийСписок.ТекстЗапроса = СтрЗаменить(ДинамическийСписок.ТекстЗапроса,ТекстЗамены,ТекстВставки);КонецПроцедуры

Так вот прикол в том что - ошибок при исполнении нет, но в процедуре
УстановитьТекстЗапросаСписка

ДинамическийСписок.ТекстЗапроса = "";

Вот такая фигня. Никто не знает - можно ли побороть?
1 SOLO1C
 
15.07.12
10:47
Ап.
2 SOLO1C
 
15.07.12
12:51
неужели только я такой 1с-извращенец ) Разве никто не хотел бы форму поменять не трогая ее..
3 NcSteel
 
15.07.12
13:00
(0) Запрос надо менять на стороне сервера в форме.
4 SOLO1C
 
15.07.12
13:10
Почему именно в форме ? Нигде в синтаксисе про это нету...
Хочу вне формы...
5 SOLO1C
 
15.07.12
13:12
Вот почему не сделать платформу - чтоб можно было такие вещи делать - вставлять элементы в форму, добавлять модули, менять запросы - блин реально же наверное это не проблема для разработчиков - зато насколько бы повысилась простота обновлений....

Интересно - может в 8.3 это есть...
6 Rie
 
15.07.12
13:14
(5) Переходи на 7.7, там это реализовано.
7 SOLO1C
 
15.07.12
13:26
(6) ну динамических списков я там не видел )) как и программной вставки элементов, так что предложение не дельное.
8 SOLO1C
 
15.07.12
21:31
кому уже не терпится снова после выходных взяться за работу ) - напишите.... кто че думает...как можно изменить данные динамического списка не входя в него... ?
9 SOLO1C
 
15.07.12
21:32
в смысле не изменяя форму...
10 ChAlex
 
15.07.12
21:41
А зачем передавать параметром динамический список. Он и так на сервере доступен Через ЭтаФорма.ДинамическийСпиоск
11 SOLO1C
 
15.07.12
21:47
(10) для тех кто читает отрывками ) - я пытаюсь изменить запрос не в контексте формы а в контексте модуля.
12 SOLO1C
 
15.07.12
21:47
...модуля команды
13 ChAlex
 
15.07.12
22:27
(11) - ну тогда для тех, кто отрывками читает документацию, ну или с логикой дружит орывками. Метод "ПолучитьФорму" создает класс объекта и только (в терминах обычного программирования). ДинамическийСписок.ТекстЗапроса - свойство реквизита класса. Хоть оно и определяется в конфигурации, но все же является таковым, и заполняется значением по умолчанию (то бишь текстом запроса) при инициализации класса (которая еще никем не выполнялась, ибо в 1С форма не открывалась еще, и следовательно не выполнялись никакие методы и события объекта). Так что ничего удивительного в том что значенеи текста запроса не определено. Оперируйте данными в событии "ПриСозданииНаСервере" - после инициализации всех переменных (реквизитов) класса. Там и увидите и текст запроса, там же его можно и поменять. Передавайте параметры в открывающуся форму.
14 zladenuw
 
15.07.12
22:31
(13) хорошо объяснил. но прикольно 13 сообщение и всего сообщение 666 у тебя :) шаман
15 ChAlex
 
15.07.12
22:36
(14) - нда - на до бы поберечься.. :)
16 SOLO1C
 
16.07.12
02:09
(13) На мой взгляд касаемо инициализации свойства - вы ошибаетесь - событие ПриСозданииНаСервере - отрабатывает ДО открытия - при получении формы она создается..... и уже после создания я вижу свойство пустым. Утверждение "1С форма не открывалась еще, и следовательно не выполнялись никакие методы и события объекта" - вообще не имеет права на жизнь )
17 ChAlex
 
16.07.12
11:48
(16) - ну ваше право, считайте дальше -  и пытайтесь прошибить стену - вдруг получится :) - квантовая теория не противоречит этому
18 Fenrus
 
16.07.12
22:23
в подтверждение (16)
Вызывается при создании формы на сервере, до ее открытия. Можно отказаться от создания
ПриСозданииНаСервере, OnCreateAtServer
19 ChAlex
 
16.07.12
23:30
(18) - а собственно в подтверждении чего? Вы хоть в суть проблемы вникли бы, и разделяли бы ИНИЦИАЛИЗАЦИЮ СВОЙСТВ класса (для уточнения  - термин ООП, а не 1С!) и события ОБЪЕКТА 1С (в частности формы). Еще раз для тех кто на бронепоезде: отправная точка - пост(0) - последовательность действий:
Шаг 1 - ФормаСпискаЗаказов = ПолучитьФорму... В результате создается экземпляр класса в терминах программирования и объект типа "Форма"  в терминах 1С. Что ч точки зрения прграммирования, что с точки зрения 1С этот объкт на уровне внутренних структур не инициализирован!!, т.е. все что в данный момент вы можете получить -  так это список реквизитов и ВСЕ!!
Шаг 2- с объектом "ФормаСпискаЗаказов" производятся действя якобы по иницциализации текста запроса - УстановитьТекстЗапросаСписка(ФормаСпискаЗаказов.Список). Ну и делайте себе!! только 1С  ЭТО ПОФИГУ, потому что далее следует..
Шаг 3 - ФормаСпискаЗаказов.Открыть() - и вот тут между этим действием и событием "ПриСозданииНаСервере" и инициализируется класс (в терминах ООП).Но 1С - не язык прграммирования - и вам предоставляются лишь какие-то точки в довольно сложном процессе создания класса, инициализации и визульного представления. Так вот в этом промежутке 1С херит все ваши действия ранее совершенные и предоставляет вам класс с инициализированными свойствами, которые вы определили в конфигурации!!! И остановитесь отладчиком на шаге 2 и в событии "ПриСозданииНаСервере" и увидите что в первом случае ДинамическийСписок.ТекстЗапроса = "", а во втором ДинамическийСписок.ТекстЗапроса - содержит текст запроса, который задан в КОНФИГУРАЦИИ!!! И все совершенные вами действия - извините слиты в унитаз! Вот если вы сейчас измените текст запроса - то ваши действия будут услышаны!
И не путайте ВИЗУАЛЬНОЕ открытие формы и выше изложенные действия!! Ибо инициализация свойств класса не есть отображение формы на экране!!!
20 Fenrus
 
17.07.12
02:42
(19) мде... смотрю пост и плачу... много ошибок как с точки зрения ООП так и с точки зрения 1с в ваших словах... Для вас 1с не язык программирования? ок. Но судя по вашему "...в довольно сложном процессе создания класса, инициализации и визульного представления." Вы и здесь не далеко ушли(((
Даже в описании очередности вызова обработчиков - и то накосячили... Вы не поверите, но если удосужитесь проверить - то узнаете что при получении формы обработчик события ПриСозданииНаСервере срабатывает. Тоесть все ваши выше изложеные "аргументы и факты" обсалютно не соответсвуют истине.
А при открытии отрабатывают максимум события ПриОткрытии и ежи с ними. Так что давайте не будем пытатся блистать познаниями в ООП и принципах работы платформы 1с 8.2 у вас это не оч выходит.

А по поводу изначального сабжа, я выдвинул свои предположения Пост стартеру в личку...
21 i_rodionov
 
17.07.12
02:44
(2) Менять форму не трогая ее можно только управляемые, с помощью функциональных опций
22 SOLO1C
 
30.07.12
01:56
(19) Уважаемый, давайте еще разок:
1) Получаем форму
2) Отрабатывает "при создании на сервере" - где из формы можно сменить текст запроса
3) Я меняю это же свойство из-вне
4) Итог известен.

Вопрос - как вы своим ООП объясните , почему из формы запрос при ее создании меняется а извне - не меняется ? Или может будете утверждать что ПриСозданииНаСервере будет происходить "на самом деле" ПриОтрытии ) ?
23 SOLO1C
 
30.07.12
01:57
(21) можете более конкретно - как можно текст запроса повесить на функциональную опцию ?
24 zladenuw
 
30.07.12
03:04
может параметры. при создание они точно есть
25 zladenuw
 
30.07.12
03:04
там храни свой макет запроса
26 zladenuw
 
30.07.12
03:04
и при открытии так же
27 SOLO1C
 
30.07.12
03:47
(26) сабж читали ? мне не нужен этот запрос в модуле формы - я там ничего с ним не смогу сделать - форму менять нельзя....
28 zladenuw
 
30.07.12
04:36
кинь бд.
29 i_rodionov
 
30.07.12
07:37
(23) Если есть возможность в результате запроса сформировать массив булевых значений, тогда можно применить функциональные опции