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

Автонумерация в документе

Автор Sonik, 05 апр 2011, 08:56

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

Sonik

Для установки в текущем месяце номеров в документе написал код:
Б=Дата("01."+Формат(Документ.Дата,"ДФ=ММ")+".2011 0:00:00");Е=""+День(КонецМесяца(Документ.Дата))+".";Б2=Дата(Е+Формат(Документ.Дата,"ДФ=ММ")+".2011 23:59:59");Запрос = Новый Запрос;Запрос.Текст ="
|ВЫБРАТЬ
|МАКСИМУМ(РеализацияМатериальныхАктивовСуммы.Ссылка.Дата) КАК ДатаС,
|МАКСИМУМ(РеализацияМатериальныхАктивовСуммы.Ссылка.ПостфиксНомераСчетаФактуры) КАК НомерСФ
|ИЗ
|Документ.РеализацияМатериальныхАктивов.Суммы  КАК РеализацияМатериальныхАктивовСуммы
|Где
|(РеализацияМатериальныхАктивовСуммы.Ссылка.Дата<&A)И
|(РеализацияМатериальныхАктивовСуммы.Ссылка.Дата>=&Б)";Запрос.УстановитьПараметр("A",Б2);Запрос.УстановитьПараметр("Б",Б);Выборка=Запрос.Выполнить().Выбрать();Выборка.Следующий();
Если НЕ ЗначениеЗаполнено(Выборка.НомерСФ)ИЛИ(Формат(Документ.Дата,"ДФ=ММ")>Формат(Выборка.ДатаС,"ДФ=ММ"))ИЛИ(Формат(Документ.Дата,"ДФ=ММ")="01")И(Формат(Выборка.ДатаС,"ДФ=ММ")="12")Тогда
Результат=1;Иначе Результат=Число(Выборка.НомерСФ)+1;КонецЕсли;

нумерация останавливается на цифре "10". Подскажите из-за чего?

has

Чет не читабельно. Форматированный код и место ошибки покажите.

Sonik

Б=Дата("01."+Формат(Документ.Дата,"ДФ=ММ")+".2011 0:00:00"); Е=""+День(КонецМесяца(Документ.Дата))+".";
Б2=Дата(Е+Формат(Документ.Дата,"ДФ=ММ")+".2011 23:59:59");
          Запрос = Новый Запрос;Запрос.Текст ="
|ВЫБРАТЬ
|МАКСИМУМ(РеализацияМатериальныхАктивовСуммы.Ссылка.Дата) КАК ДатаС,
|МАКСИМУМ(РеализацияМатериальныхАктивовСуммы.Ссылка.ПостфиксНомераСчетаФактуры) КАК НомерСФ
|ИЗ
|Документ.РеализацияМатериальныхАктивов.Суммы  КАК РеализацияМатериальныхАктивовСуммы
|Где
|(РеализацияМатериальныхАктивовСуммы.Ссылка.Дата<&A)И
|(РеализацияМатериальныхАктивовСуммы.Ссылка.Дата>=&Б)";
   Запрос.УстановитьПараметр("A",Б2);
   Запрос.УстановитьПараметр("Б",Б);
   Выборка=Запрос.Выполнить().Выбрать();   Выборка.Следующий();
Если НЕ ЗначениеЗаполнено(Выборка.НомерСФ) ИЛИ                     
                  (Формат(Документ.Дата,"ДФ=ММ")>Формат(Выборка.ДатаС,"ДФ=ММ"))  Тогда
                  Результат=1;
Иначе      Результат=Число(Выборка.НомерСФ)+1;
КонецЕсли;

Так лучше? ошибка не выскакивает, просто на десяти нумерация заканчивается и ставит каждый раз 10

Sonik

Наверное проблема в использовании Число(Выборка.НомерСФ), так как [+|-]{0|1|2|3|4|5|6|7|8|9}[.{0|1|2|3|4|5|6|7|8|9}] , как обойтись без Числа или правильно задать???

has

Да лучше. У вас так и будет 10, потому что у вас каждый раз показывает один и тот же документ. Скажите лучше что выхотите сделать этим.

has

Для начала заменить это

Б=Дата("01."+Формат(Документ.Дата,"ДФ=ММ")+".2011 0:00:00"); Е=""+День(КонецМесяца(Документ.Дата))+".";
Б2=Дата(Е+Формат(Документ.Дата,"ДФ=ММ")+".2011 23:59:59");

на

Б = НачалоМесяца(Документ.Дата);
Б2 = КонецМесяца(Документ.Дата);

Sonik

заменил а дальше? вывод значений и увеличение на 1 обеспечить?

has

Цитата: Sonik от 05 апр 2011, 10:12
заменил а дальше? вывод значений и увеличение на 1 обеспечить?
Условие задачи озвучьте.

Sonik

номер состоит из 2 полей (частей), префикс и постфикс, префикс отвечает за вывод номера текущего месяца а поле постфикс за нумерацию в данном месяце, идет выборка максимального номера из всех в данном месяце и постфиксу присваивается на 1 больше. Но проблема как мне кажется при выводе результата

cska-fanat-kz

Не проще периодичность номера документа поставить Месяц?
И заняться формированием правильного префикса.
(в событии ПриУстановкеНовогоНомера())
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск