Имя: Пароль:
1C
1С v8
Поле объекта не обнаружено (ВидНоменклатуры)
,
0 rowflag
 
03.10.12
14:03
Для Каждого Элемент Из МассивНоменклатураОС Цикл
           Если ЭлементОбъект.ВидНомеклатуры = ТекущийВидНоменклатуры Тогда
               МассивНоменклатураСовпадающаяПоВидуСТекущей.Добавить(Элемент);
           КонецЕсли;

МассивНоменклатураОС - Массив элементов типа Справочник ссылка..
46 rowflag
 
03.10.12
14:31
(убрал, все тоже самое)
47 rowflag
 
03.10.12
14:31
(42) причем здесь рыба?
48 DrShad
 
03.10.12
14:32
у тебя там значит точно не ссылки на справочник
49 Rodinyr
 
03.10.12
14:33
(47) Повторяю вопрос Как получаешь "МассивНоменклатураОС"?
50 DrShad
 
03.10.12
14:35
Функция ПолучитьНоменклатуруТекущегоОС(ОС)
   МассивНоменклатураОС = Новый Массив;
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ОсновныеСредства.Номенклатура
       |ИЗ
       |    РегистрСведений.ОсновныеСредства КАК ОсновныеСредства
       |ГДЕ
       |    ОсновныеСредства.ОсновноеСредство = &ОсновноеСредство";

   Запрос.УстановитьПараметр("ОсновноеСредство", ОС);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Ном = ВыборкаДетальныеЗаписи.Номенклатура;
       МассивНоменклатураОС.Добавить(Ном);
   КонецЦикла;
   Возврат МассивНоменклатураОС;
КонецФункции
51 Aleks73
 
03.10.12
14:38
Перед
Если Элемент.ЭтоГруппа=Ложь Тогда
Вставляешь что-то типа
сообщить("---"+ Элемент.имя);
и публикуешь резултат на форме. особенно последнне сообщение.
52 Aleks73
 
03.10.12
14:38
Даже может быть
сообщить("---"+ Элемент.НАИМЕНОВАНИЕ);
53 DrShad
 
03.10.12
14:39
(52) если там нет ЭтоГруппа, то и наименования тоже нет
54 hhhh
 
03.10.12
14:39
(50) похоже там номенклатура не заполнена.
55 Aleks73
 
03.10.12
14:39
Как-то меня слово Элеемнт смутило, так переменную не называют,
принято что-то типа:  для каждого стр из ....
56 Cashtane
 
03.10.12
14:40
(45) Точку останова поставь на второй строчке и выдели "элемент". Нажми вычислить с озвусь нам "тип".
57 Aleks73
 
03.10.12
14:42
(53) Да, отладчик спасет отца русской демократии, но ТС возможно не умеет с ним работать
58 Cashtane
 
03.10.12
14:43
(57) Тогда макрозадача - научить. Показать полезность.
59 Buster007
 
03.10.12
14:43
надо поставить в отладчике галку "Останавливаться по ошибке" и посмотреть что в Элементе
60 rowflag
 
03.10.12
14:45
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(413)}: Поле объекта не обнаружено (НАИМЕНОВАНИЕ)
           сообщить("---"+ Элемент.НАИМЕНОВАНИЕ);
61 rowflag
 
03.10.12
14:46
Элемент: Тип: Справочник.Ссылка.
62 hhhh
 
03.10.12
14:46
(60) тогда Сообщить("" + Элемент);
63 rowflag
 
03.10.12
14:46
(отладчик говорит)
64 DrShad
 
03.10.12
14:46
(60) ну вот, я же говорил что нет Наименования
65 hhhh
 
03.10.12
14:47
(62)+ нет, Сообщить("--- " + Элемент);
66 Aleks73
 
03.10.12
14:47
(61) Просто справочник.ссылка ? или там ещё есть буковки ?
67 rowflag
 
03.10.12
14:47
---СБ--02-0001
68 rowflag
 
03.10.12
14:48
Сообщить("--- " + Элемент);
---СБ--02-0001
69 hhhh
 
03.10.12
14:48
(67) ну и проверь в справочнике, это не группа?
70 DrShad
 
03.10.12
14:48
у тебя битые ссылки дружок - поздравляю!
71 rowflag
 
03.10.12
14:49
(то есть битые?)
72 rowflag
 
03.10.12
14:49
Да элемент это!
73 Aleks73
 
03.10.12
14:49
(67) это чего ? э8=0
74 DrShad
 
03.10.12
14:49
(72) у твоего элемента нет ссылки!
75 rowflag
 
03.10.12
14:50
СправочникСсылка.Номеклатура (извините)
76 Aleks73
 
03.10.12
14:50
(68) см (66)
77 rowflag
 
03.10.12
14:50
СБ--02-0001 Это элемент справочника номенклатура. Такой есть.
78 Cashtane
 
03.10.12
14:51
Ну в том же отладчике разверни этот "элемент", т.е. нажми на плюсик и посмотри там есть "этоГруппа"
79 rowflag
 
03.10.12
14:51
А он не разворачивается.
80 rowflag
 
03.10.12
14:51
Строка одна.
81 Aleks73
 
03.10.12
14:51
(75) т.о. мы имеет две гипотезы
- особо кривые руки ТС
- В справочнике номенклатура нет реквизита наименование
82 DrShad
 
03.10.12
14:52
(79) а потому что это не ссылка
83 hhhh
 
03.10.12
14:52
(77) всё. Я под столом. Открой в конфигураторе справочник Номенклатура и найди там ВидНоменклатуры.
84 DrShad
 
03.10.12
14:52
(81) наименование будет всегда, даже если длина 0
85 Oleg_Kag
 
03.10.12
14:52
Так... давайте зададим главный вопрос:
Конфигурация какая?
86 Aleks73
 
03.10.12
14:52
(82), см (75)
87 rowflag
 
03.10.12
14:53
Конфа с нуля пишу.
88 Aleks73
 
03.10.12
14:53
(85) разве что "Васёк писал"
89 Aleks73
 
03.10.12
14:54
(87) я валяюсь...позовите специалиста (с)
90 rowflag
 
03.10.12
14:54
(83) СправочникСсылка.ВидыНоменклатуры
91 Rodinyr
 
03.10.12
14:54
(79) rowflag : повторяю вопрос- Каким методом получил МассивНоменклатураОС?
92 Cashtane
 
03.10.12
14:54
УФ.
93 Cashtane
 
03.10.12
14:55
Блин, он на управляемых пишет.
94 DrShad
 
03.10.12
14:55
(93) и что?
95 rowflag
 
03.10.12
14:55
МассивНоменклатураОС = ПолучитьНоменклатуруТекущегоОС(ОССостоящееИзЭтогоЭлемента);


&НаСервере
Функция ПолучитьНоменклатуруТекущегоОС(ОС)
   МассивНоменклатураОС = Новый Массив;
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ОсновныеСредства.Номенклатура
       |ИЗ
       |    РегистрСведений.ОсновныеСредства КАК ОсновныеСредства
       |ГДЕ
       |    ОсновныеСредства.ОсновноеСредство = &ОсновноеСредство";

   Запрос.УстановитьПараметр("ОсновноеСредство", ОС);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Ном = ВыборкаДетальныеЗаписи.Номенклатура;
       МассивНоменклатураОС.Добавить(Ном);
   КонецЦикла;
   Возврат МассивНоменклатураОС;
КонецФункции
96 Oleg_Kag
 
03.10.12
14:56
Вообщем... тут щас народ придет к такому:
Выложу свою мегаконфу куда-нибудь
97 rowflag
 
03.10.12
14:57
НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
   Штрихкод = Штрихкод_рек_чис;          // Получаем штрихкод из реквизита (Если он есть, то надо скрыть элементы генерации нового штрихкода)
   
   // 1. Регистрируем новый штрихкод
   Если РегистрироватьШтрихкод Тогда    // Если надо регистрировать штрихкод (он (не-занят) и (не-зарегистирован_уже-за-этой-номенклатурой))
       Если РегистрироватьШтрихкод Тогда
           Наименование = Объект.Наименование;
           Если Штрихкод > 0 Тогда
               РегистрацияНовогоШтрихкода(Наименование, Штрихкод);
               РегистрироватьШтрихкод = Ложь;
           КонецЕсли;//к1 штриход зарегистрирован
       КонецЕсли;
   КонецЕсли;
   
   
   // 2. Вносим данные в РС "ОсновныеСредства"
   РегистрироватьОС = Истина;
   Если РегистрироватьОС Тогда
       // Находим все номенклатуры, входящие в данное ОС.
       ТекущийВидНоменклатуры = Объект.ВидНоменклатуры;
       МассивНоменклатураОС = Новый Массив;
       МассивНоменклатураОС = ПолучитьНоменклатуруТекущегоОС(ОССостоящееИзЭтогоЭлемента);
       МассивНоменклатураСовпадающаяПоВидуСТекущей = Новый Массив;
       Для Каждого Элемент Из МассивНоменклатураОС Цикл
           сообщить("---"+ Элемент);
           сообщить("---"+ Элемент.НАИМЕНОВАНИЕ);
           сообщить("---"+ Элемент.имя);
           Если Элемент.ЭтоГруппа=Ложь Тогда
               Если Элемент.ВидНомеклатуры = ТекущийВидНоменклатуры Тогда
                   МассивНоменклатураСовпадающаяПоВидуСТекущей.Добавить(Элемент);
               КонецЕсли;
           КонецЕсли;

       КонецЦикла;
98 Rodinyr
 
03.10.12
14:58
(96) Хорошо! "ОсновныеСредства.Номенклатура" какого типа?
99 hhhh
 
03.10.12
14:59
(97) как называется реквизит в справочнике Номенклатура? Откройте его там и копипастом скопируйте сюда.
100 Aprobator
 
03.10.12
14:59
(99) да без разницы. Он в управляемых на клиенте всяко виден не будет.
101 Cashtane
 
03.10.12
15:00
(94) Выполняет на клиенте от того и беда.
102 Aprobator
 
03.10.12
15:01
я про видноменклатуры.
103 rowflag
 
03.10.12
15:01
Реквизит в справочнике Номенклатура копипаст:СправочникСсылка.ВидыНоменклатуры
104 DrShad
 
03.10.12
15:01
(101) от чего конкретно на Клиенте беда? не говорите загадками
105 Rodinyr
 
03.10.12
15:01
(100) Точно, На стороне клиента ссылка не увидит реквизиты Номенклатуры
106 rowflag
 
03.10.12
15:02
Имя: ВидНоменклатуры
107 DrShad
 
03.10.12
15:04
(105) ну хз
108 Aprobator
 
03.10.12
15:05

...
Если ПолучитьРеквизитНаСервере(ЭлементОбъект, "ВидНоменклатуры") = ТекущийВидНоменклатуры Тогда
....

&НаСервере
Функция ПолучитьРеквизитНаСервере(Источник, ИмяРеквизита)
      Возврат Источник[ИмяРеквизита]
КонецФункции
109 Aprobator
 
03.10.12
15:06
это так - простейшее решение.
110 hhhh
 
03.10.12
15:09
(106)

&НаСервере
Функция ПолучитьНоменклатуруТекущегоОС(ОС, ВидНоменклатуры)
   МассивНоменклатураОС = Новый Массив;
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ОсновныеСредства.Номенклатура
       |ИЗ
       |    РегистрСведений.ОсновныеСредства КАК ОсновныеСредства
       |ГДЕ
       |    ОсновныеСредства.ОсновноеСредство = &ОсновноеСредство
       |     И ОсновныеСредства.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры ";

   Запрос.УстановитьПараметр("ОсновноеСредство", ОС);
   Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);
   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       Ном = ВыборкаДетальныеЗаписи.Номенклатура;
       МассивНоменклатураОС.Добавить(Ном);
   КонецЦикла;
   Возврат МассивНоменклатураОС;
111 rowflag
 
03.10.12
15:09
(108) - Заработало!
112 Aprobator
 
03.10.12
15:11
(111) куда б оно делось.
113 hhhh
 
03.10.12
15:11
(111) возьми уже готовую БП и переделывай. Чего ты с нуля ваяешь основные средства?
114 rowflag
 
03.10.12
15:11
(106) Мне нужны все Номенклатура, а не только те, которые к ВидНоменклатуры относятся..
115 Aprobator
 
03.10.12
15:11
(111) а вообще - читай учебники.
116 rowflag
 
03.10.12
15:12
Так в чем причина была? (НаКлиенте нельзя к реквизиту обратиться?)
117 rowflag
 
03.10.12
15:13
(почему сразу не понятно было тогда всем это?)
118 Aprobator
 
03.10.12
15:15
(117) потому что в теме не указано, что речь об управляемых формах. И по коду в (0) этого не определить.
119 Aprobator
 
03.10.12
15:16
хотя после поста (23) почему такую фигню несли - я хз.
120 rowflag
 
03.10.12
15:18
Всем спасибо!
121 Aprobator
 
03.10.12
15:19
Второй вариант решения твоей проблемы методологически более правильный.

&НаСервере
Функция ПолучитьНоменклатуруТекущегоОС(ОС)
   МассивНоменклатураОС = Новый Массив;
   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ОсновныеСредства.Номенклатура,
       |   ОсновныеСредства.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры
       |ИЗ
       |    РегистрСведений.ОсновныеСредства КАК ОсновныеСредства
       |ГДЕ
       |    ОсновныеСредства.ОсновноеСредство = &ОсновноеСредство";

   Запрос.УстановитьПараметр("ОсновноеСредство", ОС);

   Результат = Запрос.Выполнить();

   ТЗ = Результат.Выбрать().Выгрузить();

   Возврат ТЗ;
КонецФункции
122 Aprobator
 
03.10.12
15:21
ну и в массив на клиенте делать так:

...
           Если ЭлементОбъект.ВидНомеклатуры = ТекущийВидНоменклатуры Тогда
               МассивНоменклатураСовпадающаяПоВидуСТекущей.Добавить(ЭлементОбъект.Номенклатура);
           КонецЕсли;

...
123 Aprobator
 
03.10.12
15:22
а млин: ошибсь

...
ТЗ = Результат.Выгрузить();
...
124 rowflag
 
03.10.12
15:23
(122) не понятно что изменилось на клиенте..
125 Aprobator
 
03.10.12
15:25
(124) ... ЭлементОбъект.Номенклатура ...
126 hhhh
 
03.10.12
15:25
(124) на клиенте появился ВидНоменклатуры.
127 Aprobator
 
03.10.12
15:26
(124) на клиент уходит не массив, а тз с колонками Номенклатура и ВидНоменклатуры.
128 rowflag
 
03.10.12
15:26
Понял! Спасибо!
129 rowflag
 
03.10.12
15:26
(почему это является более правильным?)
130 Aprobator
 
03.10.12
15:27
(129) потому что все делается за одно обращение к серверу.
131 Aprobator
 
03.10.12
15:27
а не каждый раз при обходе массива номенклатуры (если там конечно массив, а реально не один элемент).
132 rowflag
 
03.10.12
15:28
Отлично!
133 rowflag
 
03.10.12
15:39
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(416)}: Ошибка при вызове метода контекста (ПолучитьНоменклатуруТекущегоОС)
       МассивНоменклатураОС = ПолучитьНоменклатуруТекущегоОС(ОССостоящееИзЭтогоЭлемента);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/d
134 Aprobator
 
03.10.12
15:59
чудно - реквизит значит напрямую лезет, а из запроса не хочет? Сек тогда.
135 Aprobator
 
03.10.12
16:01
ну оставь тогда первое решение - времени копаться нету  и сил тоже. Нагружен по самое нехочу. А вообще - читай учебники.
136 Aprobator
 
03.10.12
16:03
может конечно NULL гадить с вида номенклатуры то. Тип значения колонки таблицы полученной
137 Aprobator
 
03.10.12
16:03
в результате запроса
138 Aprobator
 
03.10.12
16:03
да нет - вроде тоже передается.
139 Aprobator
 
03.10.12
16:05
ладно, направление тебе дали. Давай дальше сам. Да и полезнее всяко будет.
140 Aprobator
 
03.10.12
16:07
проверь, может результат запроса пустой оказался.
141 Aprobator
 
03.10.12
16:09
а нашел - ТЗ с сервера на клиент не передается.
142 Aprobator
 
03.10.12
16:09
на тонкий
143 Aprobator
 
03.10.12
16:14
Если значений реально много то можно сделать обход запроса и в массив писать значение структуры. Типа:

...
РезультатВыборка = Результат.Выбрать();
Пока РезультатВыборка.Следующий() Цикл
   МассивНоменклатураОС.Добавить(Новый Структура("Номенклатура,ВидНоменклатуры", РезультатВыборка.Номенклатура, РезультатВыборка.ВидНоменклатуры));
КонецЦикла;

Возврат МассивНоменклатураОС;
...


Соррь - забыл про эту бяку с таблицей значений, что ее тонкий клиент не видит.
144 rowflag
 
03.10.12
16:31
(143) Большое Спасибо!
145 Aprobator
 
03.10.12
16:35
и тебе спасибо. Обучая других растешь сам.