|
запись документа | ☑ | ||
---|---|---|---|---|
0
Black Dragon
07.09.11
✎
17:33
|
Всем доброго дня!
Вот такая вот засада - 8.2 УТ 10.3 - платежные документы - были удалены с помощью обработки Выборка = Документы.ПлатежноеПоручение.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.ПометкаУдаления Тогда Сообщить("Платежное поручение " + Выборка.Номер + " от " + Выборка.Дата + " будет удалено!"); Док = Выборка.ПолучитьОбъект(); Док.Удалить(); Сообщить("Платежное поручение " + Выборка.Номер + " от " + Выборка.Дата + " удалено!"); КонецЕсли; КонецЦикла; Затем вместо удаленных доков пытаюсь записывать новые - а тут Оопс! {Форма.Форма.Форма(60)}: Ошибка при вызове метода контекста (Записать): Значение поля "Номер" не уникально чего только не делал - и тестирование информационной базы в том числе! Ничего пока не помогло |
|||
1
SeregaMW
07.09.11
✎
17:37
|
Давай выкладывай код как записываешь! Почему то мне кажется что при записи нового документа ты не получаешь Следующий Номер.
|
|||
2
lxs
07.09.11
✎
17:37
|
Глобальный контекст.ОбновитьНумерациюОбъектов (Global context.RefreshObjectsNumbering)
Глобальный контекст (Global context) ОбновитьНумерациюОбъектов (RefreshObjectsNumbering) Синтаксис: ОбновитьНумерациюОбъектов(<Метаданные>) Параметры: <Метаданные> (необязательный) Тип: Массив; Объекты метаданных. Объект метаданного или массив объектов метаданных, для объектов которого будет выполнено обновление. Если значение параметра не указано, то обновление будет выполнено для всех типов объектов. Описание: Выполняет обновление номеров в соответствии с номерами, записанными в базе данных. После вызова данного метода все выданные, но не записанные номера, становятся невалидными, т.к. не гарантируется их уникальность. Данный метод разрешено вызывать только администратору системы. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
3
lxs
07.09.11
✎
17:38
|
+(2) за каким ты вообще полез удалять документы?
|
|||
4
Black Dragon
07.09.11
✎
17:39
|
их нужно было удалить - Удаление помеченных объектов - не помогало
|
|||
5
SeregaMW
07.09.11
✎
17:40
|
(3) Он же не спрашивает как их восстановить )))
|
|||
6
Black Dragon
07.09.11
✎
17:41
|
Вообще странно - я же их сам создавал программно - почему не удалить если так требуется? )
|
|||
7
lxs
07.09.11
✎
17:41
|
(4) !!! С этого места по-подробнее!
|
|||
8
Black Dragon
07.09.11
✎
17:42
|
(2) есть возможность это действие отменить?
|
|||
9
Goggy
07.09.11
✎
17:42
|
(4)ужс
|
|||
10
lxs
07.09.11
✎
17:43
|
нет
|
|||
11
lxs
07.09.11
✎
17:43
|
ты запустил чтоли?
|
|||
12
СвинТуз
07.09.11
✎
17:43
|
ЕвроДон и индюшки? ) хотя у них вроде УПП
|
|||
13
Black Dragon
07.09.11
✎
17:44
|
да нет, ничего подобного не делал!
|
|||
14
Black Dragon
07.09.11
✎
17:44
|
(12) нет, ну их ... ))
|
|||
15
СвинТуз
07.09.11
✎
17:45
|
(14)
а что так ? 20 000 мало? ))) |
|||
16
СвинТуз
07.09.11
✎
17:46
|
я бы не удалял если через удаление помеченных не удаляются
|
|||
17
Black Dragon
07.09.11
✎
17:47
|
(15) это совсем не зарплата )
|
|||
18
СвинТуз
07.09.11
✎
17:48
|
а сколько зарплата? )
|
|||
19
SeregaMW
07.09.11
✎
17:48
|
(0) Новые документы создаешь программно?
(16) Я тоже ибо на них есть ссылки других объектов... (0)Давай кодинг записи документа, щаз мы тебе поможем |
|||
20
Black Dragon
07.09.11
✎
17:48
|
ну от 30000
|
|||
21
SeregaMW
07.09.11
✎
17:49
|
Через 10 минут форум вымрет все уйдут домой))))))))))))))
|
|||
22
Black Dragon
07.09.11
✎
17:50
|
Док = База.CreateObject("Документ.ПлатежноеПоручение");
БазПредставление = "00000000000"; Если Док.ВыбратьДокументы(Формат(НачДата,"ДЛФ=Д"),Формат(КонДата,"ДЛФ=Д")) Тогда Пока Док.ПолучитьДокумент() Цикл ТекНомер = Прав(БазПредставление+Док.НомерДок,11); ТекПлатежка = Документы.ПлатежноеПоручение.НайтиПоНомеру(ТекНомер); Если ТекПлатежка = Документы.ПлатежноеПоручение.ПустаяСсылка() Тогда // документ не найден(не существует) // создадим документ Платежное Поручение Сообщить("Документ Платежное поручение № " + Док.НомерДок + " от " + Док.ДатаДок + " в информационной базе не обнаружен!"); НоваяПлатежка = Документы.ПлатежноеПоручение.СоздатьДокумент(); НоваяПлатежка.Номер = ТекНомер; НоваяПлатежка.Дата = Док.ДатаДок; НоваяПлатежка.Организация = выбОрганизация; НомерСчета = Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",Док.РасчетныйСчет.Номер); НоваяПлатежка.СчетОрганизации = НомерСчета; СтрИНН = СокрЛП(Док.Контрагент.ИНН); Поз = Найти(СтрИНН,"/"); Если Поз > 0 Тогда ИНН = Лев(СтрИНН,Поз-1); Иначе ИНН = СтрИНН; КонецЕсли; СоотвКонтрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",ИНН); НоваяПлатежка.Контрагент = СоотвКонтрагент; НоваяПлатежка.ДоговорКонтрагента = НоваяПлатежка.Контрагент.ОсновнойДоговорКонтрагента; СчетКонтрагента = Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",Док.СчетКонтрагента.Номер); НоваяПлатежка.СчетКонтрагента = СчетКонтрагента; НоваяПлатежка.ВидПлатежа = Док.ВидПлатежа; НоваяПлатежка.ОчередностьПлатежа = Док.Очередность; НоваяПлатежка.НазначениеПлатежа = СокрЛП(Док.Содержание); НоваяПлатежка.СуммаДокумента = Док.Сумма; НоваяПлатежка.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.Получить(); НоваяПлатежка.Комментарий = "Перенесено из 1С:Бухгалтерия 7.7"; НоваяПлатежка.ИННПлательщика = выбОрганизация.ИНН; НоваяПлатежка.КПППлательщика = выбОрганизация.КПП; НоваяПлатежка.ИННПолучателя = ИНН; НоваяПлатежка.КПППолучателя = Док.КПППолучателя; НоваяПлатежка.КодБК = Док.КодБК; НоваяПлатежка.КодОКАТО = Док.КодОКАТО; НоваяПлатежка.ПоказательДаты = Док.ПоказательДаты; НоваяПлатежка.ПоказательНомера = Док.ПоказательНомера; НоваяПлатежка.ПоказательОснования = Док.ПоказательОснования; НоваяПлатежка.ПоказательПериода = Док.ПоказательПериода; НоваяПлатежка.ПоказательТипа = Док.ПоказательТипа; НоваяПлатежка.СтатусСоставителя = Док.СтатусСоставителяПлДок; Если Док.ПеречислениеНалога Тогда НоваяПлатежка.ПеречислениевБюджет = Истина; Иначе НоваяПлатежка.ПеречислениевБюджет = Ложь; КонецЕсли; НоваяПлатежка.ВидПеречислениявБюджет = Перечисления.ВидыПеречисленийВБюджет.НалоговыйПлатеж; НоваяПлатежка.СтавкаНДС = Перечисления.СтавкиНДС.НДС18; НоваяПлатежка.СуммаНДС = Док.НДС; Попытка НоваяПлатежка.Записать(); Исключение Сообщить("Не удалось записать документ Платежное поручение № " + НоваяПлатежка.Номер + " от " + НоваяПлатежка.Дата); Сообщить("" + ОписаниеОшибки()); КонецПопытки; Иначе Сообщить("Документ Платежное поручение №" + ТекПлатежка.Номер + " от " + ТекПлатежка.Дата + " в информационной базе уже существует!"); КонецЕсли; КонецЦикла; |
|||
23
СвинТуз
07.09.11
✎
17:50
|
да блин
как тебя в Ростове на 30 000 берут? ты же не знаешь как базу чистить правильно ) |
|||
24
СвинТуз
07.09.11
✎
17:52
|
про транзакции не слышал опять же
|
|||
25
lxs
07.09.11
✎
17:53
|
(24) Не спасут.
|
|||
26
unregistered
07.09.11
✎
17:53
|
(4) >> нужно было удалить - Удаление помеченных объектов - не помогало
format c: надёжнее. И нумераторы чистенькие будут... |
|||
27
Black Dragon
07.09.11
✎
17:54
|
очень смешно )
а по существу то как нужно было? |
|||
28
Black Dragon
07.09.11
✎
17:55
|
(23) и как базу чистить правильно?
|
|||
29
СвинТуз
07.09.11
✎
17:56
|
(25)
смотря от чего |
|||
30
СвинТуз
07.09.11
✎
17:57
|
(27)
а кто его знает то кроме тебя? ты и код кусками кидаешь |
|||
31
unregistered
07.09.11
✎
17:58
|
(28) >> и как базу чистить правильно?
Через удаление помеченных объектов. Если эта обработка не удаляет документы, значит на них есть ссылки. Если ты удаляешь такие документы принудительно, то в базе остаются битые ссылки. |
|||
32
СвинТуз
07.09.11
✎
17:59
|
ТекНомер = Прав(БазПредставление+Док.НомерДок,11);
и тут теоретически напороться можно все у тебя не чисто ))) |
|||
33
Black Dragon
07.09.11
✎
18:00
|
это понятно и ежу) (ну типа мне!)
там ссылок не было - потому как я их в базу сам записал, и выписок на эти платежки не было! потому так и удалил, про валидность номеров однако не знал! |
|||
34
Black Dragon
07.09.11
✎
18:01
|
отключить контроль уникальности у документа?
|
|||
35
unregistered
07.09.11
✎
18:01
|
Если система говорит Значение поля "Номер" не уникально, значит так оно и есть.
Чистить нумератор, как в (2) бесполезно, т.к. нумераторы просто хранят последний выданный номер в разрезе каждого префикса. |
|||
36
SeregaMW
07.09.11
✎
18:02
|
(22) Я сталкивался с такой проблемой, соль в том что тот номер который ты указываешь не записывается в документе он изменяется при выполнении метода записать, пройдись отладчиком там найдешь.
|
|||
37
Black Dragon
07.09.11
✎
18:02
|
(32) нельзя там было напоротся!
тут особенный случай - часть платежек было еще в 7-ке, нужно их оттуда то выбрать и сюда! |
|||
38
unregistered
07.09.11
✎
18:03
|
(33) >> там ссылок не было
Врешь. обработка не станет тебя обманывать. Смотри из каких объектов идут ссылки на неудаляемые документы. |
|||
39
Black Dragon
07.09.11
✎
18:04
|
(38) логически выходит что так - только сам не понимаю откуда им было взятся?
|
|||
40
unregistered
07.09.11
✎
18:08
|
(36) Сомневаюсь. ПриУстановкеНовогоНомера отрабатывает только когда номер не установлен руками или программно. А у автора он как раз программно устанавливается.
Если только где-то в коде есть вызов УстановитьНовыйНомер |
|||
41
Black Dragon
07.09.11
✎
18:08
|
а собственно я же проверяю перед присвоением - нет же в базе дока с таким номером!
ТекПлатежка = Документы.ПлатежноеПоручение.НайтиПоНомеру(ТекНомер); |
|||
42
Black Dragon
07.09.11
✎
18:10
|
больше в коде ничего нет кроме установки соединения с ОЛЕ базой!
|
|||
43
unregistered
07.09.11
✎
18:17
|
Отладчиком смотри что с Номером происходит перед записью и в момент записи документа. Может там действительно где-то принудительно вызывается установка нового номера.
|
|||
44
unregistered
07.09.11
✎
18:17
|
Что кстати с префиксами? Используются?
|
|||
45
Black Dragon
07.09.11
✎
18:22
|
нет, префиксы не используются
|
|||
46
Black Dragon
07.09.11
✎
18:24
|
на локальной базе провел эксперимент - отключил контроль уникальности - результат таков - новые доки записались, часть из них руками пометил и удалил через Удаление помеченных объектов - удалились без всяких вопросов!
Отсюда вывод - что то видимо Нумератор творит! |
|||
47
unregistered
07.09.11
✎
18:29
|
(46) Не может ни чего нумератор творить.
Нумератор может чудить при автоматическом присваивании номеров. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |