Имя: Пароль:
1C
1C 7.7
v7: Обращение через точку к объекту
,
0 1С-ница
 
19.04.13
09:57
1С УСН 7.7
Пытаюсь сделать следующее:
Если Субконто2.ПриниматьДляНУ = Перечисление.ВариантыУчетаРасходовДляНУПринимаются Тогда
//тра та та
Ругается так:
Значение не представляет агрегатный объект (ПриниматьДляНУ). Подскажите как правильно сделать?
1 ДенисЧ
 
19.04.13
09:59
А проверить для начала заполненность субконто2?
2 1С-ница
 
19.04.13
10:07
Конкретно в том документе на котором вылетает ошибка субконто заполнено.
Буду признательна если напишите код Не сильна в семерке...
3 zak555
 
19.04.13
10:08
> Инженер-программист 1С

это в дипломе так написано ?
4 Ёпрст
 
19.04.13
10:08
(0) не задано значение перечисления.
5 ДенисЧ
 
19.04.13
10:08
(2) Отладчик запретили?
6 zak555
 
19.04.13
10:09
глЕстьРеквизит(Субконто2, "ПриниматьДляНУ")
7 Mikeware
 
19.04.13
10:24
(3) знак посередине - не "дефис", а "минус"...
8 NikVars
 
19.04.13
10:26
(0) Чему равно значение переменной Субконто2?
Субконто2 = ...
Чему равно?
9 Рэйв
 
19.04.13
10:27
(2)>>Конкретно в том документе на котором вылетает ошибка субконто заполнено.

Или не заполнено или заполнено не перечислением ВариантыУчетаРасходовДляНУПринимаются
10 sapphire
 
19.04.13
10:31
Если Субконто2.ПриниматьДляНУ = Перечисление.ВариантыУчетаРасходовДляНУ.Принимаются Тогда
11 Рэйв
 
19.04.13
10:36
(10)Оно конечно верно.
Но валится у нее уже на  Субконто2.ПриниматьДляНУ:-)
12 sapphire
 
19.04.13
10:38
(0) 2 ошибки:
1. Нет проверки типа Субконто2 и наличия реквизита ".ПриниматьДляНУ"
2. В перечислении: Перечисление.ВариантыУчетаРасходовДляНУ.Принимаются
13 1С-ница
 
19.04.13
10:59
(8) Значение субконто2=ЗаработнаяПлата (справочник Виды начислений)
у формы этого справочника на форме есть реквизит ПриниматьДля НУ (тип Перечисление.ВариантыУчетаРасходовДляНУ)
у этого перечисления есть значения Принимаются, НеПринимаются, Распределяются
14 1С-ница
 
19.04.13
11:04
(6) глЕстьРеквизит - такой функции нет в глобальном модуле УСН, советуете написать или где то она есть (может в других конфигурациях)
15 mishaPH
 
19.04.13
11:17
(0) а что, отладчик вам не известен? код с листа пишем?

проверить в отладчике собственно Субконто2 что там
16 zak555
 
19.04.13
11:33
(7) ты имеешь ввиду это
Инженер-программист=1С
?
17 Mikeware
 
19.04.13
11:37
(16) не знаю, каким боком ТС к 1С, но то, что она как минимум не программист...
18 1С-ница
 
19.04.13
11:40
(15) отладчиком пользоваться я умею, в  отладчике значение у субконто2 есть, не умею делать проверку на значение этого субконто, т к мало знаю семерку
(17) давайте вы себя оценивать будете, честнее будет :)
19 ЧеловекДуши
 
19.04.13
11:43
(18) Пиши в отладчике

//Перед тем, как сработает ошибка :)
ТипЗначенияСтр(Субконто2.ПриниматьДляНУ)
ТипЗначенияСтр(Субконто2)

//+
//Перечисления это некий список предопределенных значений, задаваемых в конфигураторе, такое же есть в 8-ке
//Писать так
Перечисление.ВариантыУчетаРасходовДляНУПринимаются.КакоеЛибоЗначение
20 ЧеловекДуши
 
19.04.13
11:44
+(18) >>> агрегатный объект

Это начиная от 10 до 100, по функции "ТипЗначения(<Переменная>)"
21 Mikeware
 
19.04.13
11:47
(18)"мало знаю семерку" -
"сами мы восьмерочники, СП украли, ЖКК сгорели - помогите кодом кто каким может..."©
22 zak555
 
19.04.13
12:08
(18) > т к мало знаю семерку

а что знаешь ?
24 mishaPH
 
19.04.13
12:59
(18) 1. отлично. а есть ли у значения субконто2 реквизит ПриниматьДляНУ
25 mishaPH
 
19.04.13
13:00
а то может быть там группа элемента справочника в выборке, у которой нет реквизита ПриниматьДляНУ который только для элементов
26 Масянька
 
19.04.13
13:04
Чего налетели? Тема-то - КАК называется...
27 NikVars
 
19.04.13
16:07
(0) Перебирай в цикле
зн = Субконто2.ПриниматьДляНУ;
Для к=1 по Перечисление.ВариантыУчетаРасходовДляНУПринимаются.КоличествоЗначений() цикл
Если зн=Перечисление.ВариантыУчетаРасходовДляНУПринимаются.ЗначениеПоНомеру(к);
Чего-то сделать...
...
28 zak555
 
19.04.13
22:46
(27) что за ?
29 Сияющий Асинхраль
 
19.04.13
23:10
Субконто2 потому и называется Субконто2, что его значение может быть справочником (а возможно и не только справочником) разных видов, и далеко не у каждого справочника в усн есть реквизит ПриниматьДляНУ
30 Сияющий Асинхраль
 
19.04.13
23:17
Да, кстати, приведенный кусок кода в 8.х отработает также как и в 7.7, и ошибку выдаст такую же, так что рассказы о незнании 7-ки для данного куска странны для ника 1с-ница...
31 zak555
 
19.04.13
23:32
(29) (30) ты про какой кусок ?
32 Злопчинский
 
19.04.13
23:59
Если субконто2 жестко типизирован но не заполнен - то ошибки не будет в случае обращения к субконто2.ЧтоТо

Если субконто2 жестко типизирован но не заполнен - то ошибка будет при более глубоком проникновении типа субконто2.ЧтоТо.Хрень
.
вроде так.
33 zak555
 
20.04.13
00:01
(32) попутал =)
34 Злопчинский
 
20.04.13
00:02
(33) в смысле?
35 zak555
 
20.04.13
00:09
перечитай, что написал
36 Сияющий Асинхраль
 
20.04.13
12:21
(32) обычно, если субконто2 жестко типизирован, то эта типизация отображается в самом названии, например, ВидНачисления. По крайней мере в типовых так...
37 1С-ница
 
22.04.13
14:17
(19)  ТипЗначенияСтр(Субконто2.ПриниматьДляНУ) = "Перечисление"
38 1С-ница
 
22.04.13
14:17
ТипЗначенияСтр(Субконто2) = "Справочник"
39 ЧеловекДуши
 
22.04.13
14:23
(37) Молодец, вот так можно работать в отладчике :)

А теперь сделай там же так:

Субконто2.ПриниматьДляНУ.Вид()
и
Субконто2.Вид()

А затем
СокрЛП(Субконто2.ПриниматьДляНУ)
и
СокрЛП(Субконто2)


(38)Но ты так главного не поняла.
Перечисление всегда состоит из трех составляющих:

программном модуле (перечисления принадлежат глобальному контексту задачи). В терми­нах языка перечисления аналогичны системным константам «только для чте­ния», т. е. идентификаторы перечислений могут размещаться только в правой части оператора присваивания, в выражениях, быть параметрами процедур, функций или методов в любом программном модуле.

В качестве имени перечисления обязательно должно выступать полное имя конкретного вида и значения перечисления, как оно объявлено в конфигурато­ре. Вид и значение перечисления записывается через точку после ключевого слова Перечисление, т. е. полное имя вида перечисления записывается сле­дующим образом:

Перечисление.<Имя_Переч>.<Значение_Переч>,

где <Имя_Переч> — имя вида перечисления, <Значение_Переч> — кон­кретное значение данного вида перечисления.

Англоязычный синоним ключевого слова Перечисление — Enum.
Пример:

Если Док.Сотрудник.Тип = Перечисление.ТипСотрудника.Штатный Тогда
  Льготы = 1;
Иначе
  Льготы = 0;
КонецЕсли;

Объект Перечисление является частью глобального контекста программы 1С:Предприятие. Этот объект в качестве своих атрибутов имеет значения объ­ектов конкретных видов перечислений, заданных в конфигурации. Кроме того, этот объект имеет метод ПолучитьАтрибут, который позволяет получить доступ к объекту перечисления конкретного вида по его имени.

Перечисление конкретного вида в качестве своих атрибутов имеет конкрет-йьте значения перечислений. Кроме того, этот объект имеет методы КоличествоЗначений, ЗначениеПоНомеру и ЗначениеПоИдентификатору которые позволяют получить доступ к конкретному значению перечисления.

Конкретное значение перечисления имеет методы Вид, ПредставлениеВида, Выбран, ПорядковыйНомер, Идентификатор.
40 ЧеловекДуши
 
22.04.13
14:24
+(38)Обрати внимание на текст "обязательно должно выступать полное имя конкретного вида и значения перечисления,"
41 1С-ница
 
22.04.13
14:24
Поняла в чем ошибка, спасибо всем, кто действительно пытался помочь))