8.х УстановитьНовыйКод

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

  1. TopicStarter Overlay
    budda1975
    Offline

    budda1975

    Регистрация:
    26 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Народ, может подскажете :

    платформа 8.1

    в форме элемента справочника "ДоговорыКонтрагентов" вставляю кнопку, в прикрепленной к ней процедуре прописываю :

    УстановитьНовыйКод("БХ-");

    При нажатии он действительно выдает новый код, но если надать раз пять - то он последовательно сформирует и пять новых кодов. БХ-001, ... , БХ - 005 . А если закрыть справочник, НЕ ЗАПИСЫВАЯ, то в следующий раз он сформирует БХ-006 ( хотя физически справочников с кодами БХ-001 ... БХ-005 нет)

    в чем глюк?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Судя по ИТС, ставить код надо в транзакции - тогда он откатится назад.
  3. TopicStarter Overlay
    budda1975
    Offline

    budda1975

    Регистрация:
    26 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    каким образом?

    попробовал так :

    НачатьТранзакцию();
    УстановитьНовыйКод("БХ-");
    ЗафиксироватьТранзакцию();

    однофигственно
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ровно наоборот всё :)

    Вот тут статья с ИТС.
  5. TopicStarter Overlay
    budda1975
    Offline

    budda1975

    Регистрация:
    26 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1

    а можно статью в другом формате?

    ( а то файл не хочет открываться - виснет зараза )

    (или ессли не трудно напиши как надо :) )
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Сделал скриншот... Тут
  7. TopicStarter Overlay
    budda1975
    Offline

    budda1975

    Регистрация:
    26 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    скриншот посмотрел. Хм. Все равно не понимаю, что мне это дает; :wub:

    мне то нужно, чтобы в справочнике Договоры была кнопка "Сформировать номер", при нажатии на которую в зависимости от определенных условий присваивался новый код с определенным перфиксом и что бы при нажатии на нее несколько раз он не выдавал последовательно несколько номеров.

    Например : если я делаю так, то код вообще не меняется

    Код:
    НачатьТранзакцию();
    
    Если ЭлементыФормы.ТипДоговора.Значение=Перечисления.Договора.Бухгалтерия Тогда
    УстановитьНовыйКод("БХ-");
    ИначеЕсли ЭлементыФормы.ТипДоговора.Значение=Перечисления.Договора.ДоговорнойБлок Тогда
    УстановитьНовыйКод("ОЦ-");
    КонецЕсли;    
    
    ОтменитьТранзакцию();
    

    почему, например при начальном коде БХ-001 последовательное выполнение
    Код:
    УстановитьНовыйКод("БХ-");
    УстановитьНовыйКод("БХ-");
    УстановитьНовыйКод("БХ-");
    
    выдает код БХ-004 и если я после этого закрываю справочник, не сохранив изменения, то повторно войдя в него и дав команду
    УстановитьНовыйКод("БХ-");

    я получаю БХ-005 :unsure: - хотя кодов 002, 003, 004 не существует ???????????????? B) :D :D

    ( он их что, где-то запоминает? )
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    В первом варианте понятно сразу, почему код не присваивается :) Или вы не знаете, как работает транзакция? :)

    ЗЫ, К слову - платформа версии какой?
  9. TopicStarter Overlay
    budda1975
    Offline

    budda1975

    Регистрация:
    26 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    8.1.8.76
  10. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код присваивается при записи объекта, ты же ручками создаешь его и не откатываешь транзакцию по созданию. Платформа считает, что ты использовал этот код.
  11. TopicStarter Overlay
    budda1975
    Offline

    budda1975

    Регистрация:
    26 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    а как мне его(её) откатить? ( к тому же я НЕ ЗАПИСЫВАЮ объект)

    изначально я ведь и не использовал транзакцию.
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Не зря в типовых присваивают теперь код в МОМЕНТ ЗАПИСИ, а не при создании :) Возьми на заметку, иначе будешь мудохаться с транзакциями и искать, почему где-то что-то отвалилось :)

    Если уж совсем невмоготу:
    1. Начинай транзакцию
    2. Присваивай код
    3. Если Отмена сохранения - то и отмена транзакции
    Если сохраняешь - то зафиксируй транзакцию.

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