#2
by RealSaint
Есть код: Вопрос: почему в 1С 7.7 транзакция не активна, т.е. вся обработка идёт не в транзакции. Как при таком подключении правильно начать транзакцию?
#4
by Лефмихалыч
Соединение1С77.Initialize(Соединение1С77.RMTrade, "/D""" + ИнформационнаяБаза.ПутьКИнформационнойБазе + """ /n" + Пользователь + " /p" + Пароль, "NO_SPLASH_SHOW")
#6
by RealSaint
Как подключаться я знаю, подключение происходит нормально. Вопрос именно в транзакции.
#12
by RealSaint
(10, 11) Транзакция должна начинаться и в 1С 8, и в 1С 7.7. Т.е. в транзакции я переношу данные в 7.7, в транзакции они же должны фиксироваться, а в 1С 8 в транзакции фиксируется факт переноса данных. Если по каким-либо причинам произойдёт ошибка переноса, то должен произойти откат как в 1С 7.7, так и в 1С 8.
#14
by Wladimir_spb
А зачем Соединение1С77.ExecuteBatch("НачатьТранзакцию");? Почему не Соединение1С77.BeginTransaction;
#17
by RealSaint
Ну, если ты имеешь ввиду Соединение1С77.НачатьТранзакцию, то да, такая конструкция не работает.
#19
by RealSaint
Да кириллицей всё работает. Если мне не изменяет память, то вроде как ругалось на вызов процедуры как функции.
#22
by RealSaint
Полностью строка вызова показана в начальном коде. Это было бы печально. Ещё бы знать это наверняка...
#24
by RealSaint
В таком случае не уверен что понял вопрос. Можно более развёрнутый вариант вопроса?
#25
by Wladimir_spb
Мне интересна строка, на которую выдается ошибка. Я так понял, что это "Соединение1С77.BeginTransaction;"
#26
by Wladimir_spb
Если действительно нужно полностью проконтролировать процесс загрузки, то можно перебрасывать через файл. Например, в 8.0 выгружаешь данные в файл и запускаешь 7.7 под определенным пользователем. В 7.7 прописано что, если база запущена от лица этого пользователя, то запускается обработка загрузки данных, после выполнения - завершение работы. В таком варианте проблем с транзакциями быть не должно. Если, честно, то всегда перебрасывал данные по OLE без использования транзакций и не имел при этом никаких проблем. Есть какая-то реальная необходимость использования данного механизма?
#27
by RealSaint
Да, изначально она так и выглядела. Сейчас проверил ещё раз, ошибку не выдаёт, но транзакция не отменяется при возникновении каких-либо ошибок.
#28
by RealSaint
OLE удобнее, нежели выгрузка/загрузка файла. Тем более файл будет достаточно большой, 1С 7.7 просто им подавится. А чтобы использовать предложенный вариант обмена нужно модифицировать конфигурацию 7.7. А я хочу этого избежать.
#29
by Wladimir_spb
7.7 не подавится, а конфу переписывать, только если полностью автоматизировать. Если затавить пользователя дождаться выгрузки и запустить обработку по загрузке в 7.7, то ничего переписывать не нужно. А что за ошибки-то?
#30
by RealSaint
Предпологается что пользователь будет всё делать из одного места. Ему нужно только галками отметить переносимые документы, а всё остальное должна делать 1С. В других же вариантах слишком много лишних телодвижений. Собственно, всё уже работает, но пока без работающей транзакции. А ошибки могут быть любые: не хватает данных для переноса, некорректные данные, отсутствие соответствия объектов базы 7.7 и 8.1 и т.п. 1С ошибку то показывает, но транзакцию не откатывает.
#31
by Wladimir_spb
А зачем откатывать. Не получилось выдал сообщение. А там либо остановился, либо дальше продолжил. Можно даже у пользователя спросить, типа "Abort, Ignore, Retry?". А так выдать полную информацию - пусть исправляет: довводит недостающую информацию, удаляет лишнюю и пр. Можно еще исключения прописать, что бы в простых случаях программа сама вносила изменения в данне...
#32
by RealSaint
Так ведь не все ошибки я могу отловить. Ладно это будет ошибка данных 8.1, а если ошибка происходит в подключенной базе 7.7? Достаточно проблематично отловить такую ошибку, определить её причины и соответствующим образом отреагировать.
#33
by Wladimir_spb
А какого рода ошибки могут возникнуть? Если например, не хватило данных для записи, то список обязательных полей ограничен и его можно проконтролировать. Проверку на пустые значения и пр. А как в этом случае помогала транзакция? Ошибка - ничего не записано. А без транзакции, что?
#34
by RealSaint
Ну, скажем так, сейчас это разрабатывается при жёсткой нехватке времени и релизация более продвинутого контроля невозможна по указанной причине. Поэтому и хотелось использовать транзакцию для отката перенесенных данных при возникновении ошибки.
#35
by Wladimir_spb
Ну, тогда опять же . А потом, так ли сложно отловить ошибку подключенной базы? Даже без списка обязательных полей.
#36
by Wladimir_spb
Еще могу заметить, что вариант предложенный в требует совершенно незначительных изменений в 7.7. А величину файла можно варьировать произвольным образом, если выгружать данные почастям.
#37
by RealSaint
Ну, тогда опять очень жаль если это так и есть. Хорошо, а как отловить ошибку подключенной базы? Как её идентифицировать? Может я от недосыпа сейчас туго соображаю, но тем не менее... А про вариант в ... Я стараюсь придерживаться принципа "Одна большая красная кнопка", которую нужно нажать пользователю и всё должно заработать. Думаю не мне тебе рассказывать о том, какими ленивыми или тупыми могут быть конечные пользователи. При таком варианте пользователю нужно совершать больше действий, а это приведёт к куче возмущений. Тем более, как я уже сказал, сам механизм переноса уже практически готов.
#38
by RealSaint
В принципе, думаю эту дискуссию на сегодня можно закончить, ибо пока ответ на первоначальный вопрос так и не найден, к сожалению. В любом случае спасибо за участие. :-)
#41
by RealSaint
Но это опять же требует изменения конфигурации подключаемой базы. А я стараюсь всеми силами этого избежать. :-)
#42
by Wladimir_spb
Изменения минимальны. В глМодуле прописать вызов внешней обработки. Три строчки максимум...
#43
by RealSaint
Да я это понимаю, но на нежелание изменять целевую конфу есть свои причины. Ладно, не уговаривай меня, я и сам прекрасно осознаю возможные варианты переноса данных. :-)
#46
by Wladimir_spb
Что кстати эффективнее, с точки зрения контроля ошибок. Да и транзакции нужны только для загрузки...
#47
by RealSaint
Опять же переделка конфигурации. А информационных баз 7.7 несколько, поэтому удобнее с ними работать из одного места. Тем более что мне транзакции нужны как в подключенной базе 7.7, так и в вызывающей 8.1 одновременно.
#48
by Wladimir_spb
А какие переделки при подключении из 7.7 ? Зачем транзакции в 8.1, ведь от туда качаешь? И очень может быть, что они работают. В С-П не написано ограничений на внешнее подключение. Да и вызывать их можно из внешнего подключения локально...
#49
by RealSaint
В 8.1 происходит регистрация факта переноса данных, сохраняются соответствия объектов разных ИБ. Естественно, если выгрузка данных не удалась, то фиксировать эти данные нет необходимости.
#50
by Wladimir_spb
Собственно, регистрировать можно по факту. Если транзакция в 7.7 прошла успешно, то можно регистрировать. Опять же, если 8.1 можно менять (а кто сейчас работает на стадартной?), то транзакцию можно запустить локально. Если она, конечно, в таких условиях необходима( или при регистрации то же возможны ошибки?..).
#51
by Wladimir_spb
Вообще, IMHO, при внешнем подключении к 8 начать транзакцию несложно, даже если напрямую этот метод будет недоступен. Пропиысвается экспортная функция в общем модуле и все происходит локально.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как определить активный элемент на форме
- ЗначениеВФайл --> ЗначениеИзФайла = ошибка "Ошибка преобразования"
- Подскажите как очистить реквизит Табличной части до кумента програмно?
- v7: Выгрузка из УТ в Бух 4.5
- УПП: Платежная ведомость, расчет начисленных отпускных с удержаниями:
- Отражение удержаний ошибочно выплаченных сумм в ЗУП
- Алгоритм создания списка выбора
- как в 1С назначить Колонке Таблицызначений тип Таблицазначений
- Как перенести элементы из одной папки справочника в другую?
- Отпуск по уходу и среднесписочная численность
- Проектирование: Методика оценки стоимости затрат на внедрение IT
- Не могу отредактировать название группы справочника
- Как можно выгрузить результат отчета 1С с группировками в Excel?
- Как регистру сведений прикрутить список значений или таблицу?
- Как сделать так, чтобы обработку нельзя было закрыть?
- Сводная накладная
- v8: COM соединение к v8, не могу получить доступ к методом модуля внешних с
- Файлы ресурсов 8.1 не открываются редакторами ресурсов. Как быть?
- v7: Не могу обновить УПП
- Версия v7plus.dll