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

14.10.15

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Функции работы со Свойствами под глобальный модуль
.zip 2,59Kb ver:20151014
7
7 Скачать (1 SM) Купить за 1 850 руб.
Фрагмент кода для работы с Категориями
.rar 0,97Kb
25
25 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

 

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

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

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

См. также

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

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

21.05.2024    26578    dimanich70    82    

149

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

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

1 стартмани

18.03.2024    4610    4    John_d    11    

57

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

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

12.02.2024    27791    atdonya    25    

58

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

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

30.11.2023    6208    ke.92@mail.ru    17    

65

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

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

28.08.2023    17006    YA_418728146    8    

170

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

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

2 стартмани

22.08.2023    4406    75    progmaster    11    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 1C:Бухгалтерия 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    19348    184    sapervodichka    112    

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

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

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

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