Имя: Пароль:
1C
1С v8
Открыть конкретную форму конкретного документа 8.3 (упр)
0 SerGo-116
 
14.01.16
10:03
Доброго времени суток!

Есть следующая задача, необходимо открыть конкретную форму конкретного документа. Перепробовал все возможные (которые знаю) способы - открывается конкретный документ но в кривой форме. Особенность задачи в том что данная форма должна открываться при запуске системы модально (это своего рода сообщение пользователям о введеных изменениях в программу). пишу соответственно в Модуле управляемого приложения. Ниже код:

Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Новость.Номер
    |ИЗ
    |    Документ.Новость КАК Новость
    |ГДЕ
    |    Новость.Дата МЕЖДУ &ДатаНачала И &ДатаКонца";
    
    Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ТекущаяДата()));
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Док = Документы.Новость.НайтиПоНомеру(ВыборкаДетальныеЗаписи.Номер);
        Если Док <> Неопределено Тогда
            Форма = Док.ПолучитьОбъект().ПолучитьФорму("ФормаПросмотраНовостей",Док.ПолучитьОбъект());
            Форма.ОткрытьМодально();
        КонецЕсли;
    КонецЦикла;
1 vicof
 
14.01.16
10:04
Выкинь этот код
2 SerGo-116
 
14.01.16
10:06
(1) Что с ним не так?
3 vicof
 
14.01.16
10:09
Запросы в цикле, неоправданное использование памяти, неверный тип параметра, использование модальных форм
4 vicof
 
14.01.16
10:12
Найти по номеру в твоем случае вернет пустую ссылку, а не неопределено, если документ не будет найден
5 18_plus
 
14.01.16
10:12
код - отвал башки просто
6 mehfk
 
14.01.16
10:13
Сначала отобрать номера документов запросом, а потом искать документ по номеру и все это в пределах одной базы  - это пять.
7 18_plus
 
14.01.16
10:13
сразу получай в запросе ссылку на докумнент, ни поиск ни проверки не нужны
8 SerGo-116
 
14.01.16
10:17
(3) (4) (6) (7) - Буду реализовывать
Но вопрос тот же, почему открывается программная форма, а не та которая мне нужна?
9 zenik
 
14.01.16
10:19
По хорошему, если новостей предполагается не одна - сделать обработку, которая будет выводить их на печатную форму - на одну, сразу все. И открывать печатную форму. И юзверям удобнее - печатать можно :)
10 vicof
 
14.01.16
10:21
"Но вопрос тот же, почему открывается программная форма, а не та которая мне нужна?"
Что, простите?
Скриншоты давай.
11 18_plus
 
14.01.16
10:23
в СП вроде так

П = Новый Структура("Ключ", Выборка.Ссылка);
Форма = ПолучитьФорму("Документ.Новость.ФормаПросмотраНовостей", П);
Форма.ОткрытьМодально();
12 SerGo-116
 
14.01.16
10:32
(10) Не открывает нужную форму "Документ.Новость.ФормаПросмотраНовостей", а делает свою в один столбец все реквизиты
13 SerGo-116
 
14.01.16
10:34
(11) Так тоже пробовал, открывает нужную форму, но пустую, не по Параметру.
Сразу говорю запрос не пустой, ссылка есть
14 18_plus
 
14.01.16
10:35
(13) форма документа или произвольная?
15 singlych
 
14.01.16
10:35
форма обычная чтоли?
16 AntonyFO
 
14.01.16
10:36
(1) ))
17 SerGo-116
 
14.01.16
10:37
(14) произвольная
18 SerGo-116
 
14.01.16
10:37
(15) формы управляемые
19 18_plus
 
14.01.16
10:38
(17) таки шо вы хотите?
20 SerGo-116
 
14.01.16
10:45
(19) Хотим что бы документ открылся в той форме которую я прописываю "Документ.Новость.ФормаПросмотраНовостей", а получаю форму которую программа формирует самостоятельно, у меня такой формы нет.

Нет возможности скинуть скрины, работаю на терминале...
21 18_plus
 
14.01.16
10:47
(20)
>> Так тоже пробовал, открывает нужную форму, но пустую, не по Параметру.

>> произвольная

то есть вот это ни на какие мысли не наводит?
22 vicof
 
14.01.16
10:51
(18) А по-моему, ты врешь. Управляемое приложение и запрос на клиенте не совместимы от слова совсем.
23 18_plus
 
14.01.16
10:54
(22) а может он толстый :)
24 vicof
 
14.01.16
10:59
(23) Короче, автору надо понять, какой у него клиент, какое приложение, какие формы и что он хочет открыть.
25 SerGo-116
 
14.01.16
11:01
(23) (24) Действительно я работую в толстом, сам только щас увидел :)

Спасибо за наводки на умные мысли буду додумывать идею :)
Программист всегда исправляет последнюю ошибку.