8.х Собственная кодировка справочника Номенклатура

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

  1. TopicStarter Overlay
    TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    Доброго дня с кем не здравковался.

    В номенклатуре сделали реквизит Префикс типа справочник префиксы номенклатуры...
    Перед записью объекта прописал
    Если ЗначениеЗаполнено(ПрефиксНоменклатуры) и ЭтоНовый() Тогда
    УстановитьНовыйКод(ПрефиксНоменклатуры.Код);
    ИначеЕсли ЭтоНовый() Тогда
    УстановитьНовыйКод("");
    КонецЕсли;
    Проставили во всей номенклатуре префиксы, перенумеровал согласна префиксам.
    Теперь создаю новую номенклатуру, записываю и ей присваивается код 64000000004.

    Хотя префикс равен пустой ссылке... вот...

    Переписал на Префикс не равно пустая ссылка тоже самое...

    Начинайте меня тролить)) что я сделал не так?
  2. saha25
    Offline

    saha25 Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    95
    Симпатии:
    3
    Баллы:
    29
    а если удалить все из перед записью" что присваивается?
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Запросом глянь, какой код есть максимальный для элемента.
    Потом сделай инициализацию нумерации для справочника.
  4. TopicStarter Overlay
    TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    В параметре указывается префикс, у меня префиксом является код элемента справочника, а не некий реквизит префикс... При этом при перенумерации обработкой всё проходит нормально.
    А как прописать при создание нового и где?

    Сделал вот так

    Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
    // Вставить содержимое обработчика.
    Префикс = ?(ПрефиксНоменклатуры = Справочники.ПрефиксНоменклатуры.ПустаяСсылка(),"",ПрефиксНоменклатуры.Код);
    КонецПроцедуры
    Тоже не катит((
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.634
    Симпатии:
    946
    Баллы:
    204
    Ну во первых если я не ошибаюсь то
    УстановитьНовыйКод(ПрефиксНоменклатуры.Код); это метод объекта
    У Вас я объекта не вижу

    СпрНом=Справочники.Номенклатура.СоздатьЭлемент();
    СпрНом.УстановитьНовыйКод()

    У вас хотя бы ЭтотОбъект.УстановитьНовыйКод()

    Во вторых посмотрите может у Вас есть подписка на событие и там затирается.
    В отладчике посмотрите где у Вас код окончательный вид приобретает.

    В третьих зачем это в самом объекте делать, когда можно вынести в подписку на событие и объект не трогать.
  6. TopicStarter Overlay
    TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    пойду покурю
    --- Объединение сообщений, 2 дек 2014 ---
    Draco конфа типовая.
    ПередЗаписью вызывается в модуле объекта, поэтому объект тут не нужен.
  7. TopicStarter Overlay
    TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    997
    Симпатии:
    70
    Баллы:
    54
    Это работает

    В модуле объекта ПередЗаписью
    Если ЗначениеЗаполнено(ПрефиксНоменклатуры) и ЭтоНовый() Тогда
    УстановитьНовыйКод(ПрефиксНоменклатуры.Код);
    ИначеЕсли ЭтоНовый() Тогда
    УстановитьНовыйКод("00");
    КонецЕсли;

    т.е. надо было поставить не пустой префикс а 00 и отключил автонумерацию.

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