Форма выбора (подбор) в управляемых формах

Публикация № 1233756 08.05.20

Разработка - Универсальные функции

Подбор УФ ФормаВыбора Отбор

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

Продолжение статьи коллеги starik-2005

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

Пример 1. 

Простой вызов формы выбора с одним возвращаемым результатом:

&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)
 
	ПараметрыФормы = Новый Структура("РежимВыбора",Истина);

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,ЭтаФорма);

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) ///Событие формы
	
     РезультатСсылка =  ВыбранноеЗначение; ///Выбранное значение, вернет ссылку (документа в нашем примере)

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

Пример 2.

Выбор нескольких значений (документов или справочников) :

&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)
 
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("РежимВыбора",Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор",Истина);
	ПараметрыФормы.Вставить("ЗакрыватьПриВыборе",ложь);

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,ЭтаФорма);

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


&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	МассивСсылок =  ВыбранноеЗначение; ///Вернётся массив с выбранными значениями (Даже если значение только одно )
КонецПроцедуры

В первых 2-х примерах мы использовали обработчик (Событие) формы "ОбработкаВыбора".

Теперь рассмотрим пример с использованием "Обработки оповещения", на мой взгляд более удобно )

Пример 3.

&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)
 
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("РежимВыбора",Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ///Если хотим несколько значений

	ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"ПодборРеализации");

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
	        ЭтаФорма, , , , ОбработкаВыбора);

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

&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

   //Дополнительные условия если необходимо
   //Если ДопПараметры = "ПодборРеализации" тогда

    Если Значение = Неопределено Тогда  ///Если ничего не выбрать - вернется пустое значение (Неопределено)
        Возврат;
    КонецЕсли;
     
    МассивДокументов = Значение ///Если Множественный Выбор - то вернется массив 
    

    //КонецЕсли;
КонецПроцедуры

 

Пример 4. 

&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)
 
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("РежимВыбора",Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ///Если хотим несколько значений

	ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"ПодборРеализации");

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
	        ЭтаФорма, , , , ОбработкаВыбора);

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

&НаСервере  
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт

    Если Значение = Неопределено Тогда  ///Если ничего не выбрать - вернется пустое значение (Неопределено)
        Возврат;
    КонецЕсли;
     
    МассивДокументов = Значение ///Если Множественный Выбор - то вернется массив 
    
КонецПроцедуры

 

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

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

Пример 5.

&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)

    ///Создаем структуру с отбором и добавляем значения
	ПараметрыОтбора = Новый Структура;
	ПараметрыОтбора.Вставить("ВидОперации", ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.Товары"));
	//ПараметрыОтбора.Вставить("Дата", ТекущаяДата());   ///Дополнительный отбор
 
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора); ///Добавляем отбор в параметры формы

	ПараметрыФормы.Вставить("РежимВыбора",Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор",Истина);

	ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"Подбор");

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
	        ЭтаФорма, , , , ОбработкаВыбора);

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

&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт
    Если Значение = Неопределено Тогда
        Возврат;
    КонецЕсли;
     
    МассивДокументов = Значение; 
	
КонецПроцедуры

 

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

Для этого передаем вместо Отбора -Фиксированные настройки в форму выбора.

Пример 6.

&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)
	НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;

    ///Если хотим несколько условий
    ГруппаОтбора = НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ВидОперации");
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование  = Истина;
	ЭлементОтбора.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.Товары");

	ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Дата");
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.больше;
	ЭлементОтбора.Использование  = Истина;
	ЭлементОтбора.ПравоеЗначение = НачалоГода(ТекущаяДата());

	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновки);
	ПараметрыФормы.Вставить("РежимВыбора",Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор",Истина);

	ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"Подбор");

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
	        ЭтаФорма, , , , ОбработкаВыбора);

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


&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт
    Если Значение = Неопределено Тогда
        Возврат;
    КонецЕсли;
     
    МассивДокументов = Значение 
	
КонецПроцедуры

 

Пример 7.

Как открыть форму выбора с Позиционированием ранее выбранного значения:

&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)

	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("РежимВыбора",Истина);
	ПараметрыФормы.Вставить("МножественныйВыбор",Ложь);
	ПараметрыФормы.Вставить("ЗакрыватьПриВыборе",ложь);
	
	Если РанееВыбранныйДокумент <> Неопределено Тогда    ///Реквизит формы, ранее выбранное значение из открываемой формы	
		ПараметрыФормы.Вставить("УстановитьПараметрыФункциональныхОпцийФормы",Новый Структура("ТекущаяСтрока",РанееВыбранныйДокумент));
	КонецЕсли;
	
	ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтотОбъект,"Подбор");

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыФормы,
	        ЭтаФорма, , , , ОбработкаВыбора);

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

&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) экспорт
    Если Значение = Неопределено Тогда
        Возврат;
    КонецЕсли;
     
    МассивДокументов = Значение 
	
КонецПроцедуры

 

Тестировалось на 1С:Предприятие 8.3 (8.3.16.1063) и 1С:Предприятие 8.3 (8.3.13.1644), Спасибо за внимание, возможно, кому-то поможет)

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. CyberCerber 969 08.05.20 13:40 Сейчас в теме
Да, с серверными методами формы вечно какие-то косяки в платформе. Раньше приватные методы на сервере можно было вызывать вне формы.
А приватных методов НаКлиентеНаСервереБезКонтекста вообще можно создать несколько штук с одинаковым именем.
CratosX; user5300; +2 Ответить
2. marku 62 09.05.20 10:48 Сейчас в теме
Спасибо. Можно ещё пример с позиционированием, при открытии, на раннее выбранном документе.
5. user5300 895 11.05.20 09:32 Сейчас в теме
16. ids79 7681 25.09.20 20:34 Сейчас в теме
(5)Чего-то не понял...
А почему не так:
ПараметрыВыбора.Вставить("ТекущаяСтрока",РанееВыбранныйДокумент);
?
alex99232014; ankr; Mechanist; +3 Ответить
3. artemusII 10.05.20 14:02 Сейчас в теме
"Работает до 8.3.13.1644, с 8.3.16.1063 этот метод недоступен"...

Не соглашусь - работает отлично. Проверено.
Прикрепленные файлы:
4. user5300 895 11.05.20 09:02 Сейчас в теме
(3) У меня вываливается ошибка... Странно
Прикрепленные файлы:
6. Xershi 993 11.05.20 16:12 Сейчас в теме
(4) возможно дело в режиме совместимости или тии не сделали.
Также может повлиять битность 1с.
9. user5300 895 12.05.20 08:54 Сейчас в теме
(6) База типовая, БП 3, настройки типовые, x64
7. starik-2005 2809 12.05.20 00:12 Сейчас в теме
(4) Сделайте метод экспортным и должно взлететь... Ну и может повлиять модуль "ЭтаФорма" и "ЭтотОбъект".
гвость; +1 Ответить
8. user5300 895 12.05.20 08:51 Сейчас в теме
(7)
"ЭтаФорма" и "ЭтотОбъект"

и так и так пробовал, не хочет работать ) на Сервере он должен без экспорта взлететь
10. starik-2005 2809 12.05.20 14:22 Сейчас в теме
(8)
на Сервере он должен без экспорта взлететь
Это раньше так было, теперь экспорт нужен и на сервере.
user5300; +1 Ответить
11. coollerinc 170 13.05.20 12:44 Сейчас в теме
Может кто подскажет, как сделать форму списка, формой выбора. Не программно? я так и не нашел этой галочки в свойствах формы
12. Romarius 15 15.05.20 10:06 Сейчас в теме
(11)
Ищите флажок на элементе списка
coollerinc; +1 Ответить
13. coollerinc 170 15.05.20 15:05 Сейчас в теме
14. IVC_goal 189 12.06.20 10:25 Сейчас в теме
Нет примера вывода Формы Выбора Группы с отбором. Это возможно?
15. user5300 895 13.06.20 10:37 Сейчас в теме
(14) Можно добавить дополнительный отбор, выбор для групп

,,,,,,,,,,,,,
ПараметрыОтбора = Новый Структура;
//ПараметрыОтбора.Вставить("ВидОперации", ПредопределенноеЗначение("Перечисление.ВидыОперацийРеализацияТоваров.Товары"));
ПараметрыОтбора.Вставить("ВыборГруппИЭлементов ", ИспользованиеГруппИЭлементов.Группы); //Вот так
 
	ПараметрыВыбора = Новый Структура;
	ПараметрыВыбора.Вставить("Отбор", ПараметрыОтбора); ///Добавляем отбор в параметры формы


Показать
dart17; alex99232014; adhocprog; +3 Ответить
17. UtSpar 132 09.04.21 08:15 Сейчас в теме
Если мы работаем с полем формы то код что указан в КомандаОткрытьФормуВыбора должен быть в обработчике начало выбора с указание стандартной обработки в ложь.
user1165146; +1 Ответить
18. user1502278 192 15.06.21 03:04 Сейчас в теме
ПараметрыВыбора.Вставить("УстановитьПараметрыФункциональныхОпцийФормы",Новый Структура("ТекущаяСтрока",РанееВыбранныйДокумент));


Это лишнее, достаточно просто:

ПараметрыВыбора.Вставить(ТекущаяСтрока", РанееВыбранныйДокумент);
birk; adhocprog; zaic; astreikaea; kseonbr; user5300; +6 Ответить
19. maxim_saharov 06.08.21 15:39 Сейчас в теме
Спасибо большое - только первый и второй метод в обработке "НачалоВыбора" на 8.3.19.1229 не работает - и честно я не могу понять как это первый метод может работать ? ) Он может только для обычный форм ? ведь в нем же нету обработки оповещения. А вот третий супер метод еще раз Спасибо!
20. astreikaea 25.11.21 21:49 Сейчас в теме
Добрый день.
С помощью данной статьи удалось создавать форму выбора из Справочника в Документе. Работает подбор по определенному значению реквизита справочника и т.д. Спасибо!

Однако прошу подсказать как при открытии формы видеть только те номенклатурные позиции, у которых ненулевые остатки на складе(склад - реквизит документа, в котором мы находимся)?
21. user5300 895 26.11.21 09:53 Сейчас в теме
&НаКлиенте
Процедура КомандаОткрытьФормуВыбора(Команда)
	НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;

  
    ГруппаОтбора = НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;

	ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Ссылка");
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.ВСписке;
	ЭлементОтбора.Использование  = Истина;
	ЭлементОтбора.ПравоеЗначение = МассивНоменклатуры();   ///Список номенклатуры с 0 остатком



	ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"Подбор");

	ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаВыбора",ПараметрыВыбора,
	        ЭтаФорма, , , , ОбработкаВыбора);

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

&НаСервере
Функция МассивНоменклатуры() 
    масс = новый массив;
    Для каждого стр из объект.товары цикл
        Если стр.Остаток <0 тогда
            масс.Добавить(стр.Номенклатура);
         Конецесли;
        возврат масс;
    Конецфункции
Конецфункции
Показать
astreikaea; +1 Ответить
22. user5300 895 26.11.21 09:54 Сейчас в теме
23. astreikaea 26.11.21 14:07 Сейчас в теме
Спасибо большое!
Единственное немного доработал код под свою задачу и все работает!!!
Функция МассивНоменклатуры(Склад) 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОстаткиНоменклатурОстатки.Склад КАК Склад,
		|	ОстаткиНоменклатурОстатки.Номенклатура КАК Номенклатура,
		|	ОстаткиНоменклатурОстатки.КоличествоОстаток КАК КоличествоОстаток
		|ИЗ
		|	РегистрНакопления.ОстаткиНоменклатур.Остатки КАК ОстаткиНоменклатурОстатки
		|ГДЕ
		|	ОстаткиНоменклатурОстатки.Склад = &Склад";
	
	
	Запрос.УстановитьПараметр("Склад", Склад);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Массив = новый Массив;
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	Массив.Добавить(ВыборкаДетальныеЗаписи.Номенклатура);
	КонецЦикла;
Возврат Массив;
  КонецФункции
Показать

&НаКлиенте
Процедура Подбор(Команда)	
	
	НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;
    ГруппаОтбора = НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
	
	ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
	ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ВидНоменклатуры");
	ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование  = Истина;
	ЭлементОтбора.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ВидНоменклатуры.Товар");

   	ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Ссылка");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.ВСписке;
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ПравоеЗначение = МассивНоменклатуры(Объект.Склад);   ///Список номенклатуры с ненулевым остатком

	ПарамВыбора = Новый Структура("ФиксированныеНастройки, РежимВыбора, ЗакрыватьПриВыборе",НастройкиКомпоновки, Истина, Ложь);
	ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"Подбор");
	Форма = ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",ПарамВыбора,ЭтаФорма, , , , ОбработкаВыбора);

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

Показать
24. user5300 895 26.11.21 14:13 Сейчас в теме
(23) Пожалуйста ))

&НаКлиенте
Процедура Подбор(Команда)    
    
    НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;
    ГруппаОтбора = НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
    
    ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ВидНоменклатуры");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ВидНоменклатуры.Товар");

       ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
    ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Ссылка");
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.ВСписке;
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ПравоеЗначение = МассивНоменклатуры();   ///Список номенклатуры с ненулевым остатком

    ПарамВыбора = Новый Структура("ФиксированныеНастройки, РежимВыбора, ЗакрыватьПриВыборе",НастройкиКомпоновки, Истина, Ложь);
    ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"Подбор");
    Форма = ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",ПарамВыбора,ЭтаФорма, , , , ОбработкаВыбора);

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



Функция МассивНоменклатуры() 
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ОстаткиНоменклатурОстатки.Склад КАК Склад,
        |    ОстаткиНоменклатурОстатки.Номенклатура КАК Номенклатура,
        |    ОстаткиНоменклатурОстатки.КоличествоОстаток КАК КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ОстаткиНоменклатур.Остатки КАК ОстаткиНоменклатурОстатки
        |ГДЕ
        |    ОстаткиНоменклатурОстатки.Склад = &Склад";
    
    
    Запрос.УстановитьПараметр("Склад", Объект.Склад);
    
    Возврат  Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура");
    
  КонецФункции
Показать
astreikaea; +1 Ответить
25. Kirill_A 21.12.21 17:00 Сейчас в теме
ПараметрыВыбора = Новый Структура;
- это было очень жестоко )))
26. user5300 895 22.12.21 16:00 Сейчас в теме
27. Kirill_A 24.12.21 12:45 Сейчас в теме
(26) ПараметрыВыбора такое определение не пройдет - будет ошибка - так как это словосочетание зарезервировано системой. Мелочь но может времени отнять у новичков ...
SagittariusA; allshumilov; user659124_s.kostina; +3 Ответить
29. allshumilov 04.02.22 17:09 Сейчас в теме
(27) Парень ты маладец )) двойное тебе КУ )) а аффторы эцих с гвоздями, но потом ))) ибо тоже маладец
28. John_d 4397 28.12.21 16:30 Сейчас в теме
30. Valeric650 28.07.22 11:20 Сейчас в теме
Добрый день.
Делаю всё по примеру №2, но открываемая форма не открывается в режиме выбора.
Подскажите, нужно ловить передаваемые параметры в процедуре "ПриСозданииНаСервере" и прописывать параметры выбора ручками (но это как-то не особо удобно) или я что-то упускаю?
31. user5300 895 28.07.22 11:36 Сейчас в теме
(30)
Проверьте, используется ли форма выбора (Скрин1)

И посмотрите у формы выбора, в свойствах реквизита формы "Список" должно быть включено свойство "Режим выбора"


Если у вас нет формы выбора (У вас открывается форма списка) Тогда процедура будет такая:

Форма = ПолучитьФорму("Справочник.Товары.ФормаСписка");
Форма.Элементы.Список.РежимВыбора = Истина;
Форма.Открыть();
Прикрепленные файлы:
32. Valeric650 28.07.22 12:14 Сейчас в теме
(31) Спасибо за ответ. Я использую общую форму для списка и для выбора.
Если создать отдельную форму для выбора, то там в свойствах списка уже будет установлен режим выбора по умолчанию. Тогда зачем его ещё раз передавать в параметрах (ПараметрыФормы.Вставить("РежимВыбора",Истина);)?

Если использовать предложенный Вами способ, то программа выдаёт следующую ошибку:
"Ошибка при установке значения атрибута контекста (РежимВыбора)
Форма.Элементы.Список.РежимВыбора = Истина;
по причине:
Изменение свойства недоступно"

Выходит, что для корректной работы описанного в статье подбора, необходимо иметь две формы списка и постоянно дублировать форму списка в форму выбора, что не очень удобно (если производятся изменения в форме списка, то их нужно продублировать и в форме выбора).
33. user5300 895 29.07.22 11:09 Сейчас в теме
(32)

ещё раз передавать в параметрах

Чтобы форма выбора возвращала выбранное значение


(32)
Если использовать предложенный Вами способ, то программа выдаёт следующую ошибку:
"Ошибка при установке значения атрибута контекста (РежимВыбора)
Форма.Элементы.Список.РежимВыбора = Истина;
по причине:
Изменение свойства недоступно"

Извиняюсь, ввел в заблуждение... Форму списка нельзя открыть для выбора без дополнительных манипуляций с самой формой списка.
34. webandroid 2 01.09.22 23:03 Сейчас в теме
Нет еще примеров с расширениями.
Помогите пожалуйста с отбором в расширении. В расширение добавил в табличную часть документа "счет" дополнительную колонку с выбором из справочника "кассы"(иерархический, тоже добавлен) , хочу чтобы при открытии открывалась форма подбора (присутствует) с отбором по "Родителю" в моем случае "Контрагент" в этом документе .
35. webandroid 2 02.09.22 09:56 Сейчас в теме
отвечаю сам себе, конечно пример не универсальный но дает понять принцип.
в свойствах элемента создаем событие "НачалоВыбора"
&НаКлиенте
Процедура уч_Товарыуч_НомерЗаводскойНомерОбработкаВыбораВместо(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Структура = Новый Структура("Владелец", Объект.Контрагент) ;
	ОткрытьФорму("Справочник.Кассы.ФормаВыбора", Структура, Элемент);


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

//в форме выбора добавляем событие "ПриСозданииНаСервере"

    &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// структура с параметрами сохранилась в переменной "Параметры"
	Контрагент = Параметры.Владелец;
	Если ЗначениеЗаполнено(Контрагент) Тогда
		// Список отбора состоит из 1 контрагента
		Список.Отбор.Элементы.Очистить();
		СписокДляОтбора = Новый СписокЗначений;
		СписокДляОтбора.Добавить(Контрагент);
		// Установим отбор со созданному выше списку
		Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец");
		Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
		Отбор.Использование = Истина;
		Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
		Отбор.ПравоеЗначение = СписокДляОтбора;
		Элементы.Список.Обновить();
	КонецЕсли;
КонецПроцедуры
Показать

пока не указал "форму выбора" в справочнике "кассы" как основную не получалось.
36. SGordon1 07.09.22 13:31 Сейчас в теме
в 4 примере - ПараметрыВыбора опечатка же?
37. user5300 895 07.09.22 13:51 Сейчас в теме
Оставьте свое сообщение

См. также

Использование языковой модели GPT3 для создания интерфейса 1С на естественном языке

Работа с интерфейсом Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

Я взял типовую конфигурацию УТ редакции 11.5 Немного доработал запрос к языковой модели GPT-3 и получил возможность обращаться к учетной системе на естественном языке

15.01.2023    9352    mkalimulin    121    

74

{UI/UX} Свой всплывающий информер у элемента формы

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Питничная фантазия на возможности в разработке интерфейсов формы с помощью Платформы 1С - делаем свою подсказку. Публикация содержит готовую библиотеку программного формирования данной подсказки.

12.08.2022    4558    rpgshnik    36    

81

Динамическая кнопка VS Комбинация клавиш

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

08.08.2022    5424    sapervodichka    33    

76

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    4855    quazare    8    

97

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Хитрости СКД. Часть 3

СКД Универсальные функции Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Столкнулся с тем, что мне приходится писать гору отчетов. Во многих приходится использовать повторяющиеся приемы. Решил написать шпаргалку, которая, надеюсь пригодится не только мне. В этой статье: Объединение ячеек в отчете только на определенном уровне иерархии, Постобработка итогов в табличном документе, Скрытие колонок в зависимости от количества месяцев в периоде.

28.05.2022    6315    milkers    11    

86

Базовые принципы работы с регламентными заданиями подсистем БСП

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

22.05.2022    7626    quazare    24    

53

Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

25.04.2022    9106    quazare    11    

127

Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)

БСП (Библиотека стандартных подсистем) Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Мы все любим 1С, не так ли? Вот дает 1С прекрасный механизм возможности модификации макетов печатных форм в БСП. А из всех рекомендаций это получение макета и заполнение параметров областей. И вы спросите: "А что не так... ты печатные формы накодить не можешь без указаний сверху?". Да вот в том то и дело, что я могу все. А вот пользователям от такого механизма пользы 0, если из всех доступных изменений остаются только шрифты, да текст произвольный накинуть. А ведь можно больше, надо только соблюдать несколько правил при подготовке печатных форм...

07.03.2022    8848    vandalsvq    0    

56

Конвертируем печатную форму pdf в картинку (jpg, gif, png и прочие) на сервере

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Была поставлена интересная задача конвертировать печатную форму в файл картинку. По условию задачи клиенту на почту нужно присылать только файл картинку (jpg, gif).

22.12.2021    5683    John_d    25    

46

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Программный интерфейс для доработки форм

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Реализовал простой способ программного создания новых элементов, команд и реквизитов на форме.

25.11.2021    6368    AtamanovYS    19    

119

Несколько простых приемов для удобной работы в конфигураторе

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Простая и удобная среда разработки 1С:Предприятия позволяет практически любому человеку начать работать под капотом 1С - в конфигураторе. Время идет, новички становятся программистами, специалистами, а об удобных приемах работы узнают годами, по ходу своего карьерного пути. А здорово было бы, если бы все знали удобные приемы в начале своего пути? Эти несколько приемов будут полезны новичкам, так как они затрагивают ту область работы, с которой приходится сталкиваться в начале карьеры.

12.11.2021    12138    acces969    95    

138

Как читать чужой код? Часть 4. Программный интерфейс. Исправление чужих доработок

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во всех вакансиях есть требование - умение читать чужой код. Но ни на одних курсах специально этому не учат. Чтобы устранить это противоречие, пишу данную статью. Рассмотрю случаи, в которых нам необходимо разбирать чужой код, поймём, чей код мы пытаемся разобрать, зачем и, главное, как. В статье описан личный опыт длиною в 18 лет начиная с версии платформы 7.7. Статья будет большой, набираемся терпения). Статья содержит в себе описание сценариев разбора кода, т.е. набор шагов. В статье не получится показать это на практике. Для этого планирую сделать онлайн или оффлайн курс, где на примерах будет показан разбор незнакомого кода. Статья разбита на 4 публикации для удобства изучения.

20.09.2021    4507    biimmap    9    

51

Взаимодействие с api Честный знак (Молочная продукция)

WEB-интеграция Универсальные функции Обмен с ГосИС Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Обзор основных примеров взаимодействия с Честным знаком по api для нетиповых конфигураций.

30.08.2021    13730    user5300    68    

55

Из Word в табличный документ

Универсальные функции Платформа 1С v8.3 Платформа 1C v8.2 Бесплатно (free)

Быстро и просто: текст, списки, таблицы. Готовый код

18.08.2021    4039    Yashazz    6    

62

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Префиксация объектов - полезный типовой функционал БСП

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Россия Бухгалтерский учет Управленческий учет Бесплатно (free)

В данной публикации предлагаю рассмотреть основные типовые возможности библиотеки стандартных подсистем (БСП), касаемые префиксации объектов конфигураций.

21.06.2021    10251    quazare    4    

61

Динамический список и поиск... неприятностей

Работа с интерфейсом Платформа 1С v8.3 Бесплатно (free)

Страх и ненависть в поиске по динамическому списку, или "Кое-что о неоптимальном отборе".

17.03.2021    10435    Yashazz    37    

50

Программное условное оформление динамического списка, раскраска строк списка по цветам справочника или любым другим условиям (условное оформление)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

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

30.11.2020    15254    SizovE    6    

45

Сохранение настроек

Универсальные функции БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

22.11.2020    9194    ixijixi    8    

67

[mobile] Переносим HTML интерфейс на 1С

Работа с интерфейсом Мобильная разработка Платформа 1С v8.3 Мобильная платформа Конфигурации 1cv8 Бесплатно (free)

Разберем методы переноса HTML интерфейса на 1С на примере реализации нижнего меню для мобильного приложения. Сравним методы между собой. Данные методы можно применять не только для мобильной разработки, но и для веб-клиента и т.д

02.11.2020    13039    leobrn    82    

105

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

Лайфхаки для разработчиков 1С. Часть 1

Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Россия Бесплатно (free)

Собрали 20 лайфхаков, которые используют наши программисты при работе с 1С. Формы, контрагенты, СКД, процедуры, глюки платформы и многое другое. В этой статье публикуем первую часть.

30.09.2020    9409    Neti    47    

68

[Общий модуль] Динамическое формирование интерфейса

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2020    28594    rpgshnik    87    

275

Самый простой парсинг и обработка веб-страниц в 1С

WEB-интеграция Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим самый простой парсинг веб-страниц средствами платформы 1С и еще некоторые полезные приемы работы с веб-страницами.

07.08.2020    23717    Infostart    30    

145

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Полезные встроенные функции для работы с печатными формами и не только на УТ 11.4 и БП 3.0 (сравнение)

Универсальные функции Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бесплатно (free)

В данном обзоре приведу примеры встроенных используемых функций для работы с печатными формами на примерах конфигураций Управление торговлей 11.4 и Бухгалтерия 3.0.

10.07.2020    14315    quazare    7    

79

Получаем уровень группировки ячейки табличного документа

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

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

23.03.2020    8243    maxx    16    

57

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

18.02.2020    8302    randomus    20    

75

СКД. Шаг 3. Используем макеты для оформления отчета

Работа с интерфейсом Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

13.01.2020    67475    aximo    23    

195

Сходство Джаро - Винклера. Нечеткое сравнение строк

Универсальные функции Платформа 1С v8.3 Россия Бесплатно (free)

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

25.12.2019    10983    brooho    21    

168

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

[СКД] Вывод картинки в результат любого отчета на СКД

Работа с интерфейсом Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

09.12.2019    15651    John_d    17    

119

Управляемые формы. Изменение формы списка или формы объекта без внесения изменений в типовые формы (без использования расширений)

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

12.11.2019    20713    John_d    29    

122

Быстрое создание наполненных коллекций

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    9013    SeiOkami    69    

68

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    20607    kraspila    33    

58

Обертка функций Excel на русском. Ускорение процесса разработки.

Загрузка и выгрузка в Excel Универсальные функции Платформа 1С v8.3 Бесплатно (free)

Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.

24.10.2019    8838    DmitryKotov    6    

56

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

Методика независимой системы "Подписки на события"

Универсальные функции Платформа 1С v8.3 1С:Управление производственным предприятием Бесплатно (free)

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

17.10.2019    18354    aximo    35    

71

Создание асинхронных виджетов

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

16.10.2019    16200    Infostart    19    

155

Полезные процедуры и функции для программиста

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

07.10.2019    47130    HostHost    41    

281

Формы. Трудности программной работы

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Рассматриваем основные подводные камни, с которыми приходится сталкиваться при программной работе с формами, а также способы обхода самых частых проблем.

06.10.2019    14555    Infostart    32    

116

Лайфхаки 1С (часть 1). Настройки отчетов и печатных форм 1С

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

02.10.2019    20597    VachKirp    10    

47