При записи в РС обнаруживаются одинаковые записи. #343421


#0 by Контакт
Народ что делать когда несколько строк равны между собой при id_ges=kol=data_otk=tochka=naim=cena=id_nom=pr_otkaz вылетает ошибка при записи что такие записи повторяются. а нужно записать рег1. Надумка такая что если записи совпадаю в "Исключение" вставить код пока RS.EOF = 0 Цикл     Но как это осушествить
#1 by ТелепатБот
#2 by Fragster
а ты вот так специально с русско-английской смесью нам мозг решил взорвать, или у тебя везде так?
#3 by Fragster
а вообще - по ключевым полям измерений - все записи регистра сведений должны быть уникальны
#4 by Mitriy
не даст одинаковые записи сделать... чо-нить меняй, либо измерение типа НомерСтроки сделай...
#5 by Контакт
Ок. !! тогда как мне исключить эту запись повторения. чтоб она не писалась в РС.
#6 by Fragster
запихай в таблицу и сверни
#7 by Контакт
Думал лучше так будет для понимания суть проблемы )))
#8 by Контакт
Да насворачивал в таблицу ТЗ.Свернуть("data_otk,id_ges,naim,tochka,id_nom,pr_otkaz,kol,cena"); никуя. тема даже есть
#9 by Fragster
чем рег.cena лучше для понимания сути проблемы, чем рег.цена, и т.д.?
#10 by Fragster
по уникальным полям сворачивай
#11 by Контакт
Извините за Мат) погода фиговая в перми. Дождит
#12 by Mitriy
А если так?
#13 by Контакт
Гы. Не Виноват я. До меня было так. менять не хотЦЦа.
#14 by Fragster
в смысле по измерениям, для которых установлено ведущее и основной отбор
#15 by Mitriy
чо измерения, а чо ресурсы в регистре? и еще, на случай всяк, у набора записей регистра есть методы: Выгрузить и Загрузить, чтобы не оч париться...
#16 by Mitriy
к
#17 by Контакт
Регистр Сведений:
#18 by Контакт
Уважаемые знаю я.
#19 by Fragster
а зачем регистр сведений для такого вида учета вообще использовать? если кол и цена? и как должны вносится те данные, у которых все измерения совпадают? ИМХО изначально проектировал базу человек, нифига не знакомый с 1с и регистрами накопления...
#20 by Fragster
ТЗ.Свернуть("data_otk,id_ges,naim,tochka,id_nom,pr_otkaz" , "kol,cena"); вот только надо учесть, что цена и количество - сложатся... надо знать, какие данные должны быть в регистре, в смысле, что такое цена и количество.
#21 by Контакт
Как мне эти сведения запихать в 1С без повторений строк id_ges=kol=data_otk=tochka=naim=cena=id_nom=pr_otkaz
#22 by Контакт
нафига мне Сумма по "kol,cena"?!
#23 by Fragster
что есть кол, и что есть цена? что это вообще за регистр сведений? скажи нам, что он олицетворяет в реальной жизни?
#24 by Mitriy
на того тебе это, что если у тя количество или цена отличаются при прочих равных, то записать не даст - надо, чтобы хоть в одном измерении различия встречались...
#25 by Контакт
КОл-это количество Товара названиия-naim, его кода - id_ges, а cena - это Цена единицы товара.
#26 by Dionisious
пиши не в набор записей, а создавай менеджер записи. Медленее будет работать но зато будет.
#27 by Контакт
To   Mitriy Как если встречаются одинковые записи. исключить эти двойные одинакоые записи и записать одну. будет тогда Гуд. я уже писал в
#28 by Fragster
количество товара где? ИМХО нужно как минимум цену - в измерения перекинуть...
#29 by Dionisious
чушь какая то.
#30 by Контакт
Спасибо. нет уж за один день накапливаются около 10000 записей. Отдел без работы сидеть будет)
#31 by Dionisious
ну тогда используй ТЗ перед добавлением в ТЗ проверяй есть ли там строки по одбору. Только все равно медлено.
#32 by Dionisious
+ иначе: меняй структуру регистра. ИМХО других вариантов нет.
#33 by Mitriy
придумывай, как считать среднюю цену или еще какую максимальную/минимальную, либо , либо , либо по периоду разводи, но чо-то в измерениях должно быть разное...
#34 by Контакт
Это вариант думаю проделать вставлю счетчик при Регистр Сведений:
#35 by Fragster
тебе еще не говорили, что база тормозит?
#36 by Контакт
пусть скажут только я тогда сделаю Рег = РегистрыСведений.zakup_otkaz.СоздатьМенеджерЗаписи; ))гы До хера долго будет переписыватся. пробывал когда на обед ходил. пришел. а он все еще пишет.
#37 by Mitriy
ентот код не поможет, имхо Рег.ДевственныйСчетчик всегда равен 1...
#38 by Mitriy
+ и вааще чо-то все как-то тупо выглядит, прощу прощения, задача изначально неправильно поставлена, имхо, много гемора предвидится, причем бесконечного...
#39 by Fragster
+1
#40 by Контакт
епт. увидел что не дописал. а вот так поможет лешить девственность счетчику. Регистр Сведений:
#41 by Fragster
ну так я уже спрашивал про предметную область, отражаемую регистром... «а в ответ тишина...»
#42 by Контакт
какая тишина. все понятно. поясняю. на SQL записываются записи отказов. И хотелось бы переносить из SQL в 1С эти записи. типо вести историю. Самое оптимальное это РС. записей в SQL набралось около 1 млн. по каждому отказу назначть ответственного, дата начала разбирательства почему отказ и т.п.
#43 by Fragster
а почему не ригистр накопления, например? или не периодический регистр сведений? вообще по принципу хранения данных у 1с намного больше возмежностей, чем чисто в теблицах БД, это и нужно использовать.
#44 by Контакт
регистр сведений: непериодический и независымый!
#45 by Fragster
это я вообще-то сказал к тому, что тупо переносить данные из таблиц скуля в 1с - подход неправильный. если хочешь целиком перенести, да еще и чтобы данные с одинаковыми ключами не потерялись - пиши либо с девственным счетчиком (но вероятность ошибки все равно есть), либо в справочник (!sic) с соответствующими реквизитами. Но мой совет, сначала представить эффективную структуру данных, а не тупо переносить.
#46 by Контакт
не катит так Ошибку выдает. {Отчет.Отчет2.Форма.Форма}: Ошибка при вызове метода контекста (Записать): Запись с такими ключевыми полями существует! : 21.03.2008 0:00:00 : 4 442 599 :  : КД093701 : 3 853 184 : нет сертификата в Перми :  (Регистр сведений: Zakup otkaz; Номер строки: 1363)            НаборЗаписей.Записать; по причине: Запись с такими ключевыми полями существует! : 21.03.2008 0:00:00 : 4 442 599 :  : КД093701 : 3 853 184 : нет сертификата в Перми :  (Регистр сведений: Zakup otkaz; Номер строки: 1363) Как исключить то запись? и в этот момент эти строки записать Рег = РегистрыСведений.zakup_otkaz.СоздатьМенеджерЗаписи;
#47 by Fragster
так то, что ты просрешь эту запись - это ничего, чтоли?
#48 by Контакт
Даааа... Хватит одной этой записи. Просто изночально в SQL записывать стали не так с повторяющими записями. Как произвести переборку по повторяющими записями за периуд. и записать только одну запись. Такая запись может выпасть 1 на 20000
#49 by Fragster
перенеси цену в измерения, сверни таблицу по всему, кроме количества, количество - суммируй и это добро уже пихай в регистр
#50 by Контакт
Тупо перенести-означает правильно перенести. тут мужрить не надо. где повторяющие записи записать одну. делов то((( тока как.
#51 by Контакт
и что получится. что у повторяющихся записей в регист запишется сумма по колличеству?
#52 by iSeRG
А чего DISTINCT или группировку при выборке со скуля не используешь?
#53 by Fragster
ага, но если на просранные записи насрать - то и так должно покатить а оно все равно вернет все с уникальными количествами и ценами - а в РС - это ресурсы - не прокатит, либо надо и количество и цену в измерения пихать
#54 by Контакт
Все использую изначально выборку делаю по дате а потом буду обновлять по минус один день.
#55 by Контакт
а потом как мне при формирование отчетов вылавливать эти просранные записи они же записались в регистр полноценно ?!
#56 by Fragster
так это ж только количество возвращает о_О
#57 by iSeRG
ясно, что группировать надо по измерениям. А вот что с ресурсами делать хз. Если все записи с одинаковыми измерениями имеют одинаковые ресурсы, то МАКСИМУМ по ним, а если нет, то РС неправильно спроектирован. Учитывая, что после сворачивания ТЗ, 1С ругается, то имеются уже записанные записи.
#58 by Fragster
при способе записи из - просранные - значит просранные. причем при «дозаписи» - еще может и «ДевственныйСчетчик» не помочь. я же говорю прежде чем переносить - надо подумать, зачем оно надо в 1с ибо не все возможно...
#59 by Контакт
ой. Это нужно для ИндикаторРаботы.МаксимальноеЗначение= RS.fields("kolq").value; вот он кодик ддорогой выборки RS.Open("SELECT * FROM dbo.zakup_otkaz  where data_otk between CONVERT(DATETIME, '" + ДатаНачТекст + "', 103) and  CONVERT(DATETIME, '" + ДатаКонТекст + "', 103) ", Connection);
#60 by Контакт
> причем при «дозаписи» - еще может и «ДевственныйСчетчик» не помочь. тут уже как мин будут две уникальные поля в записи это дата data_otk и «ДевственныйСчетчик»))
#61 by iSeRG
ну и где у тебя там группировка или DISTINCT ?
#62 by Fragster
короче, выгрузи все в ТЗ, добавь колонку с типом число, заполни единицей, сверни по всему, что у тебя является измерениями, при этом суммируя по этой колонке. смотри, где у тебя больше 1 в этой колонке получилось - эти записи при всем желании будут просраны без приблуд, добавляющих уникальность. а при дописывании новых данных - смотри, что у тебя уже есть в регистре - ибо комбинация значений измерений должна быть уникальна во всем регистре сведений - так как она определяет саму запись. либо используй не регистр сведений, а что-нибудь другое.
#63 by Fragster
дистинкт не спасет - он на все колонки распространяется, а в 1с уникальны должны быть комбинации измерений, а не измерений+регистров
#64 by Fragster
ну, это да, упустил...
#65 by Контакт
О, другое дело попробую организовать это. типо как это в коде реализовать а дальше как в конце не допонял?
#66 by iSeRG
забей на DISTINCT :) все зависит от ситуации.
#67 by Fragster
#68 by Fragster
смотрю, цену уже в измерения перекинул :)
#69 by Контакт
ага. периуд сделал месяц. щас переписывается предварительно свернув таблицу вот так ТЗ.Свернуть("data_otk,id_ges,naim,tochka,id_nom,pr_otkaz,cena"," kol"); 1С подвисла. что будет если в ТЗ запихнуть около 100тыс.записей. справится? )гы
#70 by Контакт
все еще висит. Жду....
#71 by Контакт
жду еще 5 мин и вырубаю 1С через контрАльтДелет
#72 by Fragster
надо было прогресс-бар какой-нить с обновлением через каждые 1000 строк придумать - хоть прогресс был бы виден
#73 by Контакт
если получится то кусочками запись зделаю по 5000. а то весит не по детски. Это попробую Если не удастцца так ТЗ.Свернуть("data_otk,id_ges,naim,tochka,id_nom,pr_otkaz,cena"," kol"); т
#74 by Fragster
учти, что нужно принимать в расчет то, что уже лежит в регистре. за и параметры «записать» смотри - я не помню, по умолчанию оно затирает то, что в регистре есть, или нет....
#75 by Контакт
дык. емая. все я реализовал процес Бар показывает когда считывается записи на должном уровне. а когда доходит до ТЗ.Свернуть Записать там ни как процесс бар не организуешь.
#76 by Контакт
Вроде не затирает. я придварительно по неделям попробывал. все ОК была. решил прогнать по полной программе.
#77 by Контакт
ООоооо..Ого-ого. получилось. записей 210 тыс. )))
#78 by Fragster
крута
#79 by Fragster
и что, без косяков?
#80 by Контакт
.... .... 210 тыс. раз ....
#81 by Контакт
Верно. без касяков пока. а что у меня с двоиными записями случилось по kol? как мне теперь их исключать....в дальнейшем
#82 by Fragster
попробуй Select data_otk, .... , Sum(kol) from ... Group by «все из селекта, кроме Sum(kol)» - пусть скуль сворачивает за тебя ;)
#83 by Fragster
а в - RS.Close сразу почле цикла делай - пусть сервер сразу освобождается, а не после того, как таблица свернется ;)
#84 by Контакт
что то начал пробывать тестить в SQL ни фига не выходит. Group by  ALL Сделал.
#85 by Контакт
У МЕНЯ ВОПРОС. Почему ДАННЫЕ КОГДА ЗАПИСЫВАЮ В РС, ДО ОНи ПОВЕРХ СТАРЫХ ПИШУТСЯ.
#86 by Контакт
Все же Оказалась такая строка что в ней все параметры равны.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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