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

Публикация № 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. Филин 148 16.01.13 21:47 Сейчас в теме
Со всеми примерами еще подробно не разобрался, но по первому есть вопросы.

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

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

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

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

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

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

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

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


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

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

(3) xotr, "На конкретном примере показал убогость и неестественность правил и приемов КД при обмене данными между разнородными системами."
На самом деле, это вопрос компетенции. Если разобраться с КД - то никакой убогости, вполне достойная и работоспособная система.
fomix; Bukaska; +2 Ответить
15. fomix 29 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 3726 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 130 18.01.13 14:14 Сейчас в теме
(17) sa1m0nn,
нет, просто тут затронута сугубо узкая специфика.
И все делается кодом - все преимущества КД сведены только к выгрузке в XML.
19. AlexO 130 18.01.13 14:12 Сейчас в теме
Курсы - это когда дают знания, которые потом народ не знает, куда применить.
Все это делается более наглядным и быстрым способом - через DBF.
23. saiten 233 21.01.13 15:36 Сейчас в теме
(19)
Все это делается более наглядным и быстрым способом - через DBF.

Кому-то каменным топором удобнее, кому-то - станком с ЧПУ... Каждому своё.
26. AlexO 130 24.01.13 10:05 Сейчас в теме
(23) saiten,
ну конечно, чем непонятнее и замуторнее - тем лучше: и сам не понимаешь, что там делается, и коллеги ничего не разберут, но зато сколько таинственности и значимости... :)
А вот и слушатели под стать:
Человек, победивший КД, уже достоин уважения
28. saiten 233 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 130 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 28 26.06.13 07:19 Сейчас в теме
Да, статья полезная. Подобный способ сам использовал при переносе из самописной 7.7 в типовую УТ 10.3, кстати методичка Кузнецовой мне помогла.
Вообще КД интересная штука, иногда осознание того, как работает правило приходит только после создания этого правила.
36. &rew 28 26.06.13 07:20 Сейчас в теме
Кстати белый серого сейчас через бедро на иппон бросит.
Зеленоград; 1vasia1; +2 Ответить
37. echo77 1188 17.07.13 16:59 Сейчас в теме
(0) ИМХО, для каждого ПКС в ПГКС создавать обработчик:

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


не надо
vermouth; +1 Ответить
39. ultrannge89 24.06.15 14:58 Сейчас в теме
Добрый день. А есть ли возможность отследить в событии после загрузки, попал ли определенный документ в выгрузку? Мне важно знать есть ли в файле, другой документ по такому же договору как мой, только с другим видом... Не могу нигде найти(
40. Pirat-37 2 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 1188 30.04.19 08:59 Сейчас в теме
Обычно весь выгружаемый объект формируют в ПВД, а не в ПКГС и разных местах.
44. SergeMalikov 560 03.05.19 12:38 Сейчас в теме
(43) Да. Можно было бы сформировать в ПВД структуру соответствующую объекту в приемнике и передать нужному ПКО. Это был бы более наглядный вариант.
Оставьте свое сообщение

См. также

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

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

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

16.03.2021    2586    velemir    28    

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

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

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

25.03.2021    10037    rayastar    45    

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

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

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

28.12.2020    5043    comol    26    

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

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

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

30.08.2020    12305    quazare    34    

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

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

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

10.12.2016    38794    unichkin    74    

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

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

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

08.05.2020    41116    user5300    17    

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

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

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

27.01.2020    42651    ids79    26    

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

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

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

15.01.2020    32323    John_d    22    

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

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

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

15.10.2018    32529    tormozit    105    

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

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

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

30.12.2019    24823    kuzyara    38    

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

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

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

02.12.2019    19515    YPermitin    60    

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

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

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

22.11.2019    10164    Sibars    19    

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

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

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

20.09.2012    79684    tormozit    131    

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

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

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

07.10.2019    34153    HostHost    41    

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

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

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

01.10.2019    42290    Yashazz    50    

О программе Postman для тестирования API и для чего она нужна 1С-нику

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

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    15344    budidich    28    

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

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

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

11.07.2007    50568    tormozit    48    

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

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

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

06.09.2019    72043    rpgshnik    70    

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

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

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

05.09.2019    60778    ids79    55    

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

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

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

05.09.2019    34627    YPermitin    25    

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

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

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

10.09.2017    47410    tormozit    74    

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

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

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

03.09.2019    27475    YPermitin    81    

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

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

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

17.08.2019    37658    ids79    16    

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

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

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

08.08.2019    113617    ids79    67    

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

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

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

25.04.2019    16569    m-rv    2    

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

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

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

02.08.2019    46461    avalakh    26    

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

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

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

31.07.2019    31094    json    15    

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

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

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

26.07.2019    80667    ids79    14    

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

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

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

16.04.2019    21193    m-rv    17    

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

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

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

17.07.2019    41064    ids79    27    

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

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

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

09.07.2019    29138    YPermitin    14    

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

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

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

04.07.2019    20619    SeiOkami    50    

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

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

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

01.06.2018    32886    m-rv    22    

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

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

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

02.07.2019    63025    ids79    17    

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

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

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

25.06.2019    62553    ids79    26    

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

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

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

11.06.2019    27680    dmurk    146    

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

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

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

05.12.2017    28988    itriot11    34    

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

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

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

16.05.2019    51629    YPermitin    30    

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

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

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

07.04.2019    38615    ellavs    127    

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

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

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

28.03.2019    28971    ellavs    90    

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

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

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

27.01.2016    78976    Serginio    113    

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

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

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

14.03.2019    35468    YPermitin    53    

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

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

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

01.03.2019    51308    Смешной 1С    31    

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

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

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

26.02.2019    24818    Vladimir Litvinenko    28    

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

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

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

10.11.2018    38480    ids79    40    

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

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

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

03.02.2019    48404    ids79    11    

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

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

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

26.12.2018    29592    ids79    31