8.х добавление новой группы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем vihuhol, 28 апр 2010.

  1. TopicStarter Overlay
    vihuhol
    Offline

    vihuhol Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    Помогите разобраться, пожалуйста.
    Есть вот такой кусок начальной внешней обработки для создания групп 1-го уровня номенклатуры из excel-файла:
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Путь = ЭлементыФормы.ИмяФайла.Значение;
    Док = ПолучитьCOMОбъект(Путь);
    КоличествоСтраниц = 1;
    Для ТекНомер  = 1 По КоличествоСтраниц Цикл
    Артикул = Док.Sheets(ТекНомер).Cells(2,1).Value;
    Название = Док.Sheets(ТекНомер).Cells(2,2).Value;
    счСтроки = 3;
    Пока TrimAll(Название) <> "" Цикл	// можно использовать другой признак 
    Артикул = Док.Sheets(ТекНомер).Cells(СчСтроки,1).Value;
    Название  = Док.Sheets(ТекНомер).Cells(СчСтроки,2).Value;
    счСтроки = счСтроки + 1;
    
    НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); 
    НоваяГруппа.Наименование = Строка(Название); 
    НоваяГруппа.Записать(); 
    
    КонецЦикла;
    КонецЦикла;	
    Док.Application.Quit();
    КонецПроцедуры
    
    
    При попытке выполнить "НоваяГруппа.Записать();" 1С Ругается:
    для поля Код(стандартное встроенное поле) установлены галочки "Контроль уникальности" и "Автонумерация". Если прописывать Код руками в коде - то тогда работает. Но разве это поле не должно заполняться автоматически платформой? Как быть?
    Помогите разобраться, а то сегодня целый день промучался :smile: и никакого результата :unsure:
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    По всей видимости отрабатывает процедура ПриЗаписи() в модуле справочника "Номенклатура", которая осуществляет проверку заполненности реквизита "Код".

    По умолчанию такой проверки нет и автонумерация работает.
  3. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Если перед записью элемента добавить:
    Код:
    НоваяГруппа.УстановитьНовыйКод();
    
    не поможет?
  4. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Синтаксис-помощник спешит на помощь:

    shurikvz
    У дураков мысли сходятся.
  5. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Ага.. Осталось дождаться результатов от автора.
  6. TopicStarter Overlay
    vihuhol
    Offline

    vihuhol Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    :unsure: работает! :smile:

    При записи написано следующее:
    Код:
    // Стандартный обработчик ПриЗаписи элемента справочника
    Процедура ПриЗаписи(Отказ)
    Если НЕ спПриЗаписи(ЭтотОбъект, Отказ) Тогда Возврат; КонецЕсли;
    // зарегистрируем изменение товара в оборудовании
    уоУстановитьМоментИзменения(Ссылка,ТекущаяДата());
    КонецПроцедуры // ПриЗаписи()
    
    
    
    
    Вроде никаких проверок на заполнение кода нету, но на будущее буду иметь ввиду заглядывать и сюда ;-)
    Помогло
    Код:
    НоваяГруппа.УстановитьНовыйКод();
    
    
    
  7. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Борис, ты неправ. Синтаксис-помощник в студию!

  8. TopicStarter Overlay
    vihuhol
    Offline

    vihuhol Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    Да, уникальность кода проверяется, т.к. такой режим действительно установлен. Но, я думал, что код, если выставлено Автонумерация должен выставляться автоматически, а не по вызову команды
    Код:
    УстановитьНовыйКод();
    
  9. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    А вот это уже сложный экзинтенциональный вопрос, так как я тоже так думал. При стандартизированном создании элемента справочника так и есть, значит, мы каким-то образом обходим одну из стандартных процедурок.
    Либо это косяк, так как:
    В любом случае, в надежде докопаться до истины, тему закрывать рано.
  10. TopicStarter Overlay
    vihuhol
    Offline

    vihuhol Опытный в 1С

    Регистрация:
    20 апр 2010
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    ;-) конфигурация Альфа-Авто, справочник Номенклатура - может что-то там накрутили, пока ещё глубоко не влез.
    Да,везде по книжкам и форумам достаточно просто выполнить Записать() без всякой установки кода.
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Это не только по книжкам, это реально так :) (только что специально написал обработку из 3-х строк чтобы проверить это).

    А что у вас находится в спПриЗаписи(ЭтотОбъект, Отказ)? Можно так же попробовать проверить событие "ПередЗаписью()". Кстати это у вас процедура из МодуляОбъекта или из формы элемента? Посмотрите и там и там эти процедуры. Так же можно глянуть есть ли соответствующие "подписки на события" для этого справочника, может в них что.

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