d9e5a92d

Как, не открывая форму внешней обработки, выполнить ее процедуру

У точки «Определение маршрута» в группе свойств «Адресация» выбрано подразделение «Менеджеры». Для этого соответствующий элемент должен быть заведен как предопределенный.

Определен обработчик события Обработка интерактивной

активации:

ПолучитьФорму("Маршрут").Открыть(); СтандартнаяОбработка = Ложь;

При попытке открыть задачу, соответствующую данной точке будет открываться форма бизнес процесса «Маршрут». В этой форме можно отображать данные по водителю и по маршруту (с возможностью корректировки табличной части, содержащей маршрут).

Определен обработчик события При выполнении:

Если ТочкиМаршрута.КоличествоО = 0 Тогда Сообщить("Не определен маршрут!!!”); Отказ = Истина;



КонецЕсли;

В данном обработчике проверяется, что хотя бы одна точка маршрута указана, в противном случае выполнить задачу не получится.

У точки условия определен обработчик события Проверка УСЛОВИЯ:

Результат = ПолучитьТочкуМаршрута().Пустая<)

Используется функция:

Функция ПолучитьТочкуМаршрутаО

Запрос=Новый Запрос;

Запрос.Текст= "ВЫБРАТЬ ПЕРВЫЕ I

I НаМаршрутеТочкиМаршрута.НомерСтроки КАК НомерСтроки.

I НаМаршрутеТочкиМаршруга.Склад |ИЗ

I БнзнесПроцесс.НаМаршруте.ТочкиМаршрута КАК НаМаршрутеТочкиМаршруза

|ГДЕ

I (НаМаршрутеТочкиМаршрута.Склад НЕ В

(ВЫБРАТЬ РАЗЛИЧНЫЕ ЭтапПути.Склад ИЗ

Задача.УгапПутн КАК УтапПути ГДЕ

УтапПути.БизнесПроцесс = &БизнесПроцесс ))

I И

I (Ссылка = &БизнесПроцесс)

ІУПОРЯДОЧИТЬ ПО I НомерСтроки";

Запрос.УстановитьПараметрС’БизнесПроцесс". Ссылка);

Выборка = Запрос.ВыполнитьО.ВыбратьО;

Если Выборка.СледующийО Тогда Возврат (Выборка.Склад);

Иначе

Возврат(Справочники.Склады. ПустаяСсылкаО);

КонеиЕсли;

КонецФункции

Данная функция возвращает следующую точку маршрута или пустую ссылку, в случае если весь маршрут пройден.

У точки «Точка маршрута» в свойстве «Подразделение» группы свойств «Адресация» выбрано «Диспетчерская» (предопределенный элемент справочника «Подразделения»).

Определен обработчик события При СОВДЭНИИ задач:

ФормируемыеЗадачн[0].Склад = ПолучитьТочкуМаршрута():

В этом обработчике для задачи устанавливается текущий склад (в соответствии с ранее определенным маршрутом). «Формируемые задачи» это параметр, принимаемый данным обработчиком события.

У точки «Путевой лист сдан» в свойстве «Пользователь» группы свойств «Адресация» выбрано «Контролеров» (предопределенный элемент справочника «Пользователи»). Можно отказаться от подобного способа назначения ответственного за выполнение задачи. Используя обработчик события При СО0ДЭНИИ задач и данные в системе (регистре сведений, ответственном за адресацию) ответственного можно назначать программно (таким же образом как в точке «Точка маршрута» назначается очередной склад).

Определен обработчик события Обработка интерактивной

активации:

ПолучитьФормуС ПутевойЛ нет").Открытій); СтандартнаяОбработка = Ложь;

При попытке открыть задачу будет открыта форма «Путевой Л ист» бизнес процесса, в которой можно будет ввести данные о показаниях спидометра и расходе топлива.

Также определен обработчик события При выполнении:

Если ПоказанияСпидометраКонечные = О ИЛИ Ссылка.РасходТоплива = 0 Тогда СообщитьР'Не введены данные но путевому листу!");

Отказ = Истина;

КонецЕсли;

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

Как при работе с бизнес процессами отказаться от стандартного способа формирования задачи и сформировать ее программно?

Для получения разрешения на какое-либо действие требуется получить согласование у нескольких сотрудников. Заранее не известно их количество. Согласование должно производиться параллельно, а не по схеме: сначала первый, после первого второй и т.п.

Считаем, что сотрудники, с которыми необходимо произвести согласование определяются в табличной части бизнес процесса « НаСогласование».

Карта маршрута бизнес процесса следующая:

Как, не открывая форму внешней обработки, выполнить ее процедуру


Для того чтобы после выполнения задачи «Определение рецензентов» сформировалось столько задач, сколько рецензентов выполнено определим обработчик события Перед созданием Задач точки действия «Согласование». Текст процедуры следующий:

Для Каждого Рецензент Из НаСогласование Цикл
Новая Задача = Задачи.ЭтапІІутн.СоздатьЗадачуО;

Новая Задача. БизнесПроцесс = Ссылка;

Новая Задача. Пользователь = Рецензент. Рецензент;
НоваяЗадача.Наименование = "Согласование со епецнатнетом";
НоваяЗадача.ТочкаМаршрута = БизнесПроцессы
.НаПараллельноеСогласов ІНИС
.'ГочкиМаршрута.Соі .тасование:
Новая Задача. Дата = ТекущаяДата();

НоваяЗадача.Записать();
ФормируемыеЗадачи.Добавить(НоваяЗадача);

КонецЦикла;
СтандартнаяОбработка = Ложь:
«Формируемые задачи» это массив, является параметром обработчика события. В нем содержаться значения имеющие тип

ЗадачаОбъект.ЭтапПути.

Если в параметр обработчика события Стандартная обработка не записать значение Ложь, то формируемый список задач будет очищен и будет создан заново исходя стандартной модели поведения.

Прочие прикладные объекты ф Как, не открывая форму внешней обработки, выполнить ее процедуру для определенного объекта?

Имеем ссылку на документ в переменной «Ссылка».

Переменная «ИмяФайла» содержит имя файла внешней обработки предназначенной для печати документа по специальной форме. Процедура «Печать» находится в модуле объекта обработки. Необходимо вызвать ее выполнение для нашего документа.

Перед выполнением данной операции необходимо проконтролировать наличие указания ключевого слова Экспорт в заголовке процедуры «Печать» модуля объекта обработки и принятие ссылки на печатаемый документ. Поскольку формы обработки задействованы не будут - ссылка будет передаваться посредством параметра процедуры.

Теперь можно сделать следующее:

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

Обратите внимание на то, что имя файла внешней обработки должно быть полным.

ф Как быстро получить информацию, по всем объектам, находящимся в компетенции конкретного менеджера (элемент справочника «Пользователи») по продажам?

Если вопрос скорости в данном случае критичен - лучше использовать критерии отбора.

Создаем новый критерий отбора «КомпетенцияМенеджераПродаж».

В данных нового критерия отбора указываем тип « СправочникСсылка. Пользователи».

Далее заполняем «Состав», указывая все объекты, которые должны попасть в отбор:

t| Критерий отборе КомпетснцмяМемеджер.іПродлж _ П X

Основные

Входящие

обьегтьг

фитермі

Да»еіые

состав

т*ормы

Подсистемы

Праве

Интерфейсы
Как, не открывая форму внешней обработки, выполнить ее процедуру
Это могут быть реквизиты элементов справочников, документов и т.д. Чтобы впоследствии получить все объекты, указанные в составе и заполненные конкретным значением менеджера можно будет использовать метод Найти() критерия отбора:

МассивСсылок = КритерииОібора

.КомпетенцияМенеджераПродаж . Найти(Менеджер);

Для Каждого Ссылка из МассивСсылок Цикл Сообшить(Ссылка);

КонецЦикла;

Переменная «Менеджер», переданная в качестве параметра методу НаЙГИО должна содержать ссылку на конкретного менеджера (т.е. на элемент справочника «Пользователи»).

Результат метода - массив. Элементы массива можно перебрать стандартным способом.

Или можно использовать запрос со следующим текстом:

ВЫБРАТЬ

КомпетеншіяМенеджераПродаж.Ссылка

ИЗ

КрніеринОтбора.КомметснцияМенеджераПродаж(&Менеджер) КА К Ком потен і шя М енсджераП родаж

Параметру запроса «Менеджер» нужно будет установить значение конкретного менеджера.

Результат запроса впоследствии можно перебрать стандартной выборкой.

Формы и элементыуправления

Работа с формами

® Как открыть форму документа?

ФормаДокумента = СсылкаНаДокумент.ПолучитьФормуО: ФормаДокумента.Открыть():_

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

Далее открываем полученную форму.

Как открыть форму внешней обработки?

Имя файла внешней обработки содержится в переменной «ИмяФайла».

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

Обработка = ВнешниеОбработки.ПолучнтьФорму(ИмяФаіпа); Обработка.Открыть();

Если бы требовалось открыть определенную форму этой обработки или форму с определенным ключом уникальности «Ключ» - для этого можно было бы использовать второй и третий параметры метода

ПолучитьФорму().

Например, так:

Обработка = ВнешііиеОбра6откн.ПолучитьФорму(''С:\Внсшіше\СпсцОтчет.срГ

ИмяФормы,,

Ключ);

Обработка.Открыть();_

Обратите внимание на то, что в любом случае имя файла должно быть полным.

(D Как отрыть форму отчета так, чтобы она не перекрывала собой ту форму, из которой она открыта?

Для этого форму отчета нужно открывать как подчиненную данной форме и устанавливать свойство Положен иеОкна в значение НеПерекрыватьВладельца:

Форма = Отчеты.ОтчетДиаірамма.Получи гьФормуС'ФормаОсновная". ЭтаФорма): Форма.ПоложениеОкна = ВариантПоложенияОкна. НеПерекрыватьВладельца; Форма.ОгкрытьО;

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

Как открыть форму отчета на весь экран?

Для этого следует воспользоваться свойством формы

СпособОтображенияОкна:

СпособОтображенияОкна = ВариантСпособаОтображенияОкна .Максимизированное;

Можно также запретить пользователю минимизировать и максимизировать открытое окно:

И чмененятьСпособОтображенияОкна = И чменениеСпособаОтображенияОкна _.Запретить;_

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

Как из формы документа открыть форму списка данного документа, спозиционировавшись на нем же?

ФормаСписка = Документы! Метаданные!). 11 мя |. I ІолучитьФормуСііискаІ): ФормаСписка.ПараметрТекущаяСтрока = Ссылка;

ФормаСписка.ОткрытЫ);

Получаем форму списка через объект ДокументМенеджер.<ИМЯ> по имени нашего документа. Далее свойству ПараметрТбкущаяСтрока расширения формы списка документов присваиваем ссылку на наш документ. Потом открываем форму.

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

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

Например, так образом ключ уникальности будет гарантировано новым:

ФормаСписка = Документы[Метаданные().Имя]

.ПолучитьФормуСписка(,, Новый УннкальныйПлентнфикаторО):

® В документе есть реквизит «Контрагент». Как открыть форму подчиненного ему справочника «ДоговорыКонтрагентов»?

Если Не Контрагснт.ПустаяО Тогда ФормаПодчиненныхДоговоров = Справочники

.ДоговорыКонтрагентов .ПолучитьФормуСписка();

ФормаПодчиненныхДоговоров.ПараметрОтборПоВладельцу = Контрагент: ФормаПодчиненныхДоговоров.ОткрытьО:

КонецЕсли:

Сначала проверяем заполнен ли реквизит «Контрагент». Если он не равен пустой ссылке получаем в переменную

«ФормаПодчиненныхДоговоров» форму списка справочника «ДоговорыКонтрагентов». По умолчанию получим основную форму, но если бы нам потребовалось получить какую-то конкретную - достаточно было бы указать имя открываемой формы первым параметром метода ПолучитьФормуСписка().

Далее устанавливаем значение «ПараметрОтборПоВлад ельцу» расширения формы списка равным ссылке на нашего контрагента и открываем форму.

© Как в форме отобразить картинку, сохраненную в реквизите справочника?

В диалоге формы (например, формы элемента справочника «Сотрудники») необходимо разместить элемент управления ПолеКартинки (его имя «Фото»). В самом справочнике существует реквизит «Фотография» имеющий тип ХранилищеЗначения (в него и записывалось значение, перед преобразованием к типу ХранилищеЗначения имевшее тип Картинка). В обработчике события При открытии формы разместим следующие строки:

// Значение, сохраненное в реквизите справочника, имеющеь // ХранилищеЗначения, можно только получить. Сохраненная Картинка = Фотография.Получить();

Если СохраненнаяКартинка О Неопределено Тогда // Если в хранилище было что-нибудь заранее записано... ЭлементыФормы.Фото.Картинка = СохраненнаяКартинка; КонецЕсли;
ТИП
Следует отметить, что если в реквизит «Фотография» может записываться не только картинка, то в этом случае обязательно необходимо производить проверку типа значения, полученного из хранилища значения.

<Х> Как в журнале документов «УчетКадров» отобрать только документы «ПриемНаРаботу»?

ь( Метаданные .Документы .ПриемНаРаботу);

ЖурналДокументовСписок.Отбор.ВидДокумента.Уетановиз

Данную работу необходимо проделать посредством основного реквизита формы журнала «ЖурналДокументовСписок».

Свойство Отбор данного объекта включает в себя свойство ВидДокумента. Необходимо только установить его значение.

Поскольку нам нужны именно документы «ПриемНаРаботу» - через метаданные получаем значение для отбора.

ф Как узнать интервал дат в открытом текущем журнале?

Интервал дат является одним из вариантов отбора для объектов типа ЖурналДокументовСписок.<имя>.

Работу необходимо вести с основным реквизитом формы журнала « ЖурналДокументовСписок»:

Если ЖурналДокументовСписок.Отбор.Дата.Использование Тогда Сообщить(ЖурналДокументовСписок.Отбор.Дата);

Иначе

Сообщить("Без ограничения [іо датам");

КонецЕсли;

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

Далее можно просто получить представление элемента отбора с именем «Дата».

Как при открытии справочника сделать отбор по контрагентам, входящим в список?

Для случая, когда необходимо делать отбор по контрагентам, входящим в список значений «СписокКонтрагентов»:

Процедура ПрнОгкрытинО

СправочникСпнсок.Отбор.Ссылка.ВидСравнения = ВидС равнения. ВСписке: СправочникСписок.Огбор.Ссылка.Значение = СписокКонтрагентов; СправочникСписок.Отбор.Ссылка.Использование = Истина;

КонецПроцедуры_

Сначала устанавливаем вид сравнения для отбора по полю «Ссылка». Далее назначаем в качестве значения список контрагентов, по которым нужно осуществить отбор. Устанавливаем для свойства Использование данного элемента отбора значение Истина.

Обратите внимание, Отбор - это свойство объекта Справ0ЧНИкСпиС0К.<ИМЯ>, то есть источника данных, а не элемента управления (табличного поля).

Как обеспечить, чтобы для выбора значения покупателя в расходной накладной справочник контрагенты открывался сразу с открытой группой «Покупатели»?

Поскольку нам необходимо особым образом открыть форму выбора именно из формы документа - сначала пропишем обработчик события Начало выбора поля ввода «Контрагент» формы документа:

Процедура КонтраіентНачалоВыбора( Элемент. СтандартнаяОбработка)

Если Элемент.Значенне.Пустая() Тогда СтандартнаяОбработка = Ложь:

ФормаВыбора = Справочники .Контрагенты

.ПолучитьФормуВыбора(, Элемент); ФормаВыбора. ВыборПокупателя = Истина; ФормаВыбора.ОткрытьО;

КонецЕсли;

КонецПроцедуры

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

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

В переменную «ФормаВыбора» получаем основную форму выбора соответствующего справочника. При этом назначаем параметры:

• владелец создаваемой формы - текущий элемент управления (поле ввода «Контрагент). Впоследствии, когда выбор произойдет, система вернет выбранное значение в этот элемент (еще говорят - оповестит о выборе);

Дальше работа идет уже со справочником: находим, какая форма указана в качестве основной для выбора:

Как, не открывая форму внешней обработки, выполнить ее процедуру


В найденной форме создаем реквизит «ВыборПокупателя», имеющий тип Булево. Затем в обработчике события При открытии необходимо добавить код, обеспечивающий установку значения свойства Текущий Родитель табличного поля «СправочникСписок».

Но сначала желательно обеспечить однозначное толкование понятия «группа Покупатели». Есть несколько вариантов:

а) Если справочник уже заполнен и группа «Покупатели» существует, можно подсмотреть код или наименование и в дальнейшем считать, что «группа Покупатели» - это элемент с таким то кодом или наименованием. Но существует опасность, что через какое-то время пользователь изменит код (наименование) этого элемента. Тогда наша процедура «потеряет» из виду «группу Покупатели». Поэтому лучше создать константу (например, «ГруппаПокупатели»), которая будет хранить ссылку на нужную группу справочника «Контрагенты».

б) Более надежным вариантом видится создание предопределенного элемента справочника с именем «Покупатели». Такому элементу «повредить» пользователю сложнее. Но тут возникнет вопрос: справочник был уже заполнен и в группе «Покупатели» 20000 элементов, как перенести их в другую группу?. Для ответа на этот вопрос в настоящем издании есть пример «Как перенести все элементы справочника «Контрагенты» из одной группы в другую?» на странице 99.

а) если идентификацию группы «Покупатели» делаем по ссылке, которая хранится в константе «ГруппаПокупатели»::

Если ВыборПокупателя Тогда
ЭлементыФормы.СправочникСнисок. ИерархическийПросмотр = Истина;
ЭлементыФормы.СправочникСнисок.ТекущийРодитель = Константы

.Г ру ппаПокупателн

