Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: 1c82 обычное приложение, при двойном щелчке вывести форму справочника  (Прочитано 22373 раз)
0 Пользователей и 1 Гость смотрят эту тему.
asdfr1
Участник

ru
Offline Offline

« : 16-01-2013 09:15 » 


в сформированном отчёте при двойном щелчке необходимо вывести форму справочника, неудаётся дотянутся до самой формы.
 
Код: (1C v8)
 Кодик=СписокИнф[2].Значение;
 Форма=Справочники.ИзделияВЭксплуатации.НайтиПоКоду(Кодик);

Область.Параметры.ФормаИзделия= Форма.Открыть();


Где ФормаИзделия -ПараметрРасшифровки

как-то так, подскажите пожалуйста
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #1 : 16-01-2013 09:54 » 

 
Код: (1C v8)
  Кодик=СписокИнф[2].Значение;
           Найти=Справочники.ИзделияВЭксплуатации.НайтиПоКоду(Кодик);
          Форма = Найти.ПолучитьФорму();
    Откр= Форма.Открыть();
           
           
Область.Параметры.ФормаИзделия= Откр;


 Ошибка при вызове метода контекста (ПолучитьФорму)
     Форма = Найти.ПолучитьФорму();
по причине:
Элемент не выбран!
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 16-01-2013 09:56 » 

И что не ясно?
Стань отладчиком на строку "Форма = Найти.ПолучитьФорму();" и посмотри что у тебя в переменной Найти
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #3 : 16-01-2013 11:30 » 

И что не ясно?
Стань отладчиком на строку "Форма = Найти.ПолучитьФорму();" и посмотри что у тебя в переменной Найти
Неясно как открыть форму из отчёта.
Код: (1C v8)
Найти=Справочники.ИзделияВЭксплуатации.НайтиПоКоду(Код);
          Форма = Найти.ПолучитьФорму();
    Откр= Форма.Открыть();
где Код код в справочнике. Форма = Найти.ПолучитьФорму();
по причине:
Элемент не выбран!

Область.Параметры.ФормаИзделия= Откр;
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 16-01-2013 13:47 » 

asdfr1, сделал что я писал выше?
Встроенную справку по методу НайтиПоКоду прочитал? (Что он может возвращать?)
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #5 : 17-01-2013 04:35 » 

asdfr1, сделал что я писал выше?
Встроенную справку по методу НайтиПоКоду прочитал? (Что он может возвращать?)
Вернёт  СправочникСсылка.<Имя справочника>;
по сслыке получаю форму  и открываю.Ошибка: Элемент не выбран!
 Контр=Справочники.Контрагенты;
НайденнаяСсылка =Контр.НайтиПоКоду(СписокИн
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #6 : 17-01-2013 06:42 » 

Вам вероятно тонко намекают проверить на случай, если у вас в переменной находится Неопределено или ПустаяСсылка

Цитата
НайтиПоКоду (FindByCode)

Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено. Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка.
Если код не задан, то будет возвращено Неопределено.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 17-01-2013 07:30 » 

Radistka, Ничего себе "тонко"! Ага
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #8 : 17-01-2013 10:15 » 

Вам вероятно тонко намекают проверить на случай, если у вас в переменной находится Неопределено или ПустаяСсылка

Цитата
НайтиПоКоду (FindByCode)

Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено. Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка.
Если код не задан, то будет возвращено Неопределено.
какой нить примерчик можно ? из книги Радченко и синтаксиспомошника воспроизвёл.Сравнение на Неопределено сделал.Возвращаяет ошибку "Обращение к процедуре объекта как к функции (Открыть)"
Код: (1C v8)
Для Каждого Строка ИЗ ТЗ Цикл          
                         СправочникПоиск=Справочники.ИзделияВЭксплуатации.НайтиПоРеквизиту("ЗаводскойНомер", ЗавНомерМля);

                Если  Строка.ИзделиеВЭксплуатацииЗаводскойНомер=СправочникПоиск Тогда
                       
                        Сообщить(Строка.ИзделиеВЭксплуатацииЗаводскойНомер);
                        ОбластьДетальныхЗаписей.Параметры.Расшифровка="Ёпта2";

                Иначе
                         ЗавНомерМля=ВыборкаДетальныеЗаписи.ИзделиеВЭксплуатацииЗаводскойНомер;
       
                        Ёпта1=СправочникПоиск.ПолучитьФорму();
                        Ёпта2=Ёпта1.Открыть();
                        ОбластьДетальныхЗаписей.Параметры.Расшифровка=Ёпта1;
                        КонецЕсли;
        КонецЦикла;
« Последнее редактирование: 17-01-2013 13:14 от Kivals » Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #9 : 17-01-2013 10:38 » 

Цензуры на вас нету.. хотя, может щас прийдёт.


Код:
Кодик=СписокИнф[2].Значение;
НайденнаяСсылка=Справочники.ИзделияВЭксплуатации.НайтиПоКоду(Кодик);

Если НайденнаяСсылка=Справочники.ИзделияВЭксплуатации.ПустаяСсылка() тогда
Сообщить("Здесь пустая ссылка, в справочнике нет элемента с кодом "+Кодик);

иначеЕсли НайденнаяСсылка=Неопределено тогда
Сообщить("Не задано значение кода");

Иначе
Область.Параметры.ФормаИзделия= НайденнаяСсылка.ПолучитьФорму().Открыть();

КонецЕсли;

научитесь пользоваться брейкпойнтами и определите в конце концов, что у вас находится в переменной "НайденнаяСсылка"
и оборачивайте свой код в тэги, а то читать нереально, что вы пишите.
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #10 : 17-01-2013 11:31 » 

Код: (1C v8)
НайденнаяСсылка=Справочники.ИзделияВЭксплуатации.НайтиПоКоду(Кодик);
Сообщить(НайденнаяСсылка);
Если НайденнаяСсылка=Справочники.ИзделияВЭксплуатации.ПустаяСсылка() тогда
Сообщить("Здесь пустая ссылка, в справочнике нет элемента с кодом "+Кодик);
Здесь пустая ссылка, в справочнике нет элемента с кодом 1654
Аквадистилятор
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #11 : 17-01-2013 12:21 » new

ну вот собственно и ага. форму пустой ссылки 1Ска не открывает.
« Последнее редактирование: 17-01-2013 12:27 от Radistka » Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #12 : 17-01-2013 12:47 » 

ну вот собственно и ага. форму пустой ссылки 1Ска не открывает.
Иначе
Область.Параметры.ФормаИзделия= НайденнаяСсылка.ПолучитьФорму().Открыть();
Обращение к процедуре объекта как к функции (Открыть)
Пытался как в примере:
Форма = Вычислить(СтрокаФормы.ИмяМетаданных).ПолучитьФорму(СтрокаФормы.ИмяФормы);
            Форма.Открыть();
Значение параметра"нет" не задано Жаль...
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 17-01-2013 13:13 » 

asdfr1, код - в теги [code=e1cv8][/code]! всегда (если больше 1ой строки)!!! Я зол!

В книге описано, что ожидается в переменных. Пройдись отладчиком по каждой строке и сравни с книгой.

А вообще вот это:
Цитата
Обращение к процедуре объекта как к функции (Открыть)
Ни о чем не говорит?

Пробуй так:
Код: (1C v8)
Форма = НайденнаяСсылка.ПолучитьФорму();
Область.Параметры.ФормаИзделия = Форма; // Если это вообще нужно
Форма.Открыть();
Но скорее всего будет так же, как и в самом начале:
Цитата
ПолучитьФорму():
...
Возвращаемое значение:
Тип: Форма.

Описание:
Получает форму элемента справочника, на который указывает ссылка.

Доступность:
Толстый клиент.

Пример:
Код: (1C v8)
Если Не ТоварСсылка.Пустая() Тогда
    ТоварСсылка.ПолучитьФорму().Открыть();
    Возврат;
КонецЕсли;

По идее должно сработать:
Код: (1C v8)
Форма = Справочники[НайденнаяСсылка.Метаданные().Имя].ПолучитьФормуНовогоЭлемента();
Форма.Открыть();
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #14 : 17-01-2013 16:03 » 

может это вообще не возможно?  Не понял
самописная, обычное приложение.


* 4.jpg (115.61 Кб - загружено 813 раз.)
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #15 : 18-01-2013 02:49 » 

может это вообще не возможно?  Не понял
самописная, обычное приложение.

Вы отладчиком научились пользоваться? вам чтото предлагают - вы даже не пробуете это или просто не говорите нам что у вас получилось, а что нет из предложенного? или есть подозрение что рано или поздно, но над нами возьмёт верх любопытство и мы натурально попробуем сами это сделать, а потом выложим результат? ) какая разница самописная она или нет, вы же явно делаете дополнительный отчёт, а метаданные они и в африке метаданные.

разберитесь с отладчиком уже и сравните каждую переменную у вас в коде с тем, что в ней должно быть - тип данных и значение в каждый момент времени и на разных данных. тем более, что вы прямо во время отладки имеете возможность примерить различные варианты строки кода, если это касается вызова функции. я по крайней мере, если не могу понять как вызвать правильно функцию, то дохожу до нужного момента в отладчике и перебираю все варианты, как могла бы выглядеть строка вызова функции.

и ещё такой вопрос: вы уверены что вам необходимо это реализовывать в отчёте? зачем вам в ячейке хранить значение отличное от расшифровки?
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #16 : 18-01-2013 04:41 » 

отладчиком учусь, а то что "над нами возьмёт верх любопытство и мы натурально попробуем сами это" так не было  и не будет! И метаданные действительно такие же в Африке.
Учусь и есть желание.
Реализовать это в отчёте для удобства, используя меньше бумажных носителей.
Спасибо за совет, всё таки делать большой упор на отладчик, по аналогии с вашим...
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #17 : 18-01-2013 04:50 » 

Реализовать это в отчёте для удобства, используя меньше бумажных носителей.

при чём здесь бумажные носители? я имела ввиду уверены ли вы что вам нужен отчёт а не обработка.

зачем вам в ячейке хранить значение отличное от расшифровки?

так всё таки зачем? или у вас они совпадают?
Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #18 : 18-01-2013 05:24 » 

Реализовать это в отчёте для удобства, используя меньше бумажных носителей.

при чём здесь бумажные носители? я имела ввиду уверены ли вы что вам нужен отчёт а не обработка.

зачем вам в ячейке хранить значение отличное от расшифровки?

так всё таки зачем? или у вас они совпадают?
Туплю. Отчёт или обработка - без разницы. Нашёл отчёт в ЗиК СпискиРаботников там как раз по клику делает то что нужно.
часть данных совпадает, часть вытягивается из другого справочника...извините, совпадают
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #19 : 18-01-2013 05:56 » 

Мысль первая:

если совпадают, то поставьте в качестве значения в ячейку ссылку т.е. не

Код: (1C v8)
ОбластьМакета.Параметры.ЗначениеЯчейки = ЭлементСправочника.Наименование;

а

Код: (1C v8)
ОбластьМакета.Параметры.ЗначениеЯчейки = ЭлементСправочника;

Мысль вторая, возможно не рабочая:

а если попробовать в расшифровку пихать не открытие формы а например ссылку на тот элемент справочника, который вам нужно открывать?
« Последнее редактирование: 18-01-2013 07:10 от Radistka » Записан
asdfr1
Участник

ru
Offline Offline

« Ответ #20 : 19-01-2013 09:57 » 

ОГРОМНОЕ спасибо Улыбаюсь
всё получилось Улыбаюсь
открывает по ссылке на элемент справочника рассшифровку
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines