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

Установить префиксы номеров документов.

Автор 556008, 13 фев 2012, 11:44

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

556008

Конфигурация Бухгалтерия предприятия, редакция 2.0
Подскажите, как установить префиксы номеров только у счёт фактур и актов?
Пробовал так:

Процедура УстановитьНомерДокумента(ДокументОбъект) Экспорт     

   // Если  нет реквизита "Организация" или для нее не задан префикс, то
   // используем пустой префикс,
   // иначе используем префикс организации.
МетаданныеДокумента = ДокументОбъект.Метаданные();
   Если (ДокументОбъект.Метаданные().Имя = "АктОбОказанииПроизводственныхУслуг") Или (ДокументОбъект.Метаданные().Имя = "АктСверкиВзаиморасчетов") Или (ДокументОбъект.Метаданные().Имя = "СчетФактураВыданный") Или (ДокументОбъект.Метаданные().Имя = "СчетФактураПолученный") Тогда // Ширшов П.С. Энима

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


КонецПроцедуры

Dethmontt

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

556008

1C просто вылетает при записи документов, не являющихся счётом-фактурой или актом :(

steptostep

   Если ЕстьРеквизитДокумента("НДСВключенВСтоимость", МетаданныеДокумента) И
      ЕстьРеквизитДокумента("Организация", МетаданныеДокумента) Тогда
      Если НалоговыйУчетУСН.ПрименениеУСН(ДокументОбъект.Организация, ДокументОбъект.Дата) Тогда
         ДокументОбъект.НДСВключенВСтоимость = Истина;
      КонецЕсли;
   КонецЕсли; - зачем этот кусок кода здесь?

steptostep

А в отладчике посмотреть на каком операторе вылетает программа?

steptostep

Кстати, не хватает ДокументОбъект.УстановитьНовыйНомер(Префикс);
после кода
      Если Не ЕстьРеквизитДокумента("Организация", МетаданныеДокумента)
         ИЛИ НЕ ЗначениеЗаполнено(ДокументОбъект.Организация.Префикс)  Тогда
         Префикс = Формат(ДокументОбъект.Дата,"ДФ=""ггггММ""") // Ширшов П.С. Энима
      Иначе
         
         Префикс = ДокументОбъект.Организация.Префикс + Формат(ДокументОбъект.Дата,"ДФ=""ггггММ""");                 
         
      КонецЕсли;

556008

Цитата: steptostep от 14 фев 2012, 07:37
А в отладчике посмотреть на каком операторе вылетает программа?
Зацикливается в процедуре

Процедура ДобавитьПрефиксОрганизацииИДаты(ДокументОбъект, Префикс) Экспорт   

   
   // Если  нет реквизита "Организация" или для нее не задан префикс, то
   // используем пустой префикс,
   // иначе используем префикс организации.
   МетаданныеДокумента = ДокументОбъект.Метаданные();
   Если (ДокументОбъект.Метаданные().Имя = "АктОбОказанииПроизводственныхУслуг") Или (ДокументОбъект.Метаданные().Имя = "АктСверкиВзаиморасчетов") Или (ДокументОбъект.Метаданные().Имя = "СчетФактураВыданный") Или (ДокументОбъект.Метаданные().Имя = "СчетФактураПолученный") Тогда         

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

556008

Блин, я вызываю эту процедуру в обработчике при установке нового номера))
Вот она и зацикливается)
Как исправить?

steptostep

Использовать подписку на событие - с отказом от стандартной обработки

556008

Спасибо, про подписки вообще не знал, начинающий ещё

Теги:

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

Рейтинг@Mail.ru

Поиск