Сервисные функции работы с Категориями и Свойствами

14.10.15

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

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

Скачать файлы

Наименование Файл Версия Размер
Функции работы со Свойствами под глобальный модуль
.zip 2,59Kb
7
.zip 20151014 2,59Kb 7 Скачать
Фрагмент кода для работы с Категориями
.rar 0,97Kb
25
.rar 0,97Kb 25 Скачать

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

Функции работы с категориями работают на типовых УТ (вероятно, должны работать в УПП и др.).

Мои Функции работы со свойствами рассчитаны на модифицированный механизм Свойств и нет смысла выкладывать. В Свойства добавлены новые виды Объектов (в частности ДоговорыКонтрагентов) и новые виды Значений (Сертификаты, ДоговорыКонтрагента и др.). Переделывать под Типовую или делать полностью Универсальной пока руки не дошли...

P.S. В коде использована глобальная функция, присутствующая не во всех конфигурациях "ЗначениеНеЗаполнено(Значение)", соответственно её надо будет воссоздать или заменить на аналог в тексте.

По просьбам публики... сам текст Функций

Для справки во вложении Функции работы со Свойствами (Свойства в моей УТ расширены, добавлены носители свойств и виды значений)

 

//НВЮ/ Получает заказанную Категорю Объекта
//
// Параметры
//  Эл  – СправочникСсылка/ДокументСсылка – для получения Категории
//  НаименованиеСвойства  – Строка_50 – Наименование получаемой Категории
//                          Предопределённый или ссылка Спр.Категории
// Возвращаемое значение:
//   Значение заказанной Категории (Булево или Неопределено-если ошибка)
//
Функция ПолучитьКатегориюОбъекта(Эл, НаименованиеКатегории) Экспорт
   Если Эл = Неопределено Тогда// Объект не указан
                   Возврат Неопределено;
   ИначеЕсли ЗначениеНеЗаполнено(Эл) Тогда // Объект не указан
                   Возврат Неопределено;
   КонецЕсли;
   Если ТипЗнч(НаименованиеКатегории) = Тип("СправочникСсылка.КатегорииОбъектов") Тогда
                   ТребСвойство = НаименованиеКатегории;
   Иначе
                   ТребСвойство = Справочники.КатегорииОбъектов.НайтиПоНаименованию(НаименованиеКатегории);
                   ЕслиНе ЗначениеЗаполнено(ТребСвойство) Тогда
                                  Возврат Неопределено;
                   КонецЕсли;
   КонецЕсли;
   КатОбъ=РегистрыСведений.КатегорииОбъектов.СоздатьНаборЗаписей();
   КатОбъ.Отбор.Объект.Значение=Эл;
   КатОбъ.Отбор.Объект.Использование = Истина;
   КатОбъ.Отбор.Категория.Значение=ТребСвойство;
   КатОбъ.Отбор.Категория.Использование = Истина;
   КатОбъ.Прочитать();
   Возврат КатОбъ.Количество()=1; // Истина=Категория имелось, Ложь=Категории нет
КонецФункции// ПолучитьКатегориюОбъекта()
 
//НВЮ/ Устанавливает Категорию Номенклатуры/Контрагента/Документа
//
// Параметры
//  НазвКат  – – Наименование устанавливаемой Категории
//                Предопределенная или Ссылка Спр.Категории
//  ТекЗнКат  – – Значение устанавливаемой Категории
//  Эл  – – Носитель Категории
//         или – Носитель Категории
//
Процедура УстановитьКатегориюОбъекта(НазвКат, ТекЗнКат=Истина, Эл) Экспорт
   Если ТипЗнч(НазвКат) = Тип("СправочникСсылка.КатегорииОбъектов") Тогда
                   ТекСвойство = НазвКат;
   Иначе
                   ТекСвойство = Справочники.КатегорииОбъектов.НайтиПоНаименованию(НазвКат);
                   ЕслиНе ЗначениеЗаполнено(ТекСвойство) Тогда
                                  Возврат;
                   КонецЕсли;
   КонецЕсли;
   КатОбъ=РегистрыСведений.КатегорииОбъектов.СоздатьНаборЗаписей();
   КатОбъ.Отбор.Объект.Значение=Эл.Ссылка;
   КатОбъ.Отбор.Объект.Использование = Истина;
   КатОбъ.Отбор.Категория.Значение=ТекСвойство;
   КатОбъ.Отбор.Категория.Использование = Истина;
   КатОбъ.Прочитать();
   ЗнСвва=Неопределено;
   Если КатОбъ.Количество()>0 И Не ТекЗнКат Тогда// Категория Установлена, надо удалить
                   КатОбъ.Очистить();
                   КатОбъ.Записать();
   ИначеЕсли КатОбъ.Количество()=0 И ТекЗнКат Тогда // Категория отсутствует, надо создать
                   НовЗапись=КатОбъ.Добавить();
                   НовЗапись.Объект=Эл.Ссылка;
                   НовЗапись.Категория=ТекСвойство;
                   КатОбъ.Записать();
   Иначе// Категория актуальна
                   //Ничего не меняем
   КонецЕсли;
КонецПроцедуры// Установка Категории

// 14.10.2015/ Функции Чтения и Установки Свойств переписаны и оптимизированы на случай произвольного расширения допустимых типов Свойств и их Значений. Для функции "УстановитьСвойствоОбъекта()" допавлена Опция "АвтоСоздание"... Тестировалась и отлаживалась в основном на УТ_10.3, но механизм свойств однотипен практически во всех конфигурациях 1С8 - следовательно применим к большинству конфигураций.

Свойства и Категории объектов Управление

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

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

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

1 стартмани

18.03.2024    2676    0    John_d    8    

55

GUID в 1С 8.3 - как с ними быть

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

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

12.02.2024    4613    atdonya    22    

45

Переоткрытие внешних обработок

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

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

30.11.2023    3962    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

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

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

28.08.2023    8840    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

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

2 стартмани

22.08.2023    2077    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 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    16148    133    sapervodichka    112    

129

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

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

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

18.07.2022    7243    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. saiten 246 15.12.11 12:20 Сейчас в теме
Скучно... В архиве текстовый файл. Так, может, лучше вывести функции прямо в тексте публикации? А то так и тянется рука к минусу. К тому же:
1. Функция ЗначениеНеЗаполнено(...) будет работать только в 8.0, для 8.1 и 8.2 надо её заменить на НЕ ЗначениеЗаполнено(...). Если очень уж хочется, чтоб работало и там - и там, то можно написать что-нибудь типа
Заполнено = ложь;
Попытка
Выполнить("Заполнено = НЕ ЗначениеНеЗаполнено(...)");
Исключение
Выполнить("Заполнено = ЗначениеЗаполнено(...)");
КонецПопытки;
Если НЕ Заполнено Тогда ...

2. Имена переменных по три буквы от слова - жесть.

3. В функцию установки свойства неплохо бы добавить флаг создания свойства с данным именем, если оно не найдено.
2. V.Nikonov 120 15.12.11 14:05 Сейчас в теме
(1) Вообще то
1) функция ЗначениеНеЗаполнено(...) не является Системной и прописана в Общем модуле.
2) Нечего возразить. Вот только для переменных живых в единственной функции лень писать длинные имена и несколько раз их повторять по ходу написания модуля.
3) Не знаю что на меня нашло? Может Мани захотелось.... Пожалуй, пойду пользователям на встречу. Есть опасность насоздавать слишком много "Ошибочных" категорий, но желающие могут рискнуть самостоятельно подправить под себя АвтоСоздание Категорий.
3. saiten 246 15.12.11 19:57 Сейчас в теме
(2)
Есть опасность насоздавать слишком много "Ошибочных" категорий, но желающие могут рискнуть самостоятельно подправить под себя АвтоСоздание Категорий.

Риск, в общем-то, минимальный. Проще, имхо, ошибиться, вбив в базу имя категории, отличное от того, что передается в функцию. Хотя, автосоздание, конечно неоднозначный вопрос, это да. Для себя выработал такой принцип: свойства (ну, и категории), подразумевающие интерактивное заполнение перед применением, создаются при первом запуске, а предназначенные чисто для программных нужд - при первом обращении на чтение или запись.
4. V.Nikonov 120 15.12.11 21:42 Сейчас в теме
(3) В моей практике чаще не в новой ИБ, а после изменения методик учета. Соответственно завожу либо предопределённые Свойства/Категории, либо ручками готовлю почву... И только потом начинается автообмен.
5. v_id 106 24.01.12 10:52 Сейчас в теме
Спасибо! А тоже самое, но для свойств можно?
6. V.Nikonov 120 24.01.12 11:03 Сейчас в теме
(5) Так как моя конфигурация УТ подверглась значительным модификациям, в частности существенно изменены свойства, то публиковать текст моих функций нецелесообразно. Переписывать функции под типовую конфигурацию за спасибо - пока нет времени. Возможно, в будущем, когда появится время или появится Заказчик, готовый оплатить хотя бы часть работ...
7. w22u 30 29.02.12 07:53 Сейчас в теме
Эти сервисные функции были использованы для заранее созданной категории "Проверено" для всех документов в двух обработках для УТ 10.3 http://infostart.ru/public/115655/
Оставьте свое сообщение