Как программно установить отбор в открываемой форме(При открытии)? Для установки отбора используется свойство "Отбор" у менеджеров списков объектов, например, для открытия списка договоров определенного контрагента можно написать следующий код:
Код 1C v 8.х ФормаВыбора = Справочники. ДоговорыКонтрагентов. ПолучитьФормуВыбора( "ФормаВыбора" , ЭтаФорма, "ФормаВыбораДоговора" ) ;
ФормаВыбора. Отбор. Владелец. Значение = КонтрагентСсылка;
ФормаВыбора. Отбор. Владелец. Использование = ИСТИНА ;
ФормаВыбора. ОткрытьМодально( ) ;
В данном случае мы применили вид сравнения "Равно", но не указывали его т.к. оно стоит по умолчанию. Используя разные значения вида сравнения мы значительно расширяем возможности.
Например, у нас в базе контрагент является и продавцом и покупателем, при этом договоры находятся в соответствующей группе внутри справочника. Поэтому мы сделаем отбор не только на самого контрагента, но и на группу "Группа Покупатели" в которой находится договор:
Код 1C v 8.х ФормаВыбора = Справочники. ДоговорыКонтрагентов. ПолучитьФормуВыбора( "ФормаВыбора" , ЭтаФорма, "ФормаВыбораДоговора" ) ;
ФормаВыбора. Отбор. Владелец. Значение = КонтрагентСсылка;
ФормаВыбора. Отбор. Владелец. Использование = ИСТИНА ;
ГруппаПокупатели = Справочники. ДоговорыКонтрагентов. НайтиПоНаименованию( "Группа Покупатели" ) ;
ФормаВыбора. Отбор. Родитель. ВидСравнения = ВидСравнения. ВИерархии;
ФормаВыбора. Отбор. Родитель. Значение = ГруппаПокупатели;
ФормаВыбора. Отбор. Родитель. Использование = ИСТИНА ;
ФормаВыбора. ОткрытьМодально( ) ;
Категория:
Работа с Формой (Диалог) и её элементами Поле выбора ~ Как ограничить список выбора? Ограничим список элементов, установив отбор в открываемой форме
Код 1C v 8.х
Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка)
ФормаВыбора = Справочники. ПрочиеДоходыИРасходы. ПолучитьФормуВыбора( , Элемент) ;
ЭлементОтбораВидПДР = ФормаВыбора. Отбор. ВидПрочихДоходовИРасходов;
Если ЭлементОтбораВидПДР < > Неопределено Тогда
ЭлементОтбораВидПДР. ВидСравнения = ВидСравнения. Равно;
ЭлементОтбораВидПДР. Значение = Перечисления. ВидыПрочихДоходовИРасходов. ПрочиеВнереализационныеДоходыРасходы;
ЭлементОтбораВидПДР. Использование = Истина ;
КонецЕсли ;
ФормаВыбора. ЭлементыФормы. СправочникСписок. НастройкаОтбора. ВидПрочихДоходовИРасходов. Доступность = Ложь ;
ФормаВыбора. Открыть( ) ;
СтандартнаяОбработка = Ложь ;
КонецПроцедуры
Процедура СчетДтНачалоВыбора(Элемент, СтандартнаяОбработка)
Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ
| Хозрасчетный.Ссылка
|ИЗ
| ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Родитель В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы))
| И Хозрасчетный.ЗапретитьИспользоватьВПроводках = ЛОЖЬ" ;
СписокСчетов = Новый СписокЗначений;
СписокСчетов. ЗагрузитьЗначения( Запрос. Выполнить( ) . Выгрузить( ) . ВыгрузитьКолонку( "Ссылка" ) ) ;
ФормаВыбора = ПланыСчетов. Хозрасчетный. ПолучитьФормуВыбора( , Элемент) ;
ЭлементОтбораСсылка = ФормаВыбора. Отбор. Ссылка;
Если ЭлементОтбораСсылка < > Неопределено Тогда
ЭлементОтбораСсылка. ВидСравнения = ВидСравнения. ВСписке;
ЭлементОтбораСсылка. Значение = СписокСчетов;
ЭлементОтбораСсылка. Использование = Истина ;
КонецЕсли ;
ФормаВыбора. ЭлементыФормы. Список. НастройкаОтбора. Ссылка. Доступность = Ложь ;
ФормаВыбора. Открыть( ) ;
СтандартнаяОбработка = Ложь ;
КонецПроцедуры
Использование выбора из списка
Код 1C v 8.х
Процедура ВидПДРНачалоВыбора(Элемент, СтандартнаяОбработка)
ВидыПДР = Новый СписокЗначений;
ВидыПДР. Добавить( Перечисления. ВидыПрочихДоходовИРасходов. ПрочиеВнереализационныеДоходыРасходы) ;
ВидыПДР. Добавить( Перечисления. ВидыПрочихДоходовИРасходов. ПрочиеОперационныеДоходыРасходы) ;
ВыбранныйЭлемент = ВыбратьИзСписка( ВидыПДР, Элемент, ВидыПДР. НайтиПоЗначению( Элемент. Значение) ) ;
Если ВыбранныйЭлемент < > Неопределено Тогда
Элемент. Значение = ВыбранныйЭлемент. Значение;
КонецЕсли ;
СтандартнаяОбработка = Ложь ;
КонецПроцедуры
Процедура СчетКтНачалоВыбора(Элемент, СтандартнаяОбработка)
СчетаКт = Новый СписокЗначений;
СчетаКт. Добавить( ПланыСчетов. Хозрасчетный. РасчетыСПоставщиками) ;
СчетаКт. Добавить( ПланыСчетов. Хозрасчетный. РасчетыСПодотчетнымиЛицами) ;
СчетаКт. Добавить( ПланыСчетов. Хозрасчетный. РасчетыСПрочимиПоставщикамиИПодрядчиками) ;
СчетаКт. Добавить( ПланыСчетов. Хозрасчетный. РасчетыПоТекущимОперациям) ;
СчетаКт. Добавить( ПланыСчетов. Хозрасчетный. ПрочиеДоходы) ;
ВыбранныйЭлемент = ВыбратьИзСписка( СчетаКт, Элемент, СчетаКт. НайтиПоЗначению( Элемент. Значение) ) ;
Если ВыбранныйЭлемент < > Неопределено Тогда
Элемент. Значение = ВыбранныйЭлемент. Значение;
КонецЕсли ;
СтандартнаяОбработка = Ложь ;
КонецПроцедуры
Категория:
Работа с Формой (Диалог) и её элементами Открыть форму выбора и выбрать элемент справочника На форме отчета находится поле списка, связанное с реквизитом списком значений.
Нужно:
1) чтоб при нажатии на кнопку Подбор на форме отчета открывалась форма справочника
2) при выборе элементов этого справочника они попадали в список значений в форме отчета и отображались в поле списка.
Как это сделать?
Код 1C v 8.х
Процедура ДобавитьВодителяНажатие(Элемент)
ФормаПодбора = Справочники. Водители. ПолучитьФормуСписка( , ЭтаФорма) ;
ФормаПодбора. РежимВыбора = Истина ;
ФормаПодбора. ЗакрыватьПриВыборе = Ложь ;
Если Не ФормаПодбора. Открыта( ) Тогда
ФормаПодбора. Открыть( ) ;
КонецЕсли ;
КонецПроцедуры
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
сзВодители. Добавить( ЗначениеВыбора, ЗначениеВыбора. Наименование, Истина ) ;
КонецПроцедуры
Как видите, владельцем формы,
открываемой для подбора служит не отдельный элемент формы отчета, а вся форма отчета.
Категория:
Справочники Как начать транзакцию в режиме управляемых транзакционных блокировок? У метода системы НачатьТранзакцию() есть параметр, с помощью которого можно указать режим управления.
Код 1C v 8.х // Указание режима открываемой транзакции
// Транзакция предназначена для записи в информационную базу согласованных изменений.
// Все изменения, внесенные в информационную базу после начала транзакции,
// будут затем либо целиком записаны, либо целиком отменены.
НачатьТранзакцию(РежимУправленияБлокировкойДанных.Управляемый);
// Код, исполняемый в рамках транзакции.
// ...
Если ОбнаруженыОшибки Тогда
// Отменяем открытую ранее транзакцию.
// Все изменения, внесенные в информационную базу в процессе транзакции, будут отменены.
ОтменитьТранзакцию();
КонецЕсли;
// Завершаем успешную транзакцию.
// Все изменения, внесенные в информационную базу в процессе транзакции, будут записаны.
ЗафиксироватьТранзакцию();
Следует помнить, что «вложенных» транзакций в системе 1С:Предприятие 8 нет. Также надо иметь в виду, что параметр «действует» только в том случае, если в свойстве конфигурации Режим управления блокировкой данных выбрано значение Автоматический и управляемый. Если для конфигурации установлен режим Автоматический, то все транзакции будут исполняться в автоматическом режиме; если Управляемый, то в управляемом режиме.
Пример:
Код 1C v 8.х
ВыборкаТоваров = Справочники. Номенклатура. Выбрать( ) ;
НачатьТранзакцию( ) ;
Пока ВыборкаТоваров. Следующий( ) Цикл
ТоварОбъект = ВыборкаТоваров. ПолучитьОбъект( ) ;
ЗакупочнаяЦена = ТоварОбъект. ЗакупочнаяЦена;
Если ЗакупочнаяЦена < > 0 Тогда
ТоварОбъект. ЗакупочнаяЦена = ЗакупочнаяЦена * 1.05 ;
ТоварОбъект. Записать( ) ;
КонецЕсли ;
КонецЦикла ;
ЗафиксироватьТранзакцию( ) ;
Категория:
Встроенные Функции Как организовать подбор элемента справочника Форма справочника должна быть открыта как подчинённая данной форме (или элементу формы), а в нашей форме (или элементе формы) кодируем событие “Обработка выбора”:
Код 1C v 8.х Процедура кнПодборНажатие(Элемент)
ОчиститьСообщения();
форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
форма.ВладелецФормы = ЭтаФорма;//указали владельца;
форма.РежимВыбора = Истина;
форма.ЗакрыватьПриВыборе = Ложь;
форма.Открыть();
КонецПроцедуры
//Это обработчик выбора для формы, т.к. форма - владелец
//открываемой формы выбора справочника;
Процедура ОбработкаВыбора(значениеВыбора, Источник)
перем стр;
стр = табл.Найти(строка(значениеВыбора), "Вторая");
если стр = Неопределено тогда
кол = табл.Количество();
новаяСтрока = табл.Добавить();
новаяСтрока.Первая = кол + 1;
новаяСтрока.Вторая = строка(значениеВыбора);
иначе
Сообщить("Наименование " + строка(значениеВыбора) + " уже имеется в таблице.");
конецЕсли;
конецПроцедуры
Категория:
Справочники Форма ~ Как получить данные одной формы, находясь на другой? Например, на 1 форме есть поле ввода. Как поместить данные этого поля ввода на форму 2, используя внешние обработки?
Самый простой способ - инициировать открытие формы программно и программно получить данные с нее после закрытия:
Код 1C v 8.х Форма = Справочники. Номенклатура. ПолучитьФормуСписка( ) ;
Форма. ОткрытьМодально( ) ;
Сообщить( Форма. ПолеВВода1 ) ;
Второй вариант - переподключить обработчик событий:
Код 1C v 8.х Форма = Справочники. Номенклатура. ПолучитьФормуСписка( ) ;
Форма. ПодключитьОбработчикИзмененияДанных( "РеквизитФормы" , "ПриНоменклатуре" ) ;
Форма. ОткрытьМодально( ) ;
Но в этом случае процедура ПриНоменклатуре(РасшифровкаСобытия) должна находиться в модуле
открываемой формы.
Стандартных способов 1С для других видов обработки событий не существует. Т.к. в 1С все процедуры-обработчики событий должны находиться в модуле этого элемента и никак иначе из внешней обработки процедуру не подключишь.
Категория:
Работа с Формой (Диалог) и её элементами Форма ~ Как установить отбор в открываемой форме? Код 1C v 8.х ФормаВыбораВидаРасчета = ПланыВидовРасчета. УдержанияОрганизаций. ПолучитьФормуВыбора( "ФормаВыбора" , ЭлементыФормы. Удержания, "дляДокументаРегистрацияРазовыхУдержаний" ) ;
ФормаВыбораВидаРасчета. Отбор. Ссылка. ВидСравнения = ВидСравнения. НеВСписке;
ФормаВыбораВидаРасчета. Отбор. Ссылка. Значение = СпВидовРасчета;
ФормаВыбораВидаРасчета. Отбор. Ссылка. Использование = ИСТИНА ;
ФормаВыбораВидаРасчета. Открыть( ) ;
Категория:
Работа с Формой (Диалог) и её элементами Открыть форму справочника Код 1C v 8.х
Форма = Справочники.Номенклатура.ПолучитьФормуСписка();
//Можно открыть так
Форма.Открыть(); //Открывает форму и делает ее окно активным.
// или так
ФормаСписка.ОткрытьМодально(); //Открывает форму в модальном режиме. Форма открывается для выбора, возвращает выбранное значение (или массив значений, в случае разрешенного множественного выделения в открываемой форме). Если значение не выбрано, возвращается Неопределено.
// Для возврата значения из модальной формы, в форме пишут Закрыть(<Параметр закрытия>); Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
Категория:
Справочники Открыть форму документа Код 1C v 8.х
Форма = Документы.РасходныйКассовыйОрдер.ПолучитьФорму();
//возможные варианты получения формы: Параметы ()
//Форма = Документы.РасходныйКассовыйОрдер.ПолучитьФормуВыбора();
//Форма = Документы.РасходныйКассовыйОрдер.ПолучитьФормуНовогоДокумента();
//Форма = Документы.РасходныйКассовыйОрдер.ПолучитьФормуСписка();
//Можно открыть так
Форма.Открыть(); //Открывает форму и делает ее окно активным.
// или так
ФормаСписка.ОткрытьМодально(); //Открывает форму в модальном режиме. Форма открывается для выбора, возвращает выбранное значение (или массив значений, в случае разрешенного множественного выделения в открываемой форме). Если значение не выбрано, возвращается Неопределено.
// Для возврата значения из модальной формы, в форме пишут Закрыть(<Параметр закрытия>); Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
Категория:
Документы