1с как изменить признак этотузел

Планы обмена и их использование

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

Подобно тому, как элементами данных справочника являются элементы справочника, элементами данных плана обмена являются узлы плана обмена. Каждый узел идентифицирует участника обмена по данному плану обмена. Кроме этого в каждом плане обмена всегда существует один предопределенный узел, идентифицирующий данную информационную базу.
В состав данных, которыми может производиться обмен, входят элементы информационных структур базы данных, которые описываются следующими объектами встроенного языка:
Константа.МенеджерЗначения. ;
СправочникОбъект. ;
ДокументОбъект. ;
ПоследовательностьНаборЗаписей. ;
ПланВидовХарактеристикОбъект. ;
ПланСчетовОбъект. ;
ПланВидовРасчетаОбъект. ;
РегистрСведенийНаборЗаписей. ;
РегистрНакопленияНаборЗаписей. ;
РегистрБухгалтерииНаборЗаписей. ;
РегистрРасчетаНаборЗаписей. ;
ПерерасчетНаборЗаписей. ;
БизнесПроцессОбъект. ;
ЗадачаОбъект. ;
УдалениеОбъекта.

При описании состава данных плана обмена разработчик имеет возможность указать для каждого типа объектов признак Авторегистрация. Он определяет, каким образом план обмена будет отслеживать изменения этих данных.

Состав данных обмена должен выглядеть следующим образом:

Теперь с помощью конструктора создадим основную форму узла, чтобы описать в ней некоторые действия, которые должны выполняться при создании нового узла обмена.
Суть этих действий будет заключаться в том, что при создании нового узла обмена мы должны будем сформировать для него все необходимые записи регистрации изменений для всех объектов конфигурации, входящих в данный план обмена. Это будет своего рода начальная синхронизация узла обмена всеми данными обмена.
Прежде всего, опишем в модуле формы узла служебную переменную, которая будет хранить признак того, является ли записываемый узел новым или нет.
Перем РегистрацияВНовыйУзел;
Затем создадим обработчик события формы ПередЗаписью.
Код 1C v 8.х
Этот обработчик и будет устанавливать значение нашей служебной переменной в Истина в случае записи нового узла плана обмена.
После этого создадим обработчик события формы ПриЗаписи.
Код 1C v 8.х

Откроем конфигуратор и создадим новый объект конфигурации Обработка с именем ОбменДанными. Перейдем на закладку Прочее и откроем модуль объекта.
Создадим в нем процедуру ОбменСФилиалами.
Код 1C v 8.х
Теперь создадим основную форму обработки и в обработчик события нажатия кнопки Выполнить – КнопкаВыполнитьНажатие вставим вызов процедуры ОбменСФилиалами().
Код 1C v 8.х

Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена Филиалы. Сначала создадим процедуру, которая используется нами при обмене данными, – ЗаписатьСообщениеСИзменениями.
Код 1C v 8.х
На этом создание процедуры записи данных обмена закончено.

Источник

План обмена

Общие сведения об обмене данными

Механизмы обмена данными «1С:Предприятия» позволяют организовывать обмен информацией, хранимой в базе данных, с другими программными системами. К механизмам обмена данными могут быть отнесены:

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

Что такое план обмена

Для того чтобы существовала возможность обмена какими-либо данными с кем-либо, необходимо некоторым образом идентифицировать тех, с кем мы будем обмениваться, и для каждого из них описать перечень обмена. Обе эти задачи позволяет решать объект конфигурации «План обмена». Подобно тому, как элементами данных справочника являются элементы справочника, элементами данных плана обмена являются узлы плана обмена.

Читайте также:  Ваз 2110 признаки забитого сапуна

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

В обмене данными могут участвовать:

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

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

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

Добавление плана обмена

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

Теперь определим состав объектов, участвующих в обмене. Для этого на закладке «Основные» нажмем кнопку «Состав».

Затем создадим основную форму списка плана обмена, чтобы описать в ней некоторые действия по регистрации нового узла обмена.

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

Кнопка «Зарегистрировать изменения» должна быть доступна только в случае, если текущий узел не является предопределенным для данной информационной базы, иначе регистрация изменений невозможна. Чтобы обеспечить такое поведение кнопки, создадим в модуле формы списка функцию, выполняющуюся на сервере без контекста и возвращающую истину, если переданный в функцию узел является предопределенным.

Процедуры обмена данными

Процедуры записи и чтения данных

Источник

Как отлучить базу РИБ от основной

(17) 1C-CHIP, Вы наверное ее в режиме управляемого приложения открываете. Это делается всего одной строчкой:

+ 1 к ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

не надо выдумывать никаких специальных обработок для этого

(21) DenisCh,
Добрый день, подскажите пожалуйста,
Я работаю сейчас по книжке Радченко, делаю 24 урок, раздел Изменение структуры узлов.
Создал Периферийную ИБ, теперь попытался ее сделать самостоятельной!
Попытался сделать обработку, как вы писали, но не получается при сохранении пишет переменная не определена (ПланыОбмена).
Создаю периферийную ИБ программно с помощью обработки, по книжке.
&НаСервереБезКонтекста
Функция ПредопределенныйУзел (Узел)
Возврат Узел = ПланыОбмена.Отделения.ЭтотУзел();
КонецФункции

&НаКлиенте
Процедура СоздатьНачальныйОбраз(Команда)
Диалог = Новый ДиалогВыбораФайла (РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = «Укажите каталог информационной базы:»;
Если Диалог.Выбрать()Тогда
СоздатьНачальныйОбразНаСервере (ПолеВводаОтделения,Диалог.Каталог);
Предупреждение(«Создание начального образа узла завершено»);
КонецЕсли;

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

Читайте также:  Самые первые признаки вич инфекции у женщин на первой стадии

&НаСервереБезКонтекста
Процедура ЗаписатьИзмененияНаСервере (Узел,ИмяФайла)
//Создать и проанализировать обьект ЗаписьXML
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
//Создать обьект ЗаписьСообщенияОбмена и начать запись сообщения
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML,Узел);
//Записать содержимое тела сообщения обмена данными распределенной иб
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения);
//Закончить запись сообщения и запись XML
ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ПрочитатьИзменения(Команда)
Диалог = Новый ДиалогВыбораФайла (РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = «Укажите файл обмена:»;
Если Диалог.Выбрать()Тогда
ПрочитатьИзмененияНасервере (Диалог.ПолноеИмяФайла);
Предупреждение(«Чтение изменений завершено»);
КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПрочитатьИзмененияНаСервере (ИмяФайла)
//Создать и проанализировать обьект ЧтенияXML
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
//Создать обьект ЧтениеСообщенияОбмена и начать чтение сообщения.
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
//Прочитать содержимое тела сообщения.
ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения);
//Закончить чтение сообщения и чтение XML
ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
КонецПроцедуры

Подскажите пожалуйста как правильно сделать. Я новичок в этом деле)
Спасибо Большое!

Источник

Разработка функционала обмена с несколькими внешними точками

Недавно попалось задание – организовать двухсторонний обмен данными с неким FTP сервером. В обмен должны попадать изменяемые с последней выгрузки документы. Обмен должен выполняться как вручную, так и автоматически по заданному расписанию. По возможности, требовалось обойтись без изменения типовой конфигурации.

После выполнения этого задания появилось следующее – а теперь организовать выгрузку данных, относящихся к другому складу на иной FTP-сервер.

Поделюсь некоторыми идеями в решении данной задачи.

Так как требовалось фиксировать изменения данных, попадающих в выгрузку, то использование планов обмена (конечно, в режиме «не РИБ») показалось очевидным. Благо, что, начиная с релиза 8.3.13, платформа позволяет создавать новые планы обмена в расширениях. Хочется отметить, что с планы обмена в расширениях вполне работоспособны и их использование в разработке практически ничем не отличается от планов обмена стандартной конфигурации. Наверное, единственным отличием является определение состава плана обмена. В состав планов обмена расширения могут включаться только объекты, созданные и заимствованные в текущем расширении.

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

В пользовательском режиме следует создать узлы обмена для каждой из точек обмена. Если подсистемы в расширении не настраивались, то настроить ПО можно через «Все функции» («Все действия» в ранних релизах платформы).

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

Правильная настройка узлов представлена на рисунке:

Предопределенный узел переименовывается во что-то, выделяющее его среди других узлов. Так как часто придется программно обращаться к узлам обмена по коду, следует ответственно отнестись к их назначению. Рекомендуется запретить изменение кода пользователями.

Программную реализацию обмена удобно выполнять через внешнюю обработку. По стандартам БСП для подключения обработки к современным типовым конфигурациям необходимо выполнить стандартные подготовительные действия.

В модуле объекта разместить (скопировать из общего модуля, взять из шаблона) следующие функции и процедуры:

В зависимости от подхода функция ПолучитьТаблицуКоманд() и процедура ДобавитьКоманду() могут отсутствовать, а их код размещаться в основной функции СведенияОВнешнейОбработке().

Основные моменты, требующие изменения общего шаблона:

Указываем, что создается именно дополнительная обработка.

Здесь важно указать название команды (будущего регламентного задания), ее идентификатор и признак ВызовСерверногоМетода – указывающего на то, что код функционала обмена будет размещен в самом модуле обмена и исполняться на сервере.

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

Код исполнения размещается в процедуре

Допустим, для обмена была разработана и размещена в модуле процедура ВыполнитьОбмен, входным параметром которой является ссылка на узел обмена.

Читайте также:  Признаки спаечного процесса в области левых придатков матки

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

Обработка готова к подключению.

Подключение осуществляется в пользовательском режиме. Раздел НСИ и администрирование\ Печатные формы, отчеты и обработки. Гиперссылка дополнительные отчеты и обработки доступна только при включенной соответствующей функциональной опции.

При добавлении созданной обработке в табличной части на форме отобразится созданная команда. Из данной формы можно выполнить команду или, что важно, настроить расписание регламентного исполнения.

Приведенный выше пример позволяет организовать регламентный или принудительный обмен одновременно со всеми узлами ПО. А как поступить, если требуется с узлами 1 и 2 обмениваться раздельно в разное время?

Самый простой способ: убрать из процедуры выборку и сократить всю процедуру ВыполнитьКоманду до одной строки

Далее следует «размножить» данные обработки по количеству узлов и все подключить в качестве внешних, для каждой из которых настроить расписание.

Очевидно, что данный подход не очень продуктивный. Можно рассмотреть более органичное решение.

Здесь процедура Добавить команду вызывается внутри цикла обхода выборки для каждого узла, кроме предопределенного. Наименование команды теперь будет содержать наименование узла, а идентификатор (ранее мы его не использовали) код узла.

Процедура ВыполнитьКоманду(. ) теперь будет выглядеть следующим образом:

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

При обновлении ПО – добавлении/изменении/удалении узлов ПО необходимо просто обновить обработку в справочнике.

Источник

Не устанавливается обновление БП с 3.0.64.54 до 3.0.65.69 из-за ошибки получения текущего узла плана обмена

Начну с того, конфигурация полностью типовая и релиз БП 3.0.65.69 требует версию платформы не ниже 8.3.12.1529.

Пробовал обновляться на релизах платформы 8.3.12.1595, 8.3.12.1685 (последний из ветки 8.3.12) и 8.3.13.1513 (последний из ветки 8.3.13).

Обновление в конфигураторе проходит без проблем.

При обновлении в предприятии падает с ошибкой:

Нашёл строку кода, которая возвращает аномальный результат для плана обмена Полный:

ТИИ базы со всеми галками до и после установки cfu-файла проходит без проблем.

Как обновиться до следующего релиза?

(8) Используется только синхронизация с УТ.
Ранее использовался план обмена ОбменУправлениеТорговлейБухгалтерияПредприятия30.
Сейчас используется СинхронизацияДанныхЧерезУниверсальныйФормат.

Я попробовал перед обновлением обработкой удалить все непредопределенные элементы всех планов обмена, но это не помогает.

По бухгалтерию ничего не написано:

Код ошибки: 00-00177655
Статус: Исправлена в выпущенной версии Зарегистрирована: 10.10.2018
Исправлена: «1С:Управление торговлей 11», версия 11.4.5.143

При обновлении конфигурации на платформе 8.3.12 может возникать ошибка:
ОбщаяКартинка.Обсуждения: Имя не уникально!

Выполнить обновление на более ранней версии платформы.

Изменить имя общей картинки с Обсуждения на ПодключениеОбсуждений.

Код ошибки: 00-00177655
Статус: Исправлена в выпущенной версии Зарегистрирована: 10.10.2018
Исправлена: «1С:ERP Управление предприятием 2.0», версия 2.4.5.143
«1С:ERP Управление предприятием 2.0», версия 2.4.6.126 (для тестирования)

При обновлении конфигурации на платформе 8.3.12 может возникать ошибка:
ОбщаяКартинка.Обсуждения: Имя не уникально!

Выполнить обновление на более ранней версии платформы.

Изменить имя общей картинки с Обсуждения на ПодключениеОбсуждений.

Код ошибки: 00-00177655
Статус: Исправлена в выпущенной версии Зарегистрирована: 10.10.2018
Исправлена: «1С:Библиотека стандартных подсистем», версия 2.4.5.234
«1С:Библиотека стандартных подсистем», версия 2.4.6.192
«1С:Библиотека стандартных подсистем», версия 3.0.1.293

При обновлении конфигурации на платформе 8.3.12 может возникать ошибка:
ОбщаяКартинка.Обсуждения: Имя не уникально!

Выполнить обновление на более ранней версии платформы.

Изменить имя общей картинки с Обсуждения на ПодключениеОбсуждений.

Код ошибки: 00-00177655
Статус: Исправлена в выпущенной версии Зарегистрирована: 10.10.2018
Исправлена: «1C:Комплексная автоматизация, редакция 2.0», версия 2.4.5.143

При обновлении конфигурации на платформе 8.3.12 может возникать ошибка:
ОбщаяКартинка.Обсуждения: Имя не уникально!

Выполнить обновление на более ранней версии платформы.

Изменить имя общей картинки с Обсуждения на ПодключениеОбсуждений.

Источник