Форма редактирования списка значений

29.06.10

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

Форма предлагается в качестве замены стандартному диалогу "Редактирование списка": максимально полно повторяет его интерфейс и функционал, а также обладает дополнительными возможностями и преимуществами.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Форма редактирования списка
.epf 11,79Kb
429
429 Скачать (1 SM) Купить за 1 850 руб.

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

ОТЛИЧИЯ ОТ СТАНДАРТНОГО ДИАЛОГА

 - есть возможность задать свойство ВыборПоВладельцу для ограничения списка элементов,  предлагаемых для выбора и подбора (например, может применяться при использовании характеристик в отборах: в стандартном диалоге открывается полный список без установки владельца);
- можно назначать свои обработчики ПриИзменении, НачалоВыбора, Очистка, ОбработкаВыбора,  АвтоПодборТекста, ОкончаниеВводаТекста для значений списка (позволяет обработать процесс наполнения списка нужным образом);

ПАРАМЕТРЫ ФОРМЫ

Список - тип "СписокЗначений", в параметр передается список значений, который необходимо  редактировать (например, правое значение отбора с сответствующим видом сравнения), наполнение списка зависит от его свойства ТипЗначения;

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

ОбработчикиСобытий - тип "Структура", необязательный параметр, в который может передаваться структура вида (<Событие>, <Обработчик>) с описанием обработчиков событий для значений списка;

ОБРАБОТКА РЕЗУЛЬТАТА

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

ПРИМЕР ИСПОЛЬЗОВАНИЯ

Необходимо в отборе отчета, построенного на СКД, ограничить перечень предлагаемых для выбора элементов справочника "Контрагенты" (только юрлица) и их свойств при редактировании списка.

Код в форме настройки отчета:


 Процедура ОтборПравоеЗначениеНачалоВыбора(Элемент, СтандартнаяОбработка)

     
ТекущийВидСравнения = ЭлементыФормы.Отбор.ТекущиеДанные.ВидСравнения;

     Если (
ТекущийВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке)
         ИЛИ (
ТекущийВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке)
         ИЛИ (
ТекущийВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии)
         ИЛИ (
ТекущийВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии) Тогда
         
СтандартнаяОбработка = Ложь;

         ПредставлениеОтбора = Строка(ЭлементыФормы.Отбор.ТекущиеДанные.ЛевоеЗначение);
     
   ЛевоеЗначениеОтбора = ЭлементыФормы.Отбор.ТекущиеДанные.ЛевоеЗначение;

         ПравоеЗначениеОтбора = ЭлементыФормы.Отбор.ТекущиеДанные.ПравоеЗначение;
         
ПолеКомпоновкиКонтрагент = Новый ПолеКомпоновкиДанных("Контрагент");        
         

         ФормаРедактированияСписка = ПолучитьОбщуюФорму("ФормаРедактированияСписка", Элемент);
         
ФормаРедактированияСписка.Список = ПравоеЗначениеОтбора.Скопировать();
         Если
ЛевоеЗначениеОтбора = ПолеКомпоновкиКонтрагент Тогда
             
ОбработчикиСобытий = Новый Структура;
             
ОбработчикиСобытий.Вставить("НачалоВыбора", "ЮрлицоВыбор(Элемент, СтандартнаяОбработка)");
             
ОбработчикиСобытий.Вставить("АвтоПодборТекста", "ЮрлицоАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)");
             
ОбработчикиСобытий.Вставить("ОкончаниеВводаТекста", "ЮрлицоОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)");
             
ФормаРедактированияСписка.ОбработчикиСобытий = ОбработчикиСобытий;
         ИначеЕсли
Найти(ПредставлениеОтбора, "(свойство)") > 0 Тогда
             
СоответствиеСвойств = УстановитьСоответствиеСвойств(ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Контрагенты, "Контрагент.[", " (свойство)]");
             
ФормаРедактированияСписка.ВыборПоВладельцу = СоответствиеСвойств.Получить(ПредставлениеОтбора);
         КонецЕсли;
         
ФормаРедактированияСписка.ОткрытьМодально();
     КонецЕсли;
КонецПроцедуры

 

Форма редактирования списка значений добавлена в общие формы. Функция УстановитьСоответствиеСвойств возвращает соответствие вида (<Наименование поля компоновки данных>, <Элемент плана видов характеристик "СвойстваОбъектов">), процедуры ЮрлицоВыбор, ЮрлицоАвтоПодборТекста, ЮрлицоОкончаниеВводаТекста описывают поведение формы выбора таким образом, чтобы в предлагаемый список попадали только юрлица. Процедуры определены как экспортные и размещены в общем модуле.

 

См. также

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

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

21.05.2024    20484    dimanich70    81    

145

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

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4114    3    John_d    11    

57

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

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    18572    atdonya    24    

57

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

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

30.11.2023    5532    ke.92@mail.ru    16    

65

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

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

28.08.2023    14883    YA_418728146    7    

168

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

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

2 стартмани

22.08.2023    3621    57    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    18529    171    sapervodichka    112    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. an77 225 24.06.10 09:10 Сейчас в теме
Прошу прощения, можно ли одним движением заменить стандартную форму редактирования списка на предложенную?
2. Spartan 365 24.06.10 09:20 Сейчас в теме
(1) Одним движением, к сожалению нет... :) Стандартная "зашита" в платформе. Эту можно лишь вызывать в нужных местах конфигурации вместо стандартной. Выше есть пример, как это сделать.
3. e.kogan 1895 25.06.10 11:38 Сейчас в теме
Автор, совершенно необязательно весь приведённый вами код писать в форме каждого конкретного отчёта. Проще вынести процедуру обработки в общий модуль, передать ей всё, что нужно, и обрабатывать исключительно там. В таком случае изменение сводится к одной строке (если собственно НачалоВыбора в модуле уже есть) или к трём (если не было).
ОбработкаВыбора и вовсе не нужна - у вас же есть Элемент, Значение которого вы и обрабатываете.
imbio; Spartan; +2 Ответить
4. Spartan 365 25.06.10 12:14 Сейчас в теме
(3) Я и не предлагал писать приведенный код в форме каждого отчета. Это просто пример использования моей формы, для того чтобы было понятно как заполнять ее параметры и как вообще можно использовать. Суть публикации не в коде, а в самой форме - а дальше дело каждого программиста, как и где ее вызывать.
Насчет ОбработкиВыбора - дело вкуса. Я передаю в форму не само значение, а его копию, чтобы список не менялся динамически по ссылке во время редактирования, потом оповещаю о выборе. Можно конечно передавать само значение, в форме его копировать и заменять по нажатию ОК. Это принципиально, Вы считаете?
5. e.kogan 1895 25.06.10 12:29 Сейчас в теме
(4) Чем меньше кода меняется в каждом конкретном случае - тем лучше, я считаю.
7. пользователь 25.06.10 13:26
Сообщение было скрыто модератором.
...
6. пользователь 25.06.10 13:21
Сообщение было скрыто модератором.
...
8. Spartan 365 29.06.10 19:03 Сейчас в теме
(3) Голова была забита и что-то сразу не сообразил, что можно задать владельцем формы не форму настройки а сам элемент и тогда действительно никакая обработка выбора не нужна. Спасибо за толчок в нужном направлении...
9. Alef 15.09.10 10:25 Сейчас в теме
Отлично, спасибо, работает!!!
10. Aloger 20.01.11 14:07 Сейчас в теме
Вопросы по примеру.
Где должны быть обработчики? Только в форме настройки отчета или в другом месте?
Как правильно написать подключаемый обработчик?
11. Spartan 365 20.01.11 14:43 Сейчас в теме
(10) Все зависит от контекста. Если форма является общей (как в примере), то обработчик должен быть "виден" в глобальном контексте (например, экспортная процедура в общем модуле), если форма редактирования является формой объекта, то обработчик должен быть доступен в рамках объекта (например, экспортная процедура в модуле объекта). Работа обработчиков реализована с помощью оператора Выполнить(<Строка>), соответственно строка с кодом должна быть доступна в контексте модуля формы редактирования списка значений.
Правила написания обработчика просты: имена и количество параметров должны совпадать с аналогичными в стандартных обработчиках.
12. megatrend 131 24.07.11 00:07 Сейчас в теме
Обработка весьма полезная. Пригодилась мне, когда стандартная форма редактирования списка значений почему-то открывалась в режиме "только просмотр". Почему это произошло - так и не смог разобраться.
13. jirafff 25.12.11 15:51 Сейчас в теме
14. F1C 24 13.01.12 11:52 Сейчас в теме
спасибо, всё работает!
15. ritapodskr 12.03.12 17:34 Сейчас в теме
Спасибо огромное! Попробую прикрутить!
16. _df_ 22.02.13 16:35 Сейчас в теме
17. ratinc 04.08.13 19:48 Сейчас в теме
Чтото я не разобрался с более простым примером использования вашей формы.
Например хочу использовать её для создания списка значений в котором только группы номенклатуры.
Подскажите - куда копать?
18. Spartan 365 05.08.13 19:58 Сейчас в теме
(17) Что конкретно не получается? Схема та же, что и в моем примере: владельцем задаете элемент формы ПолеВвода, передаете список значений, пишете свой(и) обработчик(и) для ограничения элементов в форме выбора только группами и также передаете их в форму через структуру. Подробнее не могу сейчас посмотреть/подсказать - я в отпуске, и под рукой нет компа с 1С.
19. ratinc 06.08.13 00:43 Сейчас в теме
Я разобрался. Извиняюсь что не отписался о неактуальности вопроса.
Всё заработало отлично. Спасибо за помощь
20. OlegAl 76 01.11.13 12:39 Сейчас в теме
Списибо за разработку... Разобрался, весьма полезная штука. Почему разработчики 1С не включили данную форму в общие формы?! Значительно облегчили бы работу со списками значений.
21. пользователь 29.10.15 08:03
Сообщение было скрыто модератором.
...
22. lambert 17.12.16 16:03 Сейчас в теме
23. cyborg55 34 14.09.23 17:44 Сейчас в теме
Не могу понять, как воспользоваться обработкой? Я например, хочу в ут 10.3 ведомость товарах на складах заменить стандартную форму выбора.
24. Spartan 365 22.09.23 13:30 Сейчас в теме
(23) Для этого придется доработать форму отчета: добавить в нужном месте открытие общей формы вместо типовой. В тексте публикации есть пример использования в отборе отчета, построенного на СКД.
Оставьте свое сообщение