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 6364 26.12.18 14:14 Сейчас в теме
Спасибо. Включу в план на будущее.
3. davdykin 25 28.12.18 17:35 Сейчас в теме
Спасибо за статью. Интересно, актуально и по делу.
4. ids79 6364 29.12.18 10:47 Сейчас в теме
5. MaxS 2202 03.01.19 18:36 Сейчас в теме
Полезная статья. Правда как мне кажется многие в первую очередь пытаются использовать КД3 на практике и если не получается, особо настойчивые читают теорию. Если получается, доходят до описанного здесь методом проб и ошибок.

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

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

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


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

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

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

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

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

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

Все конфигурации типовые без изменений. А ошибка эта связана с тем что не во всех планах обмена КА есть модуль менеджера ПриПолученииНастроек. Это что получается разработчики никогда не открывали в КА обработку выгрузки правил синхронизации ??? И они до сих пор этого не знают ???? Жесть
23. MaxS 2202 11.05.19 05:26 Сейчас в теме
(22) Всё разработчики знают и давно опубликовали на партнерском форуме исправленную обработку, практически сразу как появилась эта ошибка. Если нет доступа туда, поищите статью на инфостарте. Например у меня в профиле.
Вот и спрашивается при чем тут сама технология ED? Применительно к статье, в которой мы пишем комментарии есть какие-то претензии? Что в этой технологии не правильно? ;)
24. user778014 8 11.05.19 12:04 Сейчас в теме
(23) Спасибо за информацию о кривой обработке. Ситуация все больше напоминает историю про пьяного водителя электрокара. По статье вопросов нет. Пуговицы пришиты намертво ))
21. acanta 10.05.19 10:28 Сейчас в теме
(19) это слишком идеальный вариант, когда для двух разных приемников требуются одни и те же данные выгрузки.
Пример характеристики или серии номенклатуры.
Проблема не в отдельных ошибках, а в допущении, что данные из базы можно выгрузить по формату неизвестно кому, а там уже получатель разберётся что с этим делать.
Выросло такое убеждение из совершенно невообразимого количества служебной информации в базе, не имеющей прикладной пользовательской значимости и напротив, нехватки прикладной информации в некоторых вопросах, вынесенной в код или метаданные.
Необходимость этой служебной информации в свою очередь особенности платформы.
17. user778014 8 10.05.19 03:02 Сейчас в теме
И еще пару негатива о КД3. Так как он зависим от конфигурации типовых то очень часто есть несостыковки формата по релизам и выдаются ошибки при обмене. Это просто капец какой-то !
25. De-Heus 26.09.19 13:14 Сейчас в теме
ERP 2.4 Задача выгрузить в бухгалтерию документ ОтражениеЗарплатыВФинансовомУчете.
Почему то в состав плана обмена не включен указанный документ хотя присутствуют в формате EnterpriseData начиная с версии 1.3?
В состав план обмена Синхронизация данных через унив. формат добавил документ ОтражениеЗарплатыВФинансовомУчете. Как сделать чтоб при проведении документ регистрировался на узле?
27. ids79 6364 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 6364 29.04.20 14:09 Сейчас в теме
(28)Что Вы имеете в виду под "выгрузкой по ссылке"?
В КД3 объекты вообще не выгружаются по ссылкам.
Выгружаются только сами ссылки и ключевые данные.
30. auDemon 29.04.20 18:05 Сейчас в теме
(29)Я имею ввиду, что если зарегистрировать к обмену, например документ счет на оплату, то вместе с ним выгрузится номенклатура (по ПКО).
И возник вопрос: как при определенном отборе (например по родителю) отказаться от выгрузки номенклатуры, т.е. оставить поле пустым.
ПОД номенклатуры при этом не срабатывает. Как оказалось нужно в обработчике ПриОтправке ПКО номенклатуры устанавливать:
ДанныеXDTO = Неопределено.

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

См. также

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

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

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

27.01.2016    79455    Serginio    113    

Полезные примеры СКД, ч.2

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

Еще несколько примеров решения задач в СКД.

06.04.2021    4062    Neti    7    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    16163    rayastar    47    

Звуковое управление в 1С 8.3

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

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

16.03.2021    3128    velemir    31    

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

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

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

10.12.2016    39048    unichkin    74    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5370    comol    31    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    13254    quazare    34    

Форма выбора (подбор) в управляемых формах

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

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    45078    user5300    17    

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

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

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

15.10.2018    32884    tormozit    105    

[БСП] Обмен через Конвертацию данных 2.1

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

Добавим новый план обмена и настроим в БСП типовой обмен через правила конвертации данных (КД 2.1)

03.02.2020    9761    John_d    17    

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

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

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

27.01.2020    45356    ids79    26    

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

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

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

15.01.2020    33499    John_d    22    

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

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

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

20.09.2012    79920    tormozit    131    

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

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

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

31.12.2019    8978    ids79    17    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

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

30.12.2019    25995    kuzyara    38    

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    20030    YPermitin    61    

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

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

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

11.07.2007    50929    tormozit    49    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    10565    Sibars    19    

Полезные процедуры и функции для программиста

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

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

07.10.2019    34613    HostHost    41    

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

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

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

01.10.2019    43636    Yashazz    50    

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

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

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

10.09.2017    47843    tormozit    74    

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

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

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

18.09.2019    18685    feva    42    

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

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

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

06.09.2019    75281    rpgshnik    70    

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

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

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

05.09.2019    62624    ids79    55    

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

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

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

25.04.2019    16716    m-rv    3    

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

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

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

05.09.2019    35928    YPermitin    25    

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

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

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

03.09.2019    27772    YPermitin    81    

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

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

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

22.08.2019    17135    ids79    8    

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

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

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

16.04.2019    21336    m-rv    17    

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

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

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

17.08.2019    38498    ids79    16    

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

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

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

08.08.2019    118195    ids79    69    

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

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

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

02.08.2019    48126    avalakh    26    

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

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

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

01.06.2018    33307    m-rv    22    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    32331    json    15    

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

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

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

26.07.2019    83796    ids79    14    

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

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

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

17.07.2019    41899    ids79    27    

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

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

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

05.12.2017    29111    itriot11    34    

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

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

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

09.07.2019    29743    YPermitin    14    

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

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

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

04.07.2019    20735    SeiOkami    50    

Работа с настройками системы компоновки данных

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

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

02.07.2019    65686    ids79    17    

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

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

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

10.11.2018    39157    ids79    40    

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

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

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

25.06.2019    64179    ids79    26    

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

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

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

11.06.2019    27981    dmurk    147    

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

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

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

16.05.2019    52899    YPermitin    30    

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

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

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

07.04.2019    39179    ellavs    127    

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

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

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

28.03.2019    29235    ellavs    90    

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

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

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

21.03.2019    28795    barelpro    87    

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

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

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

14.03.2019    36130    YPermitin    53    

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

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

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

07.03.2019    66741    ids79    47