Присвоить перечисление :(

Форум 1С: Одинэс.Ру

Найти!

Присвоить перечисление :(

Apollo
14.05.2009 - 09:57
Коллеги, доброе утро!
 
Кто-то сталкивался как присвоить реквизиту типа "перечисление" какое-то значение. Например у меня есть строковое выражение типа "Перечисление.ВидТМЦ.Товар". Как извернуться, чтобы это записать в реквизит справочника с типом "Перечисление.ВидТМЦ" ???
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
28.10.2020 - 07:58
Смотри также:
Посреднические услуги или перевыставление услуги ?
Не могу найти в отчетности декларацию по УСН
ПУБ и поступление материалов через авансовый отчет

Re: Присвоить перечисление :(

SIA1987
1 - 14.05.2009 - 10:03
Так и пишешь: Спр.Реквизит = Перечисление.ВидТМЦ.Товар;
и все.

Re: Присвоить перечисление :(

Apollo
2 - 14.05.2009 - 10:04
так не могу, у меня само строкое выражение вычисляется...

Re: Присвоить перечисление :(

Reaper
3 - 14.05.2009 - 10:05
Нужно добиться совпадения типов, т.е. присваивать надо именно значение того типа, которое задано для реквизита. А уж как этого добиться существует масса способов.

Re: Присвоить перечисление :(

Apollo
4 - 14.05.2009 - 10:10
я беру все данные из внешнего файла, там в строке есть признак реквизита, значение реквизита "Товар". Я должен это строковое значение "Товар" записать в реквизит типа "Перечисление.ВидыТМЦ", которое лодно стать равным "Перечисление.ВидыТМЦ.Товар".
Есть какие-то возможности в 1С типа "вычислить выражение" или что-то типа сишного eval() ... ???

Re: Присвоить перечисление :(

di1978
5 - 14.05.2009 - 10:20
нужно воспользоваться методом ЗначениеПоИдентификатору(<Идентификатор>)

Интересные темы

odines.ru
28.10.2020 - 07:58
Смотри также:
не работает выгрузка из центральной базы
Количество записей в справочнике
ПУБ интересная ситуация (про вилки)

Re: Присвоить перечисление :(

SMOKE
6 - 14.05.2009 - 10:22
Перечисление.ПолучитьАтрибут("ВидТМЦ").ЗначениеПоИдентификатору("Товар")

Re: Присвоить перечисление :(

user1C
7 - 14.05.2009 - 10:26
(4)
Перечисление.ВидТМЦ.ЗначениеПоИдентификатору("Товар")?

Re: Присвоить перечисление :(

Apollo
8 - 14.05.2009 - 10:30
(5) так для этого нужно заранее знать какие перечисление. А я его каждый раз должен вычислять.
Я попробовал так реализовать. Но вот в перечислениями проблема :-(((
 
нЗначСпр=СокрЛП(тзСпрТекЭл.ЗначРеквизита);
текРеквЗнач=тс.ПолучитьАтрибут(СокрЛП(тзСпрТекЭл.НазвРеквизита));
...
ИначеЕсли ТипЗначенияСтр(текРеквЗнач)="Перечисление" Тогда
   нЗначСпр="Перечисление."+текРеквЗнач.Вид()+"."+СокрЛП(нЗначСпр);

Re: Присвоить перечисление :(

Duke1C
9 - 14.05.2009 - 10:30
Пер=Перечисление.ПолучитьАтрибут(СокрЛП(Идент1)); //Идент1 - Название вида перечисления
Рез=Пер.ЗначениеПоИдентификатору(СокрЛП(Идент2)); //Идент2 - Название значения перечисления

Re: Присвоить перечисление :(

Reaper
10 - 14.05.2009 - 10:33
8-Apollo > дружок, я тебе больше скажу - одному значению перечисления может соответствовать куча значений в твоем файлике. Хотя бы из-за пробелов. И тебе, по хорошему, нужно описать условия по которым подмножества всего множества возможных значений будут интерпретироваться как конкретные значения перечисления. Иначе рискуешь наделать делов.

Re: Присвоить перечисление :(

di1978
11 - 14.05.2009 - 10:36
код из (8) туманен...

Re: Присвоить перечисление :(

roma n
12 - 14.05.2009 - 10:40
Есть такой финт :)
ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр("+МояСтрока+")]"))  
ЗЫ на случай если МояСтрока содержит фигню лучше обернуть в Попытку

Re: Присвоить перечисление :(

Apollo
13 - 14.05.2009 - 10:40
(10) так пробелы я везде убираю...
(9) сейчас попробую такой вариант
(11) согласен :-) но в тумане всегда бродит истина :-)

Re: Присвоить перечисление :(

Apollo
14 - 14.05.2009 - 10:42
(12) О! тоже вариант!
А в попытку уже всё обёрнуто...
Спасибо, сейчас попробую (9) и (12)

Re: Присвоить перечисление :(

SIA1987
15 - 14.05.2009 - 10:44
а не проще делать проверку  
 
если ТоварИзФайла = "Товар" Тогда
  Спр.Реквизит = Перечисление.ВидТМЦ.Товар
конецЕсли;
 
на сколько я понимаю вариантов в этом перечислении не так уж много, так в чем же дело?

Re: Присвоить перечисление :(

Reaper
16 - 14.05.2009 - 10:46
12-roma n > разбазариваешь достояние нации! До этого каждый сам дойти должен ;)

Re: Присвоить перечисление :(

roma n
17 - 14.05.2009 - 10:51
16-Reaper >
больше не буду... *смущенно шаркает ножкой и пристыженно опускает глаза

Re: Присвоить перечисление :(

Apollo
18 - 14.05.2009 - 10:57
(16) молодежи надо помагать ;-)

Re: Присвоить перечисление :(

Duke1C
19 - 14.05.2009 - 11:04
(18) Ну заработало чтоль? :-)

Re: Присвоить перечисление :(

Reaper
20 - 14.05.2009 - 11:05
18-Apollo > Учиться, учиться и еще раз учиться (с) В.И.Ленин

Re: Присвоить перечисление :(

Apollo
21 - 14.05.2009 - 11:19
(19) пока нет, сейчас отлоадчиком пойдусь...
(20) а в каком его труде это написано? я читал только "Что делать?" :-))

Re: Присвоить перечисление :(

roma n
22 - 14.05.2009 - 11:30
21-Apollo >
работа эта называется "Попятное направление русской социал-демократии"
http://libelli.ru/works/4-12.htm
Правда в первоисточнике без "еще раз"

Re: Присвоить перечисление :(

Apollo
23 - 14.05.2009 - 11:32
я впервые слышу об этом труде ((((
закис тут совсем с этой работой...
выбраться бы кудась да и поговорить про русскую социал-демократию, особенно в современных условиях :-)

Re: Присвоить перечисление :(

Apollo
24 - 14.05.2009 - 11:49
Ура! Изаящий вариант (12) ПОЛУЧИЛСЯ!

Re: Присвоить перечисление :(

Reaper
25 - 14.05.2009 - 12:39
22-roma n > Извиняюсь за кривость цитаты, обещаю исправиться.

Re: Присвоить перечисление :(

victuan
26 - 14.05.2009 - 14:20
(24) Для твоего случая сработает и такой вариант:
Спр.Реквизит = Шаблон("["+МояСтрока+"]");
Намного изящнее

Re: Присвоить перечисление :(

roma n
27 - 14.05.2009 - 14:49
(26) * бубня в сторону
всю жизнь думал, что шаблон возвращает строку...

Re: Присвоить перечисление :(

Исчо
28 - 14.05.2009 - 15:29
Самый простой способ - написать ВК на С, там есть приведение типов.

Re: Присвоить перечисление :(

victuan
29 - 15.05.2009 - 03:31
(27) Я это и сам понял сразу как высказался. Так что пост (26) прошу считать недействительным.

Re: Присвоить перечисление :(

100п
30 - 15.05.2009 - 07:05
(22) Правильный первоисточник: "Как нам реогранизовать рабкрин". В нем "еще раз" присутствует. Reaper-у не надо исправляться.

Re: Присвоить перечисление :(

roma n
31 - 15.05.2009 - 07:21
30-100п >
не ври, чего не знаешь. ПСС. http://libelli.ru/library/tema/sc/marxism/lenin.htm
том 45
Сама статья: http://libelli.ru/works/45-3.htm

Re: Присвоить перечисление :(

100п
32 - 15.05.2009 - 07:32
(31) С первоисточником пускай лоханулся, но! Не учили мы "Попятное направление..."! Ни в школе, ни в универе. А цитата походу была.

Re: Присвоить перечисление :(

diaser
33 - 15.05.2009 - 07:33
******************************************************************************
// НайтиЗначПеречисления(Вид, Стр)
//
// Параметры:
//  Вид - строка – вид перечисления.
//  Стр - строка, представление значения перечисления.
//
// Возвращаемое значение:
//  значение перечисления
//
// Описание:
//  Определяет значение перечисления по идентификатору перечисления и представлению
// его значения.
//
Функция глНайтиЗначПеречисления(Вид, Стр) Экспорт
 
Если Метаданные.Перечисление(Вид).Выбран() = 0 Тогда
  Возврат "";
КонецЕсли;
 
Перечисл=Перечисление.ПолучитьАтрибут(Вид);
Для К=1 по Перечисл.КоличествоЗначений() Цикл
  Значение=Перечисл.ЗначениеПоНомеру(К);
  Если Строка(Значение)=СокрЛП(Стр) Тогда
               Возврат(Значение);
          КонецЕсли;
КонецЦикла;
 
Возврат(ПолучитьПустоеЗначение("Перечисление."+Вид));
 
КонецФункции // НайтиЗначПеречисления()
 
Это как пример....

Re: Присвоить перечисление :(

2Green
34 - 15.05.2009 - 09:38
лучше предварителдьно запихнуть в список значений идентификаторы перечислений и уже в нём искать значение в цикле по строкам файла
К списку тем 1 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« Как вытащить из Парус 4.50 зарплата в 1С Бюджет Загрузка данных из Excel »
© 2009 Форум 1С: Одинэс.Ру