EnterpriseData – часть 2. Процесс выгрузки данных

Публикация № 971613

Разработка - Практика программирования

EnterpriseData выгрузка данных правила обработки конвертации объектов и свойств обработчики выгрузки

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

Как я и предполагал, тема обмена данными через ED оказалась актуальной. Предлагаю Вашему вниманию следующую статью из цикла. Тем, кто не читал мою первую, вводную статью, и не знаком с механизмом обмена через ED, рекомендую прочесть сначала ее – первая статья.

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

Поговорим более подробно про процесс выгрузки данных.

Содержание

  1. Обработчик «Перед конвертацией»
  2. Выборка и обход зарегистрированных к выгрузке объектов
  3. Обработка данных по правилам обработки
  1. Конвертация данных
  1. Обработчик «После конвертации»
  2. Полезные процедуры общего модуля «ОбменДаннымиXDTOСервер», используемые при выгрузке данных
  3. Основные элементы структуры «КомпонентыОбмена»

 

Ниже приведена общая схема выгрузки данных, которую мы будем рассматривать в статье:

Общая схема обмена данными через ED

Инициализация параметров, обработчик «Перед конвертацией»

В самом начале выполнения обмена данными происходит инициализация и заполнение структуры «КомпонентыОбмена». Основные элементы структуры смотрите здесь.

Далее, выполняется обработчик «Перед конвертацией», в котором можно выполнить любые необходимые действия перед выгрузкой данных. Например, можно заполнить параметры, заданные в настройках конвертации в КД 3.0:

КомпонентыОбмена.ПараметрыКонвертации.ВыгружатьГруппыТоваров = Ложь;

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

 

Выборка и обход зарегистрированных к выгрузке объектов

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

 

Обработка данных по правилам обработки

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

В ПОД может быть указан признак произвольной выборки данных - «Способ выборки >> Произвольный алгоритм»:

Настройка произвольной выборки данных в ПОД

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

 

Обработчик «При обработке»

Основное назначение данного обработчика – разрешение или запрещение доступных правил конвертации для конкретного объекта выборки:

Основные параметры обработчика:

  1. КомпонентыОбмена – структура с общими параметрами текущего обмена данными. Параметр присутствует во всех обработчиках обмена данными. Основные ключи структуры смотрите в этом разделе.
  2. ДанныеИБ – доступ к данным выгружаемого объекта: справочника или документа.
  3. ИспользуемыеПКО – структура, ключами которой являются ПКО, выбранные для данного ПОД. Значения ключей имеют тип «булево». Значение «Истина» разрешает использовать данное ПКО, значение «Ложь» - запрещает. По умолчанию все значения равны «Истина».

Пример:

ИспользованиеПКО.Справочник_Номенклатура_Отправка = НЕ ДанныеИБ.ЭтоГруппа;

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

ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ДанныеИБ.Владелец);

 

Обработчик «Выборка данных»

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

Обработчик должен вернуть массив объектов ИБ либо массив структур к выгрузке.

Процесс выгрузки данных с произвольным алгоритмом не автоматизирован в БСП полностью. В общем модуле «ОбменДаннымиXDTOСервер» есть механизмы для его реализации, но значительную его часть необходимо реализовывать самостоятельно.

Для использования ПОД с произвольной выгрузкой, необходимо перед выгрузкой данных определить Сценарий выгрузки. Это элемент структуры «КомпонентыОбмена», с типом – «ТаблицаЗначений». В таблице сценариев должны быть перечислены все ПОД с произвольным алгоритмом выгрузки:

КомпонентыОбмена.СценарийВыгрузки = новый ТаблицаЗначений;
КомпонентыОбмена.СценарийВыгрузки.Колонки.Добавить("ИмяПОД");

НоваяСтрока = КомпонентыОбмена.СценарийВыгрузки.Добавить();
НоваяСтрока.ИмяПОД = "Документ_ОстаткиТоваров_Отправка";

Также, необходимо дополнительно указать, что обмен выполняется без использования плана обмена:

КомпонентыОбмена.ЭтоОбменЧерезПланОбмена = Ложь;

 

Конвертация данных

Конвертация данных происходит по правилам, которые состоят из правил конвертации объектов (ПКО), правил конвертации свойств объектов (ПКС) и правил конвертации предопределенных данных (ПКПД). Все они настраиваются в конфигурации КД 3.0.

Процесс конвертации объектов состоит их конвертации всех его свойств.  Каждое свойство объекта, конвертируется согласно выбранному для него ПКО либо ПКПД:

Настройка ПКС для объекта

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

Следует иметь в виду, что в обмене через ED объекты по ссылке не выгружаются полностью, как это было в обмене по правилам КД 2.0. По ссылке выгружаются только ключевые реквизиты объекта, которые необходимы для поиска в базе-приемнике. В некоторых случаях в базе-приемнике могут создаваться новые объекты по переданным ключевым свойствам, это будет подробно описано в следующее статье. 

 

Конвертация свойств первого этапа

На данном этапе происходит конвертация свойств, для которых не установлен признак «Использовать алгоритм конвертации». Если свойство ссылочное, требуется обязательное указание правила конвертации свойства. Если для ссылочного свойства не указано правило конвертации и не установлен флаг «Использовать алгоритм конвертации» - свойство не будет выгружено:

 Конвертация свойств первого этапа

 

Обработчик «При отправке»

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

Основные параметры обработчика:

  1. КомпонентыОбмена – структура с общими параметрами текущего обмена данными.
  2. ДанныеИБ – данные выгружаемого объекта: справочника или документа.
  3. ДанныеXDTO – промежуточная структура, данные которой будут использоваться для создания объектов XDTO.
  4. СтекВыгрузки – массив, который содержит ссылки на объекты, выгруженные на данном шаге обмена данными. Последний элемент массива - это всегда ссылка на текущий выгружаемый объект. По данным стека выгрузки можно определить, что объект выгружен «По ссылке». Также, можно определить родителя выгружаемого объекта. Используя данные стека выгрузки можно поставить условие на выполнения алгоритмов, которые не должны выполнятся в случае выгрузки объекта по ссылке.

Переопределенные в обработчике свойства необходимо добавлять к структуре «ДанныеXDTO». Если свойство простое, оно переносится в структуру «ДанныеXDTO» без изменений. Если свойство составное и для него не указано правило конвертации в настройках ПКС, добавлять его нужно в виде инструкции. Инструкция – это структура состоящая из двух элементов: правило конвертации свойства и само свойства.

Примеры: 

ДанныеXDTO.Вставить("АдресДоставки", АдресДоставкиСтрокой);

Контрагент = новый Структура("ИмяПКО, Значение", "Справочник_Контрагенты_Отправка", Покупатель);
ДанныеXDTO.Вставить("Контрагент ", Контрагент);

Коллекции необходимо добавлять в структуру «ДанныеXDTO» в виде таблиц значений. Свойствами строк таблицы, могут являться данные простых или составных типов. Для составных типов также могут быть использованы инструкции, если для свойств не заданы правила конвертации в настройках ПКС.

Пример:

ТабДопРеквизитов = новый ТаблицаЗначений;
ТабДопРеквизитов.Колонки.Добавить("Свойство");
ТабДопРеквизитов.Колонки.Добавить("ЗначениеСвойства");

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

   НоваяСтрока = ТабДопРеквизитов.Добавить();
   НоваяСтрока.Свойство = новый Структура("ИмяПКО, Значение", "Справочник_ДополнительныеРеквизиты_Отправка", ВыборкаДетальныеЗаписи.Свойство);
   НоваяСтрока.ЗначениеСвойства = ВыборкаДетальныеЗаписи.Значение;

КонецЦикла;

ДанныеXDTO.Вставить("ДополнительныеРеквизиты", ТабДопРеквизитов);

 

Конвертация свойств второго этапа

Правила конвертации второго этапа выполняются только в том случае, если определен обработчик «При отправке».

На данном этапе происходит конвертация свойств, для которых установлен признак «Использовать алгоритм конвертации». Указание правил конвертации для таких свойств в настройках ПКС не является обязательным. Они могут быть заданы в инструкциях в обработчике «При отправке»:

Конвертация свойств второго этапа

 

Обработчик «После конвертации»

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

 

Полезные процедуры общего модуля «ОбменДаннымиXDTOСервер», используемые при выгрузке данных

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

ИнициализироватьКомпонентыОбмена – выполняет инициализацию компонентов обмена данными, создание и первоначальное заполнение структуры «КомпонентыОбмена».

ОткрытьФайлВыгрузки – открывает и подготавливает файл выгрузки данных.

ПроизвестиВыгрузкуДанных – выполняет выгрузку данных согласно правилам и параметрам обмена.

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

ВыгрузитьСвойство – выполняет преобразование свойства объекта ИБ в элемент структуры «ДанныеXDTO».

ПОДПоОбъектуМетаданных – поиск правил обработки данных по типу объекта метаданных.

ПКОПоИмени – выполняет поиск правила конвертации объекта по имени в таблице «ПравилаКонвертацииОбъектов» структуры «КомпонентыОбмена»

ДанныеXDTOИзДанныхИБ – выполняет преобразование данных ИБ в структуру «ДанныеXDTO».

ОбъектXDTOИзДанныхXDTO – выполняет создание объекта XDTO по данным структуры «ДанныеXDTO».

ЗаписьЖурналаРегистрацииОбменДанными – выполняет запись произвольных данных в журнал регистрации.

 

Основные элементы структуры «КомпонентыОбмена»

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

 Общие элементы

ВерсияФорматаОбмена – версия используемого пакета XDTO, например – «1.6».

XMLСхема – пространство имен используемого пакета XDTO.

МенеджерОбмена – общий модуль, в котором находятся правила конвертации или модуль внешней обработки.

УзелКорреспондента - ссылка на узел плана обмена корреспондента.

НаправлениеОбмена – одно из двух значений: «Отправка» или «Получение».

ЭтоОбменЧерезПланОбмена – флаг, указывающий, что обмен данными выполняется с использованием плана обмена.

ФлагОшибки – флаг, указывающий, что в процессе обмена данными произошла ошибка.

СтрокаСообщенияОбОшибке – описание ошибки, произошедшей в процессе обмена данными.

ПравилаОбработкиДанных – таблица значений со всеми правилами обработки данных.

ПравилаКонвертацииОбъектов – таблица значений со всеми правилами конвертации объектов.

ПараметрыКонвертации – структура параметров, которые определены в настройках конвертации.

Элементы, используемые при выгрузке данных

ВыгруженныеОбъекты – массив содержащий все объекты, выгруженные в текущей сессии выгрузки данных.

КоличествоОбъектовКВыгрузке – количество объектов, зарегистрированных к выгрузке.

СчетчикВыгруженныхОбъектов – позиция текущего выгружаемого объекта.

СоответствиеРегистрацияПоНеобходимости – список объектов (соответствие), для которых указан признак выгрузки «ВыгружатьПриНеобходимости».

ВыгруженныеПоСсылкеОбъекты – массив объектов, которые выгружены по ссылкам в процессе выгрузки данных. Ссылки на объекты добавляются в массив, если определены правила регистрации (ПРО) для объекта и в правиле указан режим выгрузки «ВыгружатьПриНеобходимости».

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

ТаблицаПравилаРегистрацииОбъектов – таблица значений со всеми правилами регистрации объектов (в случае, если ПРО заданы для обмена данными).

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

 

На этом, я завершаю описании процесса выгрузки данных через ED.

Продолжение следует…

Если статья Вам понравилась, ставьте плюсик J

 

Другие мои статьи из серии «Новый подход к обмену данными»

  1. Теоретическая, вводная статья по EnterpriseData
  2. Процесс загрузки данных, идентификация объектов
  3. Пример доработки правил конвертации данных без использования КД 3.0

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. kembrik 3 26.12.18 12:00 Сейчас в теме
О, продолжение, отлично, спасибо. Отлично структурирован материал, хоть в книгу верстать.

