Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 01:46
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Доспуп к элементам открытой формы и функция ПолучитьФорму()  (Прочитано 17179 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн varaha

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-27
  • Сайт: 
  • Профессия: Программист 1С
Такая простая задача. Открыта форма справочника. В списке выбран элемент. В отдельном окне открывается форма. Из ее модуля нужно получить значение текущей строки списка первой формы.

Использую ПолучитьФорму(), затем Элементы.Список.Текущаястрока. При первом обращении всё получается.
Но если в форме списка справочника поменять текущую строку, то вызов процедуры из второй формы выдает ту же строку, которая была выбрана первой.

Наверное это связано с кешированием данных.

Натолкните на мысль, как решить эту пролему. То есть, сделать так, чтобы ПолучитьФорму() выдавала обновленное состояние формы.

Или может быть есть более простой метод решения задачи?


Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Или может быть есть более простой метод решения задачи?
скорее всего. что все таки сделать то надо? много текста написано, но суть задачи я не уловил ))

Оффлайн varaha

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-27
  • Сайт: 
  • Профессия: Программист 1С
Открыта форма списка справочника. Выбрана некоторая строка. Форма остается открытой. В отдельном окне открывается форма другого справочника. В этот момент нужно определить текущую строку первой формы. То есть программно получить ссылку на активный элемент первого справочника.

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

Понимаю, что задача элементарная, но я программист в другой сфере, а сейчас потребовалось срочно написать конф. с нуля в 1С 8.2. Никак не могу привыкнуть в ее специфике. Я привык владеть ситуацией, а здесь готовые "кирпичики", и логика их поведения пока никак не доходит. Было бы время - с удовольствием покопался бы. А время есть только ночью...

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
вы меня не поняли. под
что все таки сделать то надо?
я имел ввиду описание сути задачи, ее конечной цели в понятном виде. то есть цель конечная какая?

попробуем по шагам.
Выбрана некоторая строка.
что значит выбрана? выделена (то есть отмечена как текущая - синим цветом)?
В отдельном окне открывается форма другого справочника.
каким образом открывается? событие открытия связано как-то с формой предыдущего справочника, или абсолютно независимо (допустим просто из меню) открывается другой справочник?
Понимаю, что задача элементарная, но я программист в другой сфере, а сейчас потребовалось срочно написать конф. с нуля в 1С 8.2. Никак не могу привыкнуть в ее специфике. Я привык владеть ситуацией, а здесь готовые "кирпичики", и логика их поведения пока никак не доходит. Было бы время - с удовольствием покопался бы. А время есть только ночью...
в том числе по этой причине я и просил описать конечную цель. пока она остается загадкой. вы описываете какие-то манипуляции с формами, а вот для чего все это надо - а черт его знает.

Оффлайн varaha

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-27
  • Сайт: 
  • Профессия: Программист 1С
Могу подробнее. Но как бы не стало еще не понятней.

Все формы управляемые. Открыта форма списка справочника на рабочем столе. Назовем ее "форма №1".
Справочник иерархический. В последнем уровне иерархии выделен элемент (строка отмечена как текущая - синим цветом).

На форме есть команда-кнопка. В обработчике - вызов формы списка другого справочника.
Форма вызывается через ОткрытьФорму(). Назовем ее "форма №2".

В параметры этой формы передается отбор по одному из реквизитов, используя "Элементы.Список.ТекущаяСтрока" первой формы.
Нужные записи прекрасно отбираются.

У формы №2 есть подчиненный справочник.
Открываем "изменить" элемент формы №2.

Из этой формы открываем по ссылке форму списка подчиненного справочника. Назовем ее "форма №3".
Отрываем "изменить" элемент формы №3.

Открывается форма элемента справочника №3. У этого справочника есть подчиненный справочник №4.
Открываем форму списка подчиненного справочника. Назовем ее "форма №4".

Этот справочник (№4) имеет длину наименования=0 и единственный реквизит, который заполняется элементами справочника №2 (имеет тип ссылку на справочник №2).

Требуется, чтобы пользователь выбирал из списка, который имеет такой же отбор, как и в форме №2.
Здесь открываю форму №2 через ОткрытьФорму() в событии НачалоВыбора() поля элемента справочника №4.
В параметры отбора хочу передать выделенную строку формы №2.
Эту строку и нужно как-то получить. Например, через ПолучитьФорму() и последующим "Элементы.Список.Текущаястрока".
Может можно и по-другому.

Если не понятно, то ладно! Сам раскопаю потихоньку. Но думаю, что эта задача должна решаться довольно просто.

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Вместо получить форму попробуй например так:
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("КлючОтбора<Имя поля по которому буш отбирать>", Элементы.Список.ТекущиеДанные.Ссылка);
ОткрытьФорму("Справочник.ИмяСправочника.ИмяФормы",СтруктураОтбора,ЭтаФорма);
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн varaha

  • *
  • Сообщений: 12
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-27
  • Сайт: 
  • Профессия: Программист 1С
В общем случае кратко задача звучит так: получить текущую строку формы, поверх-которой открыты несколько модальных форм.
Решил ее элементарно. Объявил экспортную переменную в модуле управляемого приложения. В модуле формы обработчик события выбора строки:
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
МояГлобальнаяПеременная=Элементы.Список.ТекущаяСтрока;
КонецПроцедуры

Теперь из любого клиентского контекста могу использовать эту ссылку.

Через ПолучитьФорму() тоже получается, но вероятно из-за кэширования вызовов эта функция возвращает настоящее состояние получаемой формы далеко не всегда. А как сбросить кэш не могу раскопать, сколько не бился. А интересно было бы знать.


Теги:
 

Не работает метод Сдвинуть() по отношению к программно добавляемой колонке1С:Предприятие 8.3 (8.3.10.2561) Управление производственным предприятием, редакция 1.4 Приветствую, я добавляю программно свою колонку в методе ПриОткрытии() модуля формы, вот так

Автор InsiderРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 297
Последний ответ 21 Сен 2017, 10:33
от Insider
Редактирование формы "Настройки пользователя".

Автор t955938Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4823
Последний ответ 03 Авг 2011, 11:45
от t955938
получаю значение реквизита формы, дает значение 0

Автор mikel10Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 3418
Последний ответ 12 Июл 2013, 15:35
от mikel10
Как обратиться к функции модуля формы из модуля Менеджера?

Автор TreeDogNightРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 5000
Последний ответ 10 Июл 2014, 14:05
от cska-fanat-kz
Настройка формы "Заполнение товаров"

Автор ЖаннаРаздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 588
Последний ответ 10 Мар 2017, 21:00
от Жанна

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
142 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
50 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 140
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal