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

Не уникальный номер в Налоговых

Автор Vasya Povar, 02 дек 2016, 12:27

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

Vasya Povar

Есть 2 документа. 1)ВыданнаяНН 2) ВыданнаяРК
Использую общий нумератор для обоих документов
Для обоих документов перед записью создаю номер. Вот код для получения номера
Функция ПолучитьСледующийНомер(ПоследнийНомер, Знач ДлинаНомера = 0)

Если ДлинаНомера = 0 Тогда
ДлинаНомера = СтрДлина(ПоследнийНомер);
КонецЕсли;
Если ДлинаНомера = 0 Тогда
Возврат "1"
КонецЕсли;
СчетчикСимв = ДлинаНомера;
Пока СчетчикСимв > 0 Цикл
Если Не ПустаяСтрока(Сред(ПоследнийНомер, СчетчикСимв, 1)) и ТолькоЦифрыВСтроке(Сред(ПоследнийНомер, СчетчикСимв, 1)) Тогда
СчетчикСимв = СчетчикСимв - 1;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Если СчетчикСимв = ДлинаНомера Тогда
НомерЧисловой = 1
Иначе
НомерЧисловой = Число(Сред(ПоследнийНомер, СчетчикСимв + 1));
КонецЕсли;
Если НомерЧисловой < Pow(10, ДлинаНомера - СчетчикСимв) - 1  Тогда
СледующийНомер = НомерЧисловой + 1;
Иначе
СледующийНомер = НомерЧисловой;
КонецЕсли;

НовыйНомер = Лев(ПоследнийНомер,  СчетчикСимв) + Формат(СледующийНомер,"ЧЦ=" + (ДлинаНомера - СчетчикСимв) + "; ЧВН=; ЧГ=0");
Возврат НовыйНомер

КонецФункции // ПолучитьСледующийНомер()

Процедура ПолучитьОчереднойНомер(Префикс,Месяц,Год)

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("Ссылка",Ссылка);
Запрос.УстановитьПараметр("Год",Год);
Запрос.УстановитьПараметр("Месяц",Месяц);

ТекстЗапроса =
"ВЫБРАТЬ
| МАКСИМУМ(ВыданнаяНН.Номер) КАК Номер
|ИЗ
| Документ.ВыданнаяНН КАК ВыданнаяНН
|ГДЕ
| ВыданнаяНН.Ссылка <> &Ссылка
| И ГОД(ВыданнаяНН.Дата) = &Год
| И МЕСЯЦ(ВыданнаяНН.Дата) = &Месяц";

Запрос.Текст = ТекстЗапроса;
РезультатаЗапроса = Запрос.Выполнить();
Если РезультатаЗапроса.Пустой() Тогда
УстановитьНовыйНомер(Префикс);
Иначе
СтрокаРезультата = РезультатаЗапроса.Выгрузить()[0];
Если НЕ ЗначениеЗаполнено(СтрокаРезультата.Номер) Тогда
УстановитьНовыйНомер(Префикс);
Иначе
НомерИзЗапроса=Прав(СокрЛП(СтрокаРезультата.Номер),СтрДлина(СокрЛП(СтрокаРезультата.Номер))-3);
Номер=Префикс+ПолучитьСледующийНомер(НомерИзЗапроса);
КонецЕсли;
КонецЕсли;

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


 

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если  ДополнительныеСвойства.Свойство("ПрограммноеИзменениеДанных")
И ДополнительныеСвойства.ПрограммноеИзменениеДанных Тогда

Возврат;             

КонецЕсли;

//Если Состав.Количество() > 0 Тогда
СуммаБезНДС = Состав.Итог("СуммаБезНДС");
НДС = Состав.Итог("НДС");
СуммаСНДС = Состав.Итог("СуммаСНДС");
//КонецЕсли;

Если НЕ ДополнительныеСвойства.Свойство("ПровестиПоРегиструНеВыписанныеНалоговыеНакладные") Тогда
СтруктураСостояния = РегистрыСведений.СостояниеНалоговыхНакладных.ОпределитьСтатусДокумента(ЭтотОбъект, НомерДокумента, , РежимЗаписи);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СтруктураСостояния);
ДополнительныеСвойства.Вставить("ДополнительныеДанные", СтруктураСостояния.ДополнительныеДанные);
КонецЕсли;

Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

//+
Если (Месяц(Ссылка.Дата)<>Месяц(Дата)) ИЛИ (Год(Ссылка.Дата)<>Год(Дата)) Тогда
ПрефиксНалоговыхДокументов = "";
НомерМесяца = Месяц(Дата);
НомерГода = Год(Дата);
Индекс = НомерМесяца*3 - 2;
ПрефиксНалоговыхДокументов=Сред("Ян|Фв|Мр|Ап|Ма|Ин|Ил|Ав|Сн|Ок|Но|Дк", Индекс, 2)+"-";
ПолучитьОчереднойНомер(ПрефиксНалоговыхДокументов,НомерМесяца,НомерГода);
//УстановитьНовыйНомер(ПрефиксНалоговыхДокументов+"-");
КонецЕсли;


При попытке сохранить документ, пишет что номер не уникальный.

Vasya Povar

Получилось самостоятельно)

Теги:

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

Рейтинг@Mail.ru

Поиск