Присвоить новый номер при создании документа
Есть база, сделанная на типовой бухгалтерии 2.0, в которой дописаны 3 своих документа. Фишка там в том, что пока все реквизиты корректно не заполнишь, сохранить документ программа не даёт. В связи с этим пользователи стали ругаться, что пока они дозаполняют все реквизиты и пытаются сохранить документ, программа выдает им сообщение, что документ с таким номером в базе уже есть. И ,т.к. они не имеют прав менять номер документа, им приходится забивать этот документ заново.
В связи с этим прошу посоветовать как можно обходить или решить данную ситуацию. Пока что придумал (но не реализовал) только один механизм: записывать документ с номером (дата-время), в одну секунду документы не записываются как правило в это базе.
В связи с этим прошу посоветовать как можно обходить или решить данную ситуацию. Пока что придумал (но не реализовал) только один механизм: записывать документ с номером (дата-время), в одну секунду документы не записываются как правило в это базе.
По теме из базы знаний
- Универсальный передаточный документ для Управление торговлей релиза 10.3.21.1 (бета для УТ 10.3.30.2) - печатная форма 2 в 1 альтернатива счету фактуре и расходной накладной.
- Механизмы и транспорт обмена данными. Пример создания в КД 2.1 правил обмена данными ЗУП 2.5 -> БП 3.0. Выгрузка ведомостей и банковских счетов. Передача параметров обмена из Источника в Приемник. ВыгрузитьПоПравилу(). ПередатьОдинПараметрВПриемник().
- Нумерация документов с префиксом по дате (настройка префикса документов)
- Создание (сканирование) штрих кода товара в документе Поступления для конфигурации 1С:Розница
- Автодокументация модулей: Markdown, Osparser и Docusaurus
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
А вообще для своих документов необходимо перенести типовые процедуры работы с номером, типа:
ДобавитьВМенюДействияКнопкуРедактированияНомера
УстановитьДоступностьПоляВводаНомера
ОбновитьПодсказкуКодНомерОбъекта
и т.д. по аналогии с типовыми документами
И ничего придумывать не надо
ДобавитьВМенюДействияКнопкуРедактированияНомера
УстановитьДоступностьПоляВводаНомера
ОбновитьПодсказкуКодНомерОбъекта
и т.д. по аналогии с типовыми документами
И ничего придумывать не надо
В Бухгалтерии как я увидел это сделано в общем модуле:
МеханизмНумерацииОбъектов.
Сейчас посмотрю как у пользователя получалось создать 2 объекта с одним номером одновременно.
Ну то есть по его слвам как то следующее:
создает документ с номером 1234, а у другого полтьзователя создается документ с таким же номером, но второй пользователь раньше записал документ и теперь первому епольховаетлю надо создавать документ с другим номером)
МеханизмНумерацииОбъектов.
Сейчас посмотрю как у пользователя получалось создать 2 объекта с одним номером одновременно.
Ну то есть по его слвам как то следующее:
создает документ с номером 1234, а у другого полтьзователя создается документ с таким же номером, но второй пользователь раньше записал документ и теперь первому епольховаетлю надо создавать документ с другим номером)
Вот проблема: В настоящее время номер заявке присваивается при ее создании и к моменту окончательного оформления заявки, при нажатии кнопки сохранить заявку,
выдается надпись - "номер не уникален"
в связи с чем сохранение созданной и полностью оформленной заявки становиться невозможным.
выдается надпись - "номер не уникален"
в связи с чем сохранение созданной и полностью оформленной заявки становиться невозможным.
Офигеть что я обнаружил:
оказывается в каждой конфигурации есть такое свойство:
Режим автонумерации объектов и 2 значения:
Освобождать автоматически и
Не освобождать автоматически.
Вот интересно, какую опцию лучше ставить и что она реально обозначает.
В типовой Бух стоит по умолчанию "Не освобождать автоматически",
а в Подрядчике например стоит "Освобождать автоматически".
Какой вариант подходит больше в случае присваивания номера документу в момент создания ?
А то пользователи начали жаловаться что пока до кнопки "Записать" доберутся программа пишет:
Номер неуникальный и приходиться пересоздавать документ.
оказывается в каждой конфигурации есть такое свойство:
Режим автонумерации объектов и 2 значения:
Освобождать автоматически и
Не освобождать автоматически.
Вот интересно, какую опцию лучше ставить и что она реально обозначает.
В типовой Бух стоит по умолчанию "Не освобождать автоматически",
а в Подрядчике например стоит "Освобождать автоматически".
Какой вариант подходит больше в случае присваивания номера документу в момент создания ?
А то пользователи начали жаловаться что пока до кнопки "Записать" доберутся программа пишет:
Номер неуникальный и приходиться пересоздавать документ.
(21) b-dm, нет, на простом примере:
Создали документ 1, 2, 3...
Документы 2 и 3 пометили на удаление, затем "Удалением помеченных объектов" их удалили из базы полностью. Если стоит признак "Освобождать", то при создании следующего документа он получит номер 2. Если стоит признак "Не освобождать", то номер следующего документа будет 4. В результате у вас в базе не будет документов под номерами 2 и 3 :)
Создали документ 1, 2, 3...
Документы 2 и 3 пометили на удаление, затем "Удалением помеченных объектов" их удалили из базы полностью. Если стоит признак "Освобождать", то при создании следующего документа он получит номер 2. Если стоит признак "Не освобождать", то номер следующего документа будет 4. В результате у вас в базе не будет документов под номерами 2 и 3 :)
(31) 2791, как же не имеет. В случае если признак "Освобождать" стоит и никто документов во время удаления новых не создал, то нумерация продолжиться со 2 номера. Просто вы указали нештатный пример, т.к. удаление помеченных на удаление объектов производится обычно в монопольном режиме.
(21) b-dm, вот видите какая бурная переписка возникла...
Не видел, где бы этот механизм описывался.
Исходя из того, о чем была переписка с insurgut, получается, что этот механизм в разных конфигурациях по-разному реализован.
Самое интересное, что с проблемой перенумерации я сталкивался только в бухгалтерии. А вот в УТП такая проблема вообще не возникала.
Просто если конфигурацию открыли для редактирования, то почему бы не попробовать механизм, который есть в той же УТ для конкретного документа.
Вот, кстати, вопрос для обсуждения: авторские права 1С мы так нарушаем, или нет?
Не видел, где бы этот механизм описывался.
Исходя из того, о чем была переписка с insurgut, получается, что этот механизм в разных конфигурациях по-разному реализован.
Самое интересное, что с проблемой перенумерации я сталкивался только в бухгалтерии. А вот в УТП такая проблема вообще не возникала.
Просто если конфигурацию открыли для редактирования, то почему бы не попробовать механизм, который есть в той же УТ для конкретного документа.
Вот, кстати, вопрос для обсуждения: авторские права 1С мы так нарушаем, или нет?
У меня была подобная ситуация:
Счета на оплату надо было номеровать отдельно по каждой валюте.
Ну и кроме всего тоже была проблемма: менеджер открыл счет, ждет, согласовывает чего-то, записать и тут облом.
Пришлось добавить кнопочку с такой процедурой:
Зпр = Новый Запрос;
Зпр.Текст = "ВЫБРАТЬ *
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаоплатуПокупателю
|ГДЕ
| СчетНаоплатуПокупателю.ВалютаДокумента = &Вал
| И Год(СчетНаоплатуПокупателю.Дата) = &Год
|УПОРЯДОЧИТЬ ПО
| Номер УБЫВ";
Зпр.УстановитьПараметр("Вал",ВалютаДокумента);
Зпр.УстановитьПараметр("Год",Год(Дата));
Рез = Зпр.Выполнить().Выбрать();
Если Рез.Количество() = 0 Тогда
ЭтотОбъект.Номер = "00001";
Иначе
Пока Рез.Следующий() Цикл
Попытка
Ном = Число(Рез.Номер) + 1;
ЭтотОбъект.Номер = Формат(Ном,"ЧЦ=6; ЧВН=; ЧГ=0");
Прервать;
Исключение
КонецПопытки;
КонецЦикла;
КонецЕсли;
После этого все успокоились, потому что знают - есть кнопочка - выручалочка, которая присвоит номер.
Как вариант может и вам пригодится.
Счета на оплату надо было номеровать отдельно по каждой валюте.
Ну и кроме всего тоже была проблемма: менеджер открыл счет, ждет, согласовывает чего-то, записать и тут облом.
Пришлось добавить кнопочку с такой процедурой:
Зпр = Новый Запрос;
Зпр.Текст = "ВЫБРАТЬ *
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаоплатуПокупателю
|ГДЕ
| СчетНаоплатуПокупателю.ВалютаДокумента = &Вал
| И Год(СчетНаоплатуПокупателю.Дата) = &Год
|УПОРЯДОЧИТЬ ПО
| Номер УБЫВ";
Зпр.УстановитьПараметр("Вал",ВалютаДокумента);
Зпр.УстановитьПараметр("Год",Год(Дата));
Рез = Зпр.Выполнить().Выбрать();
Если Рез.Количество() = 0 Тогда
ЭтотОбъект.Номер = "00001";
Иначе
Пока Рез.Следующий() Цикл
Попытка
Ном = Число(Рез.Номер) + 1;
ЭтотОбъект.Номер = Формат(Ном,"ЧЦ=6; ЧВН=; ЧГ=0");
Прервать;
Исключение
КонецПопытки;
КонецЦикла;
КонецЕсли;
После этого все успокоились, потому что знают - есть кнопочка - выручалочка, которая присвоит номер.
Как вариант может и вам пригодится.
(15) insurgut,
О, класс!
Заработал себе лейбл - буду использовать!
А что, дорогой, по жизни не приходилось сталкиваться с тем что клиент говорит, что хочу так и хоть потолок пробивай лбом, надо сделать как клиент хочет.
А ему надо чтобы в этом квартале номера валютный счетов с 9 начинались.
И бегом срочно за 15 минут сделай, работа стоит, счас к генеральному директору побегу стучать!
Давай умник через 15 минут жду решения!
Применю и спасибо большое скажу!!
Жду - время пошло.
О, класс!
Заработал себе лейбл - буду использовать!
А что, дорогой, по жизни не приходилось сталкиваться с тем что клиент говорит, что хочу так и хоть потолок пробивай лбом, надо сделать как клиент хочет.
А ему надо чтобы в этом квартале номера валютный счетов с 9 начинались.
И бегом срочно за 15 минут сделай, работа стоит, счас к генеральному директору побегу стучать!
Давай умник через 15 минут жду решения!
Применю и спасибо большое скажу!!
Жду - время пошло.
(17) sbr,
интересно в каком случае будет исключение? :-)
просто присвоение... Записи то Объекта нету... пока пользователь будет тупить этот же номер получит следующий документ
Попытка
Ном = Число(Рез.Номер) + 1;
ЭтотОбъект.Номер = Формат(Ном,"ЧЦ=6; ЧВН=; ЧГ=0");
Прервать;
Исключение
КонецПопытки;
интересно в каком случае будет исключение? :-)
просто присвоение... Записи то Объекта нету... пока пользователь будет тупить этот же номер получит следующий документ
(17) sbr, для Ут 10.3 смотрим событие ПриУстановкеНовогоНомераДокумента - проваливаемся в процедуру ОбщегоНазначения.ПриУстановкеНовогоНомераДокументаПриУстановкеНовогоНомера, добавляем примерно такой код:
С клиентами такого типа сталкивался, и знаю, что ничего невозможного по сути нет в 1С, разница лишь в том, сколько усилий и времени на это будет затрачено. Про 15 минут - преувеличивать не надо (хотя я код набросал ну максимум минут за 5, ну если бы впервые с этим столкнулся, и не знал о префиксах, ну может за полчаса). Если у вас такие условия работы, что начальник, который в программировании не разбирается - всегда прав, это мягко говоря неправильная постановка вашей позиции :) Сразу нужно обозначать, что на это будет затрачено минимум столько времени - если устраивает, то делаем доработку, если же не устраивает - тогда работаем как раньше.
P.S. И уж тем более так остро на здоровую критику реагировать не надо, я с вами пиво не пил, детей не крестил. Достаточно было корректно спросить "Коллега, а как бы вы решили такую то постановку задачи" - именно для этих целей и существует этот форум. Я тоже многому здесь научился, учусь и знаю точно, что много еще чему предстоит научится и познать что-либо новое :)
Если ТипЗнч(Источник)=Тип("ДокументОбъект.НеобходимыйДокумент") Тогда
Если ОбщегоНазначения.ЕстьРеквизитДокумента("НеобходимыйРеквизит", Источник.Метаданные()) Тогда
Если Источник.НеобходимыйРеквизит = А Тогда
Префикс = Префикс + "А"
Иначе
Префикс = Префикс + "Б"
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПоказатьС клиентами такого типа сталкивался, и знаю, что ничего невозможного по сути нет в 1С, разница лишь в том, сколько усилий и времени на это будет затрачено. Про 15 минут - преувеличивать не надо (хотя я код набросал ну максимум минут за 5, ну если бы впервые с этим столкнулся, и не знал о префиксах, ну может за полчаса). Если у вас такие условия работы, что начальник, который в программировании не разбирается - всегда прав, это мягко говоря неправильная постановка вашей позиции :) Сразу нужно обозначать, что на это будет затрачено минимум столько времени - если устраивает, то делаем доработку, если же не устраивает - тогда работаем как раньше.
P.S. И уж тем более так остро на здоровую критику реагировать не надо, я с вами пиво не пил, детей не крестил. Достаточно было корректно спросить "Коллега, а как бы вы решили такую то постановку задачи" - именно для этих целей и существует этот форум. Я тоже многому здесь научился, учусь и знаю точно, что много еще чему предстоит научится и познать что-либо новое :)
(19) insurgut,
Добрый день, коллега!
По поводу Вашей Р.S.
Посмотрите пост 14 - там все начинается со слова Извините.
Я стараюсь такой стиль применять в общении с коллегами, которых глубоко уважаю.
Поэтому не хотелось получать эпитеты от таких же, как я.
То что Вы пишете про общение с заказчиками - 100 % правда. Подпишусь под каждым словом.
Надо обсуждать, обговаривать, но ...
Ладно хватит об этом.
Ваш текст мне понятен, спасибо, проработаю, что-то я этот механизм не изучил в свое время.
Но, в Бухгалтерии для Украины нет процедуры ПриУстановкеНовогоНомераДокумента (даже глобальный поиск не помог).
А начало нашего обсуждения с чего начинается?
Добрый день, коллега!
По поводу Вашей Р.S.
Посмотрите пост 14 - там все начинается со слова Извините.
Я стараюсь такой стиль применять в общении с коллегами, которых глубоко уважаю.
Поэтому не хотелось получать эпитеты от таких же, как я.
То что Вы пишете про общение с заказчиками - 100 % правда. Подпишусь под каждым словом.
Надо обсуждать, обговаривать, но ...
Ладно хватит об этом.
Ваш текст мне понятен, спасибо, проработаю, что-то я этот механизм не изучил в свое время.
Но, в Бухгалтерии для Украины нет процедуры ПриУстановкеНовогоНомераДокумента (даже глобальный поиск не помог).
А начало нашего обсуждения с чего начинается?
(20) sbr, А вы собственно до этого момента и не говорили нигде об используемой конфигурации :) Я специально и указал в своем посте, что для УТ 10.3 я привел пример. Скачать типовую конфигурацию, посмотреть что и как там устроено думаю труда не составит. Главное полагаю - дать пищу для размышления. С уважением.
(20)
Посмотрел УПП для Украины 1.3
При записи платежного поручения входящего применяется подписка на событие "ПриУстановкеНовогоНомераДокумента" (Событие: ПриУстановкеНовогоНомера) , которая ссылается на обработчик: ОбщегоНазначения.ПриУстановкеНовогоНомераДляДокументов"
Но, в Бухгалтерии для Украины нет процедуры ПриУстановкеНовогоНомераДокумента (даже глобальный поиск не помог).
Посмотрел УПП для Украины 1.3
При записи платежного поручения входящего применяется подписка на событие "ПриУстановкеНовогоНомераДокумента" (Событие: ПриУстановкеНовогоНомера) , которая ссылается на обработчик: ОбщегоНазначения.ПриУстановкеНовогоНомераДляДокументов"
В типовых конфигурациях нумерация сделана как правило следующим образом: свойство формы документа "Автонумерация" выставлено в "Не использовать", и есть подписка на событие при установке нового номера. Именно такое решение позволяет обойти проблему неуникальности номера при долгом заполнении документа.
(16) - у меня сделано по другому, да и в типовых как я часто видел стоит автонумератор и в свойствах конфигурации стоит не использовать, зато в Подрядчике строительства стоит Использовать освобождение номеров.
Думаю что нужно действительно дописать Подписку на события и проблеме вполне вероятно исчезнет. Просто хотелось понимать , что делает такое Свойство конфигурации.
Думаю что нужно действительно дописать Подписку на события и проблеме вполне вероятно исчезнет. Просто хотелось понимать , что делает такое Свойство конфигурации.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот