Обработка для загрузки данных в справочник Номенклатура

Тема в разделе "1C и всё что с ней связано", создана пользователем SimonenkoT, 15 июл 2011.

  1. SimonenkoT

    SimonenkoT Гость

    Здравствуйте!
    Прошу вас помогите мне.
    1С версия 8.2 - 1С:Предприятие 8.2 (8.2.13.202)
    Есть обработка для загрузки данных из экселя в справочник номенклатура.
    Проблема в том что в процедуре СозданиеДокумента. все работает нормально. но данные в справочник он не записывает . прошу вас помогите.
    Заранее благодарю вас.

    Процедура СоздаемДокументы()
    // Создаем документы
    Для каждого Стр Из ДанныеЛиста Цикл
    ОбработкаПрерыванияПользователя();
    СтрокаПоиска = СокрЛП(Стр.КодНоменклатуры);
    Номенклатура = Справочники.Номенклатура;
    НайденнаяСсылка = Номенклатура.НайтиПоРеквизиту("Артикул", СтрокаПоиска);
    Если НайденнаяСсылка = Номенклатура.ПустаяСсылка() Тогда
    Сообщить("Номенклатуры """ + СтрокаПоиска + """ еще нет, создан документ.");
    Док = Документы.brg_ЗаявкиНаВводНоменклатуры.СоздатьДокумент();
    Док.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация");
    Док.Дата = ТекущаяДата();
    Док.УстановитьВремя();
    Док.Наименование = Стр.НомерПП;
    Док.НаименованиеПолное = Стр.DESCRIPTION;
    Док.Артикул = Стр.КодНоменклатуры;
    Если Не Справочники.КлассификаторЕдиницИзмерения.НайтиПоРеквизиту("NameFromFile", СокрЛП(Стр.ЕдИзмер)).Пустая() Тогда
    Док.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоРеквизиту("NameFromFile", СокрЛП(Стр.ЕдИзмер));
    Иначе
    Сообщить("Не найдена единица измерения "+Стр.ЕдИзмер);
    КонецЕсли;
    Док.Ответственный = глТекущийПользователь;
    Док.Комментарий = "Загружен из Excel";
    Док.СостояниеЗаявки = Перечисления.brg_СостоянияЗаявокНаВводКонтрагента.НаРассмотрении;
    Док.Записать();
    Иначе
    Сообщить("Нашли номенклатуру по артикулу "+СтрокаПоиска);
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры // СоздаемДокументы()
     
  2. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    А какие данные должны попасть в справочник? Создать новую номенклатуру? или как-то модифицировать существующую?
     
  3. SimonenkoT

    SimonenkoT Гость

    В данном случае код взять из обработке для загрузки данных из Экселя.
    Там 3 столбца. Код. Наименование номенклатуры. и КодТНЭВ.
    Нужно модифицировать существующую номенклатуру.
     
  4. alxrie

    alxrie Гость

    Код - это "Артикул"?
    Тогда создать новый элемент справочника можно так:

    НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
    НоваяНоменклатура.УстановитьНовыйКод(); // если код не задан иначе
    НоваяНоменклатура.Наименование = "чего там надо указать в наименовании";
    // заполняем прочие реквизиты
    НоваяНоменклатура.ОбменДанными.Загрузка = Истина; // чтобы не ругалось на плохо заполненные/незаполненные реквизиты
    НоваяНоменклатура.Записать();
    НайденнаяСсылка = НоваяНоменклатура.Ссылка;
     
  5. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Попробую почитать:
    Код ( (Unknown Language)):
    Процедура СоздаемДокументы()

    // Создаем документы
    Для каждого Стр Из ДанныеЛиста Цикл
    ОбработкаПрерыванияПользователя();
    СтрокаПоиска = СокрЛП(Стр.КодНоменклатуры);
    Номенклатура = Справочники.Номенклатура;
    НайденнаяСсылка = Номенклатура.НайтиПоРеквизиту("Артикул", СтрокаПоиска);
    Если НайденнаяСсылка = Номенклатура.ПустаяСсылка() Тогда
    Сообщить("Номенклатуры """ + СтрокаПоиска + """ еще нет, создан документ.");
    Док = Документы.brg_ЗаявкиНаВводНоменклатуры.СоздатьДокумент();
    Док.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глТекущийПользователь, "ОсновнаяОрганизация");
    Док.Дата = ТекущаяДата();
    Док.УстановитьВремя();
    Док.Наименование = Стр.НомерПП;
    Док.НаименованиеПолное = Стр.DESCRIPTION;
    Док.Артикул = Стр.КодНоменклатуры;
    Если Не Справочники.КлассификаторЕдиницИзмерения.НайтиПоРеквизиту("NameFromFile", СокрЛП(Стр.ЕдИзмер)).Пустая() Тогда
    Док.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоРеквизиту("NameFromFile",  СокрЛП(Стр.ЕдИзмер));
    Иначе
    Сообщить("Не найдена единица измерения "+Стр.ЕдИзмер);
    КонецЕсли;

    Док.Ответственный = глТекущийПользователь;
    Док.Комментарий = "Загружен из Excel";
    Док.СостояниеЗаявки = Перечисления.brg_СостоянияЗаявокНаВводКонтрагента.НаРассмотрении;
    Док.Записать();

    Иначе
    Сообщить("Нашли номенклатуру по артикулу "+СтрокаПоиска);
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры // СоздаемДокументы()
    Хотя бы так. Впрочем я бы написал иначе.
    Код ( (Unknown Language)):
    Если НЕ НайденнаяСсылка = Номенклатура.ПустаяСсылка() Тогда
    Сообщить("Нашли номенклатуру по артикулу "+СтрокаПоиска);
    Продолжить;
    КонецЕсли;

    А дальше пошел длинный текст, в котором я не ищу КонецЕсли
    Вожу пальцем по тексту.
    Если нашли в справочнике (не будем выяснять что и как), то ничего не делаем, только сообщим.
    А не нашли:
    - создаем док-т. Не удержусь спросить: Надеюсь, не Вы придумали ему имя "brg_ЗаявкиНаВводНоменклатуры" ?
    - Дата = сегодня. И прочие реквизиты в шапке. Проходит.
    - А вот это вызывает подозрение:

    Док.Наименование = Стр.НомерПП;
    Док.НаименованиеПолное = Стр.DESCRIPTION;
    Док.Артикул = Стр.КодНоменклатуры;

    Есть в шапке [/b]Документа[/b] такие реквизиты? Или забыл добавить строку в табличную часть, или не понимаешь разницы между документом и справочником.

    А где же команды изменения спр-ка? :mellow:
     
  6. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Интересно, это что то типа обработки по централизованному созданию номенклатуры? В данном случае у вас создается только заявка, алгоритм вроде верный. Так что "создавать номенклатуру" должен не алгоритм представленный вами, а скорее всего алгоритм записи или проведения документа. Или манагер который работает с этим видом документов. О том что в данной обработке создается или меняется номенклатура нет ни строчки кода.
     
Загрузка...

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