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

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

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

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

122
В статье подробно описан реальный пример доработки обмена данными через 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. Процесс выгрузки данных, обработчики выгрузки.

 

122

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

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

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

Короче, но не на много.
В основном описывается сам перенос, а дополнительные реквизиты эквайриногово терминала стандартно не переносятся.
13. kembrik 3 19.11.18 15:00 Сейчас в теме
(10) Мне кажется, использовать ДополнительныеРеквизиты можно только в ограниченных случаях, (если в формате обмена у объекта отсутствует базовый тип "Object" пакета ExchangeMessage) и обмен с использованием AdditionalInfo сделать нельзя. Потому что если переносимому объекту в приёмнике этот допреквизит не нужен абсолютно (например есть подходящий в документе) , то его надо будет после переноса удалять из табличной части, а это лишние телодвижения.
9. ids79 4467 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 4467 05.09.19 15:11 Сейчас в теме
Если новый регистр сведений, то есть несколько способов:
1. Найти в формате объект с максимально похожими полями и использовать его.
2. Запаковывать все данные регистра в текст и передавать в текстовом поле любого объекта. Потом при получении распаковывать.
3. Добавить в формат новый объект с нужными полями, через который и делать обмен.
user1080864; +1 Ответить
Оставьте свое сообщение

См. также

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

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

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

05.09.2019    16965    ids79    44       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

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

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

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

03.09.2019    11251    YPermitin    69       

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

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

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

17.08.2019    13868    ids79    16       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

08.08.2019    20061    ids79    34       

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

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

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

02.08.2019    13368    avalakh    21       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.

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

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

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

26.07.2019    17925    ids79    8       

Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо

Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!

29700 руб.

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

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

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

17.07.2019    14458    ids79    27       

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

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

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

09.07.2019    11690    YPermitin    12       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

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

29700 руб.

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

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

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

04.07.2019    10340    SeiOkami    49       

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

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

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

25.06.2019    24854    ids79    17       

Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо

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

7500 рублей

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

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

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

11.06.2019    14020    dmurk    134       

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

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

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

16.05.2019    22278    YPermitin    27       

Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо

Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.

9000 рублей

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

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

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

11.05.2019    14104    Eret1k    23       

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

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

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

25.04.2019    8133    m-rv    2       

Многофункциональная выгрузка из 1С: Управление торговлей (УТ11, УТ10) в Бухгалтерию предприятия (БП2, БП3) Промо

Хотите точно знать, что вы выгружаете? Хотите сворачивать товары по НДС или фильтровать товары по доп. реквизиту? Вы волшебник, которому необходимо превращать одних контрагентов в других? Хотите при выгрузке превратить группу товаров в один? Или просто нужен удобный OLE обмен между 1C Управление торговлей (ред. 11 или 10) и 1С Бухгалтерия предприятия (ред. 2 или 3). Тогда эта обработка для вас!

9500 руб.

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

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

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

16.04.2019    10720    m-rv    16       

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

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

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

07.04.2019    19395    ellavs    125       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

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

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

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

28.03.2019    15948    ellavs    83       

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

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

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

21.03.2019    15721    barelpro    82       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

14.03.2019    17072    YPermitin    53       

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

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

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

07.03.2019    29793    ids79    42       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

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

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

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

22.02.2019    19959    ids79    5       

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

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

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

15.02.2019    22106    ids79    38