Реквестирую немного раскрыть тему наиболее элегантного кода программной выгрузки с использованием типовой обработки ВыгрузкаЗагрузкаEnterpriseData. УниверсальныйОбменДаннымиXML освоен, а тут пока не выходит каменная чаша с наскока
2. ids79 5403 26.12.18 14:14 Сейчас в теме
Спасибо. Включу в план на будущее.
3. davdykin 23 28.12.18 17:35 Сейчас в теме
Спасибо за статью. Интересно, актуально и по делу.
4. ids79 5403 29.12.18 10:47 Сейчас в теме
5. MaxS 1932 03.01.19 18:36 Сейчас в теме
Полезная статья. Правда как мне кажется многие в первую очередь пытаются использовать КД3 на практике и если не получается, особо настойчивые читают теорию. Если получается, доходят до описанного здесь методом проб и ошибок.

Некоторые дополнения:
>Основные элементы структуры «КомпонентыОбмена»
>МенеджерОбмена – общий модуль, в котором находятся правила конвертации.
Не только общий модуль, а ещё и модуль внешней обработки.

>НаправлениеОбмена – одно из двух значений: «Выгрузка» или «Загрузка».
"Отправка" или "Получение"
6. ids79 5403 04.01.19 07:46 Сейчас в теме
(5)Спасибо за комментарий, Максим.
Неточности поправил.
8. Vladimir Litvinenko 2294 25.03.19 21:06 Сейчас в теме
(5) Такие материалы полезны в том числе после использования КД 3 на практике, для закрепления и систематизации знаний. И чтобы свои конспекты не писать. Схема в публикации отличная! Обязательно поможет вспомнить как работает система, когда снова придётся работать с КД 3. Дмитрий, спасибо за отличный материал.
9. ids79 5403 26.03.19 10:20 Сейчас в теме
7. Восьмой 49 22.03.19 12:25 Сейчас в теме
Огромное спасибо за материал!
13. ids79 5403 17.04.19 07:32 Сейчас в теме
10. Rabot 77 16.04.19 17:39 Сейчас в теме
Спасибо за статью!
Не могли бы вы пояснить как заставить работать произвольную выборку?
"Для использования ПОД с произвольной выгрузкой, необходимо перед выгрузкой данных определить Сценарий выгрузки."
Куда именно приведённый код нужно вставить, в какую-то обработку общего модуля "ОбменДаннымиXDTOСервер" или в какой-то обработчик конвертации?
11. Rabot 77 16.04.19 18:39 Сейчас в теме
(10) сам спросил сам ответил)
Что бы заработала произвольная выборка в КД3 нужно:

1. Код вставить в обработчик КД "ПередКонвертацией"
Если КомпонентыОбмена.НаправлениеОбмена = "Отправка" Тогда
КомпонентыОбмена.СценарийВыгрузки = новый ТаблицаЗначений;
КомпонентыОбмена.СценарийВыгрузки.Колонки.Добавить("ИмяПОД");
НоваяСтрока = КомпонентыОбмена.СценарийВыгрузки.Добавить();
НоваяСтрока.ИмяПОД = "СВОЁ_ИМЯ_ПОД";
КомпонентыОбмена.ЭтоОбменЧерезПланОбмена = Ложь;
КонецЕсли;


2. В конфигураторе КД3, в справочнике "ПравилаОбработкиДанных", в модуле формы "ФормаЭлемента", в процедурах "СпособВыборкиПриИзменении" и "УстановитьВидимость" - разрешить заполнять поле "ОбъектВыборки" так же и для способа выборки "Произвольный алгоритм".

3. В нужном ПОД, помимо заполнения основных свойст:
3.1 Вкладка "Основные сведения" - установить галку "Произвольный алгоритм";
3.2 Вкладка "Основные сведения" - заполнить поле "Объект выборки";
3.3 Вкладка "Выборка данных" - реализовать произвольный код, который возвращает массив ссылок, которые нужно выгрузить;

Но есть нюанс: при произвольной выборке нужно самостоятельно производить "Выборку изменений", для регистрации номера сообщения у выгруженных данных.
12. Rabot 77 16.04.19 20:12 Сейчас в теме
(11) При такой реализации указанный объект выгружается, но:
1. Номер отправленного в узле не проставляется;
2. Остальные объекты перестали выгружаться.

Вопрос остаётся: как реализовать для одного из документов/справочников свою произвольную выборку при выгрузке данных в КД3?
14. ids79 5403 17.04.19 07:43 Сейчас в теме
(12)Добрый день. На сколько я знаю, так сделать не получится. Только или все объекты по правилам или все по произвольному алгоритму.
Если найдете какой-нибуь способ, напишите, самому интересно.
15. Rabot 77 17.04.19 11:41 Сейчас в теме
(14) Мне кажется, что данный способ выгрузки противоречит логике разработчиков КД3. Мол, если не хотите что-то выгружать, ну так не регистрируйте, а значит создавайте нужные правила регистрации. В крайнем случае, в обработчике ПОД "ПриОбработке" определяйте выгружать данный объект или нет.

Как мне нравилась КД2, и как мне не нравится КД3.
16. user778014 7 09.05.19 23:06 Сейчас в теме
КД3 мертворожденный механизм. За 4 года с момента появления он не смог занять хоть сколько нибудь значительного распространения кроме типовых конфигураций. Идея универсальности не совместима с необходимостью каждый раз изменять конфигурацию и усложнять ее поддержку. Обмен в типовых версиях на базе КД3 не гибкий и до сих пор полон ошибок. Непонятно зачем 1с упорно пытается цепляться за этот неудачный механизм
18. MaxS 1932 10.05.19 05:28 Сейчас в теме
(16) Видимо Вы что-то не так поняли в механизме. ) Обслуживание упрощается, т.к. одни правила - одна конфигурация вместо одной конфигурации и массы правил для каждой пары обмениваемых баз. Независимость от версии конфигурации в другой базе. Отладка правил значительно упрощена по сравнению с КД2.
Ошибки в основном связаны с некорректностью исходных данных. Формат ED не позволяет выгружать некорректные данные, тем самым распространяя бардак по другим базам.
Знаю несколько клиентов, которые для обмена между производственной программой и УПП внедрили в УПП КД3, а не КД2 или какой-то другой механизм.
19. user778014 7 10.05.19 06:19 Сейчас в теме
(18) Возможно что вы чего то не поняли. Ошибки связаны с тем что для работы КД3 предполагается что механизм преобразования в формат ED через XDTO был идентичен в разных конфигурациях. Например в УПП, ЕРП, БП, ЗУП. Однако это возможно только в теории. На практике все эти конфигурации пишут разные команды и в разное время. Поэтому на каждый момент времени существует большая вероятность различий в формате преобразования в ED. Конкретно я столкнулся с ошибками в КА2. Да, следующий релиз пофиксил ошибку но это стоило мне несколько часов бесплодных поисков и несколько дней простоя проекта пока 1с не выпустила обновление. И так через раз
20. MaxS 1932 10.05.19 09:05 Сейчас в теме
(19) Формат ED неизменный в рамках версии формата. Их всего 6. Активно используются последние две. Если данные выгружены в этом формате, значит они уже прошли проверку и удовлетворяют минимальным требованиям формата и другая база обязана принять эти данные.
Сейчас все типовые поддерживают несколько форматов, в связи с чем практически всегда есть формат общий для обеих конфигураций. Похоже Вы путаете ошибки в правилах, которые могут быть и ошибки в реализации самой технологии универсального формата обмена.

Грубо говоря если нетрезвый водитель электрокара въехал в столб, это не означает, что вся технология автомобилей на аккумуляторах ущербна, а на бензине и дизеле лучше.
Т.е. если программист допустил ошибку в правилах, ошибка будет в любом варианте в КД3 и в КД2.
22. user778014 7 11.05.19 01:47 Сейчас в теме
(20) Нетрезвый водитель здесь это тот кто придумал эту схему. Я вот для примера открываю стандартную обработку по выгрузке правил синхронизации из комплекта КД3 в стандартной комплексной КА2.4.7.151 и получаю ошибку
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7400)}: Метод объекта не обнаружен (ПриПолученииНастроек)
ПланыОбмена[ИмяПланаОбмена].ПриПолученииНастроек(НастройкиПланаОбмена);

Все конфигурации типовые без изменений. А ошибка эта связана с тем что не во всех планах обмена КА есть модуль менеджера ПриПолученииНастроек. Это что получается разработчики никогда не открывали в КА обработку выгрузки правил синхронизации ??? И они до сих пор этого не знают ???? Жесть
23. MaxS 1932 11.05.19 05:26 Сейчас в теме
(22) Всё разработчики знают и давно опубликовали на партнерском форуме исправленную обработку, практически сразу как появилась эта ошибка. Если нет доступа туда, поищите статью на инфостарте. Например у меня в профиле.
Вот и спрашивается при чем тут сама технология ED? Применительно к статье, в которой мы пишем комментарии есть какие-то претензии? Что в этой технологии не правильно? ;)
24. user778014 7 11.05.19 12:04 Сейчас в теме
(23) Спасибо за информацию о кривой обработке. Ситуация все больше напоминает историю про пьяного водителя электрокара. По статье вопросов нет. Пуговицы пришиты намертво ))
21. acanta 74 10.05.19 10:28 Сейчас в теме
(19) это слишком идеальный вариант, когда для двух разных приемников требуются одни и те же данные выгрузки.
Пример характеристики или серии номенклатуры.
Проблема не в отдельных ошибках, а в допущении, что данные из базы можно выгрузить по формату неизвестно кому, а там уже получатель разберётся что с этим делать.
Выросло такое убеждение из совершенно невообразимого количества служебной информации в базе, не имеющей прикладной пользовательской значимости и напротив, нехватки прикладной информации в некоторых вопросах, вынесенной в код или метаданные.
Необходимость этой служебной информации в свою очередь особенности платформы.
17. user778014 7 10.05.19 03:02 Сейчас в теме
И еще пару негатива о КД3. Так как он зависим от конфигурации типовых то очень часто есть несостыковки формата по релизам и выдаются ошибки при обмене. Это просто капец какой-то !
25. De-Heus 26.09.19 13:14 Сейчас в теме
ERP 2.4 Задача выгрузить в бухгалтерию документ ОтражениеЗарплатыВФинансовомУчете.
Почему то в состав плана обмена не включен указанный документ хотя присутствуют в формате EnterpriseData начиная с версии 1.3?
В состав план обмена Синхронизация данных через унив. формат добавил документ ОтражениеЗарплатыВФинансовомУчете. Как сделать чтоб при проведении документ регистрировался на узле?
27. ids79 5403 29.09.19 22:36 Сейчас в теме
(25)Нужно добавить этот документ в правила регистрации.
26. De-Heus 26.09.19 13:14 Сейчас в теме
28. auDemon 27.04.20 18:51 Сейчас в теме
Добрый день!
Подскажите такой момент: как в КД3 сделать отбор при выгрузке?
В том числе при выгрузке по ссылке, т.е. если выгружается документ, в котором указана номенклатура, не удовлетворяющая условию, то эта номенклатура не должна выгружаться.
В КД2 это можно сделать в обработчике ПКО "Перед выгрузкой".
В КД3 я прописал в ПОД "ПриОбработке":
Если КакоеТоУсловие Тогда
ИспользованиеПКО.Справочник_Номенклатура_Отправка = Ложь;
КонецЕсли;

но в таком случае по ссылке номенклатура все равно выгружается.
29. ids79 5403 29.04.20 14:09 Сейчас в теме
(28)Что Вы имеете в виду под "выгрузкой по ссылке"?
В КД3 объекты вообще не выгружаются по ссылкам.
Выгружаются только сами ссылки и ключевые данные.
30. auDemon 29.04.20 18:05 Сейчас в теме
(29)Я имею ввиду, что если зарегистрировать к обмену, например документ счет на оплату, то вместе с ним выгрузится номенклатура (по ПКО).
И возник вопрос: как при определенном отборе (например по родителю) отказаться от выгрузки номенклатуры, т.е. оставить поле пустым.
ПОД номенклатуры при этом не срабатывает. Как оказалось нужно в обработчике ПриОтправке ПКО номенклатуры устанавливать:
ДанныеXDTO = Неопределено.

Правда при этом может возникнуть другая проблема: пустая номенклатура не проходит проверку объекта XDTO по схеме (если там обязательно заполнение).
31. ids79 5403 07.05.20 10:21 Сейчас в теме
(30)Да, это не очень правильный способ.
Более правильно добавить отбор в ПКО документа и формировать список номенклатуры, который необходим. Только это придется сделать в каждом документе, где нужно ограничение по номенклатуре.
Но можно сделать отдельный алгоритм и вызывать его во всех необходимых документах.
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    3214    23    infostart    2    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

27.01.2020    15090    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    15659    0    John_d    22    

Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными

Обмен данными 1С Обмен через XML v8 1cv8.cf Бесплатно (free)

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

31.12.2019    6741    0    ids79    17    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    34181    0    unichkin    45    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    10794    0    kuzyara    33    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    25416    0    Yashazz    45    

Оповещения боту из 1С за 31 минуту

Практика программирования Интеграция v8::УФ 1cv8.cf Бесплатно (free)

Поделюсь опытом, как быстро сделать бота с оповещениями в Телеграмм из 1С без лишних затрат.

18.09.2019    14908    4    feva    35    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    26175    0    tormozit    100    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    34842    0    rpgshnik    59    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    37001    0    ids79    52    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    21670    0    YPermitin    24    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    73693    0    tormozit    129    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    21853    0    YPermitin    80    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    11959    0    ids79    7    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    25748    0    ids79    16    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

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

11.07.2007    44772    0    tormozit    38    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    56145    0    ids79    37    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    26444    0    avalakh    21    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    42590    0    ids79    11    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    40550    0    tormozit    72    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    28569    0    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    21492    0    YPermitin    13    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    16475    0    SeiOkami    50    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    14169    0    m-rv    2    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    42324    0    ids79    20    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    21409    0    dmurk    144    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

16.05.2019    35427    0    YPermitin    30    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    17784    0    m-rv    17    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    24266    0    Eret1k    23    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    29345    0    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования Разработка v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    23062    0    ellavs    86    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    27433    0    m-rv    21    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    22771    0    barelpro    82    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    26491    0    YPermitin    53    

Добавление отчетов в типовые конфигурации 1С

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8::УФ v8::СКД 1cv8.cf Бесплатно (free)

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

07.03.2019    45075    0    ids79    45    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    25728    0    itriot11    34    

Функциональные опции 1С 8.3 – все возможные варианты использования

Практика программирования Разработка v8::УФ 1cv8.cf Бесплатно (free)

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

22.02.2019    28957    0    ids79    6    

Информирование пользователя. Работа с объектом «СообщениеПользователю»

Практика программирования Разработка v8::УФ 1cv8.cf Бесплатно (free)

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

15.02.2019    38767    0    ids79    47    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    31471    0    ids79    9    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    71086    0    Serginio    108    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

14.12.2018    35139    0    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    31813    0    ids79    32    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    30609    0    ids79    40    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    37509    0    Unk92    21    

Произвольный код в фоновом режиме

Практика программирования v8 1cv8.cf Бесплатно (free)

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

03.09.2018    23966    0    nikita0832    42    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    34847    0    Rain88    46    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    26251    0    grumagargler    26    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

25.06.2018    26142    0    olegtymko    47    

Введение в механизм представлений в ЗУП ред. 3

Практика программирования v8 v8::СПР ЗУП3.x Бесплатно (free)

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    34126    0    xrrg    82    

Строим графы средствами 1С (без GraphViz)

Практика программирования v8 Бесплатно (free)

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    22882    0    slozhenikin_com    20    

Распределение расходов пропорционально продажам

Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Практика программирования Финансовый учет и бюджетирование (FRP) Учет доходов и расходов v8 v8::ОУ УТ10 УУ Бесплатно (free)

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    17014    0    Rustig    9