8.х Стек Номеров Документов

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

  1. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Задача: При записи нового документа необходимо чтобы номер присвоивался из определенного множества значений, например с 2000- 3000, если значение реквизита этого дока = 1 и с 3001 по 4001 если значение реквизита 2? Подскажите можно организовать такое и если да, то подскажите как?
  2. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Изучите, то такое Нумераторы
  3. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Еще вариант, написать для этого документа процедуру установки нового номера при записи. Анализировать последний занятый номер и присваивать + 1 (в определенных условиях - это будет разный занятый номер).
    Либо и правда создать нумераторы.
  4. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Да,..., времени б еще на это изучение номераторов...., а сцылочки есть, не скините?
  5. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Ну на самом деле глянул - проще при записи сделать запрос, полчуить последний номер и присвоить +1. Гораздо проще будет.
  6. TopicStarter Overlay
    pal_vas
    Offline

    pal_vas Опытный в 1С

    Регистрация:
    7 ноя 2008
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Ну как присвоить я врубил, типа
    Код:
    УстановитьНовыйНомер("3");
    
    а проверить как и прибавить??
  7. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Код:
    Если Реквизит = 1 Тогда
    НачалоДиапазона = 2000;
    КонецДиапазона = 3000;
    ИначеЕсли Реквизит = 2 Тогда
    НачалоДиапазона = 3001;
    КонецДиапазона = 4001;
    Иначе
    //Еще какой-то диапазон
    КонецЕсли;
    
    
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    МАКСИМУМ(НашДокумент.Номер) КАК Номер
    |ИЗ
    |    Документ.НашДокумент КАК Документ
    |ГДЕ
    |    Документ.Номер МЕЖДУ &Номер1 И &Номер2"
    Запрос.УстановитьПараметр("Номер1",НачалоДиапазона);
    Запрос.УстановитьПараметр("Номер2",КонецДиапазона);
    
    
    
    Потом из результата запроса получаем макс номер в диапазоне, увеличиваем на 1 и присваиваем номер документу.
    Если номер текстовый, то параметры текстовые будут и результат потом преобразуем в число и увеличиваем...
    Проверить еще надо, чтоб за границы диапазона не вылез номер. Примерно так...

    Все это в событии "ПередЗаписью" обрабатываем
  8. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Все конечно супер, но лучше делать условие не на начало и конец диапазона в запросе, а на Документ.РЕКВИЗИТ = &Реквизит и присвоить его нашему реквизиту.

    Нумерация кстати, я думаю, будет еще и периодической - следите за датами.
Похожие темы
  1. romko
    Ответов:
    4
    Просмотров:
    2.681
  2. twoeyes
    Ответов:
    5
    Просмотров:
    3.134
  3. zzerro
    Ответов:
    5
    Просмотров:
    1.556
  4. sergey_s_v
    Ответов:
    7
    Просмотров:
    1.032
  5. ceo
    Ответов:
    8
    Просмотров:
    1.505
Загрузка...

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