.ПолучитьО;
КонецЕсли;
б) если идентификацию группы «Покупатели» делаем по предопределенному элементу:

Если ВыборПокупателя Тогда

ЭлементыФормы.СправочникСписок.ИерархнческийПросмотр = Истина: ЭлемснтыФормы.СправочникСписок.ТскущийРодитель = Справочники

.Контрагенты

.Покупатели;

КонсцЕсли;

Сначала проверяем значение реквизита «ВыборПокупателя» текущей формы. Если оно равно Истина - устанавливаем для соответствующего табличного поля формы свойство расширения табличного поля списка справочника ИерархическиЙПрОСМОТр, а свойство

Текущий Родитель табличного поля заполняем нужным значением.

В качестве замечания: описанное выше решение не является единственно возможным. Например, если значение текущего родителя было бы не жестко устанавливаемым («Покупатели»), а определялось в форме документа, тогда лучше для передачи информации между двумя формами воспользоваться созданием соответствующего реквизита формы выбора справочника.

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

Табличное поле

ф Как запретить пользователю изменять порядокследования колоноквтабличном поле?

Для этого можно воспользоваться свойством табличного поля

ИзменятьПозициюКолонок:

I ЭлементыФормы.ТабличноеІ Іоле.ИзменятьПозициюКолонок - Ложь:

Если необходимо запретить перемещение только некоторых колонок, тогда следует использовать свойства ИзменятьПозицию соответствующих колонок:

ЭлементыФормы.ТабличноеПоле. Колонки. Картинка.ИзменятьПозицию = Ложь:

ЭлементыФормы.ТабличноеПоле. Колонки. Код. ИзменятьПозицию = Ложь;

ЭлементыФормы

.ТабличноеПоле

.Колонки

.Наименование

.ИзменятьПозицию = Ложь;

® Как запретить пользователю изменять любые настройки колонок табличного поля?

Для этого можно воспользоваться свойством табличного поля

ИзменятьНастройкуКолонок:

ЭлементыФормы.ТабличноеПоле.ИзменятьНастройкуКолонок= Ложь:

Если необходимо запретить перемещение только некоторых колонок, тогда следует использовать свойства ИзменятьНастроЙку нужных колонок:

ЭлементыФормы.ТабличноеПоле. Колонки. Картинка. ИзменятьНастроЙку = Ложь: ЭлементыФормы.ТабличноеПоле.Колонки.Код.ИзменятьНастройку = Ложь; ЭлементыФормы

ТабличноеПоле

Колонки

Наименование

Иімсняи.Настройку = Ложь;

ф Как вывести информацию о том, какой отбор установлен в журнале документов?

Для этого рядом с табличным полем, отображающим журнал документов, можно расположить надпись (например, с именем «НадписьОтбор»), и присвоить ей значение отбора. Система автоматически выполнит получение представления указанного отбора:

ЭлсментыФормы.НадннсьОтбор Заголовок = СписокДокумснтов.Огбор;_

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

УстановленныйОтбор = СписокДокументов.Отбор; СообщнтьС'Элементы отбора:");

Для Каждого ЭлементОтбора ит УстановленныйОтбор Цикл Сообщить(Строка(ЭлементОтбора)

+ " использование = "

+ ЭлементОтбора.Использование); КонсцЦикла;

ф Как в форме справочника установить курсор на элемент с известным наименованием?

ЭлементыФормы.СправочникСписок.ТекущаяСтрока =

Справочники

.Контрагенты

.НайтпПоНаименованмю("ПОСТАВЩИКИ", Истина):

Свойству табличного поля «СправочникСписок» Текущая Строка присваиваем значение ссылки на найденный по наименованию элемент справочника.

Причем вторым параметром метода мы установили требование искать по полному соответствию наименования.

В результате и получим требуемое.

ф Как в форме списка сделать отбор по значению реквизита?

У объекта СправочникСписок.<ИМЯ> есть свойство Отбор. В его состав входят элементы отбора. Именно работая с ними - можно решить поставленную задачу.

Если необходимо организовать отбор по единственному значению реквизита, это можно сделать так:

Сира вочникСписок.Отбор.СтавкаНДС.УстановитЫ Перечисления

.СтавкиНДС НДС 18);

Методу УСТЗШВИТЬО элемента отбора первым параметром передается значение отбора, вторым - использование. По умолчанию второй параметр имеет значение Истина.

Можно еще так:

СправочникСписок.Отбор.СтавкаНДС.Значение = Перечисления

СтавкиНДС .НДС 18:

СправочникСписок.Отбор.СтавкаНДС. ВидСравнения = ВилСравнения. Равно: СправочннкСписок.Отбор.СтавкаНДС. Использование = Истина;

Устанавливаем по одному из полей отбора нужное значение. Заполняем свойство ВидСравнения этого поля отбора значением из системного перечисления ВидСравнения (в нашем случае Равно). Указываем системе на необходимость применить фильтрацию по данному элементу отбора.

Второй способ вроде бы массивнее, но зато дает возможность применять различные виды сравнения.

ф Как запретить выдачу сообщения: «Введенные данные не отображены в списке, так как не соответствуют отбору» при добавлении новых элементов в справочник?

Для этого следует использовать свойство расширения табличного поля списка справочника ПроверкаОтображенияНовойСтроки. По умолчанию, для табличного поля, отображающего список справочника, включена проверка соответствия новой строки установленному отбору. Отключить эту проверку можно интерактивно, на закладке «Прочее» диалога настройки списка:

Настройка списка

Колонки Прочее

ОПри открытии восстанавливать позицию!

М При открытии восстанавливать колонку

В начало списка

При открытии переходить

секунд

I I Обновлять автоматически каждые

Не проверять соответствие новых строк отбору

Отмене

Применить

Справка

Или программно:

ЭлементыФормы.ПолеСииска. ПроверкаОтображенияНовойСтроки =

ВариантПроверкиОгображенияНовойСтроки

.НеПроверять;

ф Как заполнить ячейку табличного поля данными?

У табличного поля «ТабличноеПолеЗаказов» есть колонки «Заказ» (тип значения - ДокументСсылка.ЗаказПокупателя), «Контрагент» (тип значения - Строка) и «ДатаОтгрузки» (тип значения - Дата):

Как, не открывая форму внешней обработки, выполнить ее процедуру


Необходимо при вводе или изменении заказа обеспечить заполнение ячеек «Контрагент» и «ДатаОтгрузки» данными из этого заказа.

Для реализации данной задачи используем обработчик события При изменении поля ввода «Заказ»:

Процедура ТабличноеПолеЗаказовЗаказПриИзменении(Элемент)

// Получить текущую строку табличного поля.

СтрокаТаблицы = ЭлементыФормы.ТабличноеІІолеЗакачов.ТекущаяСтрока: // Ввести значения в ячейки строки.

СтрокаТаблицы.Контрагент = СтрокаТаблицы.Закач.Контрагент: СтрокаТаблицы .ДатаОтгрузки = СтрокаТаблицы.Заказ.ДатаОтгрузки;

КонецПроцедуры

В процедуре в переменную «СтрокаТаблицы» получаем строку табличного поля. Далее работаем с ячейками данной строки. В ячейки «ДатаОтгрузки» и «Контрагент» вносим значения, прочитанные из реквизитов документа, введенного в ячейку «ЗаказПокупателя» данной строки.

Как изменить цвет фона ячейки табличного поля в зависимости от значения, выводимого в нее?

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

Допустим, нам необходимо в табличном поле «Товары» выделять красным цветом ячейки колонки «Остаток», если остаток меньше 10, и желтым - если больше 100.

Процедура ТоварыПриПолученииДанныхОлемент. ОформленняСтрок)

Для Каждого ОформлсниеСтроки Из ОформленняСтрок Цикл ЗначениеЯчсйкиОстаток = ОформлениеСтрокн.Ячсйки.Остаток.Значение:

Если ЗначениеЯчейкиОстагок о Неопределено Тогда

Если ЗначениеЯчейкиОстагок < 10 Тогда ОформлсниеСтроки. Ячейки.Остаток.ЦветФона = W сЬЦвета. Крас ный:

ИначеЕслн ЗначениеЯчейкнОстаток > 100 Тогда ОформленнеСтрокн.Ячейки.Остаток.ЦветФона = ??еЬЦвета.Желтый: КонецЕсли;

КонсцЕсли;

КонецЦикла;

КонецПроцедуры

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

Считывая данные о численном значении остатка, принимаем решение об установке цвета фона ячейки «Остаток» в оформлении строки.

Цвет назначаем, подбирая его из системного набора значений \Л/еЬЦрета.

Как в табличное поле

«ВыбранныеКонтрагенты» добавить новую колонку «Основной Договор», заполнить ее значения и дать возможность открытия этих значений?

Табличное поле «ВыбранныеКонтрагенты» связано с таблицей значений «ТаблицаКонтрагентов» и имеет одну колонку «Контрагент».

> омтрагеит
[іЯ <Попе ееооа> : >
<

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

Для решения данной задачи необходимо будет передать управление процедуре со следующим текстом:

Если ТаблицаКонтрагентов.Колонки.НайліСОсновнойДоговор") =

Неопределено Тогда

МасснвТнпов = Новый МассивО;

МассивТипов.Добавить(Тип(”СправочникСсылка.ДоговорыКонтрагентов"));

ОписаннеНужныхТипов = Новый ОписаниеТииов(МассивТипов);

ТаблицаКонтрагеитов.Колонки.ДобавитьС'ОсновнойДоговор",

ОписаниеНужныхТипов);

КонецЕсли:

Для Каждого СтрокаТаблицы нт ТаблицаКонтрагентов Цикл С'трокаТаблицыІ "ОсновнойДоговор"] =

СтрокаТаблицы[''Контрагент'']!"ОсновнойДоговорКонтрагента"]:

КонецЦикла;

Э.іементыФормы.ВыбранныеКонтрагенты.СоідатьКолонкиО: ЭлементыФормы. ВыбранныеКонтрагенты .Колонки.ОсновнойДоговор .Элементу правления.КнопкаОткрытия = Истина;

Поскольку в качестве данных табличного поля выступает таблица «ТаблицаКонтрагентов» - проще задача с добавлением колонок решается именно через эту таблицу значений.

Сначала проверим, нет ли уже у объекта «ТаблицаКонтрагентов» колонки «ОсновнойДоговор». Если нет - добавляем.

Если требуется добавить новую колонку именно определенного типа -сначала создаем объект ОписаниеТипов. К нужным типам в нашем случае пусть относится только

СправочникСсылка.ДоговорыКонтрагентов.

Далее создаем колонку с этим типом значения.

Как Вы понимаете, если потребуется создать колонку с составным типом значения - достаточно будет к массиву «МассивТипов» добавить еще несколько элементов с указанием других нужных типов.

Теперь открываем цикл перебора коллекции строк таблицы значений, в котором для каждой строки в поле с именем «ОсновнойДоговор» присваиваем значение, считанное с реквизита

«ОсновнойДоговорКонтрагента» соответствующего значения поля «Контрагент».

Далее табличному полю «ВыбранныеКонтрагенты» даем команду СоздатьКолонки(). При ее выполнении система удаляет старые колонки и загружает новые из источника данных (таблицы значений «Т аблицаКонтрагентов»).

Теперь остается установить свойство КноПКаОткрытия элемента управления колонки «ОсновнойДоговор» в положение Истина.

В результате пользователь при желании сможет ей воспользоваться.

Как, не открывая форму внешней обработки, выполнить ее процедуру


Как задать список выбора для колонки «ВидДокумента» табличного поля?

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

Если значение вводимых данных может только выбираться из перечня существующих в конфигурации документов - лучше всего войти в свойства колонки «ВидДокумента» и элементом управления указать «Поле выбора».

Далее при открытии формы можно через метаданные прочитать все виды документов конфигурации и передать их в виде списка значений свойству СпиеокВыбора элемента управления колонки «ВидДокумента»:

Процедура ПриОткрытииО

СписокВидовДокументов = Новый СписокЗначений;

Для Каждого ДокументКонфигурации из Метаданные.Документы Цикл СписокВидовДокументов.Добавить(ДокументКонфигурации.Имя): КонецЦикла:

ЭлементыФормы.ПодборДанных .Колонки.ВидДокумента

.ЭлементУправления.СписокВыбора = СписокВидовДокументов: КоиецПроцедуры

Если же по какой-то причине необходимо все же дать возможность пользователю вводить в колонку произвольные виды документов (сверх списка документов текущей конфигурации) - тогда элементом управления колонки «ВидДокумента» необходимо указать «Поле ввода», и интерактивно или программно установить для него свойство КнопкаСпискаВыбора.

Например - так:

ЭлементыФормы. ПодборДанных .Колонки. ВидДокумента

.ЭлементУправления.КнопкаСпискаВыбора = Истина:

Как обеспечить возможность отбора и сортировки данных по реквизитам, не отображаемым в табличном поле формы списка справочника?

ЭлементыФорм ы .С правом н и кСписок

.НастройкаОтбора.ОсновнойПосгавщик.Доступность = Истина; ЭлементыФормы.СправочннкСписок

.НастройкаПорядка.ОеновнойПоставщик.Доступность = Истина;

Как видите, для того, чтобы добавить возможность интерактивного управления отбором и сортировкой по реквизиту «ОсновнойПоставщик» необходимо поработать со свойствами Настрой каОтбора и Настройка Порядка расширения табличного поля списка справочника.

Какреализовать перетаскивание между элементами управления?

Необходимо реализовать возможность заполнения табличной части документа номенклатурными позициями, используя механизм перетаскивания («drag and drop»). Для иллюстрации данной возможности в основной форме документа (в этом случае «Поступление товаров») определим реквизит формы «СправочникСписок» (тип СправочникСписок. Номенклатура). Далее вставим элемент управления ТабличноеПоле и через свойство Данные свяжем его с созданным реквизитом.

У табличного поля, связанного с табличной частью документа отметим свойство Разрешить перетаскивание. У табличного поля, связанного со списком номенклатуры необходимо отметить свойство Разрешить начало перетаскивания.

Определим обработчик события Начало перетаскивания у табличного поля, связанного со списком номенклатуры:

Процедура НоменклатураНачалоПеретаскиванияіЭлемент,

Парамеіры Перетаскивания. Стандартная Обработка)

// Получить значение, переданное системой.

Значение = ПараметрыПеретаскивания.Значение;

// В любом случае значением будет массив.

МасснвЗначсний = Новый Массив;

// Если перетаскивается группа, то в массив записываем входящие в нее элементы Если Значение.ЭтоГ руппа Тогда Выборка = Справочники.Номенклатура.Выбрать(Значение);

Пока Выборка.СледуюшийО Цикл

Если Не Выборка.ЭтоГруппа Тогда МассивЗначений.Добавить(Выборка.Ссылка);

КонецЕсли:

КонецЦикла:

Иначе

МассивЗначений.Добавить(Значение):

КонецЕсли;

// Заполненный массив записываем в параметры.

ПараметрыПеретаскивания. Значение = МасснвЗначсний;

КонецПроцедуры

Обработчик события Проверка перетаскивания у табличного поля, связанного с табличной частью документа.

Процедура ТоварыПроверкаПеретаскивання(Элемент,

ПараметрыПеретаскивания. Стандартная Обработка, Строка,

Колонка)

СтандартнаяОбработка = Ложь;

КонецПроцедуры

Обработчик события Перетаскивание у табличного поля, связанного с табличной частью документа.

Процедура ТоварыПеретаскиваниеОлемент,

ПараметрыПеретаскива

СтандартнаяОбработка

Строка,

Колонка)
ПИЯ,
ПолученныйМассив = ПарамстрыПеретаскивания.Значсн не;
Если ТипЗнч(ПолученныйМассив) = ТипС'Массив") Тогда
Для Каждого Значение Из ПолученныйМассив Цикл НоваяСтрока = ДокументОбъект.Товары.ДобавитьО; НоваяСтрока.Номенклатура = Значение; НоваяСтрока.Количсство = 1;

КоненЦикла;
КонецЕсли;
КонсцП роцедуры

В результате получим возможность «набрасывать с помощью мыши» в табличную часть документа номенклатурные позиции справочника либо поодиночке, либо все входящие в «захваченную» группу.

Как вывести остатки на складах в списке номенклатуры?

Для этого в табличное поле, отображающее список справочника «Номенклатура» следует добавить колонку (например, с именем «Остаток») и использовать событие При получении данных табличного поля, отображающего список номенклатуры:

Процедура СписокНоменклатураПриПолученииДанных(Элемент,

ОформлеііияСтрок)

Запрос = Новый Запрос!"ВЫБРАТЬ

I ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток.

I ТоварыНаСкладахОстаткн.Номенклатура.Ссылка КАК Товар |ИЗ

I РегистрНакопления.ТоварыНаСкладах.Остатки(,

Номенклатура В (&МассивТоваров))

КАК ТоварыНаСкладахОстатки”);

МассивНоменклатуры = Новый Массив: // для передачи в параметр запроса Соответствие = Новый Соответствие; // для заполнения остатков в строках

// табличного поля

Для Каждого Строка из ОформленияСтрок Цикл МассивНоменклатуры.Добавить(Строка.ДанныеСтроки.Ссылка);

Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка. Строка);

КоненЦикла;

Запрос.УстановитьПараметр! "МассивТоваров", МассивНоменклатуры);

Выборка = Запрос.Выполннть().ВыбратьО;

// Вывести остаток в строку, найденную в соответствии по номенклатуре // из запроса.

Пока Выборка.Следующий!) Цикл

Соответствие.Получить(Выборка.Товар.Ссылка).Ячейки.Остаток.Значенне =

Выборка.Остаток;

КоненЦикла:

КонецПроцедуры

В параметре «ОформленияСтрок» обработчика этого события передается коллекция оформлений строк, которые были выведены в табличное поле. Это позволяет получать остатки одним запросом для всех выведенных строк, что значительно сокращает время обработки данных.

Другие элементы управления

© В форме есть панель со страницами. Как разместить картинку на закладке?

Допустим, имя панели «ОсновнаяПанель», имя страницы «СчетаУчета», картинка уже есть в библиотеке картинок с именем «ДебетКредит». Тогда так:

ЭлементмФормы.Основная Панель.С'транн цы.СчетаУчета. КартмнкаЗаголовка =

БиблиотекаКартинок.Дебет Кредит;

Если же картинка «свеженарисованная» - необходимо предварительно добавить ее в состав метаданных (раздел «Общие картинки»).

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

® Как обеспечить, чтобы при открытии формы уже записанного элемента справочника «Контрагенты» активной была закладка «СчетаИДоговоры» панели «Панель»?

В модуле формы элемента используем обработчик события

При открытии:

Процедура ПриОткрытииО

Если ЭтоНовыйО = Ложь Тогда ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы

.Панель

.Страницы

.С четаИДогоноры

КонецЕсли:

КонсцПроцедуры

Убеждаемся, что открываем форму не нового элемента. Далее устанавливаем свойству ТекущаяСтраница панели «Панель» значение требуемой страницы.

Как организовать выбор из нескольких списков документов для открытия?

Необходимо реализовать возможность выбора нескольких списков документов для открытия:

Укажите, какие списки документов открыть X
П Платежное поручение исходящее

П Платежное поручение входящее

1 1 Аккредитив переданный

0 Аккредитив полученный

1 1 Платежное требование выставленное

П Платежное требование полученное

0 Инкассовое поручение переданное

0 Инкассовое поручение полученное

1 1 Платежный ордер списание денежных средств
ок
Отмена '
ІИ Платежный ордер: поступление денежных средств
і— —.....— -------3
Это можно выполнить следующим способом:

Док = Метаданные.Документы;

СписокДокументов = Новый СписокЗначенийО;
СписокДокументов.Добавить(Док.ГІлатежноеПоручениеИсхоляиіее.. Ложь); СписокДокументов.Добавнть(Док.ПлатежноеПорученнеВходящее,, Ложь);
СписокДокументов.Добавить(Док. Аккре дитивПереланный. . Ложь);
СписокДокументов.Добавить(Док.АккредитивПолученный. . Ложь);
СписокДокументов.ДобавитмДок.ПлатежноеТребованнеВыставленное,, Ложь); СписокДокументов. Добавить(Док.ПлатежиоеТребованиеПолученное,. Ложь); СписокДокументов.Добавнть(Док.ИнкассовоеПоручеі!иеГІереданное,. Ложь); СписокДокументов. Добавить(Док.ИнкассовосПорученнеПолученное.. Ложь); СписокДокументов.Добавить(Док.ПлатежныйОрдерСписаниеДенежны.\Срсдств,,
Ложь):
СписокДокументов.Добавить(Док.ПлатежныйОрдерПоступ існнеДенсжныхСредств.
Ложь);
Если СписокДокументов
.ОтметнтьЭлсменты("Укажите. какие списки документ ов открыть”) Тогда
Для Каждого НазваниеДокумента из СписокДокументов Цикл
Если НазваниеДокумента.Пометка Тогда
ФормаСписка = Документы! НазваниеДокумента.Значснис. Имя]
• ПолучитьФормуСписка));
ФормаСписка.ОткрытьО;

КонецЕсли:
КонецЦикла;
КонецЕсли:
Создаем список значений «СписокДокументов».

Добавляем в список значений элементы, содержащие объекты метаданных документов конфигурации в качестве значения, и ЛОЖЬ в качестве значения свойства Пометка (флажок снят).

Порядок заполнения параметров метода Добавить(): Значение, Представление, Пометка, Картинка.

Далее открываем пользователю модальное окно для установки пометок в списке «СписокДокументов».

Если, установив требуемые пометки, пользователь нажмет «ОК» -открываем цикл перебора элементов «СписокДокуменов». В цикле для тех элементов, на которых пометки установлены, выполняем получение и открытие основной формы списка документа по имени объекта метаданных.

Как можно организовать подстановку обращения кперсоне?

В поле ввода «Персона» пользователь вводит строковые данные с указанием имени абонента. Необходимо по окончании ввода предоставить возможность подстановки начала фразы: «Уважаемый», «Уважаемая»... или никакого.

Николай Федорович

Уважаемый Николай Федорович

Уважаемая Николай Федорович Уважаемое Николай Федорович Уважаемые Николай Федорович Николай Федорович

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

события Окончание ввода текста поля ввода:

Процедура І1ерсонаОкончаниеВводаТекста(Элемент,

Текст,

Значение.

С тандартнаяОбработка)

Значение = Новый СписокЗначенийО:

Значение.Добавить! "Уважаемый " + Текст): Значение.Добавить("Уважаемая " + Текст); Значение.ДобавитьС’Уважаемое " + Текст): Значение.Добавнть(”Уважаемые" + Текст);

Значение Добавить(Текст);

СтандартнаяОбработка = Ложь;

КонецПроцсдуры

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

Как в командной панели создать подменю с кнопками?

Допустим, разрабатываемый отчет может формироваться в различных вариантах периодичности, которые содержатся в перечислении «Периодичность». Возможность выбора варианта построения отчета нужно оформить в виде подменю в командной панели « КоманднаяПанельФормы».

Добавление подменю можно организовать следующим образом:

Кнопки Командной Панели = ЭлементыФормы. Командная! анельФормы. Кнопки;
// Проверить, нет ли уже на командной панели кнопки "С<| орммровать".
// Если есть - удалить.
Индекс = КнопкиКоманднойПансли
.Индекс(КнопкиКоманднойПанели.Найтн("Сформировать''));
Если Индекс =-1 Тогда
Индекс = 0:
Иначе
КнопкиКоманднойПансли. Удалить! Индекс);
КонецЕсли;
// Создать подменю "Сформировать''.
ПодмснюСформировать = КнопкиКоманднойІ Іансли
.Вставить(Индекс,
"Сформировать",
ТипКнопкиКоманднонПанели. Подменю.
"Сформировать");
//Добавить картинку.
ПодмснюСформировать. Картинка = БиблнотскаКартинок.Сформнровать:
ПодменюСформировать.Отображение = ОтображсниеКнопкиКоманднойПанели
НадписьКартинк і;
//Опросить перечисление о возможных вариантах периодичности.
Запрос = Новый ЗапросС'ВЫБРАТЬ Ссылка ИЗ Перечисление.Периодичность");
Выборка = Запрос.Выполітить().Выбрать!);
//Добавить кнопки к подменю.
Пока Выборка.Следующий!) Цикл
Период = Выборка.Ссылка;
ПодменюСформировать.Кнонки.ДобавитьГ'кн" + Перио, U
ТипКнонкиКоманднойПанели.Действие,
"Сформировал за " + Период.
Новый Действие! "КнопкаСформироватьНажатие"));
КонецЦикла;
Поскольку к редактируемой командной панели придется обращаться неоднократно - «положим» ее в переменную

«КнопкиКоманднойПанели».

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

Если такой кнопки нет - индекс имеет значение «-1», для дальнейшего создания нужной кнопки переменной «индекс» присвоим «О». Таким образом, наша кнопка будет первой слева, хотя могли бы установить ее любой другой по порядку.

Если же индекс кнопки «Сформировать» не равен «-1» - он

пригодится для удаления кнопки. Удаляем кнопку по индексу.

Теперь можно приступить к созданию подменю «Сформировать». Указываем в качестве параметров индекс, имя, тип и название создаваемой кнопки. Обратите внимание, все элементы объекта КнопкиКоманднойПанели это объекты

КнопкаКоманднойПанели. А вот свойство Тип объекта КнопкаКомандноЙПанели уже назначается из системного перечисления ТипКнопкиКомандноЙПанели. В нашем случае - это Подменю.

По умолчанию на созданной кнопке отображен только текст. Если хотим разместить еще картинку - необходимо указать значение свойства Картинка (передаем картинку из коллекции, хранящейся в библиотеке картинок данной конфигурации). Если будете назначать свою - не забудьте, что размер картинки для кнопки должен быть небольшим (оптимально - 16x16 пикселей). Чтобы картинка не вытеснила текст — устанавливаем свойству Отображение соответствующее значение.

Теперь соберем запросом все возможные значения из перечисления «Периодичность», поскольку запрос позволяет обратиться к нужной таблице.

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

Тело вызываемой процедуры может выглядеть так:
Процедура КнопкаСформнроватьНажатне(Элемент)
Название! Іериоднчносгн = СтрЗаменитцЭлемент.Имя,' кн".'”');
КонецПроцедуры
Получаем название периода из самого названия кнопки, заменив приставку «кн» на пустую строку. Теперь, опираясь на это название, можно выполнить в том или ином виде отчет.

Как созданной кнопке назначить «горячие клавиши»?

Допустим кнопке «СозданнаяКнопка» нужно назначить комбинацию клавиш «Ctrl+Alt+L».

СозданнаяКнопка.СочстаннеКлавнш =

Новый СочетавиеКлавиш( Клавишах, Истина. Истина.)

Устанавливаем значение свойству СочетаниеКлавиш значение, полученное конструктором НОВЫЙ. Первым параметром конструктору нужно передать основную клавишу сочетания. Ее значение берем из системного перечисления Клавиши.

Остальными параметрами передаем признак участия других клавиш: вторым - «Alt»; третьим - «Ctrl», четвертым - «Shift».

Замечания: горячие клавиши можно назначать только кнопкам с типом «Действие» (не подменю, и не разделитель).

И обратите внимание на значения системного перечисления Клавиша - русских букв там нет.

Как реализовать заполнение возможных значений поля выбора «ОбрабатываемаяТабличнаяЧасть» при заполнении поля ввода «ОбрабатываемыйДокумент»?

Есть поле ввода «ОбрабатываемыйДокумент». В качестве данных -реквизит формы «ОбрабатываемыйДокумент» (тип значения -ДокументСсылка).

Есть поле выбора «ОбрабатываемаяТабличнаяЧасть». В качестве данных - реквизит формы «ОбрабатываемаяТабличнаяЧасть» (тип значения - Строка, имеется в виду представление обрабатываемой табличной части).

Необходимо обеспечить, чтобы при выборе пользователем значения «ОбрабатываемыйДокумент» заполнялся список выбора поля ввода «ОбрабатываемаяТабличнаяЧасть».

Для решения этой задачи используем обработчик события При изменении поля ввода «ОбрабатываемыйДокумент»:

Процедура ОбрабатываемыйДокументПриИзменеиии(Элемент)

СписокВыбора = ЭлементыФормы

.ОбрабатываемаяТабличнаяЧасть

.СписокВыбора:

СписокВыбора. Очистить!);

Если Элемент.Значение о Неопределено И Не(Элемент.Значение.ПустаяО) Тогда ТабличныеЧасти = Элемент.Значение.МетаданныеО.ТабличныеЧасти;

Для Каждого ТабличнаяЧасть из ТабличныеЧасти Цикл СписокВыбора.Добавить(ТабличнаяЧасть):

КонецЦикла:

КонецЕсли;

КонецПроцедуры_

Сначала создаем переменную «СписокВыбора», содержащую список выбора поля «ОбрабатываемаяТабличнаяЧасть». Очищаем его, чтобы при последующих выборах других документов в качестве обрабатываемых - список выбора не разрастался.

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

Через метод Метаданные() определяем коллекцию табличных частей документа. В цикле их перебора добавляем значения к списку выбора поля «ОбрабатываемаяТабличнаяЧасть».

Кроме того, желательно побеспокоится о возможности очистки значения поля ввода «ОбрабатываемыйДокумент». Скорее всего - есть смысл при этом очистить и поле выбора «ОбрабатываемаяТабличнаяЧасть».

Этого можно добиться посредством обработчика события Очистка поля ввода «ОбрабатываемыйДокумент»:



Содержание раздела