Не найдено соответствие для значения источника источник без ндс типисточника строка

Опубликовано: 23.04.2024

Рейтинг: 136

  • Обработка

Правила обмена для торговли 10.3 версии 10.3.29.1, бухгалтерия 2.0.64.1. В обработке правила присоединяются в отдельном файле что удобно для доработки и исправления правил.

Теперь правила и Обработка обмена в одном архиве!

Могут возникать ошибки из-за строки "УзелДляОбмена." ее нужно будет заменить в конвертации на "Параметры."

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

Обновлены правила. С последними изменениями в счет-фактурах

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

Electronic Software Distribution

Маркировка 488-ФЗ

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Запросы и отчеты с 29 июня

Расширения конфигурации с 1 июня

Мобильная разработка с 23июня

. я все понял: если путь к правилам длинный, то обработка видит путь частично
J:\182._ОБМЕН_УТ-БП_002\Выгрузка данных из Управления торговлей 10.3 в Бухгалтерию
а обработка увидала только J:\182._ОБМЕН_УТ-БП_002\Выгрузка данных из Упра

Как выход указал I:\Правила3.xml. Тогда правила загрузились

Правила загрузил..
При выгрузке данных выскакивает ошибка:

Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Контрагенты (Справочник: Контрагенты)
ПКС = 17 (ОбособленноеПодразделение --> ОбособленноеПодразделение)
Объект = ПОСТАВЩИКИ (Контрагенты)
СвойствоПриемника = ОбособленноеПодразделение (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (ОбособленноеПодразделение)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8323)
КодСообщения = 13

Ошибка при выгрузке данных: <Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1672)>: Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Контрагенты (Справочник: Контрагенты)
ПКС = 17 (ОбособленноеПодразделение --> ОбособленноеПодразделение)
Объект = ПОСТАВЩИКИ (Контрагенты)
СвойствоПриемника = ОбособленноеПодразделение (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (ОбособленноеПодразделение)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8323)
КодСообщения = 13

. Это очень правильно подмечено

Замечания по работе с обработкой:
В УТ 10.3 (10.3.21.2) не все настройки сохраняются при открытии

При загрузке в БП 2.0 (2.0.48.7)

у нас после обновления Бухгалтерии до 2.0.48.7 теперь тоже при выгрузке из УТ 10.3.21.1 ошибка:

Ошибка при выгрузке данных для узла плана обмена
ТипОбъекта = Документ объект: Реализация товаров и услуг
Объект = Реализация товаров и услуг ГЦ000000366 от 27.05.2013 9:14:14
ОписаниеОшибки = Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПВД = РеализацияТоваровУслуг
Объект = Реализация товаров и услуг ГЦ000000366 от 27.05.2013 9:14:14 (Документ объект: Реализация товаров и услуг)
Обработчик = ПослеВыгрузкиОбъектаВыборки
ОписаниеОшибки = Поле объекта не обнаружено (ДатаИсправленияИсходногоДокумента)
ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(1300)
КодСообщения = 34
ПозицияМодуля = Обработка.ОбменДаннымиXML.МодульОбъекта(1668)
КодСообщения = 72

кто знает, что с этим делать?

всё получилось, спасибо большое за помощь!

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

Релиз УТ 10.3.30.1. Пометил для выгрузки все документы, при попытке выгрузки получаю список:

Начало выгрузки: 20.10.2014 16:49:24

Не найдено соответствие для значения Источника
Источник = КонтактноеЛицоКонтрагента
ТипИсточника = Строка

Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = СчетФактураПолученный (Документ: Счет-фактура полученный)
ПКС = 40 (УчитыватьИсправлениеИсходногоДокумента --> УдалитьУчитыватьИсправлениеИсходногоДокумента)
Объект = Счет-фактура полученный УТСДС000284 от 03.10.2014 18:06:15 (Счет-фактура полученный)
СвойствоПриемника = УдалитьУчитыватьИсправлениеИсходногоДокумента (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (УчитыватьИсправлениеИсходногоДокумента)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8284)
КодСообщения = 13

Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПВД = ПоступлениеТоваровУслуг
Объект = Поступление товаров и услуг УТСДС000436 от 02.10.2014 18:06:15 (Поступление товаров и услуг)
Обработчик = ПослеВыгрузкиОбъектаВыборки
ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = СчетФактураПолученный (Документ: Счет-фактура полученный)
ПКС = 40 (УчитыватьИсправлениеИсходногоДокумента --> УдалитьУчитыватьИсправлениеИсходногоДокумента)
Объект = Счет-фактура полученный УТСДС000284 от 03.10.2014 18:06:15 (Счет-фактура полученный)
СвойствоПриемника = УдалитьУчитыватьИсправлениеИсходногоДокумента (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (УчитыватьИсправлениеИсходногоДокумента)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8284)
КодСообщения = 13
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)
КодСообщения = 34

Ошибка при выгрузке данных: <Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1717)>: Ошибка в обработчике события ПослеВыгрузкиОбъекта
ПВД = ПоступлениеТоваровУслуг
Объект = Поступление товаров и услуг УТСДС000436 от 02.10.2014 18:06:15 (Поступление товаров и услуг)
Обработчик = ПослеВыгрузкиОбъектаВыборки
ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = СчетФактураПолученный (Документ: Счет-фактура полученный)
ПКС = 40 (УчитыватьИсправлениеИсходногоДокумента --> УдалитьУчитыватьИсправлениеИсходногоДокумента)
Объект = Счет-фактура полученный УТСДС000284 от 03.10.2014 18:06:15 (Счет-фактура полученный)
СвойствоПриемника = УдалитьУчитыватьИсправлениеИсходногоДокумента (Булево)
ОписаниеОшибки = Поле объекта не обнаружено (УчитыватьИсправлениеИсходногоДокумента)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8284)
КодСообщения = 13
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)
КодСообщения = 34


Рейтинг: 16

  • 1.jpg

Для корректной работы нееобходимо в обработке "Универсальный обмен данными в формате XML" необходимо создать реквезить "УзелДляОбмена" с типом "ПланОбменаСсылка.ОбменУправлениеТорговлей103БухгалтерияПредприятия30" и вынести его на форму обработки. Отборы по Организациям, складам, подразделениям указывается в созданном узле обмена. Выгружаются все документы, справочники и регистры сведений поддерживаемые типовым механизмом синхронизации. Ниже привожу список.

Документы:

Авансовый отчет
Аккредитив переданный
Аккредитив полученный
Возврат товаров от покупателя
Возврат товаров поставщику
Возврат товаров поставщику из НТТ
ГТД по импорту
Доверенность
Инвентаризация товаров на складе
Инкассовое поручение переданное
Инкассовое поручение полученное
Оприходование товаров
Отчет комиссионера о продажах
Отчет комитенту о продажах товаров
Отчет о розничных продажах
Платежное поручение входящее
Платежное поручение исходящее
Платежное требование полученное
Платежный ордер: поступление денежных средств
Платежный ордер: списание денежных средств
Поступление доп. расходов
Поступление товаров и услуг
Поступление товаров и услуг в НТТ
Приходный кассовый ордер
Расходный кассовый ордер
Реализация товаров и услуг
Списание товаров
Счет-фактура выданный
Счет-фактура полученный
Требование-накладная
Перемещение товаров
Комплектация номенклатуры
Корректировка долга
Платежное требование выставленное
Переоценка товаров в рознице
Счет на оплату покупателю
Заказ покупателя
СчетНаОплатуПоставщика
ДокументРасчетовСКонтрагентом
КорректировкаРеализации
КорректировкаПоступления
ОплатаОтПокупателяПлатежнойКартой

Справочники:

Банки
Банковские счета
Валюты
Виды контактной информации
Договоры контрагентов
Документы удостоверяющие личность
Должности организаций
Классификатор единиц измерения
Классификатор стран мира
Контактные лица
Контрагенты
Номенклатура
Номенклатурные группы
Номера ГТД
Организации
Пользователи
Роли контактных лиц
Склады (места хранения)
Статьи движения денежных средств
Статьи затрат
Типы цен номенклатуры
Физические лица
Контактные лица контрагентов
Виды оплат чека ККМ
Виды взаиморасчетов
КлассификаторТНВЭД

Регистры сведений:

Контактная информация
Курсы валют
Паспортные данные физического лица
Фамилия, имя, отчество физического лица
Ответственные лица организации
СведенияОбАлкогольнойПродукции

Уже измененную обработку "Универсальный обмен данными в формате XML" так же можно скачать из данной публикации.

UPDATE:

Добавлены правила обмена для УТ 10.3.38.1 и БП 3.0.46.18

UPDATE:

Добавлены правила обмена для УТ 10.3.40.1 и БП 3.0.47.33

UPDATE:

Добавлены правила обмена для УТ 10.3.42.1 и БП 3.0.51.4

UPDATE:

Добавлены правила обмена для УТ 10.3.46.2 и БП 3.0.58.20

UPDATE:

Добавлены правила обмена для УТ 10.3.47.3 и БП 3.0.64.10

UPDATE:

Добавлены правила обмена для УТ 10.3.49.1 и БП 3.0.65.91

UPDATE:

Добавлены правила обмена для УТ 10.3.53.2 и БП 3.0.70.61

UPDATE:

Добавлены правила обмена для УТ 10.3.62.2 и БП 3.0.77.89

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

Electronic Software Distribution

Маркировка 488-ФЗ

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Запросы и отчеты с 29 июня

Расширения конфигурации с 1 июня

Мобильная разработка с 23июня

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

Вадим добрый день, нужно доработать Ваши правила для нашей базы. (выдается ошибка)
Напишите мне в скайп lavrovalex5093 - обсудим цену.
это срочно, так что жду вашего сообщения!

Ошибка при выгрузке данных: <Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1653)>: Ошибка в глобальном обработчике события ПередКонвертациейОбъекта (конвертация)
ПКО = ВозвратТоваровОтПокупателя (Документ: Возврат товаров от покупателя)
Объект = Возврат товаров от покупателя УТУТ0000037 от 02.10.2017 12:24:52 (Возврат товаров от покупателя)
Обработчик = ПередКонвертациейОбъекта (глобальный)
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: <(2,51)>: Переменная не определена (УзелДляОбмена)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9347)
КодСообщения = 64

Добрый день. Я скачала ПравилаОбмена_УТ_10.3.46.2_БП_3.0.58.20 и
Универсальный обмен данными в формате XML
Но у меня выгрузка не работает. При загрузке в БП выходит ошибки

У меня УТ 10.3.40.1 и БП 3.0.60.46
С этими версиями не будет работать?

Теперь при загрузке БП 3.0 выдает:

Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = ПоступлениеТоваровУслуг
ТипОбъекта = Поступление (акт, накладная)
Объект = Поступление (акт, накладная) 00000000086 от 09.01.2018 11:47:52
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Поле объекта не обнаружено (СкладДляОбменаДаннымиСУТ)
ПозицияМодуля = (15)
КодСообщения = 54

Добрый день!
Скачала правила УТ 47.3 - БП 64.10. Тестирую правила на версиях УТ 47.3 и БП 64.54.

При загрузке БП 3.0 выдает:

Ошибка в глобальном обработчике события ПослеЗагрузкиОбъекта (конвертация)
ИмяПКО = ПоступлениеТоваровУслуг
ТипОбъекта = Поступление (акт, накладная)
Объект = Поступление (акт, накладная)
Обработчик = ПослеЗагрузкиОбъекта (глобальный)
ОписаниеОшибки = Поле объекта не обнаружено (СкладДляОбменаДаннымиСУТ)
ПозицияМодуля = (15)
КодСообщения = 54

(16) Добрый день!
Думаю дело в реквизите "УзелДляОбмена", описанные рекомендации в описание к публикации были проделаны?
"Для корректной работы необходимо в обработке "Универсальный обмен данными в формате XML" необходимо создать реквизит "УзелДляОбмена" с типом "ПланОбменаСсылка.ОбменУправлениеТорговлей103БухгалтерияПредприятия30" и вынести его на форму обработки. Отборы по Организациям, складам, подразделениям указывается в созданном узле обмена. "

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

Добрый вечер, Вадим!

Мне очень нужен обмен между УТ 10.3.43.1 и БП 3.0.65.84 готов купить за деньги.

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

До связи,
Партнер InfoStart
Дмитрий

Добрый вечер, Вадим!

Готов купить правила для односторонней выгрузки из УТ 10.3.50.1 в БП 3.0.67.67

С уважением,
Александр

(29)Скажите, пожалуйста, выгрузка услуг выполняется только в этом блоке:


СчетНаОплатуПокупателю
Документ: Счет на оплату покупателю
1800
ВыгрузкаДокументовЗаказПокупателяСчетНаОплат ­уПокупателю = Неопределено;
Если Параметры.Свойство("ВыгрузкаДокументовЗаказПокупателяСчетНаОплатуПокупателю", ВыгрузкаДокументовЗаказПокупателяСчетНаОплатуПокупателю)
И (ВыгрузкаДокументовЗаказПокупателяСчетНаОплатуПокупателю = Перечисления.ВыгрузкаДокументовЗаказПокупателяСчетНаОплатуПокупателю.НеВыгружать ИЛИ ВыгрузкаДокументовЗаказПокупателяСчетНаОплатуПокупателю = Перечисления.ВыгрузкаДокументовЗаказПокупателяСчетНаОплатуПокупателю.ЗаказПокупателя)
Тогда
Отказ = Истина;
КонецЕсли;
Если Объект.ЭтоНовый() Тогда
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Объект.ДополнительныеУсловия = Объект.Организация.ДополнительныеУсловияПоУмолчанию;
КонецЕсли;

Параметры.ДокументыСОпределениемДопРеквизитов.Добавить(Объект.ПолучитьСсылкуНового());
// Для установки статуса оплаты в регистре "Статусы документов"
КонецЕсли;
true ­ентификатору>
true ­НовыйНомерИлиКодЕслиНеУказан>
true ­/НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике>
ДокументСсылка.СчетНаОплатуПокупателю
ДокументСсылка.СчетНаОплатуПокупателю

.

8
Товары --> Товары
100


ТаблицаПоТоварам = Источник.Товары.Выгрузить();
Запросы.Комплекты.УстановитьПараметр("МассивНоменклатуры", ТаблицаПоТоварам.ВыгрузитьКолонку("Номенклатура"));
ТабКомплекты = Запросы.Комплекты.Выполнить().Выгрузить();
ТаблицаПоТоварам.Колонки.Добавить("Комплект");
ТаблицаПоТоварам.Колонки.Удалить("Коэффициент");
Для каждого СтрокаТовары Из ТаблицаПоТоварам Цикл
НайденнаяСтрока = ТабКомплекты.Найти(СтрокаТовары.Номенклатура, "Ссылка");
Если НайденнаяСтрока <> Неопределено Тогда
СтрокаТовары.Комплект = НайденнаяСтрока.Комплект;
КонецЕсли;
КонецЦикла;
КоллекцияОбъектов = УправлениеЗапасами.СформироватьТаблицуКомплектующих(ТаблицаПоТоварам, Источник);
КоллекцияОбъектов.Колонки.Добавить("Коэффициент");
КоллекцияОбъектов.Колонки.Добавить("Содержание");
Для каждого СтрокаТовары Из КоллекцияОбъектов Цикл
СтрокаТовары.Коэффициент = СтрокаТовары.ЕдиницаИзмерения.Коэффициент;
СтрокаТовары.Количество = СтрокаТовары.Количество * СтрокаТовары.ЕдиницаИзмерения.Коэффициент;
//СтрокаТовары.Цена = ?(СтрокаТовары.Количество <> 0, СтрокаТовары.Сумма / СтрокаТовары.Количество, 0);
СтрокаТовары.Содержание = "";
КонецЦикла;
// Добавим услуги
Для Каждого СтрокаУслуги Из Источник.Услуги Цикл
СтрокаТовары = КоллекцияОбъектов.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТовары, СтрокаУслуги);
КонецЦикла;

// Обработка скидок
КоллекцияОбъектов.Колонки.Добавить("ПроцентСкидки");
КоллекцияОбъектов.Колонки.Добавить("СуммаСкидки");
Для каждого СтрокаТовары Из КоллекцияОбъектов Цикл
СтрокаТовары.ПроцентСкидки = СтрокаТовары.ПроцентСкидкиНаценки + СтрокаТовары.ПроцентАвтоматическихСкидок;
СтрокаТовары.Сумма = СтрокаТовары.Цена * СтрокаТовары.Количество;
СтрокаТовары.СуммаСкидки = СтрокаТовары.Сумма / 100 * СтрокаТовары.ПроцентСкидки;

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

  • Попытка обратиться к предопределенному элементу приводит к ошибке "Предопределенный элемент отсутствует в данных". Возможные причины появления такой ошибки:
    • Это периферийный узел и предопределенные данные из центрального узла еще не загружены.
    • Область информационной базы инициализирована, когда обновление предопределенных данных отключено на уровне информационной базы или на уровне проблемного объекта метаданных.
    • Предопределенные данные удалены.
    • У предопределенных данных очистили значение реквизита "ИмяПредопределенныхДанных".
  • При работе с предопределенными данными обнаружено дублирование (две или более записи в данных имеют одно значение свойства ИмяПредопределенныхДанных). Возможные причины такой ошибки
    • Предопределенные элементы созданы в режиме "ОбменДанными.Загрузка = Истина". Например, при обмене данными в РИБ.

Анализ причин ошибок при работе с предопределенными данными и способы их устранения.

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

Отсутствие предопределенных элементов в данных

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

  • Данные:
    • Изменение предопределенных данных,
    • Удаление предопределенных данных,
    • Установка инициализации предопределенных данных,
  • ИнформационнаяБаза:
    • Обновление предопределенных данных,
    • Установка обновления предопределенных данных.

По событиям в списке можно понять, почему предопределенный элемент не обнаружен.
Если в журнале имеется события " Данные. Изменение предопределенных данных ", у которых новое имя предопределенных данных – пустая строка. Это значит, что пользователь или код на встроенном языке очистил имя предопределенных данных, сделав элемент не предопределенным. Для восстановления элемента достаточно вернуть свойству ИмяПредопределенныхДанных старое значение. Желательно доработать конфигурацию таким образом, чтобы не допустить повторение такой ситуации: изменить права, модифицировать код на встроенном языке.
Если в конфигурации есть событие " Данные. Удаление предопределенных данных ", то это означает, что предопределенные данные удалены пользователем или из встроенного языка. Для исправления необходимо создать недостающий предопределенный элемент. Изменить конфигурацию таким образом, чтобы не допускать удаления используемых предопределенных данных.
Если в журнале имеется событие " Данные. Установка инициализации предопределенных данных ", в которых установлен признак инициализации предопределенных данных, то это означает, что из встроенного языка был установлен признак инициализации предопределенных данных, а предопределенные элементы не созданы (все или частично). Для исправления необходимо модифицировать конфигурацию, чтобы создавались все предопределенные данные, либо не было обращений к отсутствующим данным.
Если в журнале имеется событие " ИнформационнаяБаза. Обновление предопределенных данных ", в котором есть комментарий "Обновление предопределенных данных отключено". Это означает, что в базе данных на уровне ИБ, узла или объекта метаданных отключено автоматическое обновление предопределенных данных. В таком случае платформа не выполняет реструктуризацию предопределенных данных. Для выяснения источника проблемы необходимо:

Дублирование предопределенных данных.

Дубли могут возникать только в режиме загрузки данных (ОбменДанными.Загрузка = Истина). В этом случае контроль уникальности предопределенных будет отключен.
Если в журнале регистрации есть записи " Данные. Добавление предопределенных данных ", значение ИмяПредопределенныхДанных у которых приводит к дублю. Это означает, что дубли предопределенных данных созданы из встроенного языка, например, были загружены при обмене данными.
Если в журнале регистрации есть записи " Данные. Изменение предопределенных данных ", значение НовоеИмяПредопределенныхДанных у которых приводит к дублю. Это означает, что дубли предопределенных данных созданы пользователем или из встроенного языка, например, были загружены при обмене данными или в форме элемента некорректно установлен режим загрузки и пользователь указал дублирующее имя.
В этих случаях для исправления ошибки необходимо определить, какой элемент является корректным (например, определив ссылки на него) и ненужный элемент сделать обычным (не предопределенным, очистив поле ИмяПредопределенныхДанных ). Обязательно перед удалением элемента проверьте необходимость заменить ссылки с удаляемого предопределенного элемента на корректную ссылку.

Рекомендации по работе с предопределенными данными

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

  • Ограничить права доступа на предопределенные данные таким образом, чтобы было невозможно их удалять или очищать свойство ИмяПредопределенныхДанных .
  • Избегать модификации предопределенных данных в привилегированном режиме.
  • Избегать модификации в режиме загрузки данных, когда свойство " ОбменДанными.Загрузка " установлено в " Истина ".
  • Не отключать автоматическое обновление предопределенных данных.

Необходимо помнить, что в периферийном узле все предопределенные данные не создаются платформой, а приходят из центрального узла. Поэтому при разработке конфигураций, работающих в РИБ, следует обязательно анализировать как будет выполняться обновление данных при первом запуске, чтобы не обращаться к новым предопределенным данным до их загрузки из центрального узла.

Конвертация строки в справочник (перечисления) и обратно

Конвертация строки в справочник

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


Рисунок 1 – Описание обработчика «Перед Выгрузкой».

Конвертация строки в перечисление

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


Конвертация справочника в строку

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


Конвертация перечисления в строку

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


Конвертация справочника в перечисление (перечисление в справочник)

Конвертация справочника в перечисление

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

1. Необходимо в правиле конвертации объектов на вкладке «Настройки», включить свойство «Не запоминать выгруженные объекты» (см. рисунок 2).


Рисунок 2 – Не запоминать выгруженные объекты.

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

2. Не использовать конвертацию значений (предопределенные значения справочника в значения перечисления).

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

3. В конвертации объекта в обработчике «При выгрузке» необходимо прописать следующий код:


То есть нам необходимо в переменную «УзелСсылки» присвоить значение метаданных перечисления, которое соответствует базе приемника, тогда система автоматически при загрузке определит нужное значение.

Конвертация перечисления в справочник

Для конвертации перечисления в справочник, потребуется отдельное правило конвертации объектов. В данном правиле можно воспользоваться конвертацией значений (конвертация значений перечисления в предопределенные значения), и необходимо описать поля поиска, а также реквизит, в который будет грузиться значение перечисления (например: реквизит - наименование), и при необходимости описать заполнение остальных реквизитов справочника. В правиле в обработчике «Перед выгрузкой» реквизита написать следующий алгоритм (см. рисунок 1).

Отключение проверки полей поиска

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


Рисунок 3 – Предупреждение – не указаны поля поиска.

При каждом сохранении правил, система будет выдавать данное сообщение. Если при достаточно большом количестве правил случайно нажать «Да», то система создаст поля поиска по всем правилам, и может потребоваться достаточно большое время восстанавливать обратно. Чтобы избежать таких неприятных ситуаций, данную проверку можно отключить (путь: Сервис – Настройки пользователя) (см. рисунок 4).


Рисунок 4 – Отключение проверки полей поиска.

Не регистрировать документы к обмену при определенных действиях

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

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


В таком случае документ при групповом перепроведении не будет регистрироваться к обмену.

Общий алгоритм для всех объектов одного типа метаданных

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

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


Перенос субконто по своим правилам

У одного типа субконто могут присутствовать несколько правил выгрузки объекта, и система в таком случае будет по умолчанию выбирать одно определенное правила согласно приоритету и наименованию. Если же необходимо выгрузить субконто не по выбранному по умолчанию правилу, то можно воспользоваться следующим алгоритмом:

1. Для реквизита «Субконто» в обработчике «Перед выгрузкой»:


2. Перенос плана видов характеристик «Виды Субконто Хозрасчетные» (см. рисунок 5):


Рисунок 5 – Перенос плана видов характеристик.

3. Для реквизита «Субконто» в обработчике «При выгрузке»:


Описывается последовательность действий для каждого типа субконто.

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

Поиск полей

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

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


Рисунок 6 – Реквизиты доступные для обработчика «Поля поиска»

Пример обработчика «Поля поиска»:


В обработчике мы можем задать до 10 итераций через переменную «НомерВариантаПоиска». В каждой итерации в зависимости от условий задать поля поиска элемента через переменную «СтрокаИменСвойствПоиска» (наименование полей задаются, как они заданы у приемника). Получить значение поля поиска можно через структуру «СвойстваПоиска» (наименование полей задаются, как они заданы у приемника). Для прекращения поиска нужно использовать переменную «ПрекратитьПоиск».

Реквизиты узлов источника и приемника

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

На стороне источника, чтобы обратиться к узлу плана обмена, необходимо использовать переменную: «УзелДляОбмена».

Например, в правилах обмена на стороне источника можно обратиться к ИНН выбранной организации в плане обмена:


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

Например, в правилах обмена на стороне приемника можно обратиться к ИНН выбранной организации в плане обмена:


Протокол (лог) синхронизации между базами

Важным элементом обмена между базами является протокол (лог) синхронизации. Данный протокол должен показывать в удобном виде всю необходимую информацию об обмене (количество выгруженных элементов; список выгруженных элементов; ошибки обмена и т.д.). Чем сложнее алгоритмы обмена, тем более расширенный должен быть лог (например: у нас несколько документов на стороне источника объединяются в один документ на стороне приемника, в таком случае протокол должен показывать, как документы объединялись). Лог должен содержать значимую информацию, которая оперативно поможет разобраться с вопросами связанными с синхронизацией.

Можно выделить три наиболее частых варианта создания протокола (лога) синхронизации между базами без кастомизации баз источника и приемника:

1) Записывать всю необходимую информацию в журнал регистрации. Данный подход имеет существенные недостатки. Чаще всего журнал регистрации имеет большой объем информации, это влияет на скорость анализа нужной информации (журнал регистрации может работать медленно), и предоставление данных в журнале регистрации не всегда удобно для анализа данных.

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

3) Записывать всю необходимую информацию во внешний источник (файлы excel и т.д.). Данный подход является наиболее предпочтительный, т.к. можно создать 1 файл в день, в него дописывать всю нужную информацию за день в удобном виде для анализа.

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

Передача параметра из источника в табличную часть приемника

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

Передача значений табличной части из источника в параметры табличной части приемника имеет ряд особенностей:

1. Необходимо в конвертации свойств табличной части приемника создать необходимый параметр. Если параметр имеет не примитивный тип, то указать также правило конвертации (см. рисунок 7).



Рисунок 7 – Создание параметра в конвертации свойств табличной части приемника.

2. Важный момент! Заполнение параметра должно всегда происходить в переменную «Значение» в обработчике «Перед выгрузкой». Из входящих данных параметр не сможет заполниться (будет выдаваться сообщение об ошибки) (см. рисунок 8).


Рисунок 8 – Заполнение параметра в конвертации свойств табличной части.

3. На стороне приемника обращение к параметрам табличной части происходит в обработчике «После загрузки» через соответствие «ПараметрыОбъекта» по следующему правилу:

если параметр был создан в табличной части, то обращение будет типа: [Наименование табличной части] + ТабличнаяЧасть (например: «ТоварыТабличнаяЧасть»);

если параметр был создан в наборе движений регистра, то обращение будет типа: [Наименование набора движений регистра] + Набор записей (например: «ХозрасчетныйНаборЗаписей»);

Например:

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

Как найти ошибку при переносе данных

Известно, что программы фирмы 1С - удобный и многофункциональный инструмент для автоматизации учета, подходящий для предприятий самых разных отраслей и направлений деятельности. Однако инструмент это сложный и в работе с ним, к сожалению, не редко возникают разного рода ошибки. В этой статье мы расскажем, как найти и устранить ошибку, возникшую при переносе данных с использованием правил, созданных по Технологии конвертации данных 2.0. Что делать, если выгрузка завершается ошибкой или не получается загрузить данные в базу-приемник? Наша статья призвана ответить на эти вопросы.

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

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

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

Рис.1. Просмотр правил

Что делать? Если у Вас есть такая возможность - обновите программу-источник до релиза, указанного в правилах конвертации. Если Вы не можете обновить программу, значит и с этими правилами работать не сможете.

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

Алгоритм действий при поиске ошибок мы продемонстрируем на примере переноса данных из КА 1.1 в БП 3.0.

Рис.2. Поочередная выгрузка групп объектов

Рис.3. Поочередная выгрузка видов объектов

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

Что делать? Если Вам удалось найти конкретный документ, вызывающий ошибку и Вы видите, в чем, вероятнее всего, заключается проблема - отлично. Исправьте документ, если это возможно, или просто не переносите его - гораздо проще восстановить один документ, чем выполнять весь перенос вручную. Чтобы выполнить перенос, исключив только один документ, воспользуйтесь отбором в соседнем окне. В колонке "Тип сравнения" установите "Не равно", в "Значение" выберите проблемный документ, и продолжайте выгрузку как обычно.

Рис.4. Отбор документа при выгрузке

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

Как правильно читать служебные сообщения об ошибках?

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

Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = Остатки_Материалы
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 15 (Артикул --> Артикул)
Объект = Сварочный аппарат инвертор ВДИ 160Р (Основные средства)
СвойствоПриемника = Артикул (Строка)
ОписаниеОшибки = Поле объекта не обнаружено (Артикул)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283)
КодСообщения = 13
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)
КодСообщения = 31

Можно было бы пойти сложным путем и поочередно выгружать разные виды остатков (остатки основных средств, остатки нематериальных активов и т.д.) и найти, что ошибка возникает при выгрузке по правилу Остатки_Материалы. А можно сразу посмотреть имя правила в сообщении об ошибке. Посмотрите, в самой первой строчке в расшифровке ошибки в сообщении говорится именно об этом. ПВД - правило выгрузки данных. Правило выгрузки данных равняется Остатки_Материалы. Нам не нужно ничего искать, программа сама сообщает место возникновения ошибки.

Рис. 5.1. Служебное сообщение об ошибке

Так же легко мы можем найти и причину. В строке ОписаниеОшибки написано Ошибка получения значения свойства объекта (по имени свойства источника). Не очень понятное сообщение для пользователя. Однако мы можем понять что ошибка заключается в каком-то свойстве объекта. Какого объекта? Того, который указан в строке Объект в этом сообщении. В данном случае этим объектом является Сварочный аппарат инвертор ВДИ 160Р (Основные средства). Уже в данный момент можно заметить расхождение. Правило выгрузки данных называется Остатки Материалы, в строке Правило конвертации объекта (ПКО) написано Номенклатура, почему же тип объекта записан как Основные средства? Давайте заглянем в базу-источник и проверим, действительно ли мы нашли правильный объект.

В остатках по счету 10.09 "Инвентарь и хозяйственные принадлежности" находим наш проблемный объект - субконто Сварочный аппарат инвертор ВДИ 160Р (см. рис. 5.2)

Рис. 5.2. Оборотно-сальдовая ведомость по счету 10.09 за 2018 г.

Рис. 5.3. Карточка основного средства Сварочный аппарат инвертор ВДИ 160Р

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

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

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

Примеры ошибок.

Рассмотрим пример еще одной ошибки, обнаруженной при переносе данных.

При попытке проведения документа Ввод начальных остатков в БП 3.0 (раздел учета НДС по авансам) появляется сообщение "Не удалось сформировать документ "Счет-фактура" № СН/301118/0015 от 30.11.2018 0:00:00. Вероятно счет-фактура с таким номером уже записан в информационной базе". Эта ошибка возникла из-за того, что в источнике (КА 1.1) - длинные номера (см. рис 5.4), первые 12 символов двух разных номеров совпадают, а в БП номер 12-тизначный, следовательно в приемнике номера и даты двух разных документов совпадут, что невозможно. Понятно, что в типовой конфигурации КА, такого быть не может, там номера также 12-тизначные, но в практике, как видим такое случается, а пользователи не понимают причину.

Рис. 5.4 Пример совпадения номеров счетов-фактур

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

Рассмотрим пример еще одной ошибки.

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

Рис.6.1. Сообщение об ошибке

Итак, проблемный документ нам сообщает сама программа - это Счет покупателю ИПБП-000008, значит мы сразу переходим к документу и пытаемся выяснить, в чем заключается ошибка.

Как Вы можете видеть на рисунке 6.2, в этом документе в табличной части "Товары и услуги" в одной из строк установлена группа номенклатуры, а не сама номенклатура, что само по себе является ошибкой. Разумеется, в правилах конвертации для этого документа не прописано как из этой табличной части конвертировать объект группа номенклатуры, это элемент совсем другого типа, нежели сама номенклатура, и у программы нет сведений о том, как перенести другой элемент, отличный от указанного в правилах. Следовательно, процесс конвертации не распознает его, не может его конвертировать и выдает ошибку.

Рис.6.2. Документ с ошибкой

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

Рис.6.3. Установка настроек для исключения документа

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

Здесь необходимо отметить, что возможности отбора объектов существуют в обработках УниверсальныйОбменДаннымиXML не во всех типовых конфигурациях. Точнее такой функционал отсутствует в режиме управляемого приложения. В частности, в типовой конфигурации Комплексная автоматизация ред.1.1 можно работать как в режиме обычного приложения, так и в режиме управляемого приложения, или, как еще говорят, в режиме управляемых форм. В первом случае отборы в типовой обработке возможны (см. рис.4), во втором - нет. Тогда нужно воспользоваться доработанным версиями обработки (см. рис. 6.3). Если конфигурация используется в режиме совместимости с платформой 8.2 (это в частности КА 1.1 и УПП 1.3), то необходима обработка УниверсальныйОбменДаннымиXML версии 2.1.7. Если же режим совместимости не используется, как например в конфигурации Бухгалтерия предприятия редакции 3.0, то нужно работать с обработкой версии 2.1.8. Эти обработки обладают также дополнительными возможностями по заполнению отборов из журнала регистрации (подробнее здесь), поэтому входят не во все варианты поставок, но их всегда можно приобрести либо в составе пакетов, помеченных как с отбором по ЖР, либо отдельно.

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

Ознакомиться с другими полезными материалами можно в разделе Статьи на этом или основном нашем сайте.

© Анна Балясникова, Борис Балясников последние изменения декабрь 2019г.

Читайте также: