|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
|||||||||||
1C 8.x Обмен данными 1С с базой Oracle - глюки25.10.2012, 12:18. Показов 6588. Ответов 20
Метки нет (Все метки)
База 1С 8.2 не важно какая, т.к. обмен идет по дописанным объектам. Платформа 8.2.15.319 на MS SQL сервере 2008. Есть некая база не 1С (приложение на Делфи) на сервере Oracle, к которому подключаемся:
Далее SQL запросами получаем данные и пытаемся обработать и тут начинаются глюки. Допустим храним в базе Oracle УникальныйИдентификатор элемента справочника 1С, из полученной строки ищем ссылку:
Помогите, может кто-то встречался с подобной ситуацией, в чем может быть проблема? Со стороны кода не вижу проблем, тем более что ошибка плавающая и на одних и тех же значениях скорее не повторяет себя, хотя может и повторяться.
0
|
|||||||||||
| 25.10.2012, 12:18 | |
|
Ответы с готовыми решениями:
20
Обмен данными 1c с базой Postgresql как осуществить обмен данными с базой данных Обмен между мобильным приложением и базой 1С |
|
900 / 877 / 11
Регистрация: 15.03.2012
Сообщений: 2,680
|
|
| 25.10.2012, 13:04 | |
|
Действительно странно. Сделайте лог и записывайте все значения УИД и результат поиска ссылки. Возможно все таки проблема не в 1С, а скажем в некорректных УИД.
0
|
|
|
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
|
|
| 25.10.2012, 13:48 | |
|
совет: сделайте через попытку. Ситуация удаления - штатная.
0
|
|
|
62 / 60 / 0
Регистрация: 02.10.2012
Сообщений: 448
|
|||
| 25.10.2012, 16:05 | |||
|
//...Если идентификатор не указан, создается пустая ссылка. посмотрите, что вы кладете на сохранение
0
|
|||
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
|
| 25.10.2012, 17:45 [ТС] | |
|
проблема не только со строковыми значениями, но и числовыми и с датами... что возвращает поиск по УИд я знаю, уже выводились кучи сообщений проверочных, правда не в режиме: "загружаем и тут же проверяем", а "загрузили, пользователи пожаловались на единичный случай ошибки, запустили сверку по всему объему информации, куча несоответствий того что должно было загрузиться и что загружено".
Проверяем проверочные сообщения несоответствий непосредственно в тааблицах Оракловой базы - адекватные данные. При копировании соответствующего УИд из таблицы и запуске простейшего поиска отдеьно - работает-находит, и при повторном запуске загружается той же самой обработкой то что нужно... пропуская очередную порцию данных... Со стороны приложения Оракловой базы так же были коннекты с передачей данных, но не массовые а порядка 20-100 записей за раз. Со слов программиста, осуществляющего обмен с той стороны, так же была пропажа значений, и он действительно сразу проверял "нашли-не нашли", если не нашли, то ставил паузу 5сек и повторял то же самое действие - ошибок стало на порядок меньше. Из этой ситуации есть вероятность, что СОМ-коннектор Оракла дает явные сбои, т.к. обмены данных 1С по СОМ-соединениям с другими приложениями никогда не давали промахов. Рассчитывала, что кто-то встречался с подобным и знает пути устранения подобных глюков. Добавлено через 24 минуты Поясняю еще конкретней, чтобы не было сомнений: - в справочнике много реквизитов разных типов, они могут быть как заполненные, так и не заполненные. - грузится очень много записей сразу - порядка миллиона - обработка по загрузке или проверке всех реквизитов всего объема информации занимает не менее 5 часов - имеет место быть не просто пустые значения, а неправильные О_о Из вы изложенного: даже если грузить допустим кусками по 10тыс. записей, то каждый пустой реквизит проверять по два раза "а вдруг там есть на самом деле значение", формируя при этом динамически для этого реквизита этой записи мини-запросик для повторного получения данных - думаю как-то маразматично О_о и не решает последний вопрос
0
|
|
|
Модератор
|
|
| 26.10.2012, 00:48 | |
|
Без детального анализа тут вряд ли обойтись - случай единичный...
Вариантов проблемы не одни (некоторые из них)* и винить COM-коннектор как мне кажется рановато, нужно найти закономерность 1. Не корректно написанный запрос к БД Оракл - который в разных условиях возвращает разный результат... (У 1С 7.7 есть такая проблема - один и тот же запрос в MS SQL 2000 и MS SQL2005 возвращает разный результат в одной и той же БД) 2. Не корректная типизация - конвертация типов при загрузке (В каком то случае тип преобразовывается в нужный в каком то Нет) 3. Да что угодно.....................
0
|
|
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
|||
| 26.10.2012, 09:13 [ТС] | |||
Принимаю во внимание первый пункт, готова подробно разбираться по наводкам. Справочник мне закачивать далеко не один и данных там не мерено. Используемые запросы содержат как правило порядка 3х таблиц, может более, соединены левым соединением по одному полю, может добавлено одно условие для ограничения выборки - довольно простые на мой взгляд, без вложенных запросов и т.п.
0
|
|||
|
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
|
||
| 26.10.2012, 12:43 | ||
|
1. Как УИ существует в оракуле (тут д.б. всё в порядке - стринг он и в Африке... Единственно - подмена символов типа CHR(149), режимы поддержки, согласования базы оракл или запроса к данным). 2. Как УИ существует (существует ли) в 1с. Всё в Ваших руках: список траблов и проверка в отладке - это вполне реализуемо. PS. У меня две версии: 1. удалённые пользователем объекты 2. Битый Оракулом какой-то символ.
0
|
||
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
|
| 26.10.2012, 13:09 [ТС] | |
|
Уважаемый, duk337, еще раз повторяю: когда наталкиваюсь на ошибку, я вижу в каком объекте, нахожу что именно не совпадает, и обязательно проверяю УИ в Оракле - там объект какой нужно, с нужным УИ, но при первичной загрузке загрузил другое значение в 1С, откуда он его взял - очень хотелось бы узнать, если запустить перезапись этого конкретного багового объекта с тем же самым первичным запросом к базе Оракла, то закачает в 99% правильный объект. База Оракла не меняется - заморожена. В базе 1С не могут пользователи менять те значения, которые я сейчас обсуждаю.
По каким причинам может возникать подмена символов при одном выполнении запроса и не происходить этой подмены при вторичном, третичном выполнении этого же самого запроса, на этих же самых данных? Добавлено через 6 минут УИ в базе существует, и на это идет проверка обязательная, ничего так просто пользователи у нас в жизни не удалят - уж поверьте система серьезнее некуда, всё обрублено намертво.
0
|
|
|
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
|
|||
| 26.10.2012, 14:06 | |||
|
Итак: Один и тот же набор символов (УИ). Легитимен, поскольку 99% случаев дают правильный результат поиска объекта в 1с по идентификатору. т.е. разные окончания строк в базах оракл и скуль нас не парят. Изредка в 1с попадает битая строка. Ну что тут... микротрещины в маме, кривая память? Аппаратные симптомы, не так ли? Либо 1с глючит просто так для смеху, например, эмулирует сбой по индексу. Лекарство: переиндексировать. Ну это тоже для смеху, плюс прочий ремонт базы. Далее ритуальные пляски и эзотерика: Забэкапить и отресторить в новую базу (сменить поверхность носителя, сменить аппаратную среду). Выгрузить в плоскую базу. Провести всяческий ремонт. Пробовать многократно. И опишите, если не сложно, как Вы визуально идентифицируйте объект в 1с, синхронизируя его с УИ. Т.е. я предполагаю, что получаете функцией в отладчике при останове?
0
|
|||
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
|||||
| 26.10.2012, 14:44 [ТС] | |||||
|
даже не знаю как ответить... отвечу на то что поняла
При закачке миллионного справочника я не в состоянии знать что в 278645-ом объекте он мне выдаст неправильное значение, с чем его сравнивать чтобы удостовериться на этапе закачки что оно верное - я не знаю. Постфактум проводится сравнение того что закачалось и что в исходной базе - находим различия, выдаем сообщения "в таком то объекте, такой то-то реквизит не правильный, должен быть такой", заходим в соответствующую таблицу Оракла и видим - действительно в 1С одно значение, а тут другое. Для проверки какой УИ кроется за полученным ссылочным значение нарисовала простейшую кнопку. Проверка выборочная, в основном проверяет что код 1С адекватен в типизации полученных значений, т.е. по моей логике просто значения приходят с запросом не верные. Переиндексации и прочему ремонту наша база не подлежит Предположим (для смеху) что 1С эмулирует сбой по индексу и именно по этому не может адекватно найти нужную ссылку по правильно полученномй из Оракла УИ, тогда чем объяснить неправильную закачку других реквизитов типа число и просто строка комментария, которые пишутся в базу как пришли из запроса, разве что для строк СокрЛП()?
0
|
|||||
|
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
|
|||||||
| 26.10.2012, 15:42 | |||||||
|
Нашли объект, в нём ссылочный атрибут. Нашли его, в нём тоже... Рекурсия проглядывается, где уместно особое мастерство программиста, поскольку путаница между уровнями рекурсии возможна легко. Как тут скажешь... Но система должна быть. Может, статистика сбоев по уровням вложенности проглядывается? Например, Контрагент правильно, Договор правильно, а третьим у нас Валюта. Где совпадает - как бы нормально, а где нет - баг. Программу надо глядеть, однако, ко всему прочему. Пока мы пришли к тому, что путаются ссылки не первого уровня. Так?
0
|
|||||||
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
|||||||||
| 26.10.2012, 22:02 [ТС] | |||||||||
Как пример: есть некий справочник Заявка, в котором ТЧ с Номенклатурой (услуги), к ней числовые значения количества и даты, на которые запланировано выполнение работ, и даты выполнения работ. Надо подкачать ТЧ в существующую заявку. Как видите сложной иерархии не наблюдается: по УИ находим заявку, получаем ТЧ, по УИ ищем Номенклатуру и добавляем необходимое для этой заявки количество строчек. в файловую невозможно, размер дт с нашей базы превышает возможный размер, с которого может развернуться файловая, тестовые базы у нас все серверные.
Из упоминания про файловую базу мысль только если создать нулевую базу, создать в конфигурации подобные необходимым объекты, качнуть данные из Оракла туда, а потом в реалку перекачка 1С to 1С. Но думаю в данном случае ошибки отлавливать в итоге будет еще сложнее, да и теряем время на всю эту дополнительную подготовку и дополнительные обработки перекачки, а времени к сожалению нету, всё должно работать "вчера". Добавлено через 36 минут до запроса не жадная, примерно такого вида, думаю сообразите что к чему без лишних слов:
0
|
|||||||||
|
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
|
|||||||
| 27.10.2012, 13:25 | |||||||
|
Рискну озвучить симптом: номенклатура находится правильная, но попадает не в тот документ. Надо одинэсный код смотреть. Частый трабл: в таблице с двумя ключами надо отследить смену того и другого. В этом случае как раз подобные сбои: ситуация с документом без тч - и съехало. или тч без документа. Короче возможно - и именно так, как происходит, поскольку трабл сказывается не на текущем, а на следующем объекте. И поймать в отладчике сложно: голова начинает болеть раньше ![]() Добавлено через 5 минут а тут ещё третья таблица с "гарниром" заявки. Представьте, что программисту приходится синхронизировать данные по
0
|
|||||||
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
||
| 27.10.2012, 14:01 [ТС] | ||
|
цикл по строкам результата запроса из Оракла смотрим смену УИ заявки, пока не сменился добавляем строки если сменился, то записываем текЗаявку, и переходим к заполнению следующей... Я не для каждой строчки подтаскиваю заявку, и потом номенклатуру, а записываю целиком заявку, как минимум чтобы не тратить время на запись объекта (это дольше, чем проверки). Поэтому мне как-то кажется что внутри одной заявки иметь все строки верные, а одну-две неверные как-то подозрительно. Причем напоминаю что допустим Номенклатура по списку верная, а вот фактические даты у пары строчек не подгрузились. Смотрим даты в Оракле - вполне адекватные корректные даты... развожу руками, что могло помешать. Пугает нестабильность ошибок, которые я не могу однозначно подогнать под одну гребенку. С "гарниром" заявки я тоже вожусь, но с ним бы не было таких проблем, если выровнять первые два уровня (как вы их поделили).
0
|
||
|
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
|
||
| 28.10.2012, 13:44 | ||
|
1. Закачать оракловые данные в таблицу 1с аналогичной структуры, например, табличная часть элемента справочника, без всяких обработок. 2. ЗАПРОСОМ 1с получить готовую иерархию документов. Плюсы: два этапа, которые можно в опытной закачке разделить и посмотреть любые данные, тем более что в случае со справочником они сохранятся. Опция ИТОГИ даст Вам дерево, а не плоскость. Кроме того возможны наиболее надёжные способы с двумя таблицами: одна свёрнута по документам, вторая фильтруется по значению в строке первой.
1
|
||
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
||
| 28.10.2012, 14:55 [ТС] | ||
|
спасибо, я подумаю над этим...
0
|
||
|
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
|
|
| 28.10.2012, 15:01 | |
|
лучше левый справочник с таб.частью (частями). Каждый элемент - одна закачка. Потом все можно гнать через один предопределённый элемент.
Добавлено через 2 минуты В структуре на ссылки по два реквизита: один оракловый ключ, второй - 1совская ссылка. И отчет не нужен: Вторым этапом заполняются ссылки и визуально всё видно. Третий этап тупой перенос.
0
|
|
|
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 11
|
|
| 29.10.2012, 09:39 [ТС] | |
|
duk337, большое спасибо, конечно два реквизита - это логично, но адекватность видимого - это не про нас)) кто и как будет оценивать сходится или нет? по отчету я хоть общие цифры сверю, а поштучно только пользователи уже конкретные их родные объекты будут проверять в процессе работы
ну думаю на этом вопрос можно закрыть P.S. мне вот постфактум добрые оракловые наши разработчики готовы создать общую таблицу для выгрузки с их стороны, остается вопрос: где ж они такие услужливые были раньше
0
|
|
| 29.10.2012, 09:39 | |
|
Помогаю со студенческими работами здесь
20
Обмен мобильного приложения с основной базой Соединение с базой Oracle Соединение с базой Oracle Обмен данными 1С-обмен данными Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|