8.х Не могу записать элемент справочника "Спецификации" Бухгалтерия 3.0

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем sergey26, 10 сен 2015.

  1. TopicStarter Overlay
    sergey26
    Offline

    sergey26

    Регистрация:
    24 июн 2013
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Не могу записать элемент справочника Спецификации в Бухгалтерия 3.0.
    Выдает сообщение "Значение поля "Номенклатура" не заполнено или заполнено неверно.

    Код:
    &НаСервере
    Процедура ЗагрузитьНаСервере()
        Перем НовыйЭлемент;
       
        ТекстЗагрузки = Новый ТекстовыйДокумент;
        ТекстЗагрузки.Прочитать(Объект.ФайлЗагрузки);
        //НовыйЭлемент = Справочники.Номенклатура;
        Режим = 1;
        Для НомСтроки = 1 По ТекстЗагрузки.КоличествоСтрок() Цикл
            МассивДанных = РазложитьСтрокуВМассивПодстрок(ТекстЗагрузки.ПолучитьСтроку(НомСтроки), ";", Ложь, Истина);
            Если МассивДанных[0] = "1" Тогда
                //Если Режим = 2 Тогда
                //    НовыйЭлемент.Записать();
                //КонецЕсли;
               
                Режим = 1;
                НовыйЭлемент = Справочники.СпецификацииНоменклатуры.СоздатьЭлемент();
                НовыйЭлемент.Код = СокрЛП(МассивДанных[1]);
                НовыйЭлемент.Наименование = СокрЛП(МассивДанных[2]);
                НовыйЭлемент.Количество = МассивДанных[3];
                Владелец = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(МассивДанных[4]));
                Если Не (Владелец = Справочники.Номенклатура.ПустаяСсылка()) Тогда
                    НовыйЭлемент.Владелец = Владелец;
                КонецЕсли;
                //НовыйЭлемент.Записать();
            Иначе
                Режим = 2;
                МассивДанных = РазложитьСтрокуВМассивПодстрок(ТекстЗагрузки.ПолучитьСтроку(НомСтроки), ";", Ложь, Истина);
                Комплектующие = НовыйЭлемент.ИсходныеКомплектующие.Добавить();
                Комплект = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(МассивДанных[2]));
                Если Комплект = Справочники.Номенклатура.ПустаяСсылка() Тогда
                    Комплект = Справочники.Номенклатура.СоздатьЭлемент();
                    Комплект.Код = СокрЛП(МассивДанных[2]);
                    Комплект.Наименование = СокрЛП(МассивДанных[3]);
                    Комплект.НаименованиеПолное = СокрЛП(МассивДанных[4]);
                    Комплект.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(СокрЛП(МассивДанных[5]));
                    Родитель = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(МассивДанных[6]));
                    Если Родитель = Справочники.Номенклатура.ПустаяСсылка() Тогда
                        Родитель = Справочники.Номенклатура.СоздатьГруппу();
                        Родитель.Наименование = СокрЛП(МассивДанных[6]);
                        Родитель.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Материалы");
                        Родитель.Записать();
                    КонецЕсли;
                    Комплект.Родитель = Родитель.Ссылка;
                    НомГруппа = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию(СокрЛП(МассивДанных[7]));
                    Если НомГруппа = Справочники.НоменклатурныеГруппы.ПустаяСсылка() Тогда
                        НомГруппа = Справочники.НоменклатурныеГруппы.СоздатьЭлемент();
                        НомГруппа.Наименование = СокрЛП(МассивДанных[7]);
                        НомГруппа.Записать();
                    КонецЕсли;
                    Комплект.НоменклатурнаяГруппа = НомГруппа.Ссылка;
                    ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(МассивДанных[7]));
                    Если ВидНоменклатуры = Справочники.ВидыНоменклатуры.ПустаяСсылка() Тогда
                        ВидНоменклатуры = Справочники.ВидыНоменклатуры.СоздатьЭлемент();
                        ВидНоменклатуры.Наименование = СокрЛП(МассивДанных[7]);
                        ВидНоменклатуры.Записать();
                    КонецЕсли;
                    Комплект.ВидНоменклатуры = ВидНоменклатуры.Ссылка;
                    Комплект.Услуга = Ложь;
                    Комплект.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
                    Комплект.Записать();
                КонецЕсли;
                Комплектующие.Номенклатура = Комплект;
                Комплектующие.Количество = МассивДанных[1];
                НовыйЭлемент.Записать();
            КонецЕсли;
        КонецЦикла;
       
    КонецПроцедуры
    
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Комплектующие.Номенклатура = Комплект;

    Комплект - СправочникОбъект.Номенклатура, а нужна ссылка на объект.
  3. TopicStarter Overlay
    sergey26
    Offline

    sergey26

    Регистрация:
    24 июн 2013
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Изначально было так
    Комплектующие.Номенклатура = Комплект.Ссылка;
    Результат одинаковый
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Если МассивДанных[0] = "1" Тогда

    Продукция(изделие) вообще не заполняется.
  5. TopicStarter Overlay
    sergey26
    Offline

    sergey26

    Регистрация:
    24 июн 2013
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Продукция заполняется. В файле загрузки первое поле как раз сообщает какая информация содержится в строке. Соответственно значение либо 1 либо 2.
    --- Объединение сообщений, 10 сен 2015 ---
    Вот часть файла загрузки.
    1;000002570; 1000*1760;1;00000004252;1000* 1760
    2;0,006;00000000050;Лента стальная 1,0 х30 мм;Лента стальная 1,0 х30,4мм ;166 ;Материалы пружинного производства;Материалы
    2;0,359;00000000039;Лента стальная 6,0 х1,4 мм;Лента стальная 6,0 х1,4мм ;166 ;Материалы пружинного производства;Материалы
    1;000002569; 1000*1760*120/2/ С/Б;1;00000004251;БП"BS" 1000*1760*120/2/
    2;220;00000000030;Пружина h-120 ;Пружина h-120 ;796 ;Пружина;Полуфабрикаты собственного производства
    2;2;00000004252;1000* 1760;Рамка 1000* 1760;796 ;Рамки;Полуфабрикаты собственного производства
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Еще раз возвращаемся к строке

    Комплектующие.Номенклатура = Комплект;

    Комплект всегда должен быть СправочникСсылка. Согласно кода, если создается новый объект, то там будет СправочникОбъект.
  7. TopicStarter Overlay
    sergey26
    Offline

    sergey26

    Регистрация:
    24 июн 2013
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Так сейчас записано как надо. Но результат один и тот же.
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Чудес не бывает.
    В отладчике проверьте заполнение всех реквизитов спецификации и реквизитов ТЧ спецификации.
  9. TopicStarter Overlay
    sergey26
    Offline

    sergey26

    Регистрация:
    24 июн 2013
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    В отладчике смотрю Комплектующие.Номенклатура Значение присвоено как надо. А при выполнении команды записать ошибка. Всю голову сломал. Стандартная конструкция а не работает.
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    проверяйте отладчиком, что происходит после НовыйЭлемент.Записать()
  11. TopicStarter Overlay
    sergey26
    Offline

    sergey26

    Регистрация:
    24 июн 2013
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Именно на этой команде и выдается сообщение об ошибке.
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    После этой команды еще куча всего выполняется, F11 покажет.

Поделиться этой страницей