|
Сохраненные значения элементов формы | ☑ | ||
---|---|---|---|---|
0
cube033
16.10.12
✎
06:44
|
Делаю внешнюю обработку для работы с конфигурацией на поддержке. Одна из задач обработки - создавать стандартный отчет. Отчет автоматически заполняется нужными настройками и формируется. Все было бы идеально, но "Организация" в отчет подставляется как последнее сохраненное значение формы. Пользователю в течение дня придется работать с двумя организациями и он будет постоянно путаться.
Можно ли обратиться к сохраненному значению и изменить его программно? P.S. Все попытки изменить реквизит отчета, или значения элемента формы - провалились. |
|||
1
Галахад
гуру
16.10.12
✎
06:53
|
Не понятно.
|
|||
2
cube033
16.10.12
✎
07:02
|
В принципе можно упростить условие. По моему в большинстве отчетов в большинстве конфигураций. В форме отчета есть "Организация". Мы открываем отчет - видим "Организация1", меняем на "Организация2", закрываем. Открываем снова - видим "Организация2" - т.е форма сохраняет последнее значение при закрытии. Отчеты из моей обработки должны всегда открываться с "Организация2", даже если пользователь работал до этого с "Организация1"
|
|||
3
чувак
16.10.12
✎
07:04
|
Создай реквизит отчета "Организация", спихай код в событии "ПриОткрытии". Всего то делов
|
|||
4
Живой Ископаемый
16.10.12
✎
07:06
|
2(2) зачем? Чтобы другой пользователь замучался перевыбирать? Убери тогда организацию из сохранеямых значений
|
|||
5
cube033
16.10.12
✎
07:11
|
Вот за этим были написаны первые два предложения. Внешняя обработка рассчитывает нормы потребления, принимает платежи от населения, устанавливает тарифы, создавая документы и записи регистров основной конфигурации, а затем кассир должен выдать человеку СТАНДАРТНУЮ квитанцию из ОСНОВНОЙ конфигурации, и менять там ничего нельзя.
|
|||
6
Живой Ископаемый
16.10.12
✎
07:13
|
ничего не понятно. впрочем как и то, что же помешало реализовать любым доступным способом.
|
|||
7
cube033
16.10.12
✎
07:25
|
Ситуация в том, что Организация подставляется только при автоматическом заполнении квитанции, его можно отключить. Но заполнение вручную еще хуже. Там куча неприятных мелочей, как например - изначально у Отчета отсутствует необходимая форма, которая пришла с обновлением, список форм отчета формируется кодом разработчика и т.д.
Пробовал создав отчет поменять ему организацию, пробовал получив форму отчета поменять в ней организацию - не поддается. Пробовал, даже кривые варианты вроде: открыть квитанцию без заполнения, поменять организацию, ЗАКРЫТЬ, потом открыть с заполнением. Но там тоже много подводных камней, а главное - при программном ЗАКРЫТИИ не запоминаются значения формы. " реализовать любым доступным способом." - вот это самое интересное. Какие для этого есть способы. |
|||
8
Живой Ископаемый
16.10.12
✎
07:26
|
Я ж говорю, ничего не понятно. Известно только, что любой реквизит любой формы установить в нужное значение можно.
|
|||
9
Живой Ископаемый
16.10.12
✎
07:28
|
не понятен контекст, не понятно в какой момент, откуда пытался установить...
Можешь отряхнуть от пыли самый по-твоему годный способ, которым ты пытался это сделать, но не вышло, и запостить сюда с пометкой, типа вот в этом месте что-то должно происходить, но не происходит? |
|||
10
cube033
16.10.12
✎
07:45
|
Сложность как раз в логике. В автоматическом заполнении, разобрать его трудно, так как в модуле отчета 39 процедур и функций + вызываемые экспортные.
Формирование происходит при открытии, все, что сделано до открытия будет затерто, а после открытия уже не имеет смысла. Поэтому единственную лазейку вижу в том, что Автозаполнение берет Организацию из сохраненных данных форм - их я и хочу заменить, но не знаю как Отчет = Отчеты.КВП_КвитанцииИзвещения.Создать(); ФормаОтчета = Отчет.ПолучитьФорму(); ФормаОтчета.НеЗаполнятьНастройкиПриОткрытии = Ложь; //Автоматическое заполнение ФормаОтчета.ФормироватьПриОткрытии = Истина; //ФормаОтчета.Организация=Организация; ФормаОтчета.Открыть(); |
|||
11
Живой Ископаемый
16.10.12
✎
07:50
|
ЭтотОтчет Стандартный?
Этот код ФормаОтчета.Организация=Организация; ФормаОтчета.Открыть(); Работать не будет, понятно почему, потому что в момент открытия установленные тобой значения затираются сохраненными, и используемыемыми по-умолчанию Выходом было бы поменять эти две строчки местами. Либо внимательней изучить модули отчеты, чтобы разглядеть как он может принимать параметры. |
|||
12
cw014
16.10.12
✎
07:51
|
А сложно галку убрать у "Организация" - "Сохранять значения"?
|
|||
13
cube033
16.10.12
✎
07:53
|
конфа на поддержке
|
|||
14
Живой Ископаемый
16.10.12
✎
07:54
|
а сложно включить возможность изменений?
|
|||
15
Галахад
гуру
16.10.12
✎
07:59
|
Гм. А если перед закрытием очищать организацию?
|
|||
16
Живой Ископаемый
16.10.12
✎
08:02
|
2(15) конфа на поддержке.
|
|||
17
cube033
16.10.12
✎
08:02
|
менять не выход - так как после формирования уже не актуально во первых, а во-вторых пробовал - не меняет и все. Более того - менял организацию после открытия, а потом записывал в переменную данные из формы. Отладчик говорит, что в перемнной хранится "Организация2", а на форме выведена "Организация1". Сложность в том, что трудно убедится в названии элемента формы, так как форма пришла с обновлением и в конфигураторе её нет. Но во всех остальных вариантах квитанции поле называется именно так. Запись в переменную из поля происходит, значит такое поле есть.
По поводу изменений - оно того не стоит. Такой вариант внешней обработки вполне закончен, просто не могу успокоится - три дня бьюсь над такой мелочью. И все же вопрос - как достучаться до Сохраненных значений формы????? "Гм. А если перед закрытием очищать организацию?" - да уж лучше перед закрытием выбирать нужную, только метод Закрыть("ОК"); не сохраняет значения формы, да и формой этой пользуются и из конфигурации (как раз тогда и нужна "Организация1", тогда очистка нужна там. |
|||
18
cw014
16.10.12
✎
08:03
|
o_O
форма пришла с обновлением и в конфигураторе её нет |
|||
19
cube033
16.10.12
✎
08:06
|
"форма пришла с обновлением и в конфигураторе её нет"
более того есть код, который добавляет новую форму в список для выбора динамически |
|||
20
cube033
16.10.12
✎
08:07
|
СписокФорм = Новый СписокЗначений();
СписокФорм.Добавить("Плат. документ (приказ №454 в соответ. с пост. №354)"); СписокФорм.Добавить("Плат. документ (с полями для отметки банка)"); Для Каждого ТекФорма Из Метаданные.Отчеты.КВП_КвитанцииИзвещения.Формы Цикл Если Найти(ТекФорма.Имя, "Форма_") = 1 И СтрДлина(ТекФорма.Имя) = СтрДлина("Форма_00") Тогда СписокФорм.Добавить(Прав(ТекФорма.Имя, 2)); КонецЕсли; КонецЦикла; СписокФорм.Добавить("Внешний отчет", "Выбрать из внешних отчетов..."); Если ПустаяСтрока(ФормаКвитанции) И Не СписокФорм.Количество() = 0 Тогда ФормаКвитанции = СписокФорм.Получить(0).Значение; КонецЕсли; ЭлементыФормы.ФормаКвитанции.СписокВыбора = СписокФорм; |
|||
21
Галахад
гуру
16.10.12
✎
08:07
|
(16) Ну, идея такая.
Программно открыть отчет. Программно установить "Организацию". Программно закрыть отчет. Тут все как надо сохранится. Программно открыть отчет. Я не сильно извратился? |
|||
22
cube033
16.10.12
✎
08:09
|
В сообщении №7 я описывал данный вариант):
"Пробовал, даже кривые варианты вроде: открыть квитанцию без заполнения, поменять организацию, ЗАКРЫТЬ, потом открыть с заполнением. Но там тоже много подводных камней, а главное - при программном ЗАКРЫТИИ не запоминаются значения формы. " |
|||
23
cube033
16.10.12
✎
08:09
|
"Программно закрыть отчет.
Тут все как надо сохранится." Нужен метод закрытия с сохранением, а я такого не знаю |
|||
24
cube033
16.10.12
✎
08:11
|
подводные камни типа: при открытии без заполнении выскакивает сначала форма настроек, так как я её не просил, то и в переменной её у меня нет. Приходится извращаться методами Sendkey
|
|||
25
cube033
16.10.12
✎
08:13
|
На очередном этапе таких эксперемнтов с посылами Enter'a обработка стала грузится минуты на 3, что убедило меня порвать с Wscript.Shell
|
|||
26
Галахад
гуру
16.10.12
✎
08:14
|
(23) А если закрывать методами Sendkey alt + F4?
|
|||
27
cube033
16.10.12
✎
08:16
|
Интересно
|
|||
28
cube033
16.10.12
✎
08:22
|
Как по вашему мнению по итогам такого кода
Отчет = Отчеты.КВП_КвитанцииИзвещения.Создать(); ФормаОтчета = Отчет.ПолучитьФорму(); ФормаОтчета.НеЗаполнятьНастройкиПриОткрытии = Ложь; /////Подставляет Орг1 ФормаОтчета.ФормироватьПриОткрытии = Ложь; ФормаОтчета.Открыть(); ФормаОтчета.Организация=Организация_АРМ_Уголь_Ассорти; ////Подставляет Орг2 Что должно быть на экране? У меня Организация1 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |