gifts2017

Глобальные функции работы со Свойствами

Опубликовал Вадим Никонов (V.Nikonov) в раздел Программирование - Практика программирования

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

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

  • глПолучениеСвойствоТовара(Товар, ВидСвойства);
  • глУстановитьСвойствоТовара(Товар, ВидСвойства, ЗначениеСвойства);
  • глПолучениеСвойствоКонтрагента(Контрагент, ВидСвойства);
  • глУстановитьСвойствоКонтрагента(Контрагент, ВидСвойства, ЗначениеСвойства).

 Сейчас использую их даже для формирования отчётов. Не думаю, что открыл Америку, но может кому и пригодится...

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

Наименование Файл Версия Размер
Фрагмент Глобальника 66
.zip 1,09Kb
23.12.09
66
.zip 1,09Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий Калачев (wildhog) 25.12.09 13:50
Укажи, плиз, что это для клюшек
2. Вадим Никонов (V.Nikonov) 25.12.09 17:47
Это фрагмент кода, который я рекомендую встроить в Глобальный модуль 1С7.7 Торговля и Склад 9.2
3. Антон Рощин (wolfsoft) 30.12.09 13:21
Возвращать-то, конечно, лучше значение свойства, а не текст. А уж что потом с ним делать, наименование получать или что другое, это уже по контексту.
4. Вадим Никонов (V.Nikonov) 31.12.09 10:23
В связи с однотипностью данных особой разницы не заметил. К тому же возвращают значение для последующих модификаций... Что в нашем случае абсолютная экзотика.
5. Алексей (Alav) 10.01.10 01:03
Смысл делить на 2 отдельные процедуры?

Функция ПолучитьСвойствоОбъекта(Объект, ВыбВидыСвойств, Режим = "ЗначениеСвойства") Экспорт
	Если ПустоеЗначение(Объект)=0 тогда
		Если Объект.Вид()="Контрагенты" тогда
			Свойства=СоздатьОбъект("Справочник.СвойстваКонтрагентов");
		ИначеЕсли Объект.Вид()="Номенклатура" тогда
			Свойства=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
		Иначе
			Возврат ""
		КонеЦЕсли;
		Свойства.ИспользоватьВладельца(Объект.ТекущийЭлемент());	
		Свойства.ВыбратьЭлементы();
		Пока Свойства.ПолучитьЭлемент()=1 Цикл  
			Если Свойства.ПометкаУдаления()=1 тогда
				Продолжить;
			КонецЕсли;	
			Если Свойства.ВидСвойства=ВыбВидыСвойств Тогда
				Если Режим = "ЗначениеСвойства" тогда				
					Возврат ?(ПустоеЗначение(Свойства.ЗначениеСвойства)=1,"",Свойства.ЗначениеСвойства);
				ИначеЕсли Режим = "Свойство" тогда
					Возврат Свойства;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	Возврат ""
КонецФункции     
...Показать Скрыть
6. Вадим Никонов (V.Nikonov) 11.01.10 10:00
У меня не было задач требующих одновременно чтения и записи свойств, поэтому я отказался от идеи совмещения в одной функции. К тому же подумывал над вариантом исполнения функции установки, при котором происходит удаление свойства (в случае передачи пустого значения свойства).
7. Вадим Никонов (V.Nikonov) 11.01.10 10:04
А разделение на свойства Номенклатуры и Свойства Контрагентов: то это результат исторически сложившийся. Сначала мне потребовались свойства Номенклатуры, а потом захотелось избежать неверных типов данных при обращениях.
Кстати, когда реализовывал подобную функцию в 1С8, то не стал разделять функции по объектам (разумеется это совсем не реально).
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа