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

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

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

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

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

 

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

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

1) Если она мелкая, скорректировать выгрузку реквизита например, то тянуть из-за этого весь модуль, а потом отдельно его поддерживать это такое себе удовольствие.
2) Если изменений много, тут вопросов нет :)
2. ids79 6301 17.11.18 11:59 Сейчас в теме
Добрый день, Максим.
Спасибо за комментарий.
Как я понял, Вы имеете в виду подключить внешнюю обработку с правилами к элементу плана обмена?
Как вариант, можно так сделать.
Но мне кажеться, что преимуществом моего варианта будет то, что не придеться обновлять правила из обработки после обновлений конфигурации. Нужно будет только проверить переопределенную процедуру.
29. Xershi 1125 03.04.20 12:10 Сейчас в теме
(2) с того момента уже много воды утекло. Внешние обработки уже не функциональны без допила.
А с выходом платформы 8.3.15 все стало намного проще.
Если точечная доработка, то делаем изменение и контроль.
Если глобальная полностью подменяем через расширение.
В КД3 доработки раскидываем по папкам. Пришлось КД3 допилить, чтобы отборы работали корректно.
Далее при обновлении типовой придется сравнить модули правил доработок и внести корректировку.
3. Lok`Tar 61 18.11.18 19:59 Сейчас в теме
4. acanta 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 6301 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 6301 19.11.18 13:36 Сейчас в теме
(7)
Но тогда статья была бы намного короче)

Короче, но не на много.
В основном описывается сам перенос, а дополнительные реквизиты эквайриногово терминала стандартно не переносятся.
13. kembrik 3 19.11.18 15:00 Сейчас в теме
(10) Мне кажется, использовать ДополнительныеРеквизиты можно только в ограниченных случаях, (если в формате обмена у объекта отсутствует базовый тип "Object" пакета ExchangeMessage) и обмен с использованием AdditionalInfo сделать нельзя. Потому что если переносимому объекту в приёмнике этот допреквизит не нужен абсолютно (например есть подходящий в документе) , то его надо будет после переноса удалять из табличной части, а это лишние телодвижения.
9. ids79 6301 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 6301 05.09.19 15:11 Сейчас в теме
Если новый регистр сведений, то есть несколько способов:
1. Найти в формате объект с максимально похожими полями и использовать его.
2. Запаковывать все данные регистра в текст и передавать в текстовом поле любого объекта. Потом при получении распаковывать.
3. Добавить в формат новый объект с нужными полями, через который и делать обмен.
user1080864; +1 Ответить
21. Alex10166 20 20.02.20 14:28 Сейчас в теме
Коллеги, подскажите, как добавить новое правило в расширении ? Не менять существующее, а именно новое на объект данных, который не описан в типовых правилах. Пока идея только в том, чтобы весь модуль МенеджерОбмена перенести в Расширение. И , соответственно, в плане сделать адресацию на него, вместо типового.
22. Alex10166 20 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 20 20.02.20 18:54 Сейчас в теме
Интересно, а можно ли типовые правила при этом оставить в модуле самой конфигурации, а дополнительные правила вынести в модуль расширения ? Если у кого то есть решение, поделитесь, пожалуйста !
24. ids79 6301 20.02.20 19:56 Сейчас в теме
(23)Вам не что не мешает добавить только новые правила в расширение.
Только нужно будет также очень аккуратно изменить несколько стандартных процедур для вызова новых правил.
25. Alex10166 20 20.02.20 20:16 Сейчас в теме
(24) У меня так не получилось! Я добавляю ЗаполнитьПравилаОбработкиДанных и ЗаполнитьПравилаКонвертацииОбъектов в Расширение &Вместо и в том же модуле, который создался в Расширении добавляю новые правила. Но у меня эти правила не видятся системой. Выдает ошибку при обмене.
Можете подробнее описать ?
Что должно быть в МенеджереОбмена, который в расширении ?
Какие стандартные процедуры нужно изменять для вызова новых правил ?
26. Alfn 30 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 1125 03.04.20 12:06 Сейчас в теме
(27) открывайте правила, которые написаны в КД3 анализируйте код.
И смотрите что с этим документом.
Судя по тексту возможно расширение внедрили?
30. 57rus 03.04.20 12:23 Сейчас в теме
(28)

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


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


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

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

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

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

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

а AdditionalInfo все-таки где взять не пойму. У меня EnterpriseData_1_6_21
37. ids79 6301 08.07.20 20:10 Сейчас в теме
(36этой статье подробно описано
user811769; 2michael; +2 Ответить
38. ids79 6301 08.07.20 20:17 Сейчас в теме
39. 2michael 21 09.07.20 10:30 Сейчас в теме
(38) Во! Спасибо! Через AdditionalInfo халявно и легко все получилось, а то с допсведениями целый велосипед получился.
40. ids79 6301 09.07.20 10:38 Сейчас в теме
41. Aleksandr55555 102 18.08.20 09:27 Сейчас в теме
Вопрос. ДанныеXDTO - это структура чего? Это тип данных у XDTO-пакета или какое-то свойство?
42. ids79 6301 20.08.20 13:35 Сейчас в теме
(41)Это отдельная структура, поля которой соответствуют полям объекта XDTO, но это не сам объект XDTO
43. Rois 18.12.20 18:57 Сейчас в теме
Добрый день. Спасибо за статью. Как я понял, не всегда можно выгрузить через AdditionalInfo, т.к это работает только в том случае, если базовый тип у свойства пакета "Object", однако не у всех так документов. Как в этом случае выгрузить реквизит, который есть в источнике (является перечислением) в справочник по наименованию, по сути, мне нужна только строка? Через доп реквизиты?
44. ids79 6301 21.12.20 13:40 Сейчас в теме
(43)Да, можно через доп. реквизиты
45. Rois 22.12.20 09:41 Сейчас в теме
(44) Подскажите, а инструкции в AdditionalInfo работают? Вообще, что нужно для того, чтобы инструкция работала? Наличия свойства в XDTO? Или в любом случае должен ссылочный реквизит выгрузить по правилам?
46. ids79 6301 22.12.20 16:42 Сейчас в теме
(45)Для использования инструкций необходимо указывать правила.
47. Rois 22.12.20 17:50 Сейчас в теме
(46) Я понимаю, что нужно "ИмяПКО". Вопрос в другом, например, в AdditionalInfo у меня есть ссылочные реквизиты, либо, таблица значений с ссылочными реквизитами. Как я понимаю, там такое не отработает, т.е, например, ссылочный реквизит надо выгружать в виде структуры состоящей из всех свойств и гуида (в последствии чтобы затем найти его, и создать если потребуется) или же, как тут лучше?
48. ids79 6301 23.12.20 17:59 Сейчас в теме
(47)AdditionalInfo как правило используется для передачи простых типов: УИД, строк. Но Вы можете туда и инструкцию передать, созданную с указанием ПКО. А потом при получении данных также по правилу получить ссылку на объект.
49. Rois 23.12.20 23:41 Сейчас в теме
Оставьте свое сообщение

См. также

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

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

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

16.03.2021    2672    velemir    28    

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

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

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

06.04.2021    2847    Neti    7    

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

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

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

25.03.2021    11113    rayastar    45    

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

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

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

30.08.2020    12488    quazare    34    

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

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

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

28.12.2020    5122    comol    28    

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

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

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

08.05.2020    41783    user5300    17    

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

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

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

27.01.2020    43111    ids79    26    

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

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

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

15.01.2020    32508    John_d    22    

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

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

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

10.12.2016    38857    unichkin    74    

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

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

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

31.12.2019    8885    ids79    17    

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

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

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

30.12.2019    25009    kuzyara    38    

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

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

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

02.12.2019    19599    YPermitin    60    

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

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

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

15.10.2018    32610    tormozit    105    

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

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

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

22.11.2019    10212    Sibars    19    

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

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

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

07.10.2019    34244    HostHost    41    

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

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

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

01.10.2019    42573    Yashazz    50    

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

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

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

20.09.2012    79725    tormozit    131    

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

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

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

18.09.2019    18532    feva    42    

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

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

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

06.09.2019    72618    rpgshnik    70    

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

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

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

05.09.2019    61110    ids79    55    

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

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

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

11.07.2007    50623    tormozit    48    

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

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

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

05.09.2019    34794    YPermitin    25    

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

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

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

03.09.2019    27557    YPermitin    81    

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

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

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

17.08.2019    37836    ids79    16    

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

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

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

10.09.2017    47480    tormozit    74    

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

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

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

08.08.2019    114470    ids79    69    

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

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

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

02.08.2019    46740    avalakh    26    

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

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

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

31.07.2019    31293    json    15    

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

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

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

25.04.2019    16613    m-rv    2    

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

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

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

26.07.2019    81234    ids79    14    

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

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

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

17.07.2019    41286    ids79    27    

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

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

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

09.07.2019    29248    YPermitin    14    

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

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

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

16.04.2019    21212    m-rv    17    

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

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

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

04.07.2019    20634    SeiOkami    50    

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

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

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

02.07.2019    63526    ids79    17    

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

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

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

25.06.2019    62842    ids79    26    

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

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

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

01.06.2018    32949    m-rv    22    

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

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

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

11.06.2019    27742    dmurk    146    

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

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

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

16.05.2019    51785    YPermitin    30    

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

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

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

07.04.2019    38748    ellavs    127    

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

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

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

05.12.2017    29010    itriot11    34    

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

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

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

28.03.2019    29013    ellavs    90    

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

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

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

21.03.2019    28487    barelpro    87    

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

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

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

14.03.2019    35579    YPermitin    53    

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

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

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

27.01.2016    79065    Serginio    113    

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

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

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

07.03.2019    65429    ids79    46    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

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

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    24917    Vladimir Litvinenko    28    

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

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

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

22.02.2019    42920    ids79    19    

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

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

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

10.11.2018    38574    ids79    40