УТ 10.3. платформа 8.2. Возникла такая ситуация. При загрузке из клиент-банка выдается сообщение что невозможно записать документ с таким-то номером. Невозможно - потому что уже платежка стаким номером есть. Почему-то при создании документа пытается присвоить ему уже существующий номер. Нуменрация не сбита, если попробовать ввести документ вручную, то проблем не будет. Возникает проблема именно с загрузкой из клиент-банка почему-то((( при данной загрузке номер присваивается никак не следующий за последним.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну что за тугой народ. Уже дважды указал причину в сообщениях (2) и (8). Засрали всю ветку непонятными советами. Вы еще перепроведение всех документов посоветуйте.
УБЕРИ ИЗ ОБРАБОТКИ УстановитьНовыйНомер() Доверься типовому механизму нумерации и не влезай в него не понимая тонкостей
И ВСЁ!
УБЕРИ ИЗ ОБРАБОТКИ УстановитьНовыйНомер() Доверься типовому механизму нумерации и не влезай в него не понимая тонкостей
И ВСЁ!
(21) igorka_69, странно(про префикс). посмотрел даже обработку загрузки в рабочей УТ 103 (там заремарена эта строка). Документы формируются с префиксами. Нет разницы как создан документ. Если документ новый или меняется организация, то номер формируется механизмом нумерации. Если конечно ничего не сломали в конфигурации. Присоединяюсь к вопросу в (11)
(22) Артано, конфап типовая, только внешние печатные формы. Можно что-то изменить в настройках чтобы это слетела? Префиксы не меняли. Что точно известно. Загрузили документы из клиент банка. Затем часть документов удалили и вместо их создали вручную документы на других контрагентов.
(27) Фоур, смысл такой, транспортная компания собирает деньги с клиентом и перечисляет их фирме, т.е. деньги приходят от транспортной. Бухи лучше ничего не придумали как удалять эти платежки и заводить платежки якобы от клиентов чтобы закрывались долги. хотя это входящие платежки, а проблема с исходящими. наверное тоже что-то ввели руками только уже не помнят.
(21) igorka_69, если создавали и загружали, то при загрузке просто перезаписывается ранее созданный, а тут новый объект
Скорее всего все-таки путаница с рабочим годом. Например, документ формируется программно в прошлом году, где платежек было меньше, чем в этом, устанавливается новый для прошлого года номер, затем дата меняется и упс, в этом году такой номер уже есть.
Отладчиком, там где новый номер устанавливается, посмотрите, какая при этом ДАТА у документа. в текущем ли она году?
Скорее всего все-таки путаница с рабочим годом. Например, документ формируется программно в прошлом году, где платежек было меньше, чем в этом, устанавливается новый для прошлого года номер, затем дата меняется и упс, в этом году такой номер уже есть.
Отладчиком, там где новый номер устанавливается, посмотрите, какая при этом ДАТА у документа. в текущем ли она году?
(23) Фоур, дата текущего года. выходит сообщение, к примеру такое -Документ "Исходящее платежное поручение" № УТ000111115 от 23.11.2012 0:00:00 не создан! Произошли ошибки при записи!
Документ "Исходящее платежное поручение" № УТ000111116 от 23.11.2012 0:00:00 не создан! Произошли ошибки при записи!
Документв с такими номерами в базе существуют, из-за этого и ошибка. Но документы соверешенно другие. База ведется с этого года и за предыдущий год документов нет.
Документ "Исходящее платежное поручение" № УТ000111116 от 23.11.2012 0:00:00 не создан! Произошли ошибки при записи!
Документв с такими номерами в базе существуют, из-за этого и ошибка. Но документы соверешенно другие. База ведется с этого года и за предыдущий год документов нет.
(24) igorka_69, не путаем дату в сообщении с датой в момент установки нового номера
в сообщении понятно, что дата текущего года - тут уже конфликт уникальности,
а вот при установке в отладчике какая дата?
плюс, имеет смысл разобраться в процедуре поиска существующего документа. по какой-то причине она не находит существующий, вопрос почему?
и где вообще сделана платежка изначально? если в 1С, то найдите ее в журнале - какой там номер? может такой же как у другой платежки, но количество нулей впереди отличается?
в сообщении понятно, что дата текущего года - тут уже конфликт уникальности,
а вот при установке в отладчике какая дата?
плюс, имеет смысл разобраться в процедуре поиска существующего документа. по какой-то причине она не находит существующий, вопрос почему?
и где вообще сделана платежка изначально? если в 1С, то найдите ее в журнале - какой там номер? может такой же как у другой платежки, но количество нулей впереди отличается?
Обычно данная ситуация означает, что в системе имеется "кривой" номер, введенный кем-то вручную, из-за которого дальнейшая (до конца года) нумерация невозможна. Например, с дробью или отсутствием лидирующих нулей. Отладчиком посмотрите в момент записи, какой именно номер присваивается платежке перед тем, как обработка сообщит о "неуникальности". Далее ищите существующий документ с тем же номером и решайте вопрос с его изменением. Если проблема в отсутствии лидирующих нулей, то обработка, втыкающая эти нули всем документам с начала года пишется за 5 мин. Если имеет место дробь "/", то поставьте в существующем документе не-буквенный-префикс, например "_", чтобы автонумерация его игнорировала.
(16) igorka_69, теперь надо в отладчике ставить точку останова на "пораньше", отлавливая момент, когда номер еще не тот, что в этой точке, а затем найти то место в программе, где номер меняется на текущий, и, томно вглядываясь в эту строку, подумать "а что в этой строке не так?"
а еще может быть в драбодан допиленная конфа с введением единого нумератора, и смотрит человек в платежки входящие вроде всё зашибись, а там какой нибудь аккредитив с кривым номером или платежное требование с номером "9 ".
Скажите пожалуйста номер релиза конфигурации. Есть предположение связанное с тем, что в УТ меняли летом систему нумерации для платежек.
Также есть предположение, что у организации(единственной) в префиксе стоит пробел
Мне уже стало интересно ))
P.S. Прошу прощения за сегодняшний пост эмоциональный. Мой косяк. Забыл что еще в прошлом году переделал систему нумерации документов чтобы номер присваивался всегда с префиксами.
Также есть предположение, что у организации(единственной) в префиксе стоит пробел
Мне уже стало интересно ))
P.S. Прошу прощения за сегодняшний пост эмоциональный. Мой косяк. Забыл что еще в прошлом году переделал систему нумерации документов чтобы номер присваивался всегда с префиксами.
Обычно данная ситуация означает, что в системе имеется "кривой" номер, введенный кем-то вручную, из-за которого дальнейшая (до конца года) нумерация невозможна. Либо кто то вручную ввел слишком короткий номер, например, 9 и 1с не может увеличить разрядность.
столкнулся с такой же проблемой в обработке клиент-банк для ут 10.3
пришлось редактировать модуль.
за комментировал три строчки:
Процедура ЗаполнитьРеквизитПлатежногоПорученияИсходящего(ОбъектДокумента, ИсходныеДанные)
//Организация, ДАТА, НОМЕР
УстановитьСвойство(ОбъектДокумента, "Организация", Организация);
УстановитьСвойство(ОбъектДокумента, "Дата", ИсходныеДанные.ДатаДок);
Если ЗначениеЗаполнено(ИсходныеДанные.Списано) Тогда
УстановитьСвойство(ОбъектДокумента, "Оплачено", Истина);
УстановитьСвойство(ОбъектДокумента, "ДатаОплаты",НачалоДня(ИсходныеДанные.Списано), истина);
КонецЕсли;
//Если ОбъектДокумента.ЭтоНовый() Тогда
ОбъектДокумента.УстановитьНовыйНомер(Организация.Префикс);
Если Не ОбщегоНазначения.ЕстьНеЦифры(ИсходныеДанные.Номер) Тогда
ОкончаниеНомера = Формат(Число(СокрЛП(ИсходныеДанные.Номер)), "ЧН=; ЧГ=0");
ДлинаОкончания = СтрДлина(ОкончаниеНомера);
ДлинаНомера = СтрДлина(СокрЛП(ОбъектДокумента.Номер));
Если ДлинаОкончания < 3 Тогда
ДлинаОкончания = 3;
КонецЕсли;
//ОбъектДокумента.Номер = Лев(ОбъектДокумента.Номер, ДлинаНомера - ДлинаОкончания) + Формат(Число(ОкончаниеНомера), "ЧЦ=" + ДлинаОкончания + "; ЧВН=; ЧГ=0");
КонецЕсли;
//КонецЕсли;
пришлось редактировать модуль.
за комментировал три строчки:
Процедура ЗаполнитьРеквизитПлатежногоПорученияИсходящего(ОбъектДокумента, ИсходныеДанные)
//Организация, ДАТА, НОМЕР
УстановитьСвойство(ОбъектДокумента, "Организация", Организация);
УстановитьСвойство(ОбъектДокумента, "Дата", ИсходныеДанные.ДатаДок);
Если ЗначениеЗаполнено(ИсходныеДанные.Списано) Тогда
УстановитьСвойство(ОбъектДокумента, "Оплачено", Истина);
УстановитьСвойство(ОбъектДокумента, "ДатаОплаты",НачалоДня(ИсходныеДанные.Списано), истина);
КонецЕсли;
//Если ОбъектДокумента.ЭтоНовый() Тогда
ОбъектДокумента.УстановитьНовыйНомер(Организация.Префикс);
Если Не ОбщегоНазначения.ЕстьНеЦифры(ИсходныеДанные.Номер) Тогда
ОкончаниеНомера = Формат(Число(СокрЛП(ИсходныеДанные.Номер)), "ЧН=; ЧГ=0");
ДлинаОкончания = СтрДлина(ОкончаниеНомера);
ДлинаНомера = СтрДлина(СокрЛП(ОбъектДокумента.Номер));
Если ДлинаОкончания < 3 Тогда
ДлинаОкончания = 3;
КонецЕсли;
//ОбъектДокумента.Номер = Лев(ОбъектДокумента.Номер, ДлинаНомера - ДлинаОкончания) + Формат(Число(ОкончаниеНомера), "ЧЦ=" + ДлинаОкончания + "; ЧВН=; ЧГ=0");
КонецЕсли;
//КонецЕсли;
(36) pricetema,
И, конечно же, код лучше оформлять в виде кода. Легче понять о чем речь.
И, конечно же, код лучше оформлять в виде кода. Легче понять о чем речь.
Процедура ЗаполнитьРеквизитПлатежногоПорученияИсходящего(ОбъектДокумента, ИсходныеДанные)
//Организация, ДАТА, НОМЕР
УстановитьСвойство(ОбъектДокумента, "Организация", Организация);
УстановитьСвойство(ОбъектДокумента, "Дата", ИсходныеДанные.ДатаДок);
Если ЗначениеЗаполнено(ИсходныеДанные.Списано) Тогда
УстановитьСвойство(ОбъектДокумента, "Оплачено", Истина);
УстановитьСвойство(ОбъектДокумента, "ДатаОплаты",НачалоДня(ИсходныеДанные.Списано), истина);
КонецЕсли;
//Если ОбъектДокумента.ЭтоНовый() Тогда
ОбъектДокумента.УстановитьНовыйНомер(Организация.Префикс);
Если Не ОбщегоНазначения.ЕстьНеЦифры(ИсходныеДанные.Номер) Тогда
ОкончаниеНомера = Формат(Число(СокрЛП(ИсходныеДанные.Номер)), "ЧН=; ЧГ=0");
ДлинаОкончания = СтрДлина(ОкончаниеНомера);
ДлинаНомера = СтрДлина(СокрЛП(ОбъектДокумента.Номер));
Если ДлинаОкончания < 3 Тогда
ДлинаОкончания = 3;
КонецЕсли;
//ОбъектДокумента.Номер = Лев(ОбъектДокумента.Номер, ДлинаНомера - ДлинаОкончания) + Формат(Число(ОкончаниеНомера), "ЧЦ=" + ДлинаОкончания + "; ЧВН=; ЧГ=0");
КонецЕсли;
//КонецЕсли;
Показать
Причин может быть три :
1) При загрузке клиент-банка номер документа записывается явным образом, а не генерируется 1С, а разные рассчетные счета одного банка могут накладываться по нумерации;
2) Попробуйте провести тестирование и исправление базы данных в части логической целостности и ссылочной целостности.
3) Почистить кэш 1С8.
1) При загрузке клиент-банка номер документа записывается явным образом, а не генерируется 1С, а разные рассчетные счета одного банка могут накладываться по нумерации;
2) Попробуйте провести тестирование и исправление базы данных в части логической целостности и ссылочной целостности.
3) Почистить кэш 1С8.
Я на каком-то форуме видел: после выгрузки документа - в банке при обработке сбрасывались номера и прописывались новые - соответственно при загрузке возникала такая проблема. Не знаю, насколько это правдивая история. А в релизе 8.3.42.45 - полностью переписан модуль клиент-банка.
Столкнулся с такой проблемой, когда в организации открыли второй расчетный счет.
Номер исходящего платежного поручения 1С пытается создать используя номер платежки. А этот номер уже занят платежкой другого банка.
Тоже подправил процедуру:
Номер исходящего платежного поручения 1С пытается создать используя номер платежки. А этот номер уже занят платежкой другого банка.
Тоже подправил процедуру:
Процедура ЗаполнитьРеквизитПлатежногоПорученияИсходящего(ОбъектДокумента, ИсходныеДанные)
//Организация, ДАТА, НОМЕР
УстановитьСвойство(ОбъектДокумента, "Организация", Организация);
УстановитьСвойство(ОбъектДокумента, "Дата", ИсходныеДанные.ДатаДок);
Если ЗначениеЗаполнено(ИсходныеДанные.Списано) Тогда
УстановитьСвойство(ОбъектДокумента, "Оплачено", Истина);
УстановитьСвойство(ОбъектДокумента, "ДатаОплаты",НачалоДня(ИсходныеДанные.Списано), истина);
КонецЕсли;
Если ОбъектДокумента.ЭтоНовый() Тогда
ОбъектДокумента.УстановитьНовыйНомер(Организация.Префикс);
//Если Не ОбщегоНазначения.ЕстьНеЦифры(ИсходныеДанные.Номер) Тогда
// ИтоговыйПрефикс = ОбменДаннымиСобытияУТ.ПолучитьПрефиксЧислоНомера(ОбъектДокумента.Номер);
// ОкончаниеНомера = Формат(Число(СокрЛП(ИсходныеДанные.Номер)), "ЧН=; ЧГ=0");
// ДлинаОкончания = СтрДлина(СокрЛП(ОбъектДокумента.Номер)) - СтрДлина(ИтоговыйПрефикс);
// ОбъектДокумента.Номер = ИтоговыйПрефикс + Формат(Число(ОкончаниеНомера), "ЧЦ=" + ДлинаОкончания + "; ЧВН=; ЧГ=0");
//КонецЕсли;
КонецЕсли;
Показать
Сделал так: если находит уже такой номер в пределах года, тогда оставляет тот номер, который присвоился автоматически:
// +
НовыйНомер = Лев(ОбъектДокумента.Номер, ДлинаНомера - ДлинаОкончания) + Формат(Число(ОкончаниеНомера), "ЧЦ=" + ДлинаОкончания + "; ЧВН=; ЧГ=0");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПлатежноеПоручениеИсходящее.Ссылка
|ИЗ
| Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее
|ГДЕ
| ПлатежноеПоручениеИсходящее.Номер = &Номер
| И ПлатежноеПоручениеИсходящее.Дата >= &Дата";
Запрос.УстановитьПараметр("Дата", НачалоГода(ОбъектДокумента.Дата));
Запрос.УстановитьПараметр("Номер", НовыйНомер);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если НЕ ВыборкаДетальныеЗаписи.Следующий() Тогда
ОбъектДокумента.Номер = НовыйНомер;
КонецЕсли
// -
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот