Related Posts
- Получение логина и пароля техподдержки 1С из базы
- Класс для вывода отчета в Excel
- Счет-фактура для УПП
- Библиотека классов для создания внешней компоненты 1С на C#
- Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
- Прайс-лист с артикулом в отдельной колонке
Разумно. У нас дабы не менять конфу удаление регистрации сделано в правилах обмена в обработчике «После выгрузки в файл». Если б дали конфу менять, то сделал бы скорее всего так же.
(1) возможно, но сложно. Так проще. главное, что я к этому долго шел и не получалось все никак.
(2) Да, проще, я не спорю 🙂
(3) видишь ли, я мечтал об этом год. А оказалось, что все так просто. Теперь если слетает обмен, то ничего страшного, то что уже прошло, повторно не пойдет….
У себя пошел подобным путем, но есть одно НО — ошибки при обменах трудно ловить, так как в режиме сервера сообщения не выводяться. Сейчас думаю над сообщениями об ошибках и впринципе — все будет работать как часики.
(5) журнал регистрации на что? 😉
или регистр сведений.
Журнал регистрации 1С меня не устраивает по быстродействию.
(7) пиши в свой лог в файл. или в регистр сведений.
О-О-О! Долго руки не доходили разобраться, а тут такой подарок, спасибо! Для обменов на базе БСП это тоже действительно?
Посмотрел, для БСП можно аналогично поправить обработку КонвертацияОбъектовИнформационныхБаз, процедура ВыполнитьВыгрузкуЗарегистрированныхДанных. Ищем текст:
УзелДляОбменаОбъект = УзелДляОбмена.ПолучитьОбъект();
дальше идет обход выборки:
Пока ВыборкаИзменений.Следующий() Цикл
Идем в конец цикла, видим условие:
Если ЭтоОбменЧерезВнешнееСоединение Тогда
внутрь добавляем:
ПланыОбмена.УдалитьРегистрациюИзменений(УзелДляОбмена, Данные);
(10) Интересно, Селезневские примут этот мой патч к сведению, или и дальше будут мучать пользователей COM-обменов?
(11) думаю они на своем Такси вряд ли до этого доберутся 🙂
(12) жаль, что 1С не такая дружелюбная контора как хотелось бы. 😉
Я считаю это упущенными возможностями конторы к развитию.
Если она общается только по закрытым каналам.
Поправочка: закрываем мы не промежуточную транзакцию, а всю имеющуюся. Вложенные транзакции 1С не поддерживаются.
А по-моему поддерживаются… Натыкался на вложенность транзакций в РТ 1.0 при очередном обновлении платформы — документ ОРП создавался заполнялся и записывался а транзакция не закрыта даже после ЗафиксироватьТранзакцию(). Приходилось дополнительно проверять открыта транзакция или нет.
(15)DimkoZah,
Предприятие 8 не поддерживает вложенные транзакции. Все «вложенные транзакции» сливаются в одну. Но это не значит, что транзакция завершится после первого вызова ЗафиксироватьТранзакцию() или ОтменитьТранзакцию().
● при окончании выполнения встроенного языка (обработчик события, внешнее соединение, automation-сервер);
● при передаче управления с сервера на клиента.
1С:Предприятие 8.2. Документация/Глава 9. Работа с данными/9.2. Механизм транзакций/9.2.1. Использование явного вызова транзакций; 9.2.2. Вложенный вызов транзакций
(16) i.kovtun, Благодарю! Вот только у меня есть вопрос: Почему возникла такая ситуация, что при закрытии смены документ Отчет о розничных продажах НЕ СОХРАНЯЛСЯ в базе из-за незакрытой транзакции (отловил в журнале)? Конфигурация при этом не изменялась, не обновлялась. Точно не помню сохранялся ли первый документ… Конфигурация дорабатывалась под множество фискальников.
(17) DimkoZah,
Трудно сказать. Чтобы разобраться нужно, во-первых, воспроизвести повторяемый кейс, проверить наличие исключений (в том числе завернутых в попытку), возможно придется продебажить. Ну и всегда остается очень маленькая вероятность ошибки в платформе.
Проще было сделать 2 односторонних обмена — результат тот же, доработок — никаких.
(11) какой патч? Если обмен двусторонний он будет являться успешным при одновременной выгрузке/загрузке. Идеология отличная, и ничего тут собственно менять не требуется. Для того, что вы реализовали есть типовое решение в комментарии выше.
(21) а где можно скачать обработку?
(22) какую обработку? это вмешательство в код, а не обработка.
Позволю себе немного критики.
http://forum.infostart.ru/forum42/topic58449/ , то было бы понятно. Но на статью это явно не тянет — не хватает завершенности.
Это только половина решения, т.к. подобное вмешательство отрезает часть логики типового обмена, отвечающую за проверку результата выгрузки. На что и указал в (5)Kamikadze. Про то, что нужно это как-то компенсировать, в статье ничего нет.
Если бы это было представлено как финальное сообщение в обсуждении тут
(24) не понял вашего замечания. О каком отрезании логики идет речь?
Если объект передался по правилам, его можно исключть из регистрации в планах обмена. Не вижу тут проблем, может укажете?
(25) ну да, если запись регистра подчиненная регистратору передана — можно снимать с регистрации, ну если потом произойдет ошибка при передаче самого регистратора — ничего страшного 🙂
(26) Вы великий теоретик, да.
А ничего, что:
1. При обмене УТ-Розница движения не передаются, документы просто перепроводятся.
2. Если передастся только регистратор, со следующей порцией передаются и движения по регистрам.
Я тащемто практик.
(27) Я как раз таки больше практик, чем теоретик. 🙂 А примем тут УТ-Розница? Решение же вы предлагаете универсальное, т.е. какие правила используются — не имеет значение. Будь они типовыми, или написанными самостоятельно.
Не спорю, что решение ваше имеет право на жизнь, просто с определенными условиями и ограничениями.
(28) мне кажется, что человек способный понять и внедрить это решение, по умолчанию обладает достаточной квалификацией, чтобы понять, применимо это решение или нет.
Все же это методика не для чайников 1С. 😉
(29) тут с вами соглашусь полностью 🙂
(25) Я же вроде указал, что отрезается алгоритм проверки результата выгрузки. Запись со ссылкой на выгруженный объект удаляется из таблицы регистрации изменений сразу после выгрузки. Т.е. на стороне выгрузки не получаем сообщение об успешности загрузки и лишаемся возможности что-либо предпринять.
Соответственно это не волшебство улучшения типового механизма, а хак, да еще и с побочными явлениями. О чем и нужно предупреждать в статье. Речь только об этом.
(31) anchovy, Хоть давно был последний пост, но… в случае БСП все алгоритмы после загрузки отрабатываются сразу после загрузки самого объекта, поэтому ничего не теряется. В случае до БСП действительно удаление нужно делать немного позже, чем предложено у fixin. Но это никоим образом не умаляет ценность статьи автора — лично я кучу времени сэкономил, так как очень долго не доходили руки выполнить анализ механизма.
Такой подход можно применять, но только есть одно большое НО, которое надо всегда помнить.
Напомню, как работает ВыбратьИзменения: в процессе выборки изменений в записи регистрации изменений проставляется номер сообщения обмена данными, «фиксируя» старт обмена. Если после этого данные были изменены, то в номер сообщения проставляется Null.
И если мы удаляем регистрацию по номеру сообщения — то удаляются только данные по тем объектам, которые были выгружены И НЕ ИЗМЕНЕНЫ за время выгрузки! Если удаляем просто по ссылке — то есть вероятность очистить регистрацию по измененным объектам в течении обмена, и соответственно, не выгрузить часть изменений.
Это нужно хорошо помнить, так как вероятность ошибки увеличивается при большом кол-ве изменений во время обмена и больших пакетах выгрузки.