Оповеститьовыборе не работает 1с

Содержание
  1. Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
  2. I. Решение задачи для для конфигураций на платформе 8.2, обычных форм, Бухгалтерии 2.0
  3. II. Решение задачи через СписокЗначений для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
  4. III. Решение задачи через ФормуВыбора для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
  5. IV. Вопрос к Знатокам- «Баг или криворук?»
  6. Выбор Адреса контрагента из Контактной информации. Пример работы с «Оповестить о выборе»
  7. I. Решение задачи для для конфигураций на платформе 8.2, обычных форм, Бухгалтерии 2.0
  8. II. Решение задачи через СписокЗначений для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
  9. III. Решение задачи через ФормуВыбора для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
  10. IV. Вопрос к Знатокам- «Баг или криворук?»
  11. Организация подборов в табличную часть документа
  12. Одиночный подбор
  13. Множественный подбор
  14. Подбор с использованием множественного выбора
  15. Множественный подбор с использованием множественного выбора
  16. Использование метода ОповеститьОВыборе()
  17. Справка
  18. ТабличноеПоле.ДобавитьСтроку()
  19. ДанныеФормыКоллекция.Добавить()

Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

I. Решение задачи для для конфигураций на платформе 8.2, обычных форм, Бухгалтерии 2.0

пример кода для выбора адреса из Контактной информации:

II. Решение задачи через СписокЗначений для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0

пример кода:

Получившийся выпадающий список адресов:

(мне показалось неудобным искать адрес, если данных в регистре много, поэтому предлагаю другой вариант ниже)

III. Решение задачи через ФормуВыбора для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0

III.1.Что нужно сделать в форме-приемнике (форме Владельца)

У нас есть некая табличная часть. В один из её реквизитов мы хотим добавить адрес контрагента, используя форму выбора адреса. В моем примере это «ТабличнаяЧасть1» с реквизитом «Адрес» типа Строка. Соотвественно в моей обработке есть и сам реквизит «Контрагент» типа СправочникСсылка.Контрагенты. Важно не забыть добавить кнопку выбора.

Читайте также:  Y2mate com не работает

Дальше объявляем у Адреса событие НачалоВыбора. В диалоговом окне выбираем только «на клиенте»

В этом событии должен отработать следующий код:

III.2.Что нужно сделать в форме-источнике

Дошли до формы выбора адреса. У меня получилась такая простенькая форма:

Нам понадобятся два реквизита СпрОбъект (тип СправочникОбъект.Контрагенты) и соответственно СсылкаКонтрагент. Вытаскиваем (перетягиваем) на форму Табличную часть «Контактная информация» у СпрОбъект и ничего заполнять не надо, просто в дальнейшем получим объект у СсылкаКонтрагент и информация будет отражаться на форме.

Что необходимо сделать в модуле формы выбора:

Во-вторых, получим объект у Контрагента, чтобы заполнилась табличная часть Контактной информации на форме

В-третьих, у табличной части объявляем событие «Выбор» только «на клиенте» и добавляем ОповеститьОВыборе

III.3.Что еще нужно сделать в форме-приемнике

Объявить процедуру ОбработкаВыбора только «на клиенте» и вставить подобный код:

III.4.Как записать изменения Контактной информации из формы выбора

Как видно из рисунка выше, у меня объявлена Команда формы — ЗаписатьИзменения. На ней «висит» следующая процедура:

IV. Вопрос к Знатокам- «Баг или криворук?»

Все замечательно работает. Но есть одно непонятное мне действо. Если в добавленной строке Табличной части источника ничего не заполнено, а мы пользуемся ОповеститьОВыборе(), то только что добавленная строчка исчезает. Причем это проявляется даже в типовой Бухгалтерии. Например, берем документ Реализация(услуги), добавляем строчку в Табличную часть, не выбирая Номенклатуру пытаемся сначала установить Счета учета. Открывается форма выбора, выставляем счета, нажимаем на ОК. В документе появляется строчка. Но стоит щелкнуть мышкой в другом месте, строчка пропадет.

Вопрос очень простой: Что же делать, как же быть в такой ситуации?

Покопавшись самостоятельно, удалось найти, что в самых свежих релизах Бухгалтерии 3.0 такая ошибка не воспроизводится. Разработчики добавили реквизит формы типа «Булево» (у меня это АдресЗаполнено, у них это АналитикаУчетаЗаполнена) и его в ОбработкеВыбора исходной формы заполняют. НО если (с учетом этого добавления) запустить мою обработку на старом релизе — строчка пропадет, если на новом — останется. Платформу при этом не меняем. В связи с этим, всё равно хочется докопаться до сути. КАК при одной платформе, но разных релизах один и тот же код отрабатывает по-разному, учитывая, что никакие общие модули не используем?

Источник

Выбор Адреса контрагента из Контактной информации. Пример работы с «Оповестить о выборе»

I. Решение задачи для для конфигураций на платформе 8.2, обычных форм, Бухгалтерии 2.0

пример кода для выбора адреса из Контактной информации:

II. Решение задачи через СписокЗначений для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0

пример кода:

Получившийся выпадающий список адресов:

(мне показалось неудобным искать адрес, если данных в регистре много, поэтому предлагаю другой вариант ниже)

III. Решение задачи через ФормуВыбора для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0

III.1.Что нужно сделать в форме-приемнике (форме Владельца)

У нас есть некая табличная часть. В один из её реквизитов мы хотим добавить адрес контрагента, используя форму выбора адреса. В моем примере это «ТабличнаяЧасть1» с реквизитом «Адрес» типа Строка. Соотвественно в моей обработке есть и сам реквизит «Контрагент» типа СправочникСсылка.Контрагенты. Важно не забыть добавить кнопку выбора.

Дальше объявляем у Адреса событие НачалоВыбора. В диалоговом окне выбираем только «на клиенте»

В этом событии должен отработать следующий код:

III.2.Что нужно сделать в форме-источнике

Дошли до формы выбора адреса. У меня получилась такая простенькая форма:

Нам понадобятся два реквизита СпрОбъект (тип СправочникОбъект.Контрагенты) и соответственно СсылкаКонтрагент. Вытаскиваем (перетягиваем) на форму Табличную часть «Контактная информация» у СпрОбъект и ничего заполнять не надо, просто в дальнейшем получим объект у СсылкаКонтрагент и информация будет отражаться на форме.

Что необходимо сделать в модуле формы выбора:

Во-вторых, получим объект у Контрагента, чтобы заполнилась табличная часть Контактной информации на форме

В-третьих, у табличной части объявляем событие «Выбор» только «на клиенте» и добавляем ОповеститьОВыборе

III.3.Что еще нужно сделать в форме-приемнике

Объявить процедуру ОбработкаВыбора только «на клиенте» и вставить подобный код:

III.4.Как записать изменения Контактной информации из формы выбора

Как видно из рисунка выше, у меня объявлена Команда формы — ЗаписатьИзменения. На ней «висит» следующая процедура:

IV. Вопрос к Знатокам- «Баг или криворук?»

Все замечательно работает. Но есть одно непонятное мне действо. Если в добавленной строке Табличной части источника ничего не заполнено, а мы пользуемся ОповеститьОВыборе(), то только что добавленная строчка исчезает. Причем это проявляется даже в типовой Бухгалтерии. Например, берем документ Реализация(услуги), добавляем строчку в Табличную часть, не выбирая Номенклатуру пытаемся сначала установить Счета учета. Открывается форма выбора, выставляем счета, нажимаем на ОК. В документе появляется строчка. Но стоит щелкнуть мышкой в другом месте, строчка пропадет.

Вопрос очень простой: Что же делать, как же быть в такой ситуации?

Покопавшись самостоятельно, удалось найти, что в самых свежих релизах Бухгалтерии 3.0 такая ошибка не воспроизводится. Разработчики добавили реквизит формы типа «Булево» (у меня это АдресЗаполнено, у них это АналитикаУчетаЗаполнена) и его в ОбработкеВыбора исходной формы заполняют. НО если (с учетом этого добавления) запустить мою обработку на старом релизе — строчка пропадет, если на новом — останется. Платформу при этом не меняем. В связи с этим, всё равно хочется докопаться до сути. КАК при одной платформе, но разных релизах один и тот же код отрабатывает по-разному, учитывая, что никакие общие модули не используем?

Источник

Организация подборов в табличную часть документа

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

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

Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:

  • когда в форме справочника будет выполнен интерактивный выбор;
  • когда в форме справочника будет вызван метод ОповеститьОВыборе .

Одиночный подбор

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

Откроем форму документа ПриходнаяНакладная , создадим команду Подбор и назначим для нее обработчик:

В этой процедуре мы открываем форму выбора для справочника Номенклатура , указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная ( Элементы.Материалы ). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы , так как она является владельцем открытой формы выбора.

Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора :

В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение .

Множественный подбор

При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть() .

Обработчик команды Подбор :

Обработчик события ОбработкаВыбора остается без изменений.

Подбор с использованием множественного выбора

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

Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор .

Обработчик команды Подбор :

Обработчик события ОбработкаВыбора :

Множественный подбор с использованием множественного выбора

Последний способ подбора сочетает в себе оба рассмотренных ранее способа. Мы будем отмечать сразу несколько элементов справочника и подбирать их в документ без закрытия формы выбора. Затем снова отмечать несколько элементов справочника и подбирать их в документ. Для этого нам будет необходимо при открытии формы выбора установить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор .

Обработчик команды Подбор :

Обработчик события ОбработкаВыбора остается без изменений.

Использование метода ОповеститьОВыборе()

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

Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.

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

Справка

ТабличноеПоле.ДобавитьСтроку()

Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».

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

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

ДанныеФормыКоллекция.Добавить()

Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции .

Доступность: тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).

Источник

Оцените статью