Получение ссылки по GUIDу в COMConnector Известно:
ИмяДокумента (Тип Строка)
УникальныйИдентификатор искомого документа в базе-источнике (тип Строка)
COMСоединение установлено.
Код 1C v 8.х МД= ВнешняяБаза. XMLTypeOf( ВнешняяБаза. Документы[ИмяДокумента]. ПустаяСсылка( ) ) ;
Попытка
тСсылка= ВнешняяБаза. XMLValue( ВнешняяБаза. FromXMLType( МД) , ЭтотУникальныйИдентификатор) ;
Исключение
Сообщить( “COM: “+ ОписаниеОшибки( ) ) ;
возврат ;
КонецПопытки ;
тОбъект= тСсылка. ПолучитьОбъект( ) ;
ЗаписьXML= ВнешняяБаза. NewObject( “ЗаписьXML”) ;
ЗаписьXML. УстановитьСтроку( ) ;
ВнешняяБаза. WriteXML( ЗаписьXML, тОбъект) ;
тСтрXML= ЗаписьXML. Закрыть( ) ;
Для перечислений:
ИмяПеречисления (Тип Строка)
ИмяЗначенияПеречисления (Тип Строка)
COMСоединение установлено.
Код 1C v 8.х МД= ВнешняяБаза. XMLTypeOf( ВнешняяБаза. Перечисления[ИмяПеречисления]. ПустаяСсылка( ) ) ;
Попытка
тСсылка= ВнешняяБаза. XMLValue( ВнешняяБаза. FromXMLType( МД) , ИмяЗначенияПеречисления) ;
Исключение
Сообщить( “COM: “+ ОписаниеОшибки( ) ) ;
возврат ;
КонецПопытки ;
в переменной тСсылка – лежит Ссылка на объект (тип COMОбъект)
Категория:
COM-объекты, WMI, WSH Как получить имя значения перечисления, если известен синоним значения? Если известно перечисление, и известно, что одно из значений имеет известный нам синоним, то перебрав в цикле коллекцию значений перечисления можно получить его имя. Совокупность имени перечисления и имени значения перечисления позволяют получить ссылку на перечисление, которую уже можно применять в качестве значения реквизитов справочников, документов и регистров.
Исходный код функции ИмяЗначенияПеречисленияПоСинониму(ИмяПеречисления, СинонимЗначения):
Код 1C v 8.х
Функция ИмяЗначенияПеречисленияПоСинониму( пИмяПеречисления, пСинонимЗначения ) Экспорт
КолекцияЗначенийПеречисления = Метаданные. Перечисления[пИмяПеречисления]. ЗначенияПеречисления;
Для каждого пНайденноеЗначение из КолекцияЗначенийПеречисления Цикл
Если пНайденноеЗначение. Синоним = пСинонимЗначения Тогда
Возврат пНайденноеЗначение. Имя;
КонецЕсли
КонецЦикла ;
Возврат неопределено ;
КонецФункции
Категория:
Перечисления Перебор значений перечисления и добавление их в подменю формы Код 1C v 8.х Для Каждого метпер Из Метаданные. Перечисления. СостоянияРаботникаОрганизации. ЗначенияПеречисления Цикл
МенюКнопки = ЭлементыФормы. ОсновныеДействияФормы. Кнопки. ПодменюНеявки. Кнопки;
НоваяКнопка = МенюКнопки. Вставить( инд, метпер. Имя, ТипКнопкиКоманднойПанели. Действие, метпер, Новый Действие( "Пометка" ) ) ;
Если НЕ ( метпер. Имя= "Работает" или метпер. Имя= "Командировка" ) тогда
НоваяКнопка. Пометка = Истина ;
КонецЕсли ;
инд= инд+ 1 ;
КонецЦикла ;
Категория:
Перечисления Кнопка ~ Программное добавление кнопок на командную панель формы Код 1C v 8.х
для каждого метпер из Метаданные. Перечисления. СостоянияРаботникаОрганизации. ЗначенияПеречисления Цикл
МенюКнопки = ЭлементыФормы. ОсновныеДействияФормы. Кнопки. ПодменюНеявки. Кнопки;
НоваяКнопка = МенюКнопки. Вставить( инд, метпер. Имя, ТипКнопкиКоманднойПанели. Действие, метпер, Новый Действие( "Пометка" ) ) ;
Если НЕ ( метпер. Имя= "Работает" или метпер. Имя= "Командировка" ) тогда
НоваяКнопка. Пометка = Истина ;
КонецЕсли ;
инд= инд+ 1 ;
КонецЦикла ;
Процедура Пометка(Кнопка)
Кнопка. Пометка= ? ( Кнопка. Пометка, Ложь , Истина ) ;
КонецПроцедуры
Следующий пример показывает как выгрузить из табличной части Подразделения, удалить повторяющиеся и в "КоманднаяПанельЗарплата" - меню "ФормированиеВедомостей" - подменю "СформироватьПоПодразделению" добавить для каждого подразделения кнопку формирования ведомости
Код 1C v 8.х
ТзПодразделений= Зарплата. ВыгрузитьКолонку( "ПодразделениеРаботника" ) ;
ТекущийИндекс = 0 ;
ВсегоЭлементов = ТзПодразделений. Количество( ) ;
Пока ТекущийИндекс < ВсегоЭлементов Цикл
Индекс2 = ТекущийИндекс + 1 ;
Пока Индекс2 < ВсегоЭлементов Цикл
Если ТзПодразделений[Индекс2 ] = ТзПодразделений[ТекущийИндекс] Тогда
ТзПодразделений. Удалить( Индекс2 ) ;
ВсегоЭлементов = ВсегоЭлементов - 1 ;
Иначе
Индекс2 = Индекс2 + 1 ;
КонецЕсли ;
КонецЦикла ;
ТекущийИндекс = ТекущийИндекс + 1 ;
КонецЦикла ;
инд= 0 ;
для каждого ТекПодразд из ТзПодразделений Цикл
МенюКнопки = ЭлементыФормы. КоманднаяПанельЗарплата. Кнопки. ФормированиеВедомостей. Кнопки. СформироватьПоПодразделению. Кнопки;
НоваяКнопка = МенюКнопки. Вставить( инд, ТекПодразд, ТипКнопкиКоманднойПанели. Действие, ТекПодразд, Новый Действие( "СформироватьВедомостиПоПодразделению" ) ) ;
инд= инд+ 1 ;
КонецЦикла ;
Категория:
Работа с Формой (Диалог) и её элементами Функция предназначена для получения имени элемента перечисления по значению Код 1C v 8.х
Функция ПолучитьИмяЭлементаПеречисленияПоЗначению(ЗначениеПеречисления) Экспорт
ИмяЭлемента = Строка( ЗначениеПеречисления) ;
Для каждого ЭлементПеречисления Из Метаданные. Перечисления[ЗначениеПеречисления. Метаданные( ) . Имя]. ЗначенияПеречисления Цикл
Если ЭлементПеречисления. Синоним = Строка( ЗначениеПеречисления) Тогда
ИмяЭлемента = ЭлементПеречисления. Имя;
Прервать ;
КонецЕсли ;
КонецЦикла ;
Возврат ИмяЭлемента;
КонецФункции
Категория:
Перечисления