Прием конвертации, который позволит решить много задач

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

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

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

Данный прием широко использовался для переноса информации из конфигурации «Бухгалтерский учет»  в  конфигурацию «Зарплата и управление персоналом 2.5».

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

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

 Вот несколько примеров правил конвертации, которые пришлось разработать:

Отмечу, что предварительно были разработаны простые правила конвертации, для объектов которые можно было сопоставить в источнике и приемнике.

Пример1: Генерация документа «ПриемНаРаботуВОрганизацию»

В источнике присутствует документ «ПриказОПриемеНаРаботу» но ни одного документа не заполнено. В приемнике документ «ПриемНаРаботуВОрганизацию» имеет несколько табличных частей, которые надо заполнить информацией по работникам и основным начислениям. Необходимо было извлечь информацию из справочника «Сотрудники» исходной конфигурации и поместить  в соответствующие табличные части документа «ПриемНаРаботуВОрганизацию» конфигурации приемника. Т.е. на выходе у нас должен сформироваться один документ «ПриемНаРаботуВОрганизацию» содержащий информацию о всех сотрудниках.  Как инициировать создание одного документа в приемнике? Применили искусственный прием: в событии «Перед обработкой» правила выгрузки данных разместили код:

Данный код, размещенный в правиле выгрузки данных, спровоцирует выгрузку одного объекта, которого на самом деле нет в источнике.

Правило конвертации объектов настроили следующим образом:

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

В обработчике события «ПередВыгрузкой» правила конвертации группы свойств создали таблицу значений со структурой соответствующей структуре информации, которую необходимо передать в приемник. Циклом по справочнику «Сотрудники» заполнили эту таблицу и передали ее параметру «КоллекцияОбъектов».

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

Значение = ОбъектКоллекции.ИмяКолонкиТаблицыЗначений

Где ИмяКолонкиТаблицыЗначений – имя колонки таблицы, которую мы создали в ПКГС.

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

Далее разработали правила для заполнения табличной части «ОсновныеНачисления» в приемнике.  Напомню, что видов расчета и исходной конфигурации нет. В справочнике «Сотрудники» конфигурации-источника есть информация об окладе, ставке и надбавках. 

Чтобы выполнить сопоставление - нашли в конфигурации-приемнике виды расчета соответствующие окладу и видам надбавок, добавили недостающие. Запомнили их коды.  Далее в обработчике «Перед обработкой» правила конвертации группы свойств, для табличной части «Основные начисления» разместили код:

Далее по аналогии создали правила конвертации свойств, для нужных реквизитов.

 

Пример 2: Перенос информации о лицевых счетах сотрудников в банке

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

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

1)    Создаем правило выгрузки данных в котором описываем таблицу значений с одной колонкой. Добавляем в таблицу значений количество строк равное количеству банков.  И присваиваем таблицу значений параметру «ВыборкаДанных».

2)  Создаем правило конвертации объектов, правила конвертации свойств и правила конвертации группы свойств:

3)    В обработчике события  «Перед выгрузкой» правила конвертации группы свойств формируем таблицу значений со структурой аналогичной структуре табличной части приемника:

4) Далее аналогично примеру 1.

Пример 3: Перенос информации об изменении окладов

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

1)    Создаем правило выгрузке данных где в соответствующем обработчике определяем таблицу значений с реквизитом «Дт». Добавляем в таблицу значений количество строк равное количеству событий изменения оклада.

В реквизит «Дт» добавляем даты изменения оклада.

2)    Правило конвертации свойств выглядит так:

3)    Содержание обработчиков правил конвертации группы свойств :

- для табличной части «РаботникиОрганизации»:

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

- для табличной части «ОсновныеНачисления»:

тз=СоздатьОбъект("ТаблицаЗначений");
тз.НоваяКолонка("Сотрудник");
тз.НоваяКолонка("ФизЛицо");
тз.НоваяКолонка("ВидРасчета");
тз.НоваяКолонка("Показатель1");
тз.НоваяКолонка("Валюта");

сп=СоздатьОбъект("Справочник.Сотрудники");
сп.ВыбратьЭлементы();
Пока сп.ПолучитьЭлемент()=1 Цикл
    Если сп.ПометкаУдаления()=1 Тогда
        Продолжить;
    КонецЕсли;
    Если сп.ЭтоГруппа()=1 Тогда
        Продолжить;
    КонецЕсли;
    Если Источник.Дт
        Продолжить;
    КонецЕсли;
    //***
    ОкладПоЧасам  =  сп.Оклад.Получить(Источник.Дт);
    Если ОкладПоЧасам > 0 Тогда
        тз.НоваяСтрока();
        тз.Сотрудник = сп.ТекущийЭлемент();
        тз.ФизЛицо    = сп.ТекущийЭлемент();
        тз.ВидРасчета= "00002";
        тз.Показатель1 = ОкладПоЧасам;
        тз.Валюта         = "BYR";
    КонецЕсли;
КонецЦикла;  
КоллекцияОбъектов = тз;

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

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Филин 118 16.01.13 21:47 Сейчас в теме
Со всеми примерами еще подробно не разобрался, но по первому есть вопросы.

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

Получается что-то вроде такого:

ПВД:
 ..тут может быть какой-то цикл...

данныеДокумента = создатьОбъект("СписокЗначений");
данныеДокумента.добавитьЗначение(1,"НомерДок");
данныеДокумента.добавитьЗначение("Перенос данных","Комментарий");

тчДокумента = создатьОбъект("ТаблицаЗначений");
тчДокумента.новаяКолонка("Сумма");
тчДокумента.новаяСтрока();
тчДокумента.сумма = 100;

данныеДокумента.добавитьЗначение(тчДокумента, "Платежи");

выгрузитьПоПравилу("заглушка",,данныеДокумента,,"Платежка");

...конец цикла...
Показать


В ПКО у реквизитов шапки и у ПКГС табличной части ставим флаг "получить из входящих данных". Бонус: в ПКС полей табличной части не надо ничего писать или ставить какие-то галки, все само схватится
Spacer; echo77; wowik; V_Ladeska; GreenEye; alon; xavi; servs; fancy; +9 Ответить
2. LexSeIch 206 17.01.13 05:56 Сейчас в теме
Мир этому дому!
Конвертация - как шаманство - есть инструмент и правила, а все остальное свобода творчества. Судя по статье - это результат практического использования. Это всегда плюс.
3. Азбука Морзе 17.01.13 09:56 Сейчас в теме
После того как познакомился с XDTO-серилизацией конфигурацию "Конвертация данных" вспоминаю как страшный сон. Автор молодец. На конкретном примере показал убогость и неестественность правил и приемов КД при обмене данными между разнородными системами. За это и плюсую.
avz_1C; V_Ladeska; servs; +3 2 Ответить
4. stanru1 86 17.01.13 12:02 Сейчас в теме
(3) особенно в 7.7 XDTO сериализация рулит :)
на практике перенос (планирование - разработка - тестирование - эксплуатация) из конфигурации 77 в 82 с помощью КД выполняется в несколько раз быстрее, чем альтернативные варианты.
echo77; avz_1C; the1c; RomanBor; 1vasia1; gavrikprog; Spacer; dimas103; +8 Ответить
5. Istur 1434 17.01.13 13:15 Сейчас в теме
(3) xotr, раз такой крутой механизм для тебя, то почему нет ни одной твоей статьи про XDTO-сериализацию?
avz_1C; V_Ladeska; Ish_2; +3 Ответить
6. AlexO 129 17.01.13 13:49 Сейчас в теме
(5) Istur,
так одно в страшном сне, другое - видимо, в прекрасном сне :)
7. Азбука Морзе 17.01.13 14:17 Сейчас в теме
(5) xotr не писатель, xotr читатель:)

п.с. В соседней ветке про XDTO целый цикл статей замутили, желающие могут ознакомится.
9. ARL 298 17.01.13 16:02 Сейчас в теме
Автор заслуживает громадное уважение за то, что самостоятельно разобрался с системой КД, т.к описание КД оставляет желать лучшего (мягко говоря). Но сейчас для программистов появился громадный помощник - курсы Гилева. Все подобные задачи на курсах выполняются в качестве домашнего задания, от "шаманства" ничего не остается.

(3) xotr, "На конкретном примере показал убогость и неестественность правил и приемов КД при обмене данными между разнородными системами."
На самом деле, это вопрос компетенции. Если разобраться с КД - то никакой убогости, вполне достойная и работоспособная система.
fomix; Bukaska; +2 Ответить
15. fomix 26 18.01.13 11:36 Сейчас в теме
(3) xotr, Интересно как в XDTO можно решить задачи по конвертации одного объекта в другой, получения из одного объекта двух и более, а также наоборот, настроить поиск и прочие фичи. Сдается мне у вас есть опыт тривиального обмена через XDTO между типовыми конфами в общем виде. Не помню, чтобы при использовании XDTO, можно было бы вмешаться в процесс формирования итогового файла выгрузки.
18. Азбука Морзе 18.01.13 13:11 Сейчас в теме
(15)formix
Синтаксис-помощник:
Механизм XDTO позволяет создать модель представления данных (модель типов и значений), которая, с одной стороны, обеспечивает возможность просто и естественно манипулировать данными в среде 1С:Предприятия 8, а с другой стороны, данная модель хорошо приспособлена для прозрачного преобразования данных в другие форматы, главным образом XML.

На практике достаточно:
1.создать модель документа "Ляляля" в базе приемнике

2.создадать и описать файл для записи данных в xlm-формате
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
НоваяЗаписьXML = Новый ЗаписьXML;
ФайлXML = ОсновныеПараметры.ФайлВыгрузки;
НоваяЗаписьXML.ОткрытьФайл(ФайлXML, ПараметрыЗаписиXML);
ЗаписьСообщения.НачатьЗапись(НоваяЗаписьXML, СтрокаТаблицыИнформации.УзелИнформационнойБазы);

// из описания типов фабрики XDTO выберем нужные для создания объектов
Фабрика = ФабрикаXDTO;
документыТип = Фабрика.Тип("http://www.lalala.ru", "Документы");
// дальше объектные реквизиты и табличные части
ЛяляляТип = ДокументыТип.Свойства.Получить("ляляля").Тип;
ТЧляляТип =ЛяляляТип .Свойства.Получить("ТЧляля").Тип;
ЭлементТЧляляТип =ТЧляляТип.Свойства.Получить("ЭлементТЧляля").Тип;

3.запросом получить все необходимые данные для заполнения ляляля-объекта

4. обработать выборку:
Документы = Фабрика.Создать(документыТип);
Пока Выборка.Следующий() Цикл
//создадим объект XDTO и заполним его
ЛяляляОбъект = Фабрика.Создать(ЛяляляТип);
ЗаполнитьЗначенияСвойств(ЛяляляОбъект, Выборка)
документыТип.ляляля.Добавить(ЛяляляОбъект);
КонецЦикла;
5. закончить формирование XML-файла

Фабрика.ЗаписатьXML(НоваяЗаписьXML, Документы);
ЗаписьСообщения.ЗакончитьЗапись();
НоваяЗаписьXML.Закрыть();
8. Yashazz 3265 17.01.13 15:53 Сейчас в теме
Да, это идея, полезная на практике. Ещё в 2008-м пользовался точно таким подходом, разве что между двумя восьмёрочными конфами. Спасибо автору, что подробно всё разжевали и показал, мне в своё время недосуг было.
10. Stepan_1c 17.01.13 16:07 Сейчас в теме
спасибо за статью) на пару дней пораньше бы еще лучше было) эээх)
11. DoctorRoza 17.01.13 19:55 Сейчас в теме
Хорошая статья, очень нужная информация! Плюс однозначно! :)
12. KliMich 18.01.13 01:54 Сейчас в теме
Спасибо! Наглядные и показательные примеры, когда надо "приготовить из ничего..."
13. IgorXml 18.01.13 09:36 Сейчас в теме
Спасибо. Наглядно сделал.
14. OVladius 32 18.01.13 11:30 Сейчас в теме
Где вы раньше были? Всех сотрудников с 7-ки руками фигачили :(
16. Boroda 90 18.01.13 12:28 Сейчас в теме
Отличная статья! Помогла разобраться в некоторых вопросах, где раньше тупил. Спасибо автору!
17. sa1m0nn 22 18.01.13 12:49 Сейчас в теме
Спасибо за статью, нормально написано, хоть и не ново.
Видать, стал я матёрым конвертатором, ничего не удивило)
20. AlexO 129 18.01.13 14:14 Сейчас в теме
(17) sa1m0nn,
нет, просто тут затронута сугубо узкая специфика.
И все делается кодом - все преимущества КД сведены только к выгрузке в XML.
19. AlexO 129 18.01.13 14:12 Сейчас в теме
Курсы - это когда дают знания, которые потом народ не знает, куда применить.
Все это делается более наглядным и быстрым способом - через DBF.
23. saiten 229 21.01.13 15:36 Сейчас в теме
(19)
Все это делается более наглядным и быстрым способом - через DBF.

Кому-то каменным топором удобнее, кому-то - станком с ЧПУ... Каждому своё.
26. AlexO 129 24.01.13 10:05 Сейчас в теме
(23) saiten,
ну конечно, чем непонятнее и замуторнее - тем лучше: и сам не понимаешь, что там делается, и коллеги ничего не разберут, но зато сколько таинственности и значимости... :)
А вот и слушатели под стать:
Человек, победивший КД, уже достоин уважения
28. saiten 229 24.01.13 16:39 Сейчас в теме
(26) Думаю, эта тема мусолилась уже достаточно, чтобы не поднимать её ещё раз. А непонятность, собственно, - вещь относительная.
31. vkr 101 29.01.13 08:10 Сейчас в теме
(19) AlexO
Да, Вы правы...
Через DBF все получается гораздо быстрее, прозрачнее и более управляемо.
Можно из одного большого выгруженного файла с кучей информации брать
по необходимости то, что сейчас нужно, а также делать преобразования
объектов "на лету". Причем, для совершенно разных, иногда очень слабо
совместимых конфигураций ( даже и не 1С-овских иногда :) )
Но, все равно, автору большое спасибо за подробное описание процесса !
21. Tishu 3 21.01.13 04:42 Сейчас в теме
Из всей неисчерпаемой как атом КД можно зазубрить один приём - в ПВД создается таблица значений по структуре совпадающей с объектом из Приемника и вызывается ПКО - и можно быстро решать массу одноразовых задач. Достаточно посмотреть примеры конвертаций из КД.
22. AlexO 129 21.01.13 10:42 Сейчас в теме
(21) Tishu,
"одноразовых" - это только создание в приемнике тех объектов, которых нет с источнике.
24. INSh 22 22.01.13 11:38 Сейчас в теме
Человек, победивший КД, уже достоин уважения :)
А еще этот человек не поленился и поделился своими достижениями!
Молодец! Плюс.
25. karakozov 24.01.13 09:50 Сейчас в теме
XDTO Конечно отличный механизм, и не буду защищать КД, но тем не менее очень часто нужно сделать обмен и очень быстро, правильно описать большие объемы по средствам XDTO это то же серьезная работа, особенно если меняешься между разными структурами метаданных или вообще между 77 -> 8.2 . Или еще усложним, из 8.2 в иные реляционные структуры с извесной нам структурой но не свойственной 1С источнику вообще по структуре МД.Имеет место быть в общмею
27. DieseL_OFF 24.01.13 10:33 Сейчас в теме
Эххх мне бы лучше другое
29. Sasha255n 25.01.13 15:48 Сейчас в теме
Спасибо очент необходимое и интересное ренение
30. Sasha255n 25.01.13 15:48 Сейчас в теме
Как алтернатива КД имеет место на существование спасибо
32. kurvik 29.01.13 15:08 Сейчас в теме
Очень интересное решение.В практических делах пригодиться,особенно если работаешь с разными структурами метаданных или вообще между 77 -> 8.2 надо делать переброску.
33. fnv 10.02.13 19:16 Сейчас в теме
Спасибо за информацию) Оч. сложные приемы конвертации, я бы через OLE, наверное, делала, если бы мне пришлось делать такой перенос)
34. Franchiser 47 04.04.13 14:16 Сейчас в теме
Нового ничего не узнал, но статья заслуживает уважения. Рекомендую прочитать методичку О. Кузнецовой, все эти моменты там есть.
Недостаток использования переменной ВыборкаДанных с моей точки зрения - слишком много написанного кода, не всегда наглядного. То есть чтобы понять как какой объект или свойство трансформируется нужно читать весь код в обрабочике "передобработкой" ПВД. Кроме того фильтры при выгрузке из 7.7 работать не будут.
В КД есть более эффективные и наглядные механизмы: использование переменных ВходящиеДанные и Исходящиеданные, а также КлючВыгружаемыхДанных, функции ВыгрузитьПоПравилу(). Возможно в этой задаче разница особенно и не заметна, но в основной массе задач, использование указанных мной переменных более оправдано.
38. Romany 02.03.15 20:08 Сейчас в теме
(34) Franchiser, Здравствуйте. Как раз разбираюсь с этими переменными, есть много вопросов. Так например задача такая - Для простоты будем считать, что конфигурации самописные, и разные по структуре. В источнике есть документ, в приемнике надо из этого документа создать два объекта 1) справочник. 2) РегистрСведенийЗапись. Пытаюсь сделать так. 1) ПКО - Документ ->Справочник,
2) ПКО Источника нет -> РегистрСведенийЗапись, ПКС - В приемнике - структура регистра (3 поля), стоит флаг "Получить из входящих данных". Далее в ПВД Документ. В обработчике "ПослеВыгрузки" запросом получаю таблицу движений документа, для переноса их в регистр сведений в приемнике. Тут же надо вызвать функцию "ВыгрузитьПоПравилу()", но вот сложности. В какие параметры, чего пихать, и как это вообще должно работать. То есть, можно ли в параметр ИсходящиеДанные записать таблицу значений (Выгрузку запроса) или создать выборку, и в цикле формировать структуру, и вызывать выгрузить по правилу. Скажу сразу, в моем случае, ни так ни эдак не работает. Обмен происходит по средствам типовой обработки обмена. Если не сложно расскажите в двух словах, как правильно с этим работать, и использовать.
35. &rew 21 26.06.13 07:19 Сейчас в теме
Да, статья полезная. Подобный способ сам использовал при переносе из самописной 7.7 в типовую УТ 10.3, кстати методичка Кузнецовой мне помогла.
Вообще КД интересная штука, иногда осознание того, как работает правило приходит только после создания этого правила.
36. &rew 21 26.06.13 07:20 Сейчас в теме
Кстати белый серого сейчас через бедро на иппон бросит.
Зеленоград; 1vasia1; +2 Ответить
37. echo77 1157 17.07.13 16:59 Сейчас в теме
(0) ИМХО, для каждого ПКС в ПГКС создавать обработчик:

Значение = ОбъектКоллекции.ИмяКолонкиТаблицыЗначений


не надо
vermouth; +1 Ответить
39. ultrannge89 24.06.15 14:58 Сейчас в теме
Добрый день. А есть ли возможность отследить в событии после загрузки, попал ли определенный документ в выгрузку? Мне важно знать есть ли в файле, другой документ по такому же договору как мой, только с другим видом... Не могу нигде найти(
40. Pirat-37 1 06.07.15 16:03 Сейчас в теме
(39) ultrannge89, через [Сообщить()] выводите, в событии [При загрузке].
41. nems 22.09.15 17:29 Сейчас в теме
Здраствуйте! Подскажите, плиз, как перенести справочник Номенклатура по отбору
ВходящиеДанные = Новый Структура;

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ТоварыОрганизацийОстатки.Номенклатура
		|ИЗ
		|	РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
		|ГДЕ
		|	ТоварыОрганизацийОстатки.КоличествоОстаток > 0";

	Результат = Запрос.Выполнить();

	Выборка = Запрос.Выполнить().Выгрузить();
	
	
	ВходящиеДанные.Вставить("НоменклатураТабл", Выборка);
	
	ВыгрузитьПоПравилу(,,ВходящиеДанные,,"Номенклатура1")
Показать


Выгрузка проходит успешно.

Но есть проблема: Как правильно задать ПКО и ПКС ?
Прикрепленные файлы:
42. Kvitka_ru 14.06.17 12:30 Сейчас в теме
Спасибушки! безценная консультация!!
43. echo77 1157 30.04.19 08:59 Сейчас в теме
Обычно весь выгружаемый объект формируют в ПВД, а не в ПКГС и разных местах.
44. SergeMalikov 553 03.05.19 12:38 Сейчас в теме
(43) Да. Можно было бы сформировать в ПВД структуру соответствующую объекту в приемнике и передать нужному ПКО. Это был бы более наглядный вариант.
Оставьте свое сообщение

См. также

Онлайн-курс "1С:Специалист-консультант по "1С:Зарплата и управление персоналом" 21-24 июля 2020 года Промо

Решение задач на 1С:Специалист Бухгалтерский учет Зарплата Управление персоналом (HRM) v8 v8::СПР ЗУП3.x БУ УУ Бесплатно (free)

Спрос на специалистов по внедрению "1С:Зарплата и управление персоналом 8" с каждым днем растет. Станьте одним из востребованных специалистов - пройдите обучение по актуальной редакции 1C:ЗУП 3.1.

13200 руб.

14.06.2018    11206    4    4    

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г.

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

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

22.04.2020    4628    23    Infostart    2    

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

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

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

27.01.2020    19142    0    ids79    26    

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

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

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

15.01.2020    18518    0    John_d    22    

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

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

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

10.12.2016    35501    0    unichkin    45    

Последовательности событий. Шпаргалка

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

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

30.12.2019    13456    0    kuzyara    33    

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

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

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

02.12.2019    14629    0    YPermitin    72    

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

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

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

22.11.2019    6803    0    Sibars    19    

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

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

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

15.10.2018    27935    0    tormozit    100    

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

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

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

01.10.2019    28214    0    Yashazz    45    

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

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

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

06.09.2019    39744    0    rpgshnik    62    

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

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

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

05.09.2019    41878    0    ids79    54    

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

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

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

20.09.2012    75420    0    tormozit    129    

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

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

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

05.09.2019    24423    0    YPermitin    24    

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

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

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

03.09.2019    23140    0    YPermitin    80    

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

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

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

17.08.2019    28282    0    ids79    16    

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

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

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

11.07.2007    46316    0    tormozit    38    

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

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

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

08.08.2019    65270    0    ids79    40    

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

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

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

02.08.2019    29314    0    avalakh    22    

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

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

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

26.07.2019    48912    0    ids79    11    

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

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

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

10.09.2017    42343    0    tormozit    74    

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

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

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

17.07.2019    31513    0    ids79    27    

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

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

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

09.07.2019    23816    0    YPermitin    13    

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

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

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

04.07.2019    17707    0    SeiOkami    50    

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

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

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

25.04.2019    15408    0    m-rv    2    

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

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

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

25.06.2019    45995    0    ids79    25    

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

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

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

11.06.2019    22829    0    dmurk    144    

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

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

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

16.05.2019    38428    0    YPermitin    30    

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

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

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

01.06.2018    28824    0    m-rv    21    

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

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

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

11.05.2019    26597    0    Eret1k    23    

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

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

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

16.04.2019    19174    0    m-rv    17    

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

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

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

07.04.2019    32065    0    ellavs    126    

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

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

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

05.12.2017    26862    0    itriot11    34    

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

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

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

28.03.2019    25279    0    ellavs    88    

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

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

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

14.03.2019    28880    0    YPermitin    53    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

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

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    34616    0    ids79    9    

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

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

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

27.01.2016    73424    0    Serginio    108    

EnterpriseData – часть 2. Процесс выгрузки данных

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

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

26.12.2018    24794    0    ids79    31    

Новый подход к обмену данными EnterpriseData

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

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

14.12.2018    37853    0    ids79    72    

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

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

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

16.11.2018    34258    0    ids79    40    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

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

14.11.2018    74814    0    GeterX    112    

Программное заполнение пользовательских параметров и отборов СКД

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

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

13.11.2018    41364    0    Unk92    21    

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

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

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

10.11.2018    32417    0    ids79    40    

Произвольный код в фоновом режиме

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

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

03.09.2018    25690    0    nikita0832    42    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

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

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

23.08.2018    36458    0    Rain88    46    

Тестер: частые вопросы

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

Ошибкам бой - тесты норма жизни!

25.07.2018    27532    0    grumagargler    26    

Работаем с дополнительными реквизитами на форме

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

Пара полезных процедур для работы с дополнительными реквизитами на форме. Далее в статье: 1. Как называются дополнительные реквизиты на форме и в какой момент они появляются на форме? 2. Как проверить до записи корректность заполнения пользователем дополнительного реквизита? 3. Как заполнить значение дополнительного реквизита по другому событию и обновить данные на форме? 4. Как расположить дополнительный реквизит в указанном месте на форме?

15.07.2018    31781    0    papche    37