Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:47

нумерация доков с прибамбасами

Автор soleg78, 14 янв 2011, 23:34

0 Пользователей и 1 гость просматривают эту тему.

soleg78

УТП 8.1.
Докектор хочет следующее:
Например док. РеализацияТоваровУслуг
в нем есть 3 реквизита :
- ОтражатьВУправленческомУчете;
- ОтражатьВБухгалтерскомУчете;
- ОтражатьВНалоговомУчете;

Руководство хочет видет такой результат:
например, когда вслючены(истина) все 3 реквизита - нумерация документа идет нормально,
когда стоит только реквизит ОтражатьВУправленческомУчете - нумерация идет другая и с префиксом "У", если включен только реквизит ОтражатьВБухгалтерскомУчете - нумерация еще друга и с префиксом "Б", .... в налоговом по аналогии с префиксом "Н"

И так надо во всех доках где естьети реквизиты. (приказы начальства не обсуждаются. просто НАДО и ВСЁ!)

кто что думает? ... с чего начать?... и где могут быть "грабли"?

retnan

Попробуйте такой вариант. Для каждого документа перед записью вызывайте общую серверную процедуру, например, РаботаСДокументами.СформироватьНомер(ЭтотОбъект).
В общем модуле пропишите следующее:
Процедура СформироватьНомер(Объект) Экспорт
   Если ТипЗнч(Объект.Номер)<>Тип("Строка") Тогда Возврат
   КонецЕсли;   
   ПрефиксИБ = ПолучитьПрефикс(Объект,Объект.У,Объект.Б,Объект.Н);
   УстановитьНомер = Ложь;
   Если Объект.ЭтоНовый() Тогда УстановитьНомер = Истина
   Иначе
      СтарыйОбъект = Объект.Ссылка.ПолучитьОбъект();   
      СтарыйОбъект.Прочитать();
      СтарыйПрефикс=ПолучитьПрефикс(Объект,СтарыйОбъект.У,СтарыйОбъект.Б,СтарыйОбъект.Н);
      Если ПрефиксИБ<>СтарыйПрефикс Тогда
         УстановитьНомер = Истина   
      КонецЕсли   
   КонецЕсли;   
   Если УстановитьНомер Тогда Объект.УстановитьНовыйНомер(ПрефиксИБ);         
   КонецЕсли;
КонецПроцедуры

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск