1с конвертация провести документ после загрузки
В данной статье будут рассмотрены десять приемов работы с конвертацией данных 2.1. Указанные приемы явно не описываются в документации (справке), но их полезно знать и применять. Для наглядности приёмы работы сопровождаются описанием реализации и практическими примерами.
Чтобы выгрузить один объект источника в несколько объектов приемника, можно использовать мощный инструмент расширения возможностей правил конвертации – «ВыгрузитьПоПравилу».
Синтаксис функции:
Пример реальной задачи. Необходимо выгрузить справочник – «НоменклатурныеГруппы» в три объекта на стороне приемника: «НоменклатурнаяГруппа» (справочник), «ЗаказНаПроизводство» (документ), «СтатусыЗаказов» (регистр сведений). Для решения данной задачи можно использовать функцию «ВыгрузитьПоПравилу».
В правилах выгрузки данных (далее-ПВД) в обработчике «ПередОбработкой» происходит выгрузка в объект приемника «НоменклатурнаяГруппа» по стандартной выгрузке (ИмяПКО), а в обработчике «ПослеВыгрузки» происходит выгрузка в объекты «ЗаказНаПроизводство» и «СтатусыЗаказов» с помощью функции «ВыгрузитьПоПравилу»:
Если необходимо выгрузить иерархический справочник (элементы и папки) с учетом иерархии и поиск в базе приемника будет осуществляться по внутреннему идентификатору объекта источника (по полям поиска не будет продолжен поиск), то для корректной выгрузки иерархии необходимо установить галочку – «Поиск» у реквизита «ЭтоГруппа» (см. рисунок 1).
Рисунок 1 – Выгрузка иерархического справочника.
Если не установить галочку «Поиск» у реквизита «ЭтоГруппа», то папки объекта будут выгружаться как элементы.
Объекты регистрируются по правилам регистрации объектов к выгрузке только при изменении реквизитов объекта, которые указаны в правилах конвертации свойств (далее-ПКС) объекта (правила обмена данными). При необходимости регистрировать объект к выгрузке и при изменении реквизитов, которые не указаны в ПКС, достаточно данные реквизиты добавить в ПКС и установить галочку – «отключить» (см. рисунок 2).
Рисунок 2 – Реквизиты объекта для правил регистрации объекта.
Это может потребоваться для задачи, когда у нас есть реквизиты на стороне базы источника, которых нет в базе приемника, и только при их изменении объекты должны регистрироваться к обмену.
Когда стоит задача выгружать вместо регистрируемого объекта другой объект, то при регистрации исходного объекта в правилах регистрации объектов в обработчике «ПослеОбработки» через метод «ЗарегистрироватьИзменения» плана обмена можно зарегистрировать необходимый объект на узлах плана обмена.
Синтаксис метода:
ЗарегистрироватьИзменения (Узлы, Данные)
Пример реальной задачи. Несколько документов «Списания с расчетного счета» по одному документу «Заявка на расходование ДС» необходимо выгружать из конфигурации источника в один документ «Списания с расчетного счета» конфигурации приемника. При изменении документа «Списания с расчетного счета» регистрируется к обмену документ «Заявка на расходование ДС», который при выгрузке собирает по определенным правилам данные со всех документов «Списания с расчетного счета».
В продолжение пункта 4. При выгрузке любого объекта происходит проверка, соответствует ли он существующим правилам регистрации. Если при регистрации вместо исходного объекта регистрируется к выгрузке другой объект, то новый объект также будет проходить проверку по своему типу правил регистрации объектов. В случае несоответствия правилам регистрации, объект будет выгружать, как «УдалениеОбъекта».
Для устранения данной нестыковки выгружаемого объекта и правил регистрации объекта, нужно использовать в правилах регистрации в обработчике «ПослеОбработки» параметр «Выгрузка».
Описание параметра Выгрузка:
Выгрузка (только чтение) – Булево – параметр определяет контекст выполнения правила регистрации. Истина – правило регистрации выполняется в контексте выгрузки объекта. Ложь – правило регистрации выполняется в контексте перед записью объекта.
Пример реальной задачи. При изменении документа «Списания с расчетного счета» регистрируется к обмену документ «Заявка на расходование ДС», который при выгрузке собирает по определенным правилам данные со всех документов «Списания с расчетного счета». Но документ «Заявка на расходование ДС» может выгружать независимо по своим правилам регистрации, которые не совпадают с правилами регистрации при регистрации из документа «Списания с расчетного счета».
Если по одному объекту источнику в правилах конвертации объектов присутствуют несколько правил, то система будет использовать по умолчанию правило, которое совпадает по наименованию с наименованием объекта источника (см. рисунок 3).
Рисунок 3 – Выбор правила конвертации объекта по умолчанию.
Пример реальной задачи. Данный подход может пригодиться при выгрузке субконто, когда система определяет правила выгрузки объекта по умолчанию.
При необходимости создавать на стороне приемника новые элементы документов (справочников) и подставлять их в исходный объект, можно применить следующий подход:
- определить правило заполнения нового документа (справочника) на стороне приемника (например, через входящие данные);
- описать заполнение реквизита нового документа (справочника) в исходном объекте (например, через исходящие данные);
- заполнять при выгрузке на стороне источника новый документ (справочник) уникальным значением (например, числом).
Пример реальной задачи. Необходимо на стороне приемника создавать новые документы «ДокументРасчетовСКонтрагентом» в документе ввод начальных остатков по счетам взаиморасчетов. На стороне источника заполняем реквизит «ДокументРасчетовСКонтрагентом» при выгрузке начальных остатков по счетам взаиморасчетов уникальным значением (числом):
В исходном объекте («ВводНачальныхОстатков») описываем правила выгрузки реквизита «ДокументРасчетовСКонтрагентом»:
Определяем правило заполнения «ДокументаРасчетовСКонтрагентом» на стороне приемника (см. рисунок 4).
Рисунок 4 – Правили выгрузки «ДокументРасчетовСКонтрагентов».
В конвертации данных нельзя создать параметр с типом «ТаблицаЗначений» на вкладке «Параметры» (см. рисунок 5).
Рисунок 5 – Допустимые типы для параметров конвертации данных.
Возможность создать параметр с типом «ТаблицаЗначений» при необходимости присутствует в системе, необходимо в общем обработчике «ПередЗагрузкойДанных» определить параметр.
Также необходимо в общем обработчике «ПослеЗагрузкиДанных» удалить данный параметр.
При выгрузке из базы источника можно указывать вместо элемента перечисления или предопределенного значения справочника текстовое значение, которое равно наименованию элемента перечисления или предопределенного значения справочника.
Пример реальной задачи. В базе приемника присутствует реквизит – «ТипПлатежа» с типом «Перечисление». При выгрузке реквизита (обработчик: «Перед выгрузкой») можно указать текстовое значение равное наименованию элемента перечисления на стороне базы приемника (см. рисунок 6). Данный подход может ускорить процесс разработки в конвертации данных.
Рисунок 6 – Заполнение реквизита с типом «Перечисление».
Когда необходимо выгрузить большой объем данных и нет необходимости выгружать полностью ссылочные данные, то можно сократить объем выгружаемых данных с помощью параметров «ВыгрузитьОбъект» («ВыгрузитьТолькоСсылку») в обработчике «ПриВыгрузке» правил конвертации свойств (ПКС):
Пример реальной задачи. Данное ускорение может потребоваться, когда все ссылочные объекты (нормативно-справочная информация) из базы источника ежедневно интегрируется в базу приемника, а документы должны транслироваться с определенным интервалом (раз в месяц). В таком случае при обмене документами между базами нет необходимости полностью передавать ссылочные объекты, а можно передавать только ссылку, что ускорит процесс выгрузки.
Рассмотренные приемы работы позволят повысить производительность и эффективность работы с программой конвертацией данных 2.1.
Статью подготовил Аналитик-эксперт по информационным системам "ИнфоСофт" Ретунский Александр.
При переносе данных между базами часто возникает ситуация, когда движения документов переносить не требуется, а перенесенные документы следует проводить в базе-приёмнике. Например, в базе-источнике ведется управленческий учет, а в базе-приемнике регламентированный. Если при переносе не учитывать свойство «Проведен» документа, то можно получить в приемнике проведенные документы, у которых данные в движениях и в объекте не соответствуют друг другу.
В правилах конвертации объектов (ПКО) в обработчике «Перед загрузкой» существуют параметры «РежимЗаписи» и «РежимПроведения», указание которых обеспечивает необходимый режим записи объекта, но в этом случае, запись происходит во время загрузки данных и если, по каким-то причинам, документ не запишется, загрузка данных будет прервана. Правильней записывать новые документы в конце загрузки, когда все перенесенные объекты уже будут в базе - приемнике.
Несколько основных моментов:
Для решения стоящей задачи наиболее удобно использовать обработчики событий конвертации в целом. Но нам необходимо определить – объект - это документ, и если документ – то проводится ли он. Для идентификации документа используем параметр обработчика ИмяТипаОбъекта.
I. Первый, более простой, случай: требуется оставлять в базе-приемнике документы непроведенными.
Подразумевается, что пользователи в базе-приемнике проверят документы и потом их проведут. Если не переносить движения и просто указать в свойстве «Проведен» - «Значение = Ложь», то можем получить при повторном переносе документы внешне не проведенные, но с движениями. К этому получим справедливое возмущение пользователей, которые не смогут понять результатов отчетов.
Свойство «Проведен» необходимо исключить из переноса в каждом документе. Нам необходимо при выгрузке данных запоминать необходимые для отмены проведения документы и после загрузки данных записать их с режимом отмены проведения. Помимо ссылки на документ необходимо сохранять и информацию об его пометке удаления. Для получения информации о пометке удаления данное свойство каждого проводимого документа необходимо передавать в параметр, который назовем также, как и имя свойства - ПометкаУдаления. (Рис.1)
1. В обработчике « Перед загрузкой данных » конвертации создаем параметр с типом значений «Таблица значений». В колонку "Действие" строкой будем записывать – что делать с документом: просто отменять проведение или еще проставлять пометку на удаление.
ТаблицаДокументов = Новый ТаблицаЗначений ;
ТаблицаДокументов . Колонки . Добавить ( "Ссылка" );
ТаблицаДокументов . Колонки . Добавить ( "Действие" );
Параметры . Вставить ( "ТаблицаДокументов" , ТаблицаДокументов );
2. В обработчике «После загрузки объекта» конвертации, определяем найден ли объект, является ли объект документом, проводится ли он, и если в приемнике он проведен, то только тогда помещаем ссылку на него в наш параметр ТаблицаДокументов.
Если ОбъектНайден
И ИмяТипаОбъекта = "Документ"
И Объект . Метаданные (). Проведение = Метаданные . СвойстваОбъектов . Проведение . Разрешить
И Объект . Ссылка . Проведен Тогда
НоваяСтрока = Параметры . ТаблицаДокументов . Добавить ();
НоваяСтрока . Ссылка = Объект . Ссылка ;
Если ПараметрыОбъекта . Получить ( "ПометкаУдаления" ) Тогда
НоваяСтрока . Действие = "Удаление" ;
Иначе
НоваяСтрока . Действие = "Отмена" ;
КонецЕсли;
ИначеЕсли ПараметрыОбъекта <> Неопределено И Лев ( Строка ( ТипЗнч ( Объект )), 8 ) = "Документ" Тогда
Объект . ПометкаУдаления = ПараметрыОбъекта . Получить ( "ПометкаУдаления" ); //Пометка удаления у новых объектов и непроведенных старых
КонецЕсли;
3. В обработчике «После загрузки данных» конвертации отменяем проведение у записанных документов, проставляем при необходимости пометку на удаление и удаляем наш параметр. При желании отследить процесс удаления код обработчика может выглядеть так:
II. Требуется обеспечить проведение документов в базе-приемнике при переносе.
В этом случае необходимо помимо пометки удаления передавать значение свойства «Проведен» в параметр «Проведен» и данный параметр анализировать в обработчике «После загрузки объекта» (Рис.2).
1. « Перед загрузкой данных » Повторяем создание параметра конвертации, как в первом примере
ТаблицаДокументов = Новый ТаблицаЗначений ;
ТаблицаДокументов . Колонки . Добавить ( "Ссылка" );
ТаблицаДокументов . Колонки . Добавить ( "Действие" );
Параметры . Вставить ( "ТаблицаДокументов" , ТаблицаДокументов );
2. «После загрузки объекта » После загрузки мы должны уже работать с объектами, которые еще не записаны в базе. Документы можно выделить по типу значения, а новый объект, перед внесением в таблицу параметра, необходимо предварительно записать. Не забываем установить параметр «ОбъектМодифицирован» в «Ложь».
Если ИмяТипаОбъекта = "Документ"
И Объект . Метаданные (). Проведение = Метаданные . СвойстваОбъектов . Проведение . Разрешить Тогда
Если Не ОбъектНайден Тогда
Объект . Записать ();
ОбъектМодифицирован = Ложь;
КонецЕсли;
НоваяСтрока = Параметры . ТаблицаДокументов . Добавить ();
НоваяСтрока . Ссылка = Объект . Ссылка ;
Если ПараметрыОбъекта . Получить ( "Проведен" ) Тогда
НоваяСтрока . Действие = "Проведение" ;
ИначеЕсли ПараметрыОбъекта . Получить ( "ПометкаУдаления" ) Тогда
НоваяСтрока . Действие = "Удаление" ;
Иначе
НоваяСтрока . Действие = "Отмена" ;
КонецЕсли;
КонецЕсли;
3. «После загрузки данных » После загрузки мы должны пропустить запись документа, если он не проведен в базе-источнике и в базе приемника. Также необходимо проследить за пометкой удаления.
Для каждого СтрокаТч Из Параметры . ТаблицаДокументов Цикл
Если СтрокаТч . Действие = "Отмена" И Не СтрокаТч . Ссылка . Проведен Тогда
Если СтрокаТч . Ссылка . ПометкаУдаления Тогда //Для снятия пометки удаления
Попытка
ДокОбъект = СтрокаТч . Ссылка . ПолучитьОбъект ();
ДокОбъект . ПометкаУдаления = Ложь;
ДокОбъект . Записать ();
Исключение
КонецПопытки;
КонецЕсли;
Если СтрокаТч . Действие = "Проведение" Тогда
РежимЗаписи = РежимЗаписиДокумента . Проведение ;
Иначе
РежимЗаписи = РежимЗаписиДокумента . ОтменаПроведения ;
КонецЕсли;
Если СтрокаТч . Действие = "Удаление" Тогда
ДокОбъект . ПометкаУдаления = Истина;
ДокОбъект . Записать ();
ИначеЕсли СтрокаТч . Ссылка . ПометкаУдаления Тогда
ДокОбъект . ПометкаУдаления = Ложь;
ДокОбъект . Записать ();
КонецЕсли;
Исключение
При разработке правил конвертации данных, нередко возникают ситуации, когда требуется заполнить определенные реквизиты конвертируемого объекта в приемнике. Рассмотрим пример. В конфигурациях (Источник, Приемник) есть справочники «Контрагенты». Отличаются они набором реквизитов. В конфигурации «Приемник» - у справочника «Контрагенты» есть обязательный для заполнения реквизит «Организация». В «Источник» такого реквизита нет, поэтому как вариант решения задачи можно заполнять реквизит «Организация» непосредственно при загрузке в приемник.
Как решить эту задачу с минимальными затратами? Есть несколько способов. Самый простой случай – передать предопределенное значение. Вариант «прокатит», если в конфигурации «Приемник» справочник «Организации» содержит нужный нам предопределенный элемент. В этом случае мы должны создать для соответствующего правила конвертации объекта (в нашем случае для ПКО «Контрагенты») обработчик события «После загрузки» и в нем обратиться к предопределенному элементу:
Либо сделать это в обработчике "При выгрузке" нужно нам свойства, воспользовавшись выражением:
Аналогичным образом можно выполнить поиск или получение значения из какого-либо другого места. Тут как душа пожелает.
Однако, бывают более сложные случаи переноса данных. Пример из реальной практикb. В базе «Приемник» у справочника есть реквизит «Подразделение», а в базе «источник» ничего похожего нет. Более того, подразделение должно ставиться элементам не одно и то же, а выбираться на основе определенного ключа. Сам же этот ключ содержится в одноименном реквизите справочника «Контрагенты» базы «Источник». На практике это может выглядеть так:
Наша задача во время конвертации брать значение из реквизита «КОНТ_Подразделение» и по нему выполнять поиск в справочнике «Подразделения» базы приемник. Для упрощения договоримся, что значение «КОНТ_Подразделение» совпадает с кодом элемента справочника «Подразделения».
Первым делом нам понадобится служебное правило конвертации объекта. Добавляем ПКО и в мастере создания заполняем:
- Объект информационной базы источника. Оставляем пустым.
- Объект информационной базы приемника. Выбираем ссылку на объект метаданных (в моем случае «СправочникСсылка.ПодразделенияОрганизаций»).
- Имя правила конвертации объектов. Указываем имя правила. Я в качестве имени указал «Агенты_ПодразделениеОрганизаций».
Нажимаем "далее" и в следующем окне мастера обязательно снимаем флажок с «Искать объект приемника по внутреннему идентификатору объекта источника». Сохраняем получившееся правило конвертации объекта.
Отлично, ПКО есть. Теперь создадим для него одно правило конвертации свойств (ПКС). В окне создания нового ПКС необходимо заполнить:
- Источник. Оставляем поле пустым.
- Приемник. Выбираем «Код».
- Ставим флаг «Поиск объекта при загрузке по свойству»;
- В обработчике события «Перед выгрузкой» пишем незамысловатую строчку кода:
Теперь остается только создать ПКС для переносимого объекта (в моем случае справочник «Агенты») и указать для свойства правило конвертации объекта, которое мы только что создали. Выбираем ПКО «Агенты» (вы можете проделать подобный трюк для другого ПКО) и добавляем новое ПКС. В окне создания ПКС заполняем:
На картинке это выглядит следующим образом:
Все, на этой ноте можно поставить жирную точку. Нестандартное правило готово и можно приступать к тестированию.
В октябре 2014 года фирма «1С» выпустила первую версию конфигурации Конвертация данных, редакция 3.0.
Эта редакция не является логическим продолжением Конфигурации данных 2.0/2.1, а представляет собой новую технологию. Ключевая идея разработчиков – упростить обмены данными между типовыми конфигурациями, а также избавится от коллизий при обменах данными.
Рассмотрим, как же работает обмен с помощью КД 3.0.
Принципы обмена с помощью Конвертации данных 3.0
Основным отличием новой технологии от существующих является использование универсального формата данных EnterpriseData, через который будут производиться обмены.
Формат EnterpriseData предоставляется в виде двух xsd-схем:
ExchangeMessage
EnterpriseData
Это основная схема, в которой описаны все объекты нового формата, их свойства и типы значений.
Объекты в этой схеме по структуре и наименованию аналогичны объектам метаданных типовых конфигураций. Это сделано для упрощения трансформации объектов типовых конфигураций в универсальный формат и обратно.
Схема содержит объекты для переноса информации трех основных типов: нормативно-справочная информация, документы и остатки на заданную дату.
Эти xsd-схемы в виде XDTO-пакетов входят в подсистему «Обмен данными» БСП начиная с версии 2.2.5.
Для разработки обмена с использованием универсального формата эти схемы должны быть выгружены во внешние файлы и загружены в конфигурацию Конвертация данных 3.0.
Далее разработчик может независимо настраивать обмен для каждой отдельно взятой базы. Он выгружает из нее описание структуры метаданных и также загружает его в Конвертацию данных 3.0. Используя специальный интерфейс, создает логику, согласно которой объекты этой базы могут преобразовываться в объекты универсального формата и обратно. Он настраивает соответствие объектов и типов, пишет обработчики событий, происходящих в разные моменты преобразования объектов.
На основании настроенной таким образом логики конфигурация Конвертация данных 3.0 формирует код, реализующий эту логику.
Он должен быть помещен в общий модуль МенеджерОбменаЧерезУниверсальныйФормат соответствующей базы. В нем содержится механизм преобразования объектов базы данных в универсальный формат и обратно, а также все обработчики событий.
После того, как модуль сформирован, разработчик обмена имеет возможность корректировать все механизмы непосредственно в этом модуле, не используя конфигурацию Конвертация данных. А также он получает возможность простой отладки в случае возникновения ошибок. Можно также загрузить правила из модуля МенеджерОбменаЧерезУниверсальныйФормат обратно в базу Конвертация данных 3.0, чтобы иметь возможность настраивать их в интерфейсе.
Когда настройка преобразования объектов одной базы завершена, разработчик может перейти к настройке обмена для следующей базы.
Разработчики фирмы “1С” регулярно выпускают новые версии формата, добавляя новые объекты и адаптируя существующие под последние версии типовых решений. При этом несколько предыдущих версий также остаются в конфигурации. Поэтому база, обновленная до последней версии типового решения, может обмениваться с базами чуть более старых версий, если в них есть совпадающие версии формата.
При необходимости разработчик может сам незначительно изменять предоставленные схемы, или разработать собственный формат, если это требуется. Для каждой версии каждого формата должна быть описана своя логика преобразования объектов.
Пользовательский интерфейс обменов через универсальный формат в БСП приближен к интерфейсу типовых обменов по правилам, что облегчает переход на новый формат с точки зрения обучения пользователя.
PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (243):
Добрый день!
Попытался решить задачу из главы 6 урок 2 с помощью произвольного алгоритма. При передачи свойства «АВСкласс» в параметр и обращении к этому параметру в ПКО «После загрузки» возвращается «Неопределено». Причем все отрабатывает корректно при передачи данных в приемник. Подскажите пожалуйста в чем может быть причина?
…
(текст комментария доступен только участникам Мастер-группы)
Да, я передаю свойство “АВСкласс” в параметр объекта, в файле я этого параметра к сожалению не вижу. Попробовал скопировать еще раз, как Вы рекомендовали, не помогло.
…
(текст комментария доступен только участникам Мастер-группы)
Ольга, добрый день! Благодарю за помощь!
Выполнил все Ваши рекомендации.
1. В свойстве “АВСкласс” убрал ПКО “КлассыКонтрагентов”, в обработчике “Перед выгрузкой” прописал
Если НЕ Источник.ЭтоГруппа Тогда
Если Источник.АВСкласс = Перечисления.КлассыКонтрагентов.Акласс Тогда
Значение = "Акласс";
ИначеЕсли Источник.АВСкласс = Перечисления.КлассыКонтрагентов.Вкласс Тогда
Значение = "Вкласс";
ИначеЕсли Источник.АВСкласс = Перечисления.КлассыКонтрагентов.Скласс Тогда
Значение = "Скласс";
КонецЕсли;
КонецЕсли;
После вышеупомянутых манипуляций в файле данных появился узел “ЗначениеПараметра” с заполненным значением.
2. В обработчике ПКО “После загрузки” прописал
Если Константы.ИспользоватьКлассификациюКонтрагентов.Получить() Тогда
Если НЕ Объект.ЭтоГруппа И ПараметрыОбъекта <> Неопределено Тогда
Объект.АВСкласс = ПараметрыОбъекта["АВСкласс"];
Объект.Записать();
ОбъектМодифицирован = Ложь;
Сообщить(ПараметрыОбъекта["АВСкласс"]);
КонецЕсли;
КонецЕсли;
но в итоге в конечной базе реквизит “АВСкласс” все еще остается незаполненным.
…
(текст комментария доступен только участникам Мастер-группы)
Большое спасибо, Ольга! Все заработало!
Добрый день.
Видео 1-6-7 – Обеспечение проведения документа.
После добавления кода для проведения документа, при загрузке в конечную базу выдается ошибка.
Как ее вылечить?
Для теста загрузил выгрузку конечной базы, которая была в материалах курса.
Выполнил перенос (без установки режима записи и проведения) – ошибок нет.
В конечной базе пробую вручную провести документ – ошибка “Поле объекта не обнаружено (Хозрасчетный)”.
Этого поля нигде нет.
Спасибо.
…
(текст комментария доступен только участникам Мастер-группы)
в задание 1.5.3 сделал ПВД “ВводНачальныхОстатков”
ВыборкаДанных = Новый ТаблицаЗначений;
ВыборкаДанных.Колонки.Добавить("Дата");
ВыборкаДанных.Колонки.Добавить("ОстаткиНоменклатуры");
Пока ВыборкаПериод.Следующий() Цикл
// Вставить обработку выборки ВыборкаПериод
СтрокаДата = ВыборкаДанных.Добавить();
СтрокаДата.Дата = ВыборкаПериод.Период;
ОстаткиНоменклатуры = Новый ТаблицаЗначений;
СтрокаДата.ОстаткиНоменклатуры = ОстаткиНоменклатуры;
ОстаткиНоменклатуры.Колонки.Добавить("Период");
ОстаткиНоменклатуры.Колонки.Добавить("ВидДвижения");
ОстаткиНоменклатуры.Колонки.Добавить("Организация");
ОстаткиНоменклатуры.Колонки.Добавить("Номенклатура");
ОстаткиНоменклатуры.Колонки.Добавить("Количество");
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтрокаНабор = ОстаткиНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаНабор, ВыборкаДетальныеЗаписи);
КонецЦикла;
КонецЦикла;
Создал ПКО “ВводНачальныхОстатков” см рисунок 1 и 2, код
В ПКС Номенклатура написал код
Если ТипЗнч(ОбъектКоллекции.Номенклатура) = Тип("СправочникСсылка.Материалы") Тогда
ИмяПКО = "Номенклатура";
ПКО = НайтиПравило(Источник, ИмяПКО);
ИначеЕсли ТипЗнч(ОбъектКоллекции.Номенклатура) = Тип("СправочникСсылка.Продукция") Тогда
ИмяПКО = "МатериалНоменклатура";
ПКО = НайтиПравило(Источник, ИмяПКО);
КонецЕсли;
В конечную базу документ ввод начальных остатков загружается пустым, не могу понять в чем дело….
…
(текст комментария доступен только участникам Мастер-группы)
Если я правильно понимаю, то движения в xml файле есть…
Вопрос закрыт, причина была в отриц остатках
все разобрался, причина была в отриц. остатках…
Здравствуйте.
подскажите как быть с ошибкой: метод Добавить при загрузке в ДЗ 1.5.2
…
(текст комментария доступен только участникам Мастер-группы)
Перенесла, ошибка не изменилась.
…
(текст комментария доступен только участникам Мастер-группы)
…
(текст комментария доступен только участникам Мастер-группы)
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте.
В первой версии было в ПередЗагрузкойДанных, по рекомендации перенесла в ПередВыгрузкойДанных.
Вернула обратно в ПередЗагрузкойДанных.
…
(текст комментария доступен только участникам Мастер-группы)
С этой ошибкой разобралась
Уже писал свой вопрос меня отправили на страницу соответствующего занятия. В моём случае это перенос табличной части документа поэтому пишу здесь.
…
(текст комментария доступен только участникам Мастер-группы)
Набор записей регистра сведений “Плановые начисления”. Ссылочные типы которые с ошибкой при переносе не пере записываются. В правиле конвертации справочника сотрудники стоят флаги: не создавать новый объект если он не найден и не пере заполнять существующие. На скриншоте код с ошибкой до строки “Набор.Записать();” ссылочные типы видны.
…
(текст комментария доступен только участникам Мастер-группы)
В ПВД произвольный алгоритм запросом получаю ссылки на подразделение потом через ВыгрузитьПоПравилу() передаю имя правила и ссылку на подразделение как источник. В ПКО поиск документа по подразделению пишу: “Значение = Источник;” в ПКГС таб части Начисления запросом получаю сотрудников виды начислений и суммы результат запроса передаю в коллекцию объектов. Загрузка проходит без ошибок если программно не вызывать проведение документа, ошибка при последующем проведении вручную. Какие данные нужны для более подробного ответа ?
…
(текст комментария доступен только участникам Мастер-группы)
Разьясните пожалуйста 1 момент в решении преподавателя:
В обработчике конвертации После загрузки данных он присваивает ДокументОбъект = Неопределено; А затем и в 1 и во 2 условии все равно получает ДокументОбъект от Ссылки. Ссылка у нас существует всегда (он заполнятеся в ПКО). Не логичнее вынести это в общий код перед условиями? Или я чего-то не понял?
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте, подскажите, почему возникает такая ошибка при загрузке?
Ошибка при загрузке данных: : Поле объекта не обнаружено. А какой объект непонятно
…
(текст комментария доступен только участникам Мастер-группы)
К сожалению, не особо стало понятнее..
…
(текст комментария доступен только участникам Мастер-группы)
Здравствуйте!
У меня есть документ с табличной частью.
В ПКГС табличной части в обработчике ПередОбработкой я делаю отбор, то есть мне нужны не все строки табличной части, а только некоторые. Далее пишу:
КоллекцияОбъектов = РезультатЗапроса.Выгрузить();
Все работает верно, но я не могу понять, как мне и в каком месте прописать отказ от выгрузки документа, если в табличной части стало пусто. (Ну то есть в документе нет строк, соответствующих моему условию).
В файл обмена документ выгружается с пустой табличной частью, а мне нужно, чтобы такой документ не выгружался совсем.
Пытаюсь сделать проверку в обработчиках ПКО , он не видит, что табличная часть пустая.
Использую ПВД – стандартную выборку.
Подскажите, пожалуйста.
…
(текст комментария доступен только участникам Мастер-группы)
подскажите как перенести контактную информацию из регистра сведеней КИ в тч КИ объекта (конфигурации из бп2 в бп3). Проблема в том что в бп3 надо у поля значениеполей представить в виде xml.
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| КонтактнаяИнформация.Представление,
| КонтактнаяИнформация.Вид,
| КонтактнаяИнформация.Вид КАК ВидДляСписка,
| КонтактнаяИнформация.Тип,
| КонтактнаяИнформация.Поле1 КАК Поле1,
| КонтактнаяИнформация.Поле2 КАК Поле2,
| КонтактнаяИнформация.Поле3 КАК Поле3,
| КонтактнаяИнформация.Поле4 КАК Поле4,
| КонтактнаяИнформация.Поле5 КАК Поле5,
| КонтактнаяИнформация.Поле6 КАК Поле6,
| КонтактнаяИнформация.Поле7 КАК Поле7,
| КонтактнаяИнформация.Поле8 КАК Поле8,
| КонтактнаяИнформация.Поле9 КАК Поле9,
| КонтактнаяИнформация.ТипДома КАК ТипДома,
| КонтактнаяИнформация.ТипКорпуса КАК ТипКорпуса,
| КонтактнаяИнформация.ТипКвартиры КАК ТипКвартиры
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ГДЕ
| КонтактнаяИнформация.Объект = &ТекущийОбъект”;
Запрос.УстановитьПараметр(“ТекущийОбъект”, Источник);
Выборка = Запрос.Выполнить().Выбрать();
Читайте также: