- Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
- I. Решение задачи для для конфигураций на платформе 8.2, обычных форм, Бухгалтерии 2.0
- II. Решение задачи через СписокЗначений для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
- III. Решение задачи через ФормуВыбора для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
- IV. Вопрос к Знатокам- «Баг или криворук?»
- Выбор Адреса контрагента из Контактной информации. Пример работы с «Оповестить о выборе»
- I. Решение задачи для для конфигураций на платформе 8.2, обычных форм, Бухгалтерии 2.0
- II. Решение задачи через СписокЗначений для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
- III. Решение задачи через ФормуВыбора для конфигураций на платформе 8.3, управляемых форм, Бухгалтерии 3.0
- IV. Вопрос к Знатокам- «Баг или криворук?»
- Организация подборов в табличную часть документа
- Одиночный подбор
- Множественный подбор
- Подбор с использованием множественного выбора
- Множественный подбор с использованием множественного выбора
- Использование метода ОповеститьОВыборе()
- Справка
- ТабличноеПоле.ДобавитьСтроку()
- ДанныеФормыКоллекция.Добавить()
Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
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 такая ошибка не воспроизводится. Разработчики добавили реквизит формы типа «Булево» (у меня это АдресЗаполнено, у них это АналитикаУчетаЗаполнена) и его в ОбработкеВыбора исходной формы заполняют. НО если (с учетом этого добавления) запустить мою обработку на старом релизе — строчка пропадет, если на новом — останется. Платформу при этом не меняем. В связи с этим, всё равно хочется докопаться до сути. КАК при одной платформе, но разных релизах один и тот же код отрабатывает по-разному, учитывая, что никакие общие модули не используем?
Источник
Выбор Адреса контрагента из Контактной информации. Пример работы с «Оповестить о выборе»
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 такая ошибка не воспроизводится. Разработчики добавили реквизит формы типа «Булево» (у меня это АдресЗаполнено, у них это АналитикаУчетаЗаполнена) и его в ОбработкеВыбора исходной формы заполняют. НО если (с учетом этого добавления) запустить мою обработку на старом релизе — строчка пропадет, если на новом — останется. Платформу при этом не меняем. В связи с этим, всё равно хочется докопаться до сути. КАК при одной платформе, но разных релизах один и тот же код отрабатывает по-разному, учитывая, что никакие общие модули не используем?
Источник
Организация подборов в табличную часть документа
Для иллюстрации механизма подбора информации в форме будем использовать задачу подбора элементов справочника Номенклатура в табличную часть документа ПриходнаяНакладная как наиболее распространенную. Поскольку механизм подбора реализован на уровне форм, то в других случаях просто будут задействованы иные прикладные объекты. Сама механика подбора не изменится.
Для организации подбора в форму документа следует открыть форму справочника как подчиненную форме документа в целом либо одному из элементов формы. Способ получения формы справочника может быть любым, также как и сама форма справочника, которая будет использована. Важно лишь то, что эта форма должна быть открыта как подчиненная.
Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:
- когда в форме справочника будет выполнен интерактивный выбор;
- когда в форме справочника будет вызван метод ОповеститьОВыборе .
Одиночный подбор
При одиночном подборе форма справочника будет закрываться сразу после выбора элемента. Для выбора следующего элемента необходимо будет снова инициировать подбор.
Откроем форму документа ПриходнаяНакладная , создадим команду Подбор и назначим для нее обработчик:
В этой процедуре мы открываем форму выбора для справочника Номенклатура , указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная ( Элементы.Материалы ). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы , так как она является владельцем открытой формы выбора.
Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора :
В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение .
Множественный подбор
При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть() .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Подбор с использованием множественного выбора
Еще одним способом организации подбора является возможность выделения в списке сразу нескольких строк. Режим множественного выделения в списке устанавливается, как правило, во всех формах списков по умолчанию. Однако возможность выбрать сразу несколько элементов из списка по умолчанию, как правило, отключена.
Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора :
Множественный подбор с использованием множественного выбора
Последний способ подбора сочетает в себе оба рассмотренных ранее способа. Мы будем отмечать сразу несколько элементов справочника и подбирать их в документ без закрытия формы выбора. Затем снова отмечать несколько элементов справочника и подбирать их в документ. Для этого нам будет необходимо при открытии формы выбора установить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор .
Обработчик команды Подбор :
Обработчик события ОбработкаВыбора остается без изменений.
Использование метода ОповеститьОВыборе()
Метод формы ОповеститьОВыборе() используется в тех случаях, когда алгоритм формирования данных подбора сложен и кроме собственно выбора элемента справочника от пользователя требуется указание некоторой дополнительной информации. В этом случае метод ОповеститьОВыборе() вызывается тогда, когда вся необходимая информация подбора сформирована.
Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.
Также метод ОповеститьОВыборе() может использоваться в тех случаях, когда требуется передать в форму документа не только выбранный элемент справочника (или массив элементов), а некоторую произвольную структуру данных.
Справка
ТабличноеПоле.ДобавитьСтроку()
Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».
- Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
- Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
- Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).
Доступность: Толстый клиент.
ДанныеФормыКоллекция.Добавить()
Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции .
Доступность: тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Источник