|
1С 8.3 // Интерактивные операции недоступны | ☑ | ||
---|---|---|---|---|
0
Kaavan
12.08.13
✎
16:14
|
Добрый день!
Пишу разработку на 8.3, хотя думаю такое может выскочить и на 8.2. Итак, как получить форму новой группы справочника? На клиенте: ФормаНовойГруппы = ПолучитьФорму("Справочник.КошелькиИСчета.ФормаГруппы"); Всё было бы прекрасно, если бы платформа не подсовывала мне в форме группы элемент справочника. Тогда был найден другой, работающий вариант: &НаСервере Процедура Команда1НаСервере() ФормаНовогоСчета = Справочники.КошелькиИСчета.ПолучитьФормуНовойГруппы(); ФормаНовогоСчета.Открыть(); КонецПроцедуры И несмотря на то, что вызов идет на сервере, это работает. Периодически я обнуляю свою базу, создавая с нуля и загружая в неё конфу. И вот сегодня вдруг этот код перестал работать с ошибкой "Интерактивные операции недоступны". однимаю резервную копию, накатываю на неё эту же конфигурацию - работает. Может быть дело в каких-то уж очень глубинных настройках базы-платформы-совместимости? Есть соображения? //Кстати, не могу в синтаксис-помощнике найти описание ПолучитьФормуНовойГруппы и ПолучитьФормуНовогоЭлемента. Подозрительно всё это. |
|||
1
Kaavan
12.08.13
✎
16:15
|
Платформа 8.3.3.687
|
|||
2
Лефмихалыч
12.08.13
✎
16:16
|
прав нет на форму эту
|
|||
3
Нуф-Нуф
12.08.13
✎
16:18
|
(2) права на форму? это фишка 8.3?
|
|||
4
Fragster
модератор
12.08.13
✎
16:21
|
толстый-тонкий клиент?
|
|||
5
Лефмихалыч
12.08.13
✎
16:31
|
(3) прав на интерактивные действия - просмотр, редактирование и т.д. На все, для чего нужна форма.
|
|||
6
Kaavan
13.08.13
✎
02:43
|
(4) Да-да, всё дело оказалось в клиенте. Новая база стала запускаться в режиме тонкого клиента и всё работать перестало. В толстом клиенте норм.
|
|||
7
Kaavan
13.08.13
✎
02:45
|
Интересно, говорит ли отсутствие в синтаксис-помощнике для управляемого описание метода ПолучитьФормуНовойГруппы() о недокументированной возможности?
Похоже нужно просто обратить внимание разработчиков 1С на косяк с методом ПолучитьФорму("Справочник.КошелькиИСчета.ФормаГруппы") |
|||
8
Kaavan
13.08.13
✎
02:48
|
Кстати, не подскажите, где та форма, в которой можно написать разработчикам 1С об ошибке?
|
|||
9
hhhh
13.08.13
✎
02:54
|
(8) вообще-то это ваша недоработка. Элементарно не додумались сначала прочитать документацию, а потом уже программировать.
Справочники.КошелькиИСчета.ПолучитьФормуНовойГруппы() - это для толстого клиента, на тонком на сервере не будет у вас работать. |
|||
10
Kaavan
13.08.13
✎
05:02
|
(9) Насчет недоработки согласен, но пришлось её использовать только от того, что не отработал метод
ПолучитьФорму("Справочник.КошелькиИСчета.ФормаГруппы") Форма получается, но записывает она элемент, а не группу. Вот это неправильно. Поэтому пришлось искать альтернативу. Сможете ли создать группу и открыть форму, не записывая её программно другим способом? |
|||
11
Kaavan
13.08.13
✎
05:05
|
Ну и еще вопрос.
Чисто гипотетически: могу ли я в конфигурации задать основной режим запуска для конфигурации (толстый, а не тонкий, например). Или вообще запретить тонкий? Есть такая возможность? Что касается своей программы, разумеется буду переделывать в сторону кошерного "ПолучитьФорму()", только с группами пока неясно как быть. |
|||
12
Kaavan
13.08.13
✎
16:59
|
Решил я более менее аккуратно всё:
ФормаНовогоСчета = ПолучитьФорму("Справочник.КошелькиИСчета.ФормаГруппы"); А проблему с группой я обошел с помощью маленькой хитрости в форме самой группы. Оцените ;) &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если НЕ ТекущийОбъект.ЭтоГруппа Тогда НоваяГруппа = Справочники.КошелькиИСчета.СоздатьГруппу(); ЗаполнитьЗначенияСвойств(НоваяГруппа, ТекущийОбъект, , "Владелец, Синхронизировать, Закрыт"); НоваяГруппа.Записать(); ТекущийОбъект = НоваяГруппа; КонецЕсли; КонецПроцедуры |
|||
13
Kaavan
13.08.13
✎
17:03
|
Не, показалось.
Замена не вышла. нужно давать отказ, но в этом случае не закрывается форма группы :( |
|||
14
ИсчадиеADO
13.08.13
✎
17:04
|
(10) в параметры передать "ЭтоГруппа" = ложь?
|
|||
15
ИсчадиеADO
13.08.13
✎
17:06
|
тьфу блин, =истина, конечно
|
|||
16
Kaavan
13.08.13
✎
17:09
|
(15) Если так
ТекущийОбъект.ЭтоГруппа = Истина; то не работает //Поле объекта недоступно для записи (ЭтоГруппа) |
|||
17
Kaavan
13.08.13
✎
17:10
|
Похоже всё же ждать исправления.
Инетерсно, в 1Сv82 та же проблема? |
|||
18
ИсчадиеADO
13.08.13
✎
17:11
|
(16) че?
ПараметрыНовойФормы = новый структура("ЭтоОбект", ложь); ОткрытьФорму("..ФормаГруппы", ПараметрыНовойФормы); |
|||
19
Kaavan
13.08.13
✎
17:12
|
(18) А так не пробовал.
Мы в параметрах можем задать начальные значения реквизитов? |
|||
20
Kaavan
13.08.13
✎
17:14
|
Уррраа!!!!! Заработала!
ПараметрыНовойФормы = Новый Структура("ЭтоГруппа", Истина); ФормаНовогоСчета = ПолучитьФорму("Справочник.КошелькиИСчета.ФормаГруппы", ПараметрыНовойФормы); |
|||
21
ИсчадиеADO
13.08.13
✎
17:14
|
книжечки читать нужно
|
|||
22
Kaavan
13.08.13
✎
17:14
|
(18) Спасибо!
|
|||
23
Kaavan
13.08.13
✎
17:15
|
(21) Каюсь, управляемое всё больше методом тыка..
|
|||
24
ИсчадиеADO
13.08.13
✎
17:15
|
(18) "ЭтоОбект" - нда, чет я сам не то пишу :)
|
|||
25
ИсчадиеADO
13.08.13
✎
17:16
|
ТС, а как это у тебя сей кусок
&НаСервере Процедура Команда1НаСервере() ФормаНовогоСчета = Справочники.КошелькиИСчета.ПолучитьФормуНовойГруппы(); ФормаНовогоСчета.Открыть(); КонецПроцедуры может работать? |
|||
26
banco
13.08.13
✎
17:22
|
(25) наверное толстый клиент обычное приложение
|
|||
27
ИсчадиеADO
13.08.13
✎
17:23
|
(25) и?
&НаСервере ведь? |
|||
28
Kaavan
13.08.13
✎
17:25
|
(25) Сам удивился, но на толстом клиенте вполне себе.
Я так и подумал, что наверное на сервере форму создает оттуда и инициализирует открытие. Но судя по отсутствию метода ПолучитьФормуНовойГруппы() в синтаксис-помощнике в управляемом режиме говорит о побочных эффектах. (26) Толстый клиент управляемое приложение. Разработка полностью управляемая. |
|||
29
ИсчадиеADO
13.08.13
✎
17:28
|
вах! точна, на толстом клиенте упр.приложение
ФормаНовогоСчета = Справочники.Контрагенты.ПолучитьФормуНовойГруппы(); ФормаНовогоСчета.Открыть(); #Если НаСервере Тогда Сообщить("НаСервере"); #КонецЕсли #Если Сервер Тогда Сообщить("Сервер"); #КонецЕсли #Если НаКлиенте Тогда Сообщить("НаКлиенте"); #КонецЕсли #Если Клиент Тогда Сообщить("Клиент"); #КонецЕсли грит: НаСервере Сервер Клиент |
|||
30
Kaavan
13.08.13
✎
17:39
|
(29) Это значит, что в толстом клиенте &НаСервере доступны оба контекста?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |