1с ошибка при обмене
Ну например обрабатывать возникающую ошибку самостоятельно, при помощи конструкции Попытка - Исключение - КонецПопытки
(1) тогда придется всю выгрузку описывать в таких конструкциях, и необходимо заранее самостоятельно предполагать, где может возникнуть ошибка
Чисто теоретически, в принципе, во внешней обработке можно установить обмен в режиме загрузки данных - всё бесконтрольно принимается "как есть".
А можно описать структуру загружаемых данных так, чтобы было понятно, загружено значение из файла обмена или нет. Незагруженные значения отрабатывать до записи данных в базу.
Тогда попытка-исключение не понадобятся
(4) вот это я и видел в типовых, только в какой момент это описать и куда, если обработка с нуля написана, да и планов обмена нет.
(5) это интересно, то есть если структура обязательных полей не заполнена, то объект не записывать а базу?
(3) всего то нужно несколько попыток. Первая при получении данных с сервиса, вторая при записи документа.
(6) Не зная алгоритмы обработки - сложно что-либо подсказать. Если обработка "с нуля" - то нужно найти место в алгоритме, где объект записывается и там внести изменение (запись через попытку, а если исключение - регистрация ошибки в протоколе обмена и запись через "Объект.ОбменДанными.Загрузка = Истина;". Как-то вот так.
(8) (9) а что если ошибка типа "Поле объекта не обнаружено" которая возникает динамически, за счет неверного выбора элемента пользователем
(10) Если это json то без проблем можете прочитать в соответствие и проверять наличие свойства перед обработкой.
(11) Если это XML то можно через фабрику XDTO прочитать, на выходе будет ОбъектXDTO у которого есть метод Свойства(), который выводит текущие свойства у объекта. Так что тоже можно исключить подобные ошибки
(10) Падать по ошибке такого рода - это нормальная практика. fail fast называется. Сразу увидел, сразу разобрался, сразу починил и живешь дальше без проблем. В противном случае у тебя возникает гамбуз отложенных проблем с высокими рисками просрочить критичные.
Если при обмене между базами данных наблюдаются следующие симптомы:
- Процедуры обмена занимают неприемлемо много времени.
- Процессы обмена периодически вылетают «по ошибке» и их приходится запускать заново.
- Поиск ошибок обмена превращается в ужасающий квест.
То, скорее всего, вы используете конфигурацию «Конвертация данных». Неважно, какой редакции. Все отличие КД 2.0 от КД 3.0 в удобстве отладки и поиска ошибок (см. выше п. 3).
Чуть ниже, я расскажу вам, как навсегда забыть проблемы связанные со словом ‘обмен’.
История проблемы и как пришло осознание того, что нарыв созрел и его пора вскрывать.
Две нетиповых базы данных (условно обзовем их БД1 и БД2):
- В направлении БД1 -> БД2 передаются данные о нормативно справочной информации (НСИ).
Все справочники создаются только на стороне БД1. - В направлении БД2 -> БД1 передается информация по кассовым документам. Объем передаваемых данных составляет около 400 000 документов в сутки или, в пиковые периоды, до 150 документов в секунду.
- Объем файла обмена в пределах 0.7 – 2 Гб. Файл обмена транслируется через файловый ресурс.
С какими проблемами сталкивались:
- Общее время обмена, за сутки, составляло порядка 15-20 часов. До 20% времени уходило на формирование и передачу файла обмена (на стороне источника).
- Часть, из этого, уходила на запись файла обмена на дисковое пространство.
- Еще большая часть, уходила на запросы к БД в цикле (таков принцип работы конфигурации «КД»)
- Периодически, приходилось «резать» файл обмена на части, и проталкивать его в КИС руками.
- В КД 2.0 (КД 3.0), пока не загрузился весь файл обмена, обмен не может считаться успешно состоявшимся.
- Поэтому, если при загрузке данных, по 400 тысячам документов, хотя бы с одним документом произошел сбой – весь процесс обмена приходилось запускать заново.
- Поиск ошибок обмена превращался в неблагодарный труд (вспомните добрым словом КД 2.0).
Как решали проблему и что это дало на выходе.
Если кратко, то выполнили следующее:
Более подробно, все технические аспекты – это тема отдельной публикации (планируется отдельно).
Результаты оптимизации обмена данными:
- Все вышеперечисленное позволило организовать обмен данными фактически в режиме online. Частота обмена данными составляет 10 минут.
- Среднее время транспорта 400 000 документов составляет не более 2ч. 30 минут.
- Возможные ошибки передачи данных не прерывают транспортировку всего потока.
- Простота поиска и локализации ошибок кода конвертации.
Но, это тоже еще не все! Есть еще и вишенка на тортике!
Мы решили не останавливаться на достигнутом и поставили себе целью сократить суточное время обменов до полутора часов! Возможно ли это?!
Мы помним, что в моменты пиковых нагрузок, количество одновременно проводимых документов доходит до 150 шт/сек. При данной интенсивности записей очень большую роль играет повышение параллельности работы системы, а именно – сокращению времени транзакционных блокировок.
В ходе замеров выяснилось, что при проведении кассовых документов, среднее время платформенной транзакции составляет 4.5 секунды на один документ.
При этом, подавляющее количество времени уходит на подготовку данных для новых наборов записей.
Вынеся, все данные процедуры, за пределы транзакции, мы добились сокращения времени платформенной транзакции до…… Внимание! – 0.003 сек!
И это еще не все! На момент написания статьи, мы работаем над тем, чтоб при пакетном проведении документов, все данные, необходимые для формирования наборов записей, получались одним пакетом запросов.
Этим самым мы ставим себе целью:
- Разгрузить кластер серверов, снизив количество запросов с 400 000 до 288 запросов в сутки.
- Снизить количество взаимоблокировок базы данных
- И, в конечном итоге, снизим на порядок время проведения пакета документов.
В качестве резюме
Конфигурации «Конвертация данных 2.0» (КД 3.0) – отличные универсальные инструменты. Но, они крайне не готовы к работе с регулярными и большими объемами данных.
Сбор необходимых данных (одним запросом) для последующей online-передачи, может быть решением проблемы.
При пакетном проведении документов:
Получение данных (необходимых для формирования набора записей), производим одним запросом, с последующей передачей в документ-объект.
Данная методика позволяет повысить производительность системы в тысячу и более раз.
В пользовательском режиме приложения "1С:Предприятие" откройте настройки обмена с "Первой Формой". Убедитесь, что флажок " Запретить обмен с Первой Формой " не включен. Если флажок включен - отключите его и нажмите кнопку Записать и закрыть .
Запрет обмена с "Первой Формой".
Совпадение событий по времени при синхронизации
Это нормальное поведение системы, поскольку в БД содержится уже другая версия данных. В этом случае форму документы/элемента справочника надо закрыть без сохранения и затем открыть снова.
Для администратора возникновение таких ошибок должно стать сигналом к пересмотру правил настройки бизнес-процесса. Возможно, для таких документов/справочников достаточно одностороннего обмена данных из "1С:Предприятие" в "Первую Форму".
Таймаут при синхронизации
При синхронизации данных между "Первой Формой" и 1С могут возникать ошибки из-за того, что не все данные успевают обработаться в одной системе за то время, пока вторая система ожидает ответа. В частности, таймауты могут возникать при синхронизации виртуальных документов, имеющих табличную часть с 200 и более записей. Таймаут на стороне 1С фиксируется в журнале ошибок.
На стороне "Первой Формы" таймаут ожидания ответа при вызове веб-сервиса 1С составляет 12 часов.
На стороне 1С таймаут можно регулировать. Для этого в "1С:Предприятие" в справочнике " Настройки обмена ("Первая форма") " откройте предопределенный элемент " Общие настройки " и в поле " Таймауты WS " увеличьте значение в поле " Прокси " – укажите, сколько секунд сервер 1С должен ждать ответа от сервера "Первой Формы" до обрыва соединения. Если указать значение 0, то таймаут не ограничен (сервер будет ждать до тех пор, пока операция не будет выполнена).
В поле " Определение " указывается длительность подключения к сервису (в секундах), а в поле " Прокси " – длительность выполняемой операции внутри "Первой Формы" (в секундах).
Недостаточно прав доступа в 1С
При обмене данными может возникать следующая ошибка:
"Error while calling 1С service. Нарушение прав доступа к операции Web-сервиса:
Причина возникновения ошибки связана с недостатком прав пользователя на стороне приложения "1С:Предприятие". Для исправления необходимо в конфигураторе "1С:Предприятие" проверить роли у пользователя, который указан в "Первой Форме" в настройках для подключения (атрибут OneCUserName в XML-настройках), и убедиться, что хотя бы одна из этих ролей имеет доступ к сервису.
Не выполняются регламентные задания
Если на стороне "1С:Предприятие" задания в очередь ставятся и видны в регистре сведений "Очередь обмена (Первая Форма)", но не выполняются, необходимо убедиться, что регламентное задание по обработке очереди есть в системе, оно включено, и регламентные задания не заблокированы на стороне сервера.
1. Проверка существования регламентного задания.
В пакете "Модуль 1С", скачиваемом через интерфейс администратора "Первой Формы", есть папка "Диагностика", в которой находится внешняя обработка "Консоль заданий.epf". Этот файл необходимо открыть в режиме "1С:Предприятие". Появится окно, в котором будут отображены все регламентные задания в системе. Задание модуля синхронизации имеет название "Очередь обмена с Первой Формой".
2. Проверка, что задание включено.
В "Консоли Заданий" можно просмотреть, включена ли обработка и какой период ее выполнения.
3. Проверка блокировки.
На сервере "1С:Предприятие" можно полностью блокировать выполнение всех регламентных заданий (т.е. при блокировке все регламентные задания будут простаивать). Эту блокировку должны снимать специалисты "1С:Предприятие", т.к. нужно учитывать, какие из регламентных заданий уже включены и к каким последствиям это приведет.
4. Поиск и проверка объектов, вызвавших ошибки синхронизации.
В пакете "Модуль 1С", скачиваемом через интерфейс администратора "Первой Формы", есть папка " Диагностика ", в которой находится внешняя обработка " ГУИДОбъекта.epf ". Этот файл необходимо открыть в режиме "1С:Предприятие". С помощью обработки можно:
• определить уникальный идентификатор (GUID) объекта "1С:Предприятие". Для этого выберите интересующий вас объект в поле "Объект" и нажмите кнопку Сообщить ГУИД .
• определить объект, вызвавший ошибку при синхронизации с "Первой Формой", и проверить правильность заполнения его реквизитов. Для этого выберите тип объекта в поле "Объект", введите его GUID в поле "ГУИД" и затем нажмите кнопку "Найти по ГУИД". GUID и тип объекта можно посмотреть в журнале ошибок синхронизации.
необходимо проверить адреса сервисов и в частности параметр ?WSDL .
Синхронизация скрытых и "только для чтения" колонок ДП "Таблица"
Если в категории "Первой Формы" присутствует ДП "Таблица", в которой есть скрытые колонки или колонки с признаком "только для чтения", то данные для них перед отправкой берутся не из карточки задачи, а непосредственно из базы данных перед отправкой в 1С. Чтобы обмен данными в этом случае работал корректно, необходимо использовать очередь обмена, а не обмен данными в режиме онлайн. См. здесь.
Не загружаются данные из справочника 1С
Из-за ограничений на количество символов объекты с длинными названиями могут не сопоставляться. Попробуйте в 1С увеличить длину полей.
Неверный адрес сервиса 1С
В журнале ошибок есть ошибка вида:
Request format is unrecognized for URL unexpectedly ending in '/TC1CService.asmx'.
Это может означать, что в пользовательских настройках приложения в поле TC1C_ServiceAppAddress указан неверный адрес.
Не выгружаются сотрудники и кадровые документы в Бухгалтерию
Они и не должны выгружаться. Если вы зайдете в Администрирование – Синхронизация данных – Настройки синхронизации и нажмете иконку Состав отправляемых данных, вы увидите, какие объекты участвуют в обмене, а какие нет.
Не видно базу в окне выбора базы для начальной выгрузки
Необходимо зайти в стартовое меню, выбрать базу Бухгалтерии, нажать Изменить и просто нажать в появляющихся окнах Далее и Готово. После заново вернуться к окну выбора базы, как правило, такой способ решает проблему.
Не найден путь к каталогу обмена
Каталог обмена был вами создан не на облачном диске, а где-то на своем компьютере. Таким образом, базы на облачном диске просто не могут получить к нему доступа. Создать папку обмена необходимо именно в облаке. Желательно, в папке Общие.
Префикс, указываемый при настройке ЗУП для Бухгалтерии не соответствует префиксу, действительно назначенному для базы Бухгалтерии.
Уточнить префикс в Бухгалтерии - Администрирование - Синхронизация данных.
Если там это поле совсем пустое добавьте в него «00» и нажмите Enter.
Ведомости не выгружаются из ЗУП в Бухгалтерию
1. В ЗУП – Администрирование – Синхронизация данных - Настройки синхронизации - Настроить указано, что выгрузка производится сводно, а не с детализацией по сотрудникам.
Установить переключатель на С детализацией по сотрудникам, затем вручную зарегистрировать отправку нужных ведомостей. В дальнейшем они уже будут регистрироваться сами, при создании или изменении, как обычно.
2. В ЗУП – Администрирование – Синхронизация данных - Настройки синхронизации - Настроить указан месяц начала обмена в ЗУП больший, чем месяц выгружаемых ведомостей.
Установить корректный месяц начала обмена, затем вручную зарегистрировать отправку нужных ведомостей. В дальнейшем они уже будут регистрироваться сами, при создании или изменении, как обычно.
В Бухгалтерии при настройке синхронизации не появляется 3-й из 4-х шаг «Сопоставление данных»
Базы «не видят» друг друга. В Бухгалтерии на этапе Правила настройки подключения при настройке через каталог вами не был установлен флаг Получить настройки подключения из файла и не был выбран собственно файл настроек, созданный программой ЗУП в папке обмена.
В Бухгалтерии при получении документа Отражение зарплаты из ЗУП в нем есть лишь проводки по НДФЛ
В ЗУП - Настройка - Реквизиты организации - Учетная политика и другие настройки - Бухучет и выплата зарплаты - установить какой-то способ отражения зарплаты (если нет - создать новый, желательно с названием Отражение начислений по умолчанию, так как такой способ обычно уже присутствует в программе Бухгалтерия с сопоставленным счетом 26). Убедиться, что дата начала бухучета включает требуемые для передачи в Бухгалтерию документы. Заново заполнить документ Отражение зарплаты и повторно произвести синхронизацию в Бухгалтерию. Если данный способ в Бухгалтерии еще не настроен, настроить его (Зарплата и кадры – Настройки зарплаты – Отражение в учете – Способы учеты зарплаты - указать счет затрат и статью Оплата труда). В справочник способов отражения можно попасть напрямую из документа Отражение зарплаты.
После удаления документа на стороне Бухгалтерии он не отправляется заново из ЗУП
Удаляя документ в одностороннем порядке, вы разрываете связь этого документа с ЗУП в настройках обмена и оставшийся объект не может найти путь, по которому он должен быть отправлен с заменой. Если что-то удаляете на одной стороне - старайтесь выполнить удаление и на другой.
При попытке выгрузить предыдущий период ничего не выходит, хотя в ЗУП - Настройки синхронизации - Настроить - вы указали более раннюю дату начала обмена
В Бухгалтерии не делаются проводки в документе Отражение зарплаты - отсутствует ИФНС
На стороне ЗУП проверяем в Настройка - Реквизиты организации - Основное – Изменить данные регистрации - дату начала регистрации. Если она больше даты документов отражений, меняем ее, затем перепроводим документы начислений (чтобы зарегистрировать привязку к ИФНС) и перезаполняем отражение. Проверяем на вкладке НДФЛ присутствие ИФНС в соответствующей колонке. Отправляем документ в Бухгалтерию.
Суммы в Бухгалтерии после отражения зарплаты в учете задваиваются
Необходимо проверить нет ли в Бухгалтерии имеющихся начислений/выплат того же периода, сделанных когда учет велся в ней. Проверить можно расшифровкой оборотов в оборотно-сальдовой ведомости по счету 70. Если начисления есть, вам необходимо решить, что именно вы хотите оставить, а дублирующие документы в ЗУП или в Бухгалтерии - удалить.
Чтобы в Бухгалтерии посмотреть, какие документы действовали на момент, когда учет велся в Бухгалтерии, необходимо зайти в Зарплата и кадры – Настройки зарплаты и переключиться на режим В этой программе.
После проверки и необходимых изменений не забудьте переключить режим обратно.
Документы на стороне ЗУП считаются выгруженными, а в Бухгалтерии не появляются
В Бухгалтерии проверить Администрирование - Синхронизация данных - не стоит ли дата запрета загрузки. Это значение определяет дату, по которую в Бухгалтерию не могут быть загружены никакие документы из сторонней программы. Также в Администрирование - Синхронизация данных - Настройки синхронизации – ссылка Предупреждения проверить нет ли наших документов на вкладке Непринятые по дате запрета. Если они там есть, вы сможете, не трогая дату запрета загрузки, нажать Принять версию.
Организации/подразделения/физлица задвоились
На этапе сопоставления данных в Бухгалтерии при настройке синхронизации были проигнорированы круглые значки напротив объектов, которые сигнализируют о том, что данные объекты могут задвоиться. При двойном щелчке на такой значок вы попадаете в окно, разделенное пополам, где слева вы видите объекты из Бухгалтерии, а справа объекты из ЗУП. Если вы видите, что какие-то объекты слева и справа являют собой одно и тоже (ООО "Янтарь" в Бухгалтерии и Янтарь ООО в ЗУП) - вы должны щелкнуть дважды на любом из них и выбрать второй из списка. Таким образом вы даете указание программе их сопоставить и задвоения не произойдет.
При уже имеющемся задвоении вы можете:
а) восстановить резервные копии баз, сделанные до начала синхронизации
б) воспользоваться обработкой совмещения дублей - Администрирование - Обслуживание - Корректировка данных - Поиск и удаление дублей.
Путь к обработке для Бухгалтерии 3.0 и ЗУП 3.1 один и тот же – Администрирование – Обслуживание – Корректировка данных – Поиск и удаление дублей.
Важно! Перед запуском этой обработки создайте резервную копию базы. Это можно сделать прямо в папке базы (путь к которой указан в стартовом меню), либо через Администрирование – Обслуживание – Резервные копии и восстановление.
Также убедитесь, что отключены имеющиеся в системе даты запрета изменений – они, скорее всего, не дадут вам заменить все ссылки и операция не будет выполнена.
Нажимаем на ссылку Поиск и удаление дублей
Программа выполнит поиск дублей, покажет их нам и в каждом конкретном случае пометит как основной (объект, который надо оставить) – тот объект, на который привязано больше всего ссылок на документы, записи регистров и прочие объекты.
Особое внимание обратите на критерий назначения объектов дублями. При поиске дублей среди физических лиц, например, программа по умолчанию назначает критерием Совпадает по похожим словам. Так вот, с таким критерием есть шансы на то, что программа в итоге сочтет дублями физических лиц с похожими фамилиями и удалит одних с заменой на другие со всеми вытекающими. Критерий нужно вручную поменять на Совпадает (точное совпадение фамилии, имени, отчества) Отнеситесь к этой операции серьезно и обязательно создайте копию базы!
Нажимаем Удалить дубли. Иногда, особенно в случаях с удалением ИФНС и организаций, первая попытка может не дать результата – останется какой-то один объект, который не даст завершить переназначение ссылок и дубли останутся. В этом случае выбираем как основной другой объект и пробуем повторить операцию удаления. В нашем примере мы вручную выбрали как основную ту регистрацию к которой привязана наша организация.
На этот раз переназначение ссылок прошло успешно, а оставшиеся без привязок объекты-дубли теперь помечены в системе на удаление и их можно удалить через Администрирование – удаление помеченных объектов.
Удаляем через Администрирование – Обслуживание – Удаление помеченных объектов уже ни к чему не привязанные лишние регистрации:
Частой причиной ошибок при обмене выступает разрыв между обновлениями конфигураций ЗУП 3.1 и БП 3.0.
Помните, что для корректного обмена конфигурации должны быть актуальных релизов.
2) Проверка корректности подключения
Заходим в раздел Администрирование – Синхронизация данных – Настройка синхронизации данных.
Встаем мышкой на нужный обмен - кнопка Настроить – кнопка Ещё – Настройки подключения:
В открывшемся окне производим проверку подключения по одноименной кнопке:
Данную проверку следует произвести как в ЗУП 3.1, так и в БП 3.0.
Распространенные ошибки подключения:
При подключении через сетевой каталог – разные папки для обмена в ЗУП 3.1 и БП 3.0 (в данном случае нужно проверить оба пути и указать верный); отсутствие доступа до папки (обратиться к системному администратору для настройки общего доступа);
При прямом подключении – смена пароля у пользователя, используемого для подключения (следует обновить данные для подключения).
Обмен проходит, документы не переносятся
Документы регистрируются к обмену в автоматическом режиме при добавлении, изменении. Бывают случаи, когда документ по какой-то причине не переносится.
1) Убедиться, что нужный документ по дате попадает в период, с которого начинается обмен данными:
Если необходимо, следует провести корректировку настроек обмена.
2) Проверить Предупреждения при обмене, раздел Непринятые по дате запрета:
Если нужный документ попадает в данный список, то необходимо подкорректировать дату запрета и повторно выполнить обмен.
3) Зарегистрировать документ к обмену вручную
Для этого необходимо перейти по кнопке Состав отправляемых данных, выбрать нужный вид документа, затем по кнопке Зарегистрировать или правой кнопкой мыши в соседней табличной части зарегистрировать нужный документ к обмену:
Затем следует повторить проведение обмена между конфигурациями.
Для успешного завершения обмена при настройке подключения через каталог необходимо поэтапно запускать обмен в каждой из конфигураций.
Статью подготовила старший консультант «ИнфоСофт» Анастасия Ткаченко
Читайте также: