|
v8: Открытие (получение) внешней обработки с помощью кода | ☑ | ||
---|---|---|---|---|
0
Tanis
11.02.13
✎
13:09
|
Добрый день!
Подскажите как добраться до внешней обработки с помощью кода? |
|||
1
DrShad
11.02.13
✎
13:10
|
ВнешняяОбработка = ВнешниеОбработки.Создать(ПолноеИмяФайла);
ВнешняяОбработка.ПолучитьФорму().Открыть(); |
|||
2
Kreont
11.02.13
✎
13:16
|
Обробка = ВнешниеОбработки.Создать(НазваШшляхуПовногоОбробки);
Форма = Обробка.ПолучитьФорму(); // Здесь можно параметры установить на форме нужные Форма.Открыть(); |
|||
3
Tanis
11.02.13
✎
13:48
|
Файл не обнаружен.
Я так вроде уже делал. |
|||
4
Tanis
11.02.13
✎
13:48
|
и почему создать?
|
|||
5
Kreont
11.02.13
✎
14:10
|
(3)Полное имя значит неправильное указал.
(4) Создать в смысле объект 1с языка что б работать с обработкой, а не саму обработку. |
|||
6
Tanis
11.02.13
✎
14:23
|
Имя указывается в "" ?
Пишет не обнаружено. |
|||
7
Kreont
11.02.13
✎
14:26
|
(6) может прав нету на чтение.
Сделай путь попроще, "D:\obrabotka.epf", и проверь. |
|||
8
Tanis
11.02.13
✎
14:40
|
Какой путь указать???
Обработка же подключена уже в к базе. И куда путь вписать? |
|||
9
Конфигуратор1с
11.02.13
✎
14:42
|
(0) Так в смысле из справочника внешних обработок?
|
|||
10
Kreont
11.02.13
✎
14:42
|
"Обработка же подключена уже в к базе." ???
Ну это тогда не совсем внешняя обработка, речь идет про подключаемые внешн.обработки? |
|||
11
Tanis
11.02.13
✎
14:43
|
Ну да, она в справочнике внешних обработок уже.
|
|||
12
Tanis
11.02.13
✎
14:45
|
С путем тоже пишет, файл не найден.
|
|||
13
Конфигуратор1с
11.02.13
✎
14:56
|
Процедура СправочникСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
Если Не ВыбраннаяСтрока.ЭтоГруппа Тогда ЭтоОбработка = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка, Истина, Ложь); ЭтоОтчет = ?(ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет, Истина, Ложь); Если НЕ (ЭтоОбработка ИЛИ ЭтоОтчет) Тогда Возврат; КонецЕсли; //И ВыбраннаяСтрока.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка Тогда Попытка ИмяФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные = ВыбраннаяСтрока.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); Если ЭтоОбработка Тогда Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла); Иначе Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла); КонецЕсли; Если Не Форма = Неопределено Тогда Форма.Открыть(); Иначе Если ЭтоОбработка Тогда ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла); Иначе ВнешнийОтчет = ВнешниеОтчеты.Создать(ИмяФайла); КонецЕсли; КонецЕсли; УдалитьФайлы(ИмяФайла); Исключение Если ЭтоОбработка Тогда Предупреждение("Выбранный файл не является внешней обработкой. |Либо, данная обработка не предназначена для |запуска в этой конфигурации."); Иначе Предупреждение("Выбранный файл не является внешним отчетом. |Либо, данный отчет не предназначена для |запуска в этой конфигурации."); КонецЕсли; КонецПопытки; СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры |
|||
14
Конфигуратор1с
11.02.13
✎
14:56
|
вот тебе процедура из типоовй по открытию обработки в справочнике.
|
|||
15
Tanis
11.02.13
✎
16:08
|
Спасибо. Теперь обработку получаю, если ставить открыть, то открывается, а вот условие с ней не срабатывает.
Если НЕ Форма.Открыта() = Истина Тогда Отказ = Истина; Сообщить("У Вас нет прав на запись: " + Источник + " Документ был проведен!) |
|||
16
hhhh
11.02.13
✎
16:26
|
а где это условие Открыта() проверяется?
|
|||
17
Tanis
11.02.13
✎
16:32
|
в событии перед записью.
Эта доп обработка перепроводит документы за выбранный период |
|||
18
Tanis
11.02.13
✎
16:52
|
Странно.
Пробую открыть эту форму при записи объекта, она окрывается, и тогда условие что если "НЕ открыта" срабатывает, дает записать. Если запускать эту форму через справочник внешних обработок, то условие почему-то не видит что она открыта. |
|||
19
Tanis
11.02.13
✎
16:58
|
как добиться нужного?
|
|||
20
hhhh
11.02.13
✎
17:09
|
наверно разные формы.
|
|||
21
Tanis
12.02.13
✎
08:26
|
Нет не разные, как они могут быть разными?
|
|||
22
Tanis
12.02.13
✎
09:04
|
Как еще можно добиться нужного?
|
|||
23
DrShad
12.02.13
✎
09:09
|
(22) начни с нормального описания своей проблемы
|
|||
24
Tanis
12.02.13
✎
09:55
|
Ставлю ограничение на запись проведенных документов, для всех пользователей кто не в группе.
Работает. При запуске обработок "Контроль последовательности" и "групповое перепроведение", срабатывал запрет. Поставил условие, что если эти обработки открыты, тогда можно записывать. Но есть 2 внешних обработки которые тоже перезаписывают эти документы, вот их и хочу тоже в условие добавить, что если они открыты, то запись возможна. Но не могу на них выйти... |
|||
25
FIXXXL
12.02.13
✎
10:55
|
(24)огород какой-то...
Мож тебе проще подписки на события доков юзать? |
|||
26
Tanis
12.02.13
✎
11:07
|
Так в них и делаю. Событие перед записью.
Там и ставлю эти условия. |
|||
27
DrShad
12.02.13
✎
11:09
|
проще сделать переопределяемый параметр сеанса, а во всех обработка при открытии его выставлять в ИСтина и при закрытии в Ложь
|
|||
28
Tanis
12.02.13
✎
11:31
|
поподробнее можно про этот параметр сеанса?
|
|||
29
DrShad
12.02.13
✎
11:32
|
а что не ясно?
|
|||
30
Tanis
12.02.13
✎
11:42
|
само понятие параметр сеанса. :-(
Или просто любой параметр в форме поставить? |
|||
31
Tanis
12.02.13
✎
11:44
|
Без изменения форм никак?
|
|||
32
Tanis
12.02.13
✎
12:51
|
ИмяФайла = ПолучитьИмяВременногоФайла("epf");
ДвоичныеДанные = ВыбраннаяСтрока.ХранилищеВнешнейОбработки.Получить(); ДвоичныеДанные.Записать(ИмяФайла); Форма = ВнешниеОбработки.Создать(ИмяФайла); Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла); //УдалитьФайлы(ИмяФайла); Форма.Открыть(); Если (Источник.Проведен = Истина) И (НайденнаяСтрока = Неопределено) И (НЕ РольДоступна("ПолныеПрава")) И НЕ Обработки.УправлениеПоследовательностями.ПолучитьФорму().Открыта() = Истина И НЕ Обработки.ГрупповоеПерепроведениеДокументов.ПолучитьФорму().Открыта() = Истина И НЕ Форма.Открыта() = Истина Тогда Отказ = Истина; Сообщить("У Вас нет прав на запись: " + Источник + " Документ был проведен!"); КонецЕсли; Имеем вот такой код. Почему когда Форма.Открыть(); открывается нужная форма, а когда И НЕ Форма.Открыта() условие не срабатывает. При этом если форма открывается во время записи, а не от из справочника "Внешних обработок", то условие работает. |
|||
33
Tanis
12.02.13
✎
13:08
|
Почему может такое быть?
|
|||
34
НЕА123
12.02.13
✎
13:15
|
(32)
сегодня, конечно, не пятница. советую поспать хрень полная. например условие. Обработки.УправлениеПоследовательностями.ПолучитьФорму().Открыта() всегда ложь. |
|||
35
Tanis
12.02.13
✎
13:16
|
почему всегда ложь? Когда при закрытии месяца запускается!
Условие работает |
|||
36
Tanis
12.02.13
✎
13:18
|
так что прежде чем хамить, проверьте правильность...
|
|||
37
НЕА123
12.02.13
✎
13:21
|
(35)
ээээ... пардон. ступил. но (27) лучше. |
|||
38
НЕА123
12.02.13
✎
13:22
|
(36)
попытаюсь исправиться. >При этом если форма открывается во время записи, а не от из справочника "Внешних обработок", то условие работает. это совершенно другая обработка. |
|||
39
Tanis
12.02.13
✎
13:38
|
Почему она считает ее другой? Хранилище разное что-ли получается?
Я просто не в курсе о параметрах сеанса. Извинения принимаются. :-) |
|||
40
Tanis
12.02.13
✎
13:38
|
а добраться до той, которая в справочнике возможно?
|
|||
41
НЕА123
12.02.13
✎
14:05
|
(39)
в конфигураторе добавить параметр сеанса "ЗапретЧегото" тип число. при старте обработок типа УправлениеПоследовательностями параметрысеанса.ЗапретЧегото = параметрысеанса.ЗапретЧегото + 1; при закрытии соответственно параметрысеанса.ЗапретЧегото = параметрысеанса.ЗапретЧегото - 1; ну и проверять если ЗапретЧегото Тогда Отказ.Истина; ..... |
|||
42
НЕА123
12.02.13
✎
14:07
|
(40)
на УФ, в принципе, можно. но один хрен... грязновато это. |
|||
43
Tanis
12.02.13
✎
14:13
|
Что за УФ?
Не хотел эти обработки трогать. (не мои, писались до меня) Может вообще проще их в конфу занести. |
|||
44
Tanis
12.02.13
✎
15:49
|
Упрявляемые формы не используются
|
|||
45
Dolphinbet
12.02.13
✎
16:09
|
А как из отчета (в обработке расшифровки) получить новый экземпляр этого же отчета открытого из справочника "Внешних отчетов и обработок"?
|
|||
46
Tanis
13.02.13
✎
08:45
|
т.е получается бесполезно кодом до нее добираться?
|
|||
47
НЕА123
13.02.13
✎
08:56
|
какая разница - открыта форма какая-то или не открыта?
ну потом откроют. а может она в другом сеансе открыта? непонятно. |
|||
48
Tanis
13.02.13
✎
10:25
|
Разница, в том, чтоб дать этой форме действие над проведением документов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |