Имя: Пароль:
1C
1С v8
КД. Ошибка в ПКС: Получение элемента по индексу для значения неопределено
0 Босечка
 
03.05.17
16:55
В конвертации данных прописываю ПКС реквизита КодНоменклатурыЕГАИС в справочнике номенклатура. выдается ошибка

Ошибка получения свойства объекта из входящих данных
    ПКО                    =  Номенклатура  (Справочник: Номенклатура)
    ПКС                    =  51  (--> КодНоменклатурыЕГАИС)
    Объект                 =  Напитки винные кр. 5-25% (Код 461, 462)  (Позиция номенклатуры)
    СвойствоПриемника      =  КодНоменклатурыЕГАИС  (Строка)
    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9395)
    КодСообщения           =  68


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

Помогите пожалуйста исправить.
1 Ц_У
 
03.05.17
17:03
(0) это в каком обработчике?
2 Ц_У
 
03.05.17
17:05
(0) ПриВыгрузке надо
и
Если Выб.Следующий() Тогда
Значение = Выб.КодЕГАИС;  
КонецЕсли;
а так должно работать
3 h-sp
 
03.05.17
17:20
(2) реально веришь, что для папки там код ЕГАИС задан?
4 Ц_У
 
03.05.17
17:24
(3) ну тут я хз что он там выгружает, может у него отказ на выгрузку группы.
5 Босечка
 
04.05.17
06:58
для папки кодЕГАИС не существует, а как это обойти? В запросе прописать?
6 Босечка
 
04.05.17
09:42
вот в запросе прописала все равно выдается эта же ошибка

Запрос=новый Запрос;
      Запрос.текст ="ВЫБРАТЬ
                        |    СоответствиеНоменклатурыЕГАИС.АлкогольнаяПродукция,
                        |    СоответствиеНоменклатурыЕГАИС.АлкогольнаяПродукция.Код КАК КодЕГАИС,
                        |    СоответствиеНоменклатурыЕГАИС.Номенклатура
                        |ИЗ
                        |    РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеНоменклатурыЕГАИС
                        |ГДЕ
                        |    СоответствиеНоменклатурыЕГАИС.Номенклатура = &Ист
                        |    И СоответствиеНоменклатурыЕГАИС.Номенклатура.ЭтоГруппа = ЛОЖЬ";
      
      
       Запрос.УстановитьПараметр("Ист",Источник);
       Выб=Запрос.Выполнить().Выбрать();
    Если  Выб.Следующий() тогда
        Значение = Выб.КодЕГАИС;  
    Конеццикла;
7 Босечка
 
04.05.17
10:00
ап..
8 Ц_У
 
04.05.17
10:07
(7) запрос в базе что выдает?
9 Босечка
 
04.05.17
10:26
сейчас посмотрю.
10 Ц_У
 
04.05.17
10:35
В ПКС:
Передавать данные в приемник - да
Источник - пусто
Получить из вх.данных - нет галки
Метод - при выгрузке
Правило - пусто
11 Босечка
 
04.05.17
10:54
в базе запрос работает идеально
12 Босечка
 
04.05.17
10:58
сделала по вашему совету сейчас попробую
13 Босечка
 
04.05.17
11:04
теперь новая ошибка


Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
    ПВД                    =  ОстаткиТоваров
    Обработчик             =  ПередОбработкойВыгрузкиДанных
    ОписаниеОшибки         =  Ошибка в обработчике события ПослеВыгрузкиОбъекта
    ПКО                    =  Номенклатура  (Справочник: Номенклатура)
    Объект                 =  Напиток винный "ПРОТВЕЙН 777" 0,7 л  (Позиция номенклатуры)
    Обработчик             =  ПослеВыгрузкиОбъекта
    ОписаниеОшибки         =  Ошибка получения значения свойства объекта (по имени свойства источника)
    ПКО                    =  СоответствиеНоменклатурыЕГАИС  (Регистр сведений: Соответствие номенклатуры ЕГАИС)
    ПКС                    =  1  (Активность --> Активность)
    Объект                 =  (Выборка из результата запроса)
    СвойствоПриемника      =  Активность  (Булево)
    ОписаниеОшибки         =  Поле объекта не обнаружено (Активность)
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9395)
    КодСообщения           =  13
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1328)
    КодСообщения           =  43
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(3034)
    КодСообщения           =  31
14 Ц_У
 
04.05.17
11:08
ПКО - Номенклатура
После выгрузки что за код?
15 Franchiser
 
гуру
04.05.17
11:09
Опрелели "ключвыгружаемыхданных"
16 Вафель
 
04.05.17
11:10
А если следующий() = ЛОЖЬ?
17 Босечка
 
04.05.17
11:37
Запрос = Новый Запрос;
Запрос.Текст = "
    |ВЫБРАТЬ
    |    *
    |ИЗ
    |    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    |ГДЕ
    |    ЦеныНоменклатуры.Номенклатура = &Ссылка";

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

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


Запрос1 = Новый Запрос;
Запрос1.Текст = "
    |ВЫБРАТЬ
    |    *
    |ИЗ
    |    РегистрСведений.СоответствиеНоменклатурыЕГАИС  КАК СоответствиеНоменклатурыЕГАИС
    |ГДЕ
    |    СоответствиеНоменклатурыЕГАИС.Номенклатура = &Ссылка";

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

Пока РезультатЗапроса1.Следующий() Цикл
    ВыгрузитьПоПравилу(РезультатЗапроса1,,,, "СоответствиеНоменклатурыЕГАИС");    
КонецЦикла;



Запрос2 = Новый Запрос;
Запрос2.Текст = "
    |ВЫБРАТЬ
    |    *
    |ИЗ
    |    РегистрСведений.Штрихкоды  КАК Штрихкоды
    |ГДЕ
    |    Штрихкоды.Владелец = &Ссылка";

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

Пока РезультатЗапроса2.Следующий() Цикл
    ВыгрузитьПоПравилу(РезультатЗапроса2,,,, "Штрихкоды");    
КонецЦикла;
18 Босечка
 
04.05.17
11:38
(16) Это где?
19 Босечка
 
04.05.17
11:48
(14) вот и код собственно. Одну ошибку исправили другая вылезла
20 Ц_У
 
04.05.17
11:50
(19) правила кто-то другой писал?
21 Босечка
 
04.05.17
11:54
нет все я писала
22 Босечка
 
04.05.17
11:55
почему то три запроса не воспринимаются. только один
23 Ц_У
 
04.05.17
11:56
(21)
Объект =  (Выборка из результата запроса)
ОписаниеОшибки         =  Поле объекта не обнаружено (Активность)

отключите ПКС Активность
24 Босечка
 
04.05.17
11:58
попробую
25 Босечка
 
04.05.17
12:01
вроде нормально пошла. А Активность какое значение имеет? Может она нужна?
26 h-sp
 
04.05.17
12:09
(25) не нужна
27 Ц_У
 
04.05.17
12:14
(25) ну и хорошо
28 Босечка
 
04.05.17
13:15
(27) Спасибо большое. А можно еще вопрос?
Запрос правильно написан? Просто у меня загружаются не все цены почему-то. А  регистр соответствиеНоменклатурыЕгаис совсем не загрузился
29 Ц_У
 
04.05.17
13:31
(28) я бы сделал немного по-другому
Перенес все (17) в Алгоритм (например с именем  Выгрузка_РС_По_Номенклатуре) с параметром Источник
внутри алгоритма написал что-то вроде
НаборЗаписей = РегистрыСведений.Штрихкоды  .СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Владелец.Установить(Источник);
НаборЗаписей.Прочитать();

ВыгрузитьРегистр(НаборЗаписей, , , Истина, "ПКО_Штрихкоды");
//и т.д. для всех связанных регистров

И в ПКО Номенклатуры в ПослеВыгрузкиВФайл написал бы
Выполнить(Алгоритмы.Выгрузка_РС_По_Номенклатуре);
30 Босечка
 
04.05.17
13:50
понятно,  для трех регистров можно использовать один алгоритм? И еще по полям поиска вопрос:

Если  источника нет, а есть приемник можно так прописать поля поиска:

Если  (ЗначениеЗаполнено(СвойстваПоиска["АлкогольнаяПродукция"])) или (ЗначениеЗаполнено(СвойстваПоиска["КодНоменклатурыЕГАИС"]))  Тогда
СтрокаИменСвойствПоиска = "АлкогольнаяПродукция, КодНоменклатурыЕГАИС";
Конецесли;
31 Босечка
 
04.05.17
13:51
КодНоменклатурыЕГАИС без источника
32 Ц_У
 
04.05.17
14:16
(30) да один алгоритм, да как-то так можно и, например, в Иначе ПрекратитьПоиск = истина;
33 Босечка
 
04.05.17
14:40
(29) так не работает

вот код

НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Владелец.Установить(Источник);
НаборЗаписей.Прочитать();
//ВыгрузитьРегистр(НаборЗаписей, , , Истина, "Штрихкоды");
ВыгрузитьПоПравилу(НаборЗаписей,,,, "Штрихкоды");    


Ошибка получения значения свойства объекта (по имени свойства источника)
    ПКО                    =  Штрихкоды  (Регистр сведений: Штрихкоды)
    ПКС                    =  2  (Владелец --> Владелец)
    Объект                 =  РегистрСведенийНаборЗаписей.Штрихкоды  (Регистр сведений набор записей: Штрихкоды)
    СвойствоПриемника      =  Владелец  ()
    ОписаниеОшибки         =  Поле объекта не обнаружено (Владелец)
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9395)
    КодСообщения           =  13
34 Ц_У
 
04.05.17
14:53
(33) ВыгрузитьРегистр не работает?
35 Ц_У
 
04.05.17
14:54
источник приемник оба регистры?
36 Босечка
 
04.05.17
14:56
оба конечно.
37 Ц_У
 
04.05.17
14:59
(36) а с выгрузить регистр что не так ?
38 Босечка
 
04.05.17
15:05
пишет что такого объекта не обнаружено
39 Ц_У
 
04.05.17
15:40
(38) все, сдаюсь, оставьте как было.
Основная теорема систематики: Новые системы плодят новые проблемы.