|
Генерация "Уникальности" при открытии списка документов | ☑ | ||
---|---|---|---|---|
0
Osobo_Opasen
28.12.16
✎
17:00
|
Добрый вечер господа,
Конфигурация УТ 11.2 Может кто-нибудь сталкивался с подобной задачей. Мне требуется программно открывать список документов, например "Заказы клиентов" после открытия программы, и чтобы это не конфликтовало с типовым механицизмом (недопустимо открытие нескольких списков). Пример: при открытии списка "Заказов клиентов" из раздела "Продажи" отрабатывает вот такой вот код модуля команды: &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) // &ЗамерПроизводительности ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени( "Документ.ЗаказКлиента.Команда.ЗаказыКлиентов"); ОткрытьФорму("Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов", , // ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); КонецПроцедуры Я выяснил, что за поиск среди открытых форм отвечает параметр "Уникальность". Каждый раз при нажатии на открытие списка документов этот параметр не меняется в пределах одного сеанса. Следовательно он где-то хранится. Искал везде где только мог, но так и не смог его получить. Внимание вопрос, кто-нибудь знает как получить этот параметр сразу после открытия программы? |
|||
1
Fragster
гуру
28.12.16
✎
17:01
|
проще всего вывести нужный список на начальную страницу
|
|||
2
Osobo_Opasen
28.12.16
✎
17:04
|
(1) Да, это понятно... что проще всего вообще ничего не делать. Но всё таки истина дороже
|
|||
3
Fragster
гуру
28.12.16
✎
17:06
|
(2) непонятно, где ищется истина. например, почему нельзя открывать две формы списка? или наоборот, надо открыть новую форму списка?
|
|||
4
Osobo_Opasen
28.12.16
✎
17:33
|
(3) Потому что так поставлена задача. При открытии нового списка, хотелось бы переходить на уже открытый, а не плодить окна.
|
|||
5
vde69
28.12.16
✎
17:34
|
у меня есть готовая реализация сабжа
|
|||
6
vde69
28.12.16
✎
17:42
|
&НаКлиенте
Процедура ОткрытьФормыАвтоОткрытия() //----------------------------------------------------- Если ОткрыватьЗадачиИОповещения Тогда ОткрытьФорму("Обработка.ЗадачиИОповещенияТекущегоПользователя.Форма"); КонецЕсли; Если ОткрыватьЗаявки Тогда ОткрытьФорму("Документ.ЗаявкаНаОперацию.ФормаСписка"); КонецЕсли; Если ОткрыватьРезервированиеБюджетов Тогда ОткрытьФорму("Документ.РезервированиеБюджета.ФормаСписка"); КонецЕсли; Если ОткрыватьРеестрыПлатежей Тогда ОткрытьФорму("Документ.РеестрПлатежей.ФормаСписка"); КонецЕсли; //----------------------------------------------------- мОкна = ПолучитьОкна(); Для Каждого мОкно из мОкна Цикл Если мОкно.НачальнаяСтраница Тогда мОкно.Активизировать(); Возврат; КонецЕсли; КонецЦикла; КонецПроцедуры //--------------------------------------------- // в каждой из форм &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Если ИнтерфейсУпрощенныйСервер.ПолучитьРежимАвтоОткрытия("ОткрыватьЗадачиИОповещения") И ПараметрыПриложения["БазовыйИнтерфейс.Закрыть1с"] <> Истина Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры //-------------------------------- //где-то в дебрях общих модулей // Выполняется перед интерактивном завершении работы пользователя с областью данных или в локальном режиме. // // Соответствует обработчику ПередЗавершениемРаботыСистемы. // // Параметры: // Параметры - Структура - структура со свойствами: // Отказ - Булево - Возвращаемое значение. Если установить Истина, // то завершение работы программы будет отменено. // ИнтерактивнаяОбработка - ОписаниеОповещения - Возвращаемое значение. Для открытия окна, // блокирующего выход из программы, следует присвоить в этот параметр // описание обработчика оповещения, который открывает окно. // См. пример выше (для обработчика ПередНачаломРаботыСистемы). // * ОбработкаПродолжения - ОписаниеОповещения - если открывается окно, блокирующее выход // из программы, то в обработке закрытия этого окна необходимо // выполнить оповещение ОбработкаПродолжения. // См. пример выше (для обработчика ПередНачаломРаботыСистемы). // Процедура ПередЗавершениемРаботыСистемы(Параметры) Экспорт Если не Параметры.Отказ Тогда ПараметрыПриложения["БазовыйИнтерфейс.Закрыть1с"] = Истина; Иначе ПараметрыПриложения["БазовыйИнтерфейс.Закрыть1с"] = Ложь; КонецЕсли; КонецПроцедуры // Выполняется перед интерактивным началом работы пользователя с областью данных или в локальном режиме. // // Соответствует обработчику ПередНачаломРаботыСистемы. // // Параметры: // Параметры - Структура - структура со свойствами: // Отказ - Булево - Возвращаемое значение. Если установить Истина, // то работа программы будет прекращена. // Перезапустить - Булево - Возвращаемое значение. Если установить Истина и параметр. // Отказ тоже установлен в Истина, то выполняется перезапуск программы. // ДополнительныеПараметрыКоманднойСтроки - Строка - Возвращаемое значение. Имеет смысл // когда Отказ и Перезапустить установлены Истина. // ИнтерактивнаяОбработка - ОписаниеОповещения - Возвращаемое значение. Для открытия окна, // блокирующего вход в программу, следует присвоить в этот параметр // описание обработчика оповещения, который открывает окно. // См. пример ниже. // ОбработкаПродолжения - ОписаниеОповещения - если открывается окно, блокирующее вход // в программу, то в обработке закрытия этого окна необходимо // выполнить оповещение ОбработкаПродолжения. // См. пример ниже. // // Пример открытия окна, блокирующего вход в программу: // // Если ОткрытьОкноПриЗапуске Тогда // Параметры.ИнтерактивнаяОбработка = Новый ОписаниеОповещения("ОткрытьОкно", ЭтотОбъект); // КонецЕсли; // // Процедура ОткрытьОкно(Параметры, ДополнительныеПараметры) Экспорт // // Показываем окно, по закрытию которого вызывается обработчик оповещения ОткрытьОкноЗавершение. // Оповещение = Новый ОписаниеОповещения("ОткрытьОкноЗавершение", ЭтотОбъект, Параметры); // Форма = ОткрытьФорму(... ,,, ... Оповещение); // Если Не Форма.Открыта() Тогда // Если ПриСозданииНаСервере Отказ установлен Истина. // ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения); // КонецЕсли; // КонецПроцедуры // // Процедура ОткрытьОкноЗавершение(Результат, Параметры) Экспорт // ... // ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения); // // КонецПроцедуры // Процедура ПередНачаломРаботыСистемы(Параметры) Экспорт .... .... .... ПараметрыПриложения["БазовыйИнтерфейс.Закрыть1с"] = Ложь; КонецПроцедуры |
|||
7
Fragster
гуру
28.12.16
✎
17:44
|
(6) много лишних букв и в вебклиенте глючит :)
а в 8.3.8 еще появился классный параметр, коотрый позволяет без глобальных переменных нормально запретить закрытие "базовых" окон :) |
|||
8
Fragster
гуру
28.12.16
✎
17:46
|
Процедура ОткрытьФормыИнтерфейса() Экспорт
СтруктураПараметров = Новый Структура("ГлавнаяФорма", Истина); // это ключевой параметр, как раз для разрешения открытия других форм списка СтруктураПараметровОтчета = Новый Структура("ГлавнаяФорма, СформироватьПриОткрытии", Истина, Ложь); ОткрытьФорму("Документ.Документ1.ФормаСписка", СтруктураПараметров, , , , , , РежимОткрытияОкнаФормы.Независимый); ОткрытьФорму("Документ.Документ2.ФормаСписка", СтруктураПараметров, , , , , , РежимОткрытияОкнаФормы.Независимый); ОткрытьФорму("Отчет.Отчет1.Форма", СтруктураПараметровОтчета, , , , , , РежимОткрытияОкнаФормы.Независимый); АктивизироватьНачальнуюСтраницу(); КонецПроцедуры Процедура АктивизироватьНачальнуюСтраницу() Экспорт Окна = ПолучитьОкна(); Для каждого Окно Из Окна Цикл Если Окно.НачальнаяСтраница Тогда Окно.Активизировать(); Окно.Содержимое[0].Активизировать(); // обход ошибки веб клиента КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
9
Osobo_Opasen
28.12.16
✎
18:00
|
Джентльмены, вас немного унесло в сторону, данный код не позволяет переключать на уже открытый список документов. Он просто открывает новый, без "Ключа уникальности"
|
|||
10
Fragster
гуру
28.12.16
✎
18:09
|
(9) ну убери параметр "уникальность" в параметрах открытия формы....
|
|||
11
Osobo_Opasen
28.12.16
✎
18:14
|
(10) Вот тут есть еще один нюанс - типовой код трогать нельзя. Единственный способ который я вижу в настоящее время, это получение "Ключа Уникальности"
|
|||
12
Мимохожий Однако
28.12.16
✎
18:17
|
(11) Расширения не помогут?
|
|||
13
Osobo_Opasen
28.12.16
✎
18:27
|
&НаКлиенте
&Вместо("ОбработкаКоманды") Процедура Расш1_ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) // &ЗамерПроизводительности ОценкаПроизводительностиКлиентСервер.НачатьЗамерВремени( "Документ.ЗаказКлиента.Команда.ЗаказыКлиентов"); ОткрытьФорму("Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов", , // ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, , ПараметрыВыполненияКоманды.Окно); КонецПроцедуры При таком коде, выводится следуюющая ошибка: {Расширение1 Документ.ЗаказКлиента.Команда.ЗаказыКлиентов.МодульКоманды(2,8)}: Ожидается определение процедуры/функции &Вместо<<?>>("ОбработкаКоманды") (Проверка: Сервер) {Расширение1 Документ.ЗаказКлиента.Команда.ЗаказыКлиентов.МодульКоманды(2,8)}: Ожидается определение процедуры/функции &Вместо<<?>>("ОбработкаКоманды") (Проверка: Тонкий клиент) |
|||
14
Fragster
гуру
28.12.16
✎
18:31
|
(13) совместимость, естественно, 8.3.9?
|
|||
15
Osobo_Opasen
28.12.16
✎
18:32
|
(14) Совместимость чего?
|
|||
16
Fragster
гуру
28.12.16
✎
18:33
|
(15) конфигурации
|
|||
17
Osobo_Opasen
28.12.16
✎
18:34
|
(16) Совместимость конфигурации расширения 8.3.8, 8.3.9 - нет в списке. А платформа 8.3.9.1850
|
|||
18
Мимохожий Однако
28.12.16
✎
18:39
|
Открой свойства конфигурации
|
|||
19
Fragster
гуру
28.12.16
✎
18:46
|
(17) совместимость 8.3.9 для платформы 8.3.9 - это "не использовать"
|
|||
20
Osobo_Opasen
29.12.16
✎
07:42
|
(19) Снова конфликт:
Расширение1: Режим совместимости расширения конфигурации больше режима совместимости основной конфигурации |
|||
21
Osobo_Opasen
29.12.16
✎
11:19
|
Может быть все-таки кто-нибудь знает как получить этот гр...ый "Ключ Уникальности"?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |