Создание предопределенных элементов в собственном справочнике, созданном в расширении

09.04.20

Задачи пользователя - Адаптация типовых решений

Создание "предопределенных" элементов в собственном справочнике, созданном в расширении. Представлена как шаблон на конкретном примере.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Создание предопределенных элементов в собственном справочнике, созданном в расширении:
.cfe 13,74Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

Пред.история: При доработке конфигурации ЗУП (доработка делается в расширении) очень понадобилось создать собственный справочник с предопределенными элементами. Решить задачу стандартным образом - ни как, поиск в интернете дал отрицательный результат, типа в конфигурации на сей день это еще не реализовано. Задача на грани срыва и тут именно в голову :) приходит мысль: - а в чем особое различие между пользовательскими и предопределенными элементами? Основное: пользователь не может менять Имя и при открытии они всегда на верху (в первых строках) + запрет на удаление. Вот тут и возникла идея создать собственные "предопределенные" элементы. Пример выполнен на самом простом нужном мне справочнике.

1. Создаем справочник с нужными реквизитами, добавляем еще реквизит типа Булево (имя свое, типа "НеИзменять", а заголовок "Предопределенный").

2. Создаем Форму элемента и Форму списка.

3. В обоих формах процедуры "ПриОткрытии". В Форме списка еще процедуру для первоначального заполнения типа ЗаполнитьПредопределенные() и получается почти идеальный справочник.

Модуль формы элемента:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Если Объект.НеИзменять Тогда
		//выдаем предупреждение оставляем Наименование без изменения
		Элементы.Наименование.Доступность = Ложь;
	КонецЕсли;
КонецПроцедуры

Модуль формы списка:


&НаСервере
Процедура ПриОткрытииНаСервере()
	//Проверим, есть ли что-нибудь в справочнике
	КолЭлементов = 0;	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|КОЛИЧЕСТВО(ССЫЛКА) КАК ВсегоЭлементов
	|ИЗ
	|	Справочник.Тар_КатегорииСотрудников КАК Тар_КатегорииСотрудников";
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Пока Выборка.Следующий() Цикл
		КолЭлементов = КолЭлементов + Выборка.ВсегоЭлементов;
	КонецЦикла;
	Если КолЭлементов = 0 Тогда //Если справочник еще пустой
		ЗаполнитьПредопределенные();
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПриОткрытииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПредопределенные()
	// заполним "предопределенными" элементами
	
	НовыйЭл = Справочники.Тар_КатегорииСотрудников.СоздатьЭлемент(); 
	НовыйЭл.Наименование = "Первая"; 
	НовыйЭл.НеИзменять = Истина;
	НовыйЭл.Коэффициент = 1.1;
	НовыйЭл.Записать(); 
	
	НовыйЭл = Справочники.Тар_КатегорииСотрудников.СоздатьЭлемент(); 
	НовыйЭл.Наименование = "Вторая"; 
	НовыйЭл.НеИзменять = Истина;
	НовыйЭл.Коэффициент = 1.2;
	НовыйЭл.Записать(); 
	
	НовыйЭл = Справочники.Тар_КатегорииСотрудников.СоздатьЭлемент(); 
	НовыйЭл.Наименование = "Высшая"; 
	НовыйЭл.НеИзменять = Истина;
	НовыйЭл.Коэффициент = 1.3;
	НовыйЭл.Записать();
	
	Элементы.Список.Обновить();
КонецПроцедуры

Модуль объекта:


Процедура ПередУдалением(Отказ)
	
	//Очень нужная вещь, но.... для РАСШИРЕНИЯ НЕ работает!!!
	
КонецПроцедуры

Процедура ПередЗаписью(Отказ)
	// Как-то странно работает!
	// Задано условие, что если справочник пустой
	// нужно заполнить его "предопределенными" элементами
	// но..., ошибка записи предопределенных!
КонецПроцедуры


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

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

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

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    6406    17    5    

26

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    4456    17    1    

35

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    7064    75    17    

32

Адаптация типовых решений Программист Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Маленькая заметка (в трех разных масштабах) для тех, кто часто видит окно при входе в ЗУП «Новые сообщения для расшифровки по 1С-Отчетность», которое появляется через 60 секунд после запуска программы, как раз когда вы уже добрались до интересующей вас формы и начали в ней что-то активно делать:

1 стартмани

17.06.2024    2622    38    Znata_PI    5    

12

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5459    dimanich70    15    

22

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

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

01.03.2024    8018    dimanich70    10    

21

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

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

1 стартмани

27.10.2023    3898    31    TempTablesManager    14    

54
Отзывы
5. type 27.01.21 17:17 Сейчас в теме
Буду очень благодарен тому, кто подскажет решение на запрет удаления

Ещё актуально? Или уже нафиг не нужно?

У себя вот так сделал:
Процедура ПередЗаписью(Отказ)
	Если НеИзменять и Не ОбменДанными.Загрузка Тогда
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры

Процедура ПередУдалением(Отказ)
	Если НеИзменять и Не ОбменДанными.Загрузка Тогда
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры
Показать
cleaner_it; mdzen; ivnik; milov.aleksey; +4 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1939 09.04.20 20:42 Сейчас в теме
Примерно так же организован справочник НаборыДополнительныхРеквизитовИСведений из БСП. Сначала были предопределенные элементы, затем разработчики добавили реквизит ИмяПредопределенногоНабора. Контроль удаления (точнее, полный запрет) проводят в форме списка и в подписках на события, заполнение "предопределённых" элементов - при обновлении ИБ.
2. ixijixi 1939 09.04.20 20:48 Сейчас в теме
Кстати, на ИТС пишут, что подписки в расширения нельзя добавлять (https://its.1c.ru/db/v8313doc#bookmark:dev:TI000001923), но я добавил для интереса)) Платформа 8.3.17
Прикрепленные файлы:
3. ivnik 607 09.04.20 20:49 Сейчас в теме
Добрый вечер, Максим!
Большое Спасибо за информацию.
4. ixijixi 1939 09.04.20 21:05 Сейчас в теме
5. type 27.01.21 17:17 Сейчас в теме
Буду очень благодарен тому, кто подскажет решение на запрет удаления

Ещё актуально? Или уже нафиг не нужно?

У себя вот так сделал:
Процедура ПередЗаписью(Отказ)
	Если НеИзменять и Не ОбменДанными.Загрузка Тогда
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры

Процедура ПередУдалением(Отказ)
	Если НеИзменять и Не ОбменДанными.Загрузка Тогда
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры
Показать
cleaner_it; mdzen; ivnik; milov.aleksey; +4 Ответить
6. ivnik 607 27.01.21 23:17 Сейчас в теме
(5) Большое Спасибо! Попробую, вопрос до сих пор висел в воздухе.
7. mrostovsky 22.07.22 03:10 Сейчас в теме
Процедура ПередЗаписью(Отказ)

	Если ЭтотОбъект.rs_Предопределенный И ЭтотОбъект.ПометкаУдаления Тогда 
		ЭтотОбъект.ПометкаУдаления = Ложь;	
	КонецЕсли;

КонецПроцедуры
8. Ctrl P 193 17.08.22 11:14 Сейчас в теме
а в чем особое различие между пользовательскими и предопределенными элементами? Основное: пользователь не может менять Имя и при открытии они всегда на верху (в первых строках) + запрет на удаление

да нет... основное отличие: доступ к значениям из конфигуратора по имени предопределенного значения...
AlexanderTomsk; zhkonst; d.kanin; Угрюмый; Andreeei; vladvms; KOLYNNN; SAGerasimov; Izumov; luchik.lipetsk; Craig; Sparrow1974; NikeeNik; akocur; 3man001; mlv84; de0nis; Sean1s; +18 Ответить
Оставьте свое сообщение