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

07.03.19

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

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

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

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

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

 

Постановка задачи

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

Данные переносятся в бухгалтерию 3.0, где необходимо детализировать расчеты с банком на счете 57.3 по договорам (для каждого магазина необходимо использовать отдельный договор). Обмен данными между этими конфигурациями реализован через универсальный формат EnterpriseData.

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

Задача состоит в следующем:

  1. Необходимо, в конфигурации УТ 11.4, указывать по каждому эквайринговому терминалу отдельный договор с банком. Элемент справочника «Эквайринговые терминалы» выбирается в списке оплат платежными картами в документе «Отчет о розничных продажах».
  2. Необходимо корректно переносить указанные договоры в бухгалтерию 3.0.

 

Решение задачи

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

Создание дополнительного реквизиты

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

Итак, приступим к решению задачи…

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

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

Версия формата плана обменаВ моем случае, используемая версия – 1.5.

 

Анализ формата данных XDTO

Перед выполнением доработки нам необходимо определить, какие объекты формата мы будем использовать для переноса необходимых нам данных. Открываем XDTO пакет формата требуемой версии в любой из конфигураций. Названия пакетов имеют следующий вид: EnterpriseData_[версия]_[релиз]. В моем случае: EnterpriseData_1_5_2.

Разворачиваем ветку «ТипыОбъектов» и ищем необходимый нам тип объекта «Документ.ОтчетОРозничныхПродажах». Нас будет интересовать реквизит объекта «ОплатаПлатежнымиКартами», который отвечает за перенос безналичных оплат:

Оплата платежными картами

Открываем его и смотрим его тип «ОплатаПлатежнымиКартами»:

Свойства оплаты ПК

Находим этот тип выше по списку и открываем его. Он содержит всего один реквизит «Строка», открываем его. Обращаем внимание на параметр «Максимальное количество», который равен -1. Это говорит о том, что реквизит является списком:

Свойства строки оплаты ПК

Смотрим его тип «ОплатаПлатежнымиКартами.Строка», и также ищем и открываем его в списке типов объектов:

Реквизиты оплаты ПК

Смотрим на доступные реквизиты типа, и видим, что среди них нет договора, есть только Эквайрер с типом «КлючевыеСвойстваКонтрагент» и «ЭквайринговыйТерминал». Ищем состав доступных реквизитов эквайрингового терминала (переходим к типу данного реквизита «КлючевыеСвойстваЭквайринговыеТерминалы» и находим его в списке типов):

Эквайринговый терминал, реквизиты

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

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

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

Дополнительные реквизиты также являются списком, о чем говорит единственный реквизит «Строка» с типом «ДополнительныеРеквизиты.Строка», и с максимальным количеством равным -1. Открываем тип «ДополнительныеРеквизиты.Строка»:

Дополнительные реквизиты

Для данного типа доступно два элемента:

  • Свойство - имеет тип «КлючевыеСвойстваДополнительныеРеквизиты». Находим тип «КлючевыеСвойстваДополнительныеРеквизиты». Он является ссылочным объектом с типом ссылки «СправочникСсылка.ДополнительныеРеквизиты». Данный объект формата обычно используется для переноса значений плана видов характеристик «ДополнительныеРеквизитыИСведения», для реализации переноса дополнительных реквизитов объектов, он нам подойдет:

Свойство дополнительныз реквизитов

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

Типы значения свойства дополнительных реквизитов

На данном этапе мы решили какими объектами формата будем пользоваться и проверили возможность их использования.

Дальше необходимо доработать алгоритмы выгрузки и загрузки данных используя выше описанные объекты.

 

Доработка алгоритма выгрузки данных через универсальный формат

Правила конвертации для обмена через универсальный формат находятся не в макете, как это было в конвертации 2.0, а в общем модуле «МенеджерОбменаЧерезУниверсальныйФормат». Для не значительных изменений можно не пользоваться Конвертацией данных 3.0, а внести все изменения непосредственно в данном модуле, что мы и будем делать.

Нас интересует обработчик «ПриОтправкиДанных» документа «Отчет о розничных продажах». Именно в этом обработчике можно добавить к выгружаемым данным «ДанныеXDTO» дополнительные элементы. Ищем данный обработчик в модуле менеджера по имени (структура написание имен имеет стандартный формат: «ПКО_Документ_ОтчетОРозничныхПродажах_Отправка_ПриОтправкеДанных».   

Как мы решили изначально, будем делать доработки в расширениях, так что добавляем новое расширение со следующими настройками:

Новое расширение конфигурации

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

Дальнейшие действия разберем подробно, по шагам:

Проверяем, что табличная часть документа «Оплата платежными картами» имеет хотя бы одну строку (через параметр обработчика «ДанныеИБ» можно получить доступ к реквизитам выгружаемого документа):

Если ДанныеИБ.ОплатаПлатежнымиКартами.Количество() > 0 Тогда

…..

КонецЕсли

 

Создаем новую таблицу значений с колонками, аналогичными реквизитам типа XDTO: ДополнительныеРеквизиты, и создаем новую строку таблицы:

ДопРеквизиты = Новый ТаблицаЗначений;

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

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

СтрокаДопРеквизитов = ДопРеквизиты.Добавить();

 

Создаем новую структуру для описания элемента формата «Свойство», которое в формате имеет тип «КлючевыеСвойстваДополнительныеРеквизиты». Еще раз находим данный тип в описании формата и открываем свойства его реквизитов:

Свойство дополнительныз реквизитов

 

Значение параметра «Минимальное количество» равное 1 говорит о том, что это свойство является обязательным:

Наименование свойства доп. реквизитов

 

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

ДопСвойство = Новый Структура("Наименование, Ссылка, ЭтоДополнительноеСведение", "ДоговорЭквайринга", "", Ложь);

 

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

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

 

Присваиваем созданную инструкцию элементу строки таблицы значений «Свойство»

СтрокаДопРеквизитов.Свойство = ДопСвойство_Инструция;

 

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

Терминал = ДанныеИБ.ОплатаПлатежнымиКартами[0].ЭквайринговыйТерминал;

 

Договор = Неопределено;

Для каждого ДопРеквизит Из Терминал.ДополнительныеРеквизиты Цикл

                Если ДопРеквизит.Свойство.Заголовок = "Договор эквайринга" Тогда

                                 Договор = ДопРеквизит.Значение;

                КонецЕсли;

КонецЦикла;

Если НЕ ЗначениеЗаполнено(Договор) Тогда

               Возврат;

КонецЕсли;

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

 

Создаем инструкцию для выгрузки договора. Используем правило «Справочник_ДоговорыКонтрагентов»:

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

 

Присваиваем созданную инструкцию элементу строки таблицы значений «ЗначениеСвойства»:

СтрокаДопРеквизитов.ЗначениеСвойства = ЗначениеСвойства_Инструкция;

 

Вставляем таблицу значений с дополнительными реквизитами в структуру «ДанныеXDTO»

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

Ниже приведен код процедуры полностью:

&После("ПКО_Документ_ОтчетОРозничныхПродажах_Отправка_ПриОтправкеДанных")
Процедура ОД_ПКО_Документ_ОтчетОРозничныхПродажах_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)

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

		Терминал = ДанныеИБ.ОплатаПлатежнымиКартами[0].ЭквайринговыйТерминал;
		Договор = Неопределено;
		
		Для каждого ДопРеквизит Из Терминал.ДополнительныеРеквизиты Цикл
			 Если ДопРеквизит.Свойство.Заголовок = "Договор эквайринга" Тогда
			 	  Договор = ДопРеквизит.Значение;
			 КонецЕсли;
		КонецЦикла;
		
		Если НЕ ЗначениеЗаполнено(Договор) Тогда
			Возврат;
		КонецЕсли;

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

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

	КонецЕсли;
	
КонецПроцедуры

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

Выгрузка данных

 

Доработка алгоритма загрузки данных через универсальный формат

Открываем Бухгалтерию 3.0 и определяем, каким образом нам необходимо указывать договор для отображения корректных проводок по счету 57.3.

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

Вид оплаты в документе заполняется уже после загрузки и обработки данных XDTO, так как он не имеет аналогов ни в конфигурации УТ 11.4, ни в описании формата. В файле с выгрузкой по нему нет никаких данных . Для подобных целей обычно используется обработчик объекта «ПередЗаписьюПолученныхДанных», его мы и будем смотреть. Но для начала нам нужно определиться с общем модулем, который содержит необходимые нам правила. 

Ищем модуль менеджера плана обмена через универсальный формат в списке общих модулей. Видим, что в конфигурации их два. Выбираем тот, который имеет приписку «13», так как используемый у нас формат обмена 1.5 больше, чем 1.3:

Менеджеры обмена через универсальный формат

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

Добавляем новое расширение конфигурации.

Открываем нужный модуль менеджера и ищем по поиску необходимый нам обработчик «ПКО_Документ_ОтчетОРозничныхПродажах_ПередЗаписьюПолученныхДанных». В данном обработчике происходит до заполнение реквизитов полученных данных непосредственно перед записью этих данных в объект информационной базы. Обработчик имеет следующие ключевые параметры:

  • ПолученныеДанные – структура данных, которые будет записаны в новый или перезаписаны в существующий объект метаданных. Данные можно дополнить необходимой информацией.
  • ДанныеИБ – найденный объект информационной базы, в случае переноса нового объекта содержит «Неопределено».  

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

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

Добавляем обработчик в расширение с аннотацией «После».

Разберем по шагам действия, которые нам необходимо выполнить:

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

Если ДанныеXDTO.Свойство("ДополнительныеРеквизиты") И ДанныеXDTO.ДополнительныеРеквизиты.Количество()>0 Тогда

….

КонецЕсли;

Перебираем в цикле таблицу дополнительных реквизитов:

Для Каждого Строка Из ДанныеXDTO.ДополнительныеРеквизиты Цикл   

….

КонецЦикла;

Проверяем, что значение свойства дополнительного реквизита равно переданному нами значению «ДоговорЭквайринга»

Если Строка.Свойство.Наименование = "ДоговорЭквайринга" Тогда

….

КонецЕсли;

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

Создаем объект ПКО (Правило конвертации данных) по имени правила, используя стандартную процедуру модуля обмена данными XDTO:

ИмяПКО = "Справочник_ДоговорыКонтрагентов";

ПКОДоговор = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, ИмяПКО);

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

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

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

ПолученныеДанные.ДополнительныеСвойства.Вставить("ДоговорЭквайринга", ДоговорЭквайринга.Ссылка);

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

Ниже приведен код процедуры полностью:

&После("ПКО_Документ_ОтчетОРозничныхПродажах_ПриКонвертацииДанныхXDTO")
Процедура ОД_ПКО_Документ_ОтчетОРозничныхПродажах_ПриКонвертацииДанныхXDTO(ДанныеXDTO, ПолученныеДанные, КомпонентыОбмена)
	
	Если ДанныеXDTO.Свойство("ДополнительныеРеквизиты")
		И ДанныеXDTO.ДополнительныеРеквизиты.Количество()>0 Тогда
		
    	Для Каждого Строка Из ДанныеXDTO.ДополнительныеРеквизиты Цикл
			
			Если Строка.Свойство.Наименование = "ДоговорЭквайринга" Тогда
			
				ИмяПКО = "Справочник_ДоговорыКонтрагентов";
				ПКОДоговор = ОбменДаннымиXDTOСервер.ПКОПоИмени(КомпонентыОбмена, ИмяПКО);
				ДоговорЭквайринга = ОбменДаннымиXDTOСервер.СтруктураОбъектаXDTOВДанныеИБ(КомпонентыОбмена, Строка.ЗначениеСвойства,
				ПКОДоговор, "ПолучитьСсылку");
         		ПолученныеДанные.ДополнительныеСвойства.Вставить("ДоговорЭквайринга", ДоговорЭквайринга.Ссылка);
				Прервать;
				
			КонецЕсли;
		
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

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

Если ИмяТабличнойЧасти = "Оплата" И  ПолученныеДанные.ДополнительныеСвойства.Свойство("ДоговорЭквайринга") Тогда

       Договор = ПолученныеДанные.ДополнительныеСвойства.ДоговорЭквайринга;

КонецЕсли;

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

&Вместо("УстановитьВидОплатыВТабличнойЧасти")
Процедура ОД_УстановитьВидОплатыВТабличнойЧасти(КомпонентыОбмена, ПолученныеДанные, ИмяТабличнойЧасти)
	
	Если ЗначениеЗаполнено(ПолученныеДанные.Организация) И ПолученныеДанные[ИмяТабличнойЧасти].Количество() > 0 Тогда
		
		Для Каждого СтрокаТЧ ИЗ ПолученныеДанные[ИмяТабличнойЧасти] Цикл
		
			СтрокаТабличнойЧасти = ПолученныеДанные.ДополнительныеСвойства[ИмяТабличнойЧасти];
			СтрокаДопСвойств = СтрокаТабличнойЧасти[СтрокаТЧ.НомерСтроки - 1];
			
			ТипОплаты  = СтрокаДопСвойств.ТипОплаты;
			Контрагент = Справочники.Контрагенты.ПустаяСсылка();
		    Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
			
			Если СтрокаДопСвойств.Свойство("Контрагент") Тогда
				Контрагент = СтрокаДопСвойств.Контрагент;
			КонецЕсли;
			
			Если СтрокаДопСвойств.Свойство("ДоговорКонтрагента") Тогда
				Договор = СтрокаДопСвойств.ДоговорКонтрагента;
			КонецЕсли;
			
			Если ИмяТабличнойЧасти = "Оплата" 
				И ПолученныеДанные.ДополнительныеСвойства.Свойство("ДоговорЭквайринга") Тогда
				
				Договор = ПолученныеДанные.ДополнительныеСвойства.ДоговорЭквайринга;
				
			КонецЕсли;				
			
			СтрокаТЧ.ВидОплаты = ВидОплатыОрганизации(
				КомпонентыОбмена,
				ПолученныеДанные.Организация,
				ТипОплаты,
				Контрагент,
				Договор);
		КонецЦикла;
		
	КонецЕсли;

КонецПроцедуры

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

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

Если статья Вам понравилась и оказалось полезной, ставьте звездочку J

 

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

  1. Теоретическая, вводная статья по EnterpriseData
  2. EnterpriseData - часть 2. Процесс выгрузки данных, обработчики выгрузки.

 

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

См. также

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    166462    333    277    

373

SALE! 20%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141517    798    297    

419

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.234.x) и БП 3.0 (3.0.161.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    24018    169    51    

127

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51255    228    69    

185

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36589    94    66    

89

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56207    59    105    

61

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171173    303    257    

378

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 13005 руб.

18.02.2016    186875    589    509    

526
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1555 17.11.18 00:00 Сейчас в теме
Вместо расширения нужно использовать подмену правил обмена. Посмотрите уроки гилева по КД 3.
5. ArchLord42 83 19.11.18 05:03 Сейчас в теме
(1) Все зависит от масштабов доработки.

1) Если она мелкая, скорректировать выгрузку реквизита например, то тянуть из-за этого весь модуль, а потом отдельно его поддерживать это такое себе удовольствие.
2) Если изменений много, тут вопросов нет :)
2. ids79 8538 17.11.18 11:59 Сейчас в теме
Добрый день, Максим.
Спасибо за комментарий.
Как я понял, Вы имеете в виду подключить внешнюю обработку с правилами к элементу плана обмена?
Как вариант, можно так сделать.
Но мне кажеться, что преимуществом моего варианта будет то, что не придеться обновлять правила из обработки после обновлений конфигурации. Нужно будет только проверить переопределенную процедуру.
29. Xershi 1555 03.04.20 12:10 Сейчас в теме
(2) с того момента уже много воды утекло. Внешние обработки уже не функциональны без допила.
А с выходом платформы 8.3.15 все стало намного проще.
Если точечная доработка, то делаем изменение и контроль.
Если глобальная полностью подменяем через расширение.
В КД3 доработки раскидываем по папкам. Пришлось КД3 допилить, чтобы отборы работали корректно.
Далее при обновлении типовой придется сравнить модули правил доработок и внести корректировку.
3. Lok`Tar 89 18.11.18 19:59 Сейчас в теме
4. acanta 18.11.18 20:03 Сейчас в теме
Нда.. EnterpriseData есть, а конвертация данных 3 ему как собаке пятая нога. Может как нибудь во 2-ю конвертацию можно сделать некую конфигурацию, состоящую из XDTO пакета.Ну это так, фантазии..
8. kembrik 10 19.11.18 12:19 Сейчас в теме
(4) Гмм. ну почему же, конвертацией данных 3 вполне можно пользоваться в том же режиме, как и во 2 версии. Правила сохранили в файл - прикрепили к обработчику, подменив обычные. Это народ просто не умеет толком подменой, вот и вставляет зловещие директивы "вместо", хотя можно было бы добавить в расширение общий модуль полностью, а в МенеджереОбменаУт и сделать замену
&Вместо("ДоступныеВерсииУниверсальногоФормата")
Процедура Наш_ДоступныеВерсииУниверсальногоФормата(ВерсииФормата)
	
	ВерсииФормата.Вставить("1.2", МенеджерОбменаЧерезУниверсальныйФормат);
	ВерсииФормата.Вставить("1.3", Наш_МенеджерОбменаЧерезУниверсальныйФормат);
	ВерсииФормата.Вставить("1.4", Наш_МенеджерОбменаЧерезУниверсальныйФормат);
	ВерсииФормата.Вставить("1.5", Наш_МенеджерОбменаЧерезУниверсальныйФормат);
	ВерсииФормата.Вставить("1.6", Наш_МенеджерОбменаЧерезУниверсальныйФормат);
	
КонецПроцедуры
Показать
11. ids79 8538 19.11.18 13:40 Сейчас в теме
(8)Да, так можно сделать.
Но тогда, как и в случае с вынесением модуля во внешнюю обработку, придеться обновлять этот модуль после обновления конфигурации.
Здесь вопрос с объемом доработок, если их мало - предпочтительнее мой вариант, если много - Ваш.
12. kembrik 10 19.11.18 14:49 Сейчас в теме
(11) Типовые правила обмена через ED, мягко скажем, отвратительны, особенно если речь идет про нестандартные направления, из УТ в УТ, из Бухгалтерии в УТ и т.д. Я сам долгое время лепил заплатки в расширениях точечно, но как только возникает необходимость добавить новое направление или объект - тут то и возникают сложности при данном способе. Можно использовать его только как быстрый фикс новой проблемы, а потом уже переносить во "взрослый", полный модуль обмена.
6. dmitryburykin 8 19.11.18 10:58 Сейчас в теме
Вы писали:
"Для решения первой задачи добавим дополнительный реквизит: Договор контрагента в справочник: Эквайринговые терминалы, который выбирается в списке оплат платежными картами в документе: Отчет о розничных продажах. К сожалению, в режиме совместимости, который используется в актуальных типовых конфигурациях (8.3.10) нельзя добавлять реквизиты у заимствованных объектов, поэтому добавим его в основную конфигурацию."
Если для каждого магазина используется один договор, то можно было не менять конфигурацию, а добавить и заполнить Доп. реквизит/ Доп. свойство для магазина - "Договор эквайринга"?
7. kembrik 10 19.11.18 12:10 Сейчас в теме
(6) Тоже обратил внимание на данное изобретение велосипеда. Но тогда статья была бы намного короче). Даже не к магазину можно добавлять а непосредственно к справочнику ЭквайринговыеТерминалы, как в статье, но не снимая конфу с поддержки. Проверил - договор к нему можно добавить "из коробки"
10. ids79 8538 19.11.18 13:36 Сейчас в теме
(7)
Но тогда статья была бы намного короче)

Короче, но не на много.
В основном описывается сам перенос, а дополнительные реквизиты эквайриногово терминала стандартно не переносятся.
13. kembrik 10 19.11.18 15:00 Сейчас в теме
(10) Мне кажется, использовать ДополнительныеРеквизиты можно только в ограниченных случаях, (если в формате обмена у объекта отсутствует базовый тип "Object" пакета ExchangeMessage) и обмен с использованием AdditionalInfo сделать нельзя. Потому что если переносимому объекту в приёмнике этот допреквизит не нужен абсолютно (например есть подходящий в документе) , то его надо будет после переноса удалять из табличной части, а это лишние телодвижения.
9. ids79 8538 19.11.18 13:34 Сейчас в теме
(6)Спасибо за комментарий, Дмитрий.
Точно, можно добавить дополнительный реквизит в справочник: Эквайринговые терминалы. Тогда конфигурацию не нужно снимать с поддержки.
Почему-то я не подумал об этом.
14. b-k-v 19.11.18 18:00 Сейчас в теме
Добрый день.
Если не сложно скиньте пожалуйста скрин релизов УТ 11 начиная с 11_3_4_228
Пример во вложении, только для другой конфы
Спасибо.
Прикрепленные файлы:
16. nazirovramzil 20.11.18 07:18 Сейчас в теме
17. b-k-v 20.11.18 10:32 Сейчас в теме
15. nazirovramzil 20.11.18 07:17 Сейчас в теме
Держите
Прикрепленные файлы:
18. user619273_alevtina 30.12.18 17:23 Сейчас в теме
Спасибо, полезная информация и главное вовремя.
19. user1080864 05.09.19 15:01 Сейчас в теме
Спасибо за статью но все равно не понятно. )))
Если у меня в УТ есть добавленный регистр, и я хочу тянуть его данные в БП, где я создам такой же регистр...
Как мне быть в этом случае с универсальным обменом?
20. ids79 8538 05.09.19 15:11 Сейчас в теме
Если новый регистр сведений, то есть несколько способов:
1. Найти в формате объект с максимально похожими полями и использовать его.
2. Запаковывать все данные регистра в текст и передавать в текстовом поле любого объекта. Потом при получении распаковывать.
3. Добавить в формат новый объект с нужными полями, через который и делать обмен.
user1080864; +1 Ответить
21. Alex10166 33 20.02.20 14:28 Сейчас в теме
Коллеги, подскажите, как добавить новое правило в расширении ? Не менять существующее, а именно новое на объект данных, который не описан в типовых правилах. Пока идея только в том, чтобы весь модуль МенеджерОбмена перенести в Расширение. И , соответственно, в плане сделать адресацию на него, вместо типового.
22. Alex10166 33 20.02.20 14:50 Сейчас в теме
Получилось вот так:
Добавляем в расширение ПриПолученииНастроек из Плана обмена, привязываем к другому МенеджеруОбмена формат 1.6, а МенеджерОбменаЧерезУниверсальныйФормат16 создаем новый в расширении, туда копируем все из МенеджерОбменаЧерезУниверсальныйФормат13 и добавляем свои правила.
При обновлениях, придется только заменять правила в МенеджерОбменаЧерезУниверсальныйФормат16 типовые, если поменяются. Это плохо. Может кто то знает более хороший вариант ? Чтобы типовые правила оставались в МенеджерОбменаЧерезУниверсальныйФормат13 , а в МенеджерОбменаЧерезУниверсальныйФормат16 добавить только недостающие
&Вместо("ПриПолученииНастроек")
Процедура ОбменКА_ПриПолученииНастроек(Настройки)
	Настройки.ИмяКонфигурацииИсточника = ОбщегоНазначенияБП.ИмяКонфигурацииИсточника();
	
	Настройки.ЭтоПланОбменаXDTO = Истина;
	Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Ложь;
	Настройки.ФорматОбмена = "http://v8.1c.ru/edi/edi_stnd/EnterpriseData";
	
	ВерсииФормата = Новый Соответствие;
	ВерсииФормата.Вставить("1.2", МенеджерОбменаЧерезУниверсальныйФормат);
	ВерсииФормата.Вставить("1.3", МенеджерОбменаЧерезУниверсальныйФормат13);
	ВерсииФормата.Вставить("1.4", МенеджерОбменаЧерезУниверсальныйФормат13);
	ВерсииФормата.Вставить("1.5", МенеджерОбменаЧерезУниверсальныйФормат13);
	ВерсииФормата.Вставить("1.6", МенеджерОбменаЧерезУниверсальныйФормат16); 
	              		
	Настройки.ВерсииФорматаОбмена = ВерсииФормата;
	
	Настройки.ПланОбменаИспользуетсяВМоделиСервиса = Истина;
	
	Настройки.Алгоритмы.ПриПолученииВариантовНастроекОбмена   = Истина;
	Настройки.Алгоритмы.ПриПолученииОписанияВариантаНастройки = Истина;
	
	Настройки.Алгоритмы.ПредставлениеОтбораИнтерактивнойВыгрузки = Истина;
	Настройки.Алгоритмы.НастроитьИнтерактивнуюВыгрузку           = Истина;;
КонецПроцедуры
Показать
d4rkmesa; +1 Ответить
23. Alex10166 33 20.02.20 18:54 Сейчас в теме
Интересно, а можно ли типовые правила при этом оставить в модуле самой конфигурации, а дополнительные правила вынести в модуль расширения ? Если у кого то есть решение, поделитесь, пожалуйста !
24. ids79 8538 20.02.20 19:56 Сейчас в теме
(23)Вам не что не мешает добавить только новые правила в расширение.
Только нужно будет также очень аккуратно изменить несколько стандартных процедур для вызова новых правил.
25. Alex10166 33 20.02.20 20:16 Сейчас в теме
(24) У меня так не получилось! Я добавляю ЗаполнитьПравилаОбработкиДанных и ЗаполнитьПравилаКонвертацииОбъектов в Расширение &Вместо и в том же модуле, который создался в Расширении добавляю новые правила. Но у меня эти правила не видятся системой. Выдает ошибку при обмене.
Можете подробнее описать ?
Что должно быть в МенеджереОбмена, который в расширении ?
Какие стандартные процедуры нужно изменять для вызова новых правил ?
26. Alfn 60 03.03.20 23:05 Сейчас в теме
(23) думаю что нет... по причине совершенного зоопарка в процедурах получения данных

По-моему от универсального в этом механизме только название.
Как можно назвать универсальным метод, в котором в обмен по-умолчанию не попадают ключевые данные документов.
27. 57rus 03.04.20 11:29 Сейчас в теме
Сильно не пинайте - совсем начинающий в этих вопросах. УТ 11.4.11.84, формат обмена с БП 1.6.
Сделал все по инструкции выше, при выгрузке сообщения обмена из УТ ошибка:

Направление: Отправка.
ПОД: Документ_ОтчетОРозничныхПродажах.
ПКО: Документ_ОтчетОРозничныхПродажах_Отправка.
Объект: Документ объект: Отчет о розничных продажах, Отчет о розничных продажах БПМС-000041 от 14.03.2020 19:59:45 (e1cib/data/Документ.ОтчетОРозничныхПродажах?ref=97d3fcaa14a7d12d11ea65f9afc5e683).

Значение не является значением объектного типа (Метаданные)
{ОбщийМодуль.ОбщегоНазначения.Модуль(3287)}: Возврат Ссылка.Метаданные().ПолноеИмя();
{ОбщийМодуль.ОбщегоНазначения.Модуль(3203)}: ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяТаблицы]", ИмяТаблицыПоСсылке(ПроверяемаяСсылка));
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(976)}: Если Не ОбщегоНазначения.СсылкаСуществует(Источник.Ссылка) Тогда
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1345)}: ЗначениеСвойства = ДанныеXDTOИзДанныхИБ(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(1190)}: ВыгрузитьСвойство(
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(637)}: ДанныеXDTO = ДанныеXDTOИзДанныхИБ(КомпонентыОбмена, Объект, ПравилоКонвертации, Неопределено);
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(3521)}: ВыгрузкаОбъектаВыборки(КомпонентыОбмена, Данные);
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(491)}: ВыполнитьВыгрузкуЗарегистрированныхДанных(КомпонентыОбмена, НомерОтправленного);
{Обработка.КонвертацияОбъектовXDTO.МодульОбъекта(216)}: ОбменДаннымиXDTOСервер.ПроизвестиВыгрузкуДанных(КомпонентыОбмена);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6235)}: ОбработкаОбменаДаннымиXML.ВыполнитьВыгрузкуДанных();
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6007)}: ЗаписатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СтруктураНастроекОбмена.ОбработкаТранспортаСообщенийОбмена.ИмяФайлаСообщенияОбмена());
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(373)}: ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(2988)}: ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(34)}: ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4797)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(768)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыПроцедуры);
{ОбщийМодуль.ДлительныеОперации.Модуль(759)}: ВыполнитьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

Своими силами локализовать проблему пока не выходит, подскажи направление поиска проблемы?
28. Xershi 1555 03.04.20 12:06 Сейчас в теме
(27) открывайте правила, которые написаны в КД3 анализируйте код.
И смотрите что с этим документом.
Судя по тексту возможно расширение внедрили?
30. 57rus 03.04.20 12:23 Сейчас в теме
(28)

ошибка присутствует как при использовании расширения, так и при внесении изменений в "МенеджерОбменаЧерезУниверсальныйФормат" - расширение при этом отключаю.
31. Xershi 1555 03.04.20 12:31 Сейчас в теме
(30) речь не о доработке обмена. А о доработке конфигурации.
32. 57rus 03.04.20 15:50 Сейчас в теме
(31)
с ED буду конечно разбираться, пока решил проблему расширением с обработчиком ПередЗаписью
33. 2michael 24 08.07.20 14:13 Сейчас в теме
Дмитрий, добрый день.
А как подобным образом отправить реквизит типа строка. "комментарий" например. Только в в процедуре отправки, не подскажете как?
т.е. ДанныеИБ.комментарий
34. ids79 8538 08.07.20 15:05 Сейчас в теме
(33)Это лучше через свойство AdditionalInfo делать.
35. 2michael 24 08.07.20 17:00 Сейчас в теме
(34)
AdditionalInfo


я на пробу, снял конфу с поддержки и добавил в пакет XDTO поле комментарий.
изменил модуль МенеджерОбменаЧерезУниверсальныйФормат13.ДобавитьПКО_Документ_СчетПоставщика_Отправка


ДобавитьПКС(СвойстваШапки, "Комментарий", "Комментарий");

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

Но это я чтобы разобраться. А надо бы как в вашем примере. Что за AdditionalInfo ? в структуре ДанныеXDTO нет такого узла?
Прикрепленные файлы:
36. 2michael 24 08.07.20 18:38 Сейчас в теме
(34)

Создал в каждой базе по допсведению и через него передаю.
Ссылку ему подавай и все тут. Просто тип Строка не пропускает.

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

а AdditionalInfo все-таки где взять не пойму. У меня EnterpriseData_1_6_21
37. ids79 8538 08.07.20 20:10 Сейчас в теме
(36этой статье подробно описано
user811769; 2michael; +2 Ответить
38. ids79 8538 08.07.20 20:17 Сейчас в теме
39. 2michael 24 09.07.20 10:30 Сейчас в теме
(38) Во! Спасибо! Через AdditionalInfo халявно и легко все получилось, а то с допсведениями целый велосипед получился.
40. ids79 8538 09.07.20 10:38 Сейчас в теме
41. Aleksandr_prof 197 18.08.20 09:27 Сейчас в теме
Вопрос. ДанныеXDTO - это структура чего? Это тип данных у XDTO-пакета или какое-то свойство?
42. ids79 8538 20.08.20 13:35 Сейчас в теме
(41)Это отдельная структура, поля которой соответствуют полям объекта XDTO, но это не сам объект XDTO
43. Rois 18.12.20 18:57 Сейчас в теме
Добрый день. Спасибо за статью. Как я понял, не всегда можно выгрузить через AdditionalInfo, т.к это работает только в том случае, если базовый тип у свойства пакета "Object", однако не у всех так документов. Как в этом случае выгрузить реквизит, который есть в источнике (является перечислением) в справочник по наименованию, по сути, мне нужна только строка? Через доп реквизиты?
44. ids79 8538 21.12.20 13:40 Сейчас в теме
(43)Да, можно через доп. реквизиты
45. Rois 22.12.20 09:41 Сейчас в теме
(44) Подскажите, а инструкции в AdditionalInfo работают? Вообще, что нужно для того, чтобы инструкция работала? Наличия свойства в XDTO? Или в любом случае должен ссылочный реквизит выгрузить по правилам?
46. ids79 8538 22.12.20 16:42 Сейчас в теме
(45)Для использования инструкций необходимо указывать правила.
47. Rois 22.12.20 17:50 Сейчас в теме
(46) Я понимаю, что нужно "ИмяПКО". Вопрос в другом, например, в AdditionalInfo у меня есть ссылочные реквизиты, либо, таблица значений с ссылочными реквизитами. Как я понимаю, там такое не отработает, т.е, например, ссылочный реквизит надо выгружать в виде структуры состоящей из всех свойств и гуида (в последствии чтобы затем найти его, и создать если потребуется) или же, как тут лучше?
48. ids79 8538 23.12.20 17:59 Сейчас в теме
(47)AdditionalInfo как правило используется для передачи простых типов: УИД, строк. Но Вы можете туда и инструкцию передать, созданную с указанием ПКО. А потом при получении данных также по правилу получить ссылку на объект.
49. Rois 23.12.20 23:41 Сейчас в теме
50. user1242303 23.06.21 17:24 Сейчас в теме
Спасибо автору за статью!
Очень пригодилась в своё время.
51. Темный 06.10.22 16:34 Сейчас в теме
Добрый день. Подскажите, кто разобрался. Надо передать из УТ в БП доп. реквизит табличной части "Товары" - "Содержание". Смысл тот же, что и в услугах, но для товаров. Что сделал:
Добавил в расширение XDTO-пакет EnterpriseData_1_10_8, точнее его часть "Документ.РеализацияТоваровУслуг.Товары.Строка". Добавил там поле "Содержание", все настройки поля взял у поля "Содержание" в Услугах. Расширение ругнулось, отключил проверку свойства "пакет".
Добавил в расширение модуль "МенеджерОбменаЧерезУниверсальныйФормат", заменил процедуру "ДобавитьПКО_Документ_РеализацияТоваровУслуг_Отправка", дописал строчку
СвойстваТЧ = ДобавитьПКТЧ(ПравилоКонвертации, "", "Товары");
ДобавитьПКС(СвойстваТЧ, "", "Содержание", 1);
Изменил в расширении процедуру ПКО_Документ_РеализацияТоваровУслуг_Отправка_ПриОтправкеДанн­ых;
Реквизит "Содержание" выбирается запросом, выгружается в таблицу, идет даль на отправку, но в файл не попадает. Что и где я не сделал?
52. ids79 8538 06.10.22 19:58 Сейчас в теме
(51) Беглым взглядом вроде все должно работать. Наверно что-то упустили... Проверяйте отладчиком везде ли заполняется Содержание
53. Темный 07.10.22 10:51 Сейчас в теме
(50) (51). Из расширения не работает. Изменил EnterpriseData_1_10_8 в конфигурации и все норм.
54. nano1c 172 15.05.24 16:40 Сейчас в теме
Господа, а как отлаживать типовой обмен, если скажем не заполняются счетаУчета в документе ПоступлениеТоваровУслуг?
Вижу что там есть процедура заполнения счетов, но ничего не происходит, хотя при перевыборе номенклатуры все заполняется. Где-то сбой, но как понять где?
55. lenokv_07 23.09.24 09:34 Сейчас в теме
Статья, супер. Но у меня в УТ 11.4.9.91 была ошибка, пока вместо
ДанныеXDTO.Вставить("ДополнительныеРеквизиты", ДопРеквизиты);
не написала
ДанныеИБ1=ДанныеИБ.ОплатаПлатежнымиКартами[0].ЭквайринговыйТерминал;
ВыгрузитьДополнительныеРеквизитыИСведения(КомпонентыОбмена, ДанныеИБ1, ДанныеXDTO, Истина);

Может кому пригодится
56. lenokv_07 07.10.24 10:44 Сейчас в теме
ДанныеИБ1=ДанныеИБ.ОплатаПлатежнымиКартами[0].ЭквайринговыйТерминал;
ВыгрузитьДополнительныеРеквизитыИСведения(КомпонентыОбмена, ДанныеИБ1, ДанныеXDTO, Истина);

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