1С загрузка истина

У меня после перехода с УТ 11.1 на УТ 11.2 в клиент-серверном режиме в фоне крутилось больше сотни обработок, и невозможно было обновляться дальше без ожидания их завершения, потому что в следующих релизах эти обработки просто удаляются из модулей! А ты ловишь кучу ошибок «Процедура не найдена. Завершить работу» и приходится откатываться назад. При чем то, что эти обработки в фоне крутятся, можно узнать лишь добравшись через кучу пунктов меню в почти секретное окно результатов обновления, и никак не рассчитать когда это все завершится — через несколько минут или суток. Сидите ждите, и ничего, что вам еще нужно с пяток релизов поставить и работать — куча никому не понятных операций важнее.

Кстати, в файловом режиме обработки обновления не крутятся в фоне, а выполняются все при запуске, поэтому там более явно видно, выполнились все обработки или их выполнение еще идет. Хотя когда запуск базы превращается в 20-часовое ожидание тоже не особо приятно.

Кто вообще это придумал — удалять процедуры и функции в следующем релизе? Кому он мешает? При чем без них база просто не запускается! Хотел бы я знать этого «героя», чтобы сказать спасибо за абсолютно дурацки процесс обновления!

К тому же одна обработка завершалась с ошибкой, типа «не удалось выполнить». Теперь висит в списке, выполнится не может, из-за нее другие обработки тоже висят со статусом «Выполнено» из из списка не удаляются. Список вообще никак не управляется, статус сменить нельзя, и убрать это надоедливое окно «обновление не выполнено» при каждом запуске базы каждого пользователя невозможно. Наверное придумывали под девизом «Все для пользователя».

Извините, накипело. Ну хоть кто-то будет предупрежден и не попадется на те же грабли.

Свойство ОбменДанными

рубрики: УРБД | Дата: 1 сентября, 2017

Если вы в любой типовой конфигурации сделаете глобальный поиск по слову ОбменДанными, то увидите массу ссылок на него. И в общих модулях, и в модулях справочников, документов, регистров и т.д. Рассмотрим, что это за свойство и для чего применяется.

Краткий обзор

Если в синтакс-помощнике открыть ветку Прикладные объекты, можно обнаружить, что у многих из них: СправочникОбъект, ДокументОбъект, для регистров НаборЗаписей и т.д. есть свойство ОбменДанными.

Тип у этого объекта: ПараметрыОбменаДанным, который в свою очередь содержит три свойства

  • Загрузка
  • Отправитель
  • Получатели

Эти свойства используются в процессе обмена между узлами распределенной информационной базы. В свойстве Отправитель храниться ссылка на узел в котором было произведено изменение объекта. Получатели содержит набор узлов плана обмена, в который будут выгружаться изменения. В случае необходимости каких-то нестандартных действий при обменен данными между базами и отправителя и состав набора узлов можно изменять программно. А вот на третьем свойстве — Загрузка хочется остановиться подробнее.

Свойство ОбменДанными.Загрузка

Если данное свойство установлено в значение Истина, это указывает на то, что производится запись объекта, полученного через механизмы обмена данными. При этом подразумевается, что объект содержит корректные данные и платформа 1С производит минимальное количество проверок. Но очень часто при записи объекта делается множество программных проверок в предопределенных процедурах модуля объекта. И этот код выполняется в том числе и при записи объекта, полученного из файла обмена. И в этом случае могут возникать ошибки, например, из-за того, что проверяемые данные просто еще не записаны.

Поэтому очень часто в модулях объектов можно встретить вот такой код:

Процедура ПередЗаписью(Отказ) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; //Здесь код с проверкой данных КонецПроцедуры

Это позволяет избежать лишних проверок при обмене данными между базами. Конечно же если какой-то код должен выполняться в любом случае — его необходимо разместить перед проверкой свойства Загрузка. Этот момент надо обязательно учитывать при проектировании новых объектов метаданных, если у вас распределенная база данных и новый объект учавствует в обмене.

С другой стороны наличие такого кода дает возможность разработчику незаконно обойти проверку данных при программной записи объекта, т.к. свойство Загрузка доступно и для записи тоже. Например, с помощью вот такого кода:

НовыйТовар = Справочники.Товары.СоздатьЭлемент(); НовыйТовар.Наименование = «Тестирование записи»; НовыйТовар.ОбменДанными.Загрузка = Истина; НовыйТовар.Записать();

И в каких-то исключительных ситуациях это действительно может помочь как временная мера. Но злоупотреблять этим не стоит.

Регистры накопления
Разрешить разделение итогов. Если флаг установлен в значение Истина, то будет задействован механизм разделителя итогов, который обеспечивает более высокую параллельность работы при записи в регистр. Система при одновременной записи движений несколькими сеансами не будет обновлять одни и те же записи итогов, а будет записывать изменения итогов в отдельные записи. При получении итогов эти данные складываются. Таким образом, обеспечивается и поддержание в актуальном состоянии итогов (для быстрого получения отчетов, например) и параллельность записи движений. Этот режим требует дополнительных расходов ресурсов (например, увеличивается количество данных в итоговых таблицах). Поэтому есть свойства и в конфигурации, и в языке для управления этим режимом.
Записи будут «размножаться» только при параллельно выполняемых транзакциях. Их количество по каждой комбинации измерений будет зависеть от максимального количества одновременно выполняемых транзакций. При пересчете итогов накопленные отдельные записи сворачиваются.
Режим разделения итогов может быть изменен пользователем в режиме работы «1С:Предприятие» в диалоге «Управление итогами».
По умолчанию свойство выключено.

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. Все действия в процедурах-обработчиков событий ПередЗаписью, ПриЗаписи, ПередУдалением должны выполняться после проверки на ОбменДанными.Загрузка :

Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

// код обработчика
// .
КонецПроцедуры

Это необходимо для того, чтобы никакая бизнес-логика объекта не выполнялась при записи объекта через механизм обмена данными, поскольку она уже была выполнена для объекта в том узле, где он был создан. В этом случае все данные загружаются в ИБ «как есть», без искажений (изменений), проверок или каких-либо других дополнительных действий, препятствующих загрузке данных.

Кроме механизма обмена данными есть и другие случаи, когда это должно быть так. В общем виде следует руководствоваться следующим подходом: механизмы, не рассчитанные на особенности конкретных конфигураций, должны иметь возможность загрузить данные при установленном флаге загрузки так, как будто текста обработчика нет вообще:

Например, требуется загрузить всю базу из XML «как есть». Для этого должно быть достаточно установить записываемым объектам ОбменДанными.Загрузка = Истина и все данные должны загрузиться без искажений, проверок и дополнительных действий, т. е. так же как и при пустом обработчике.

2. Исключение составляет механизм обмена данными, который в ходе загрузке данных в базу регистрирует эти данные к выгрузке на других узлах плана обмена.

В тех случаях, когда в конфигурации используется подсистема «Обмен данными» БСП, и возникла необходимость отключить ее, следует устанавливать дополнительное свойство ОтключитьМеханизмРегистрацииОбъектов :

В случае других исключений, причина исключения из этого правила должна быть описана в комментарии к выполняемым действиям.

3. Требования выше также распространяются на обработчики подписок на эти события.

4. При этом вызывающая сторона, выставляя записываемому объекту признак ОбменДанными.Загрузка в Истина , берет на себя ответственность за целостность данных этого объекта.

Например, при записи объекта через механизм обмена данными в РИБ это обеспечивается корректным состоянием объекта в том узле, где он был создан (или изменен).

В других случаях вызывающая сторона должна принять меры по корректному заполнению записываемого объекта. Например, при загрузке данных через механизм обмена данными по правилам конвертации или с помощью формата EnterpriseData, следует выполнять все необходимые действия по (до)заполнению объекта. Эти действия рекомендуется размещать в экспортных процедурах самого объекта, которые используются вызывающей стороной при записи объекта в режиме обмена данными.

Что такое ОбменДанными.Загрузка = Истина, как использовать ОбменДанными.Загрузка.

ОбменДанными.Загрузка

ОбменДанными.Загрузка — атрибут любого объекта в системе 1С предприятие. Он позволяет обозначить при записи объекта, что необходимо отключить любые проверки (в т.ч проверки на уровне платформы 1С). Сделано это было для того, чтобы избежать конфликтов при обмене данных.

Если Вы разрабатываете свою конфигурацию, во всех проверках правильности данных (например, процедура ПередЗаписью) необходимо первой строкой добавить такую строку:

Если ОбменДанными.Загрузка = Истина Тогда
Возврат;
КонецЕсли;

Получите 267 видеоуроков по 1С бесплатно:

Это является хорошим тоном среди разработчиков 1С.

Контроль записи в стандартных обработках 1С

Если Вы когда-либо пользовались стандартными обработками 1С (например, Поиск и замена значений, Групповая обработка данных, Универсальный обмен данных и т.п), Вы наверное замечали настройку, которая называется обычно «Контроль записи». Эта настройка как раз отвечает за включение/выключение атрибута «ОбменДанными.Загрузка».

Как установить режим ОбменДанными Загрузка

Использовать этот атрибут очень удобно в программном коде, для отключения всех проверок. Например, данный атрибут необходим, если Вам нужно записать объект, но он имеет незаполненные обязательные реквизиты. Это можно также использовать как способ увеличить скорость массовой обработки данных — если Вы отключаете все проверки, система записывает объект быстрее.

КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию(«Рога и копыта»);

КонтрагенОбъект.Наименование = «Рога и копыта LTD.»

Азы настройки обмена данными в 1С с помощью конфигурации «1С Конвертации данных» на примере смотрите в видео:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

( голосов, в среднем: из 5)

Поддержите нас, расскажите друзьям!

СПРОСИТЕ в комментариях!

В случае восстановления последовательности не отрабатывает. К документам программного доступа нет. Косяк.

Игорь Косяк, в типовых конфигурациях в процедурах «ПередЗаписью» и «ПриЗаписи» сначала проверяется условие «ОбенДанными.Загрузка = Истина» и если условие соблюдается происходит отрабатывает оператор «Возврат», т.е. не выполняются дальнейшие операторы (а это могут быть проверки, формирование движений по регистрам, изменение последовательностей и др.). Другими словами при таком режиме только сохраняются реквизиты объекта и его табличные части

Однако, есть подводный кирпич.
Если вдруг, случайно, вам возжелалось по-быстрому грохнуть пару-тройку тысяч неудачно загруженных документов, то можно получить неприятный побочный эффект. К примеру:
Имеем бух, документы поступление товаров+ дополнительные сведения у каждого документа. При включенном режиме загрузка = истина документы шустренько так удаляются, раза в 4…6 быстрее чем по нормальному, Однако, в регистре сведений Дополнительные сведения остаются записи . А пачемушта? А патамушта, в р.с. Доп.св. Измерение Объект ( со ссылкой на поступление товара) является ведущим и при удалении объекта (в смысле приходной накладной) должно само удаляться, а загрузка = истина отключает эту системную фичу. Так что приходится подчищать хвосты врукопашную.

Подстава №2: В режиме загрузки документы не проводятся. Пишет что
«Действие не может выполняться в режиме загрузки данных».

В некоторых типовых конфигурациях фирмы 1С существует возможность ручной корректировки движений документа по регистрам. В конфигурации 1С: Бухгалтерия 8 для этого, при наличии соответствующих прав, нужно открыть движения документа и установить флаг «Ручная корректировка”. Однако, иногда возникает необходимость выполнить корректировку движений большого количества документов. В этом случае нам понадобится обработка, которая изменит движения документов без перепроведения.

Рассмотрим как изменить движения документа на примере конфигурации 1С: Бухгалтерия 8. Менять будем движения по регистру бухгалтерии «Хозрасчетный”. Пусть перед нами стоит задача заполнить суммы налогового учета по данным бухгалтерского. Предположим, что у нас уже есть обработка, которая выбирает необходимые нам документы и последовательно обрабатывает их с помощью описанной нами процедуры «ИзменитьДвиженияДокумента”. Посмотрим как должна выглядеть эта процедура.

Хотелось бы отметить, что без проверки ведения налогового учета на счёте, при попытке записать набор, содержащий проводку с ненулевой суммой по счёту на котором не ведется налоговый учет, возникнет ошибка следующего содержания:

Запись не верна! Поле «Сумма (налоговый учет)” должно быть пустым! (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)

Режим обмена данными устанавливается следующими строками:

Это необходимо для того, чтобы не выполнялся программный код, находящийся в обработчиках событий «ПередЗаписью” модуля набора записей регистра бухгалтерии «Хозрасчетный” и модуля корректируемого документа. В каждом из них (для типовых конфигураций) есть проверка следующего вида:

Признак ручной корректировки документа (ДокументОбъект.РучнаяКорректировка = Истина) необходимо устанавливать для того, чтобы изменения сохранились при повторном проведении документа. При проведении такого документа в конфигурации 1С:Бухаглерия 8 выдается следующее сообщение:

Движения документа отредактированы вручную и не могут быть автоматически актуализированы.

  • Мария Сухоруких

ОбменДанными.Загрузка – атрибут любого объекта в системе 1С предприятие. Он позволяет обозначить при записи объекта что необходимо отключить любые проверки (в т.ч проверки на уровне платформы 1С). Сделано это было для того, что бы избежать конфликтов при обмене данных.
Если вы разрабатываете свою конфигурацию, в всех проверках правильности данных (например, процедура ПередЗаписью) необходимо первой строкой добавить такую строку:
Если ОбменДанными.Загрузка = Истина Тогда
Возврат;
КонецЕсли;
Это является хорошим тоном среди разработчиков 1С.
Если вы когда либо пользовались стандартными обработками (например, Поиск и замена значений, Групповая обработка данных, Универсальный обмен данных и т.п), вы наверное замечали настройку которая называется обычно «Контроль записи». Эта настройка как раз отвечает за включение/выключение атрибута «ОбменДанными.Загрузка».
Использовать этот атрибут очень удобно в программном коде, для отключения всех проверок. Например, данный атрибут необходим если вам необходимо записать объект, но он имеет не заполненные обязательные реквизиты. Это можно так же использовать как способ увеличить скорость массовой обработки данных – если вы отключаете все проверки, система записывает объект быстрее.
Пример:
Найти контрагента и изменить его наименование, запись выполнить без стандартных проверок на заполнение.

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *