Приветствую Вас ГостьВторник, 23.04.2024, 12:43

Каталог статей

В категории материалов: 16
Показано материалов: 1-10
Страницы: 1 2 »


Самый простой и кросплатформенный способ сформировать файл Excel - это сформировать табличный документ и записать его в формате Excel

Если надо сформировать книгу из нескольких страниц, то лучше использовать объект ПакетОтображаемыхДокументов, поместить в него табличные документы и так же записать в формате Excel

Взаимодействие с другими базами, приложениями и источниками данных | Просмотров: 44 | Добавил: leshic | Дата: 26.01.2024 | Комментарии (0)

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


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

1. В событии "Перед выгрузкой" ПКО пишем код: 

Если Источник.Проведен Тогда

     РежимЗаписи = "Проведение";

КонецЕсли;

2. При выгрузке структуры базы ставим галки "Выгружать движения документов" и настраиваем наборы движений регистров в ПКС. Но тут есть один нюанс: движения в приемнике могут не появиться. Для того, чтобы они все-таки появились надо в событии конвертации "После выгрузки объекта" добавить код:

ТипОбъектаСтрокой = Строка(ТипЗнч(Объект));
Если Лев(ТипОбъектаСтрокой, 8) = "Документ" Тогда
    
   Для каждого СтрокаДвижения из Объект.Движения Цикл  
      СтрокаДвижения.Записывать = Истина;    
   КонецЦикла;
    
КонецЕсли;

 


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

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


Для передачи таблицы значений через HTTP и WEB сервисы надо преобразовать её в строку, либо заранее описать структуру передаваемых данных, что бывает утомительно.

Есть несколько вариантов:

1. Устаревший метод:  ТЗСтрокой = ЗначениеВСтрокуВнутр(ТЗ);  ТЗ = ЗначениеИзСтрокиВнутр(ТЗСтрокой);

2. Сериализовать в XML

3. Преобразовать в JSON

 


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

Если это перечисление, то можно прописать формирование значения в событии "ПередВыгрузкой": Значение = "значение_перечисления_в_приемнике";

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

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

 


Когда выгружается Ссылка и если не стоит в ПКО свойство "Не Запоминать Выгруженные Объекты", то выгруженный объект загружается в структуру выгруженных объектов (тип Соответствие). В этом случае, если встречается ссылка на данный объект, то он не выгружается повторно, а подставляется значение из этой структуры. В файле выгрузки это выглядит так: <Ссылка Нпп="3"><Свойство Имя="Наименование" Тип="Строка"> <Значение>Пересечения</Значение>...</Ссылка>. Здесь Нпп - это ключ в соответствии ЗагруженныеОбъекты, из которого определяется ссылка на ранее созданный объект при загрузке, без дополнительного поиска.

А вот когда выгружаем не ссылочный тип в приемник ссылочного типа, например таблицу значений в справочник, то соответствие выгруженных объектов не заполняется и при появлении в выгрузке ссылки на ранее выгруженные данные, записывается узел для повторного поиска/создания объекта. Чтобы этого избежать, надо в методе "Перед выгрузкой" правила конвертации объекта установить значение параметров:

  • КлючВыгружаемыхДанных  = уникальному значению для данного объекта
  • ЗапоминатьВыгруженные = Истина

 


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

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


Во время загрузки файла с данными происходит поиск данных по УИД и по заданным полям поиска.

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

Если НомерВариантаПоиска = 1 тогда
    СтрокаИменСвойствПоиска = “ИНН, КПП”;
ИначеЕсли НомерВариантаПоиска = 2 Тогда
    СтрокаИменСвойствПоиска = “Наименование”;
КонецЕсли;

НомерВариантаПоиска, СтрокаИменСвойствПоиска - это параметры метода ПКО_ПоследовательностьПолейПоиска_..., который настраивается для правила конвертации объектов "Поля поиска".

Сюда же можно вставить поиск по произвольному алгоритму. Результат поиска надо поместить в параметр СсылкаНаОбъект.

Рекомендую обратить внимание на параметр УстанавливатьУОбъектаВсеСвойстваПоиска. Если его оставить равным Истина, то в найденный объект базы приемника будут записаны все переданные реквизиты из базы источника.


Основное преимущество - это использование JSOON.

JSOON позволяет переводить в текст и обратно массивы, структуру, простые типы.

Источники: 

https://infostart.ru/1c/articles/516810/

https://1c-programmer-blog.ru/programmirovanie/json-v-1s.html



1-10 11-16
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [28]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0