Глюк при записи элемента справочника. #252007


#0 by ks_83
При запсиси справочника просходит сбрасыване позиционирования. Например: Спр.Записать; //Записали Перед записью справочник еще был Спр=ДоговорТакойто, после становится Спр=? , т.е. переменная спр потеряла позицию. В чем может быть дело? Я никак не пойму.
#1 by ОбдолбанныйВася
#2 by Господин ПЖ
Сёдня просто праздник какой-то...
#3 by Иде я
а если спр.найти по коду ноль возвратит...
#4 by ks_83
Спр.найтиПоКоду возвращает то что надо. Я на отладчике смотрел. После записи элемент слетает, а до этого все нормально.
#5 by ОбдолбанныйВася
смотрим в книгу видим фигу ааааааа
#6 by Иде я
Перезагрузись, проверь на вирусы.
#7 by Аслан
см ... покажь код-то...
#8 by ОбдолбанныйВася
в безопасном режиме на базовой версии бухии 1сV6
#9 by ks_83
Кода много сюда не влезет, но смыл тот что я описал. Там происходит корректное заполнение реквизитов, проверено на отладчике. Но, блин, при записи происходит заподло.
#10 by Ангел-Хоронитель
кривые руки + прямые мозги.....
#11 by ks_83
Вот код, толко там не НайтиПоКоду, а НайтиПоРеквизиту, но это не суть важно.
#12 by ks_83
вот на самой последней строчке и происходит заподло.
#13 by Аслан
странно: Агентство=Агентство(НомерАгентства);   //????
#14 by ОбдолбанныйВася
и как проявляется сие заподло в предприятии?
#15 by Ангел-Хоронитель
скопируй сообщение об ошибке
#16 by FreeFin
Ну? И что? А что по твоему должна делать выборка во времянку про Записать. Еще раз (и уже в который) Любая выборка считается некорректной после явного внесения в неё изменений, нарушающих порядок выборки: Спр_Дог.Наименование=Литер+"-"+ДБФ.ObjNumber+" "+СокрЛП(ДБФ.NameFull); СпрДог.Записать, чтобы "обойти"= До найти определять ПорядокКодов... хочу пива.
#17 by Иде я
Хм...но с чем ?
#18 by ОбдолбанныйВася
) аааа, заморочились код почитать )))) лучше медовухи
#19 by ks_83
Ошибки никакой не выводится. FreeFin , где ты увидел выбороку? НайтиПоРеквизиту это выборка?? Аслан, Агентство(НомерАгентства) это функция, не бери в голову.
#20 by ОбдолбанныйВася
в комментарий Спр_Дог.Наименование=Литер+"-"+ДБФ.ObjNumber+" "+СокрЛП(ДБФ.NameFull); что выдаст Найти разве не Выбрать????
#21 by ks_83
Ну я же в цикле не пербираю элементы . Я просто позиционирусь на одном и все.
#22 by ОбдолбанныйВася
а две // поставить и проверить никак???
#23 by ks_83
ща попробую
#24 by FreeFin
Блин, ругаца буду. После Спр_Дог=СоздатьОбъект(... Вставь СпрДок.ПорядокКодов; Иепи его, горбатого...где я увидел... ты что думаешь что в физических таблицах Найти... происходит? хочу пива всё сильнее.)))
#25 by ОбдолбанныйВася
А можно на пальцах, если не трудно - не встречал... Синтаксис: ПорядокКодов Назначение: Установить порядок выборки элементов справочника по возрастанию кода. что это дает- мои предположения в выборке позволяет менять наименование, без этого нини???
#26 by FreeFin
В зависимости от основного представления в справочнике (конфигуратор) =умолчание для выборки элементов
#27 by FreeFin
+ СпрДок.ПорядокКодов = Спр_Дог.ПорядокКодов Иепи= И лепи )))
#28 by ОбдолбанныйВася
ПорядокКодов, ...Наименований соответственно меняет это умолчание? Блиииин, надо попробывать...
#29 by Ёпрст2
"Спр=? , т.е. переменная спр потеряла позицию. " - где ты это видишь? И как это проявляется, в куске кода ошибок нет, FreeFin-а не слушай, он пьян по-ходу ..
#30 by ks_83
На отладчике: До записать : Спр=договорТакойто Порядок кодов не помог и "//" поставить у наименования тоже..
#31 by Ёпрст2
%) ... Спр_Дог.Выбран= ??? Спр_Дог.Код=? Литер+"-"+ДБФ.ObjNumber+" "+СокрЛП(ДБФ.NameFull)= ???
#32 by Chieftain
А ты топробуй от обратного - закомментируй все и потихоньку снимай комментарии и проверяй - палюбому должен найти
#33 by Ёпрст2
+31 Основное представление Спр_Дог в виде чего ? Может, ты наименование пустое присвоил ...
#34 by ks_83
Основное в виде наименования, и наименование есть.
#35 by FreeFin
Практисски трезв))) Но отваливаю, всем во всем разобратца!)))
#36 by Ёпрст2
В отладчике Спр_Дог.Наименование = ?
#37 by Ёпрст2
)) Пойду, тоже выпью ...
#38 by ks_83
мля я тоже хоччууу
#39 by ks_83
Коороче вот к чему я пришел. Если присваивать спровочнику точ-такое же наименование, какое у него было до этого, то он потом сбрасывается при записи. Если присваиваем другое наименование, то все нормально. Из-за чего такая шняга происходит? ;(
#40 by Warlock
А где и как объявляется Спр_Дог? И что ты с ним делаешь до ?
#41 by ks_83
Прямо перед НайтиПоРевизиту написано так
#42 by ks_83
Все мозг вскипает..
#43 by Аслан
Ошибка явно в ДНК...
#44 by ks_83
ГЛЮК НАЙДЕН! Поиск справочника идет по реквизитку "РегНомер" у которго тип "Строка". Например,у справочника РегНомер="МОп111111". Поиск осуществляем по номеру "МОП111111",т.е. в номере для поиска буква "П" в верхнем регистре, и при этом справочник с номером "МОп111111", где буква "п" в нижнем регистре нормально позиционируется, НО ПРИ ЗАПИСИ ПОЗИЦИОНИРОВАНИЕ СЛЕТАЕТ!!! Если передавать в функцию НайтиПоРеквизиту параметр для поиска с маленькой буквой, т.е. точь в точь такой-же как реквизит справочника,то запись проходит нормально!МОЙ ВЫВОД, что в функцию НайтиПоРеквизиту надо передавать параметр для поиска с учетом регистров, в случае, если параметр имеет тип "строка", ИНАЧЕ ПРИ ЗАПИСИ ПОЗИЦИЯ СПРАВОЧНИКА СЛЕТИТ! Что скажете по этому поводу?
#45 by Ёпрст2
Полный Пэ ... ЗЫ: Пожалуй, ответ в ..
#46 by ks_83
Но я проверил, теперь у меня все работет!
#47 by Ёпрст2
По идее, он его даже находить не должен ...
#48 by ks_83
Находит! В том то и дело!
#49 by GrayT
Хм. а она вертится!
#50 by FreeFin
а не забыл ли ты реквизитъ "РегНомер" установить "Для обоих "=элемента и группы? И еще раз: регистр буквов и внезапный контроль "висячих" пробелов до конца длины строки = глюки нерегулярные (чаще возникают при перегрузках на озу), но и с тем и с другим можно бороться стандартными средствами. А вот как бороться с Записать без потери позиции...да ну йо...это ж придетца пОнять чем отличается "создать выборку" от "открыть выборку". а это= для меня оч сложно.
#51 by ks_83
"РегНомер" установлен только для элемента, для группы он мне нафих не нужен. Я решил проблему,тем что в начале привожу параметр для поиска к тому к формату который мне нужен, т.е. с маленькой буквой, ибо во всех справочниках она маленькая. Условие поиска теперь выглядит так: Если Спр_Дог.НайтиПоРеквизиту("РегНомер",СтрЗаменить(ДБФ.OBJNUMBER,Литер,Нрег(Литер)),1)=1  Тогда ... КонецЕсли И все работает.
#52 by FreeFin
И Спр_Дог никому не подчинен?
#53 by GrayT
СтрЗаменить(ДБФ.OBJNUMBER,Литер,Нрег(Литер)) не проще НРег(ДБФ.OBJNUMBER)? Все равно дурной стиль. когда нить забудешь и нарвешься
#54 by FreeFin
С таким "стилем" писательства он уже попал. Спр_Дог.НайтиПоРеквизиту(,,1)=нашли первый попавшийся Спр_Контр.НайтиЭлемент(Спр_Дог.Владелец); = пох, нашли не нашли тот не тот. И шурует дальше: Спр_Дог.ИНН Спр_Дог.Юридический... отбалды что кому наприсваивали, а работает и ладно. И записали.
#55 by ks_83
подчинен. Если я сднелаю НРег(ДБФ.OBJNUMBER), то опять будет глюк прои записи, ибо формат будет такой "моп111111", а у все справочников такой "МОп111111" Етот модуль разрабатывал не я . Я как раз исправляю чужые неодчеты. В Спр_Контр.НайтиЭлемент(Спр_Дог.Владелец) ниче криминального нет, проверка на корректность соответсвия подчиненный->владелец есть, просто она в другом месте, запускается в начале.
#56 by Эрнст
глянь в отладчике ТипЗнанияСтр(Спр_Дог)
#57 by ks_83
Че смотреть то ,там будет "Справочник".
#58 by bw
55 Предлагаю, если возможно, перевести все коды в верхний регистр тогда и поиск будет логичнее причем это надо сделать один раз
#59 by Эрнст
тогда посмотри идентификатор Спр_дог
#60 by ks_83
Дело в том, что я не знаю в каком регистре будут коды в ДБФ-е в следующий раз. Они приходят из другой БД. Малоли они опять станут в нижнем регистре. Опять все справочники переписывать придется.
#61 by GrayT
Следующий раз они придут в верхнем... потому как код у тебя ориентирован на нижний
#62 by ks_83
Лучше подгонять реквизитвы под нужный формат программно а не вручную, тогда можно избавится от геморроя в будущем.
#63 by GrayT
лучше код не зависящит от формата данных :)
#64 by ks_83
Согласен. Но вот в чем штука: Вроде код от формата не зависит, но попробуй объяснить это 1С )
#65 by GrayT
Почему не зависит? Зависит. от регистра одной буковки.
#66 by bw
+60 в следующий раз надо будет только Спр_Дог.НайтиПоРеквизиту("РегНомер",врег(ДБФ.OBJNUMBER),1)=1
#67 by ks_83
Так кто ж знал, что из-за регистра будет сбрасыватся позиция при записи. Согласитесь это мягко говоря не явная ошибка. По идее от регистра не должно ничего зависеть- вот и попробуй объяснить это движку 1С. Так можно сделать, но эти номера выводятся в печатных формах всяких нужных документов как номер договора согласованный с клиентом. И в этом номере третья буква всегда была маленькая. Если она станет большой то с юридической стороны это может оказатся неверным. Тогда придется все документы перелапачивать из-за одной буквы или вручную печатную форму всегда менять.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С