1. Belander 06.11.19 09:26 Сейчас в теме

Односторонний обмен данными (справочниками) из 1С:Бухгалтерия 8 в самописную конфигурацию

Добрый день.
Есть рабочая база на сервере 1С:Бухгалтерия 8 (8.19.10.01.4) обычные формы, необходимо выгружать справочник номенклатура в самописную конфигурацию на управляемых формах. Подскажите пожалуйста как это можно реализовать? Через выгрузку xml пробовал выгружать справочник, но при загрузке пишет ошибку "неверный формат файла выгрузки" Подскажите пожалуйста как это можно сделать? Новичок в 1С буду благодарен за помощь.

Технологическая платформа 1С:Предприятие 8.3 (8.3.9.2309).
Ответы
Избранное Подписка Сортировка: Древо
2. alivan 06.11.19 09:52 Сейчас в теме
(1)
Через выгрузку xml пробовал выгружать справочник, но при загрузке пишет ошибку "неверный формат файла выгрузки

Если форматы справочников не совпадают, а скорее всего так и есть, то как один формат можно загрузить в другой?
Нужны соответствующие правила. Что на что меняется или не меняется.
Если нужен xml, то нужно копать в сторону xdto. Это технология работы с xml в 1с.

Либо ставит конвертацию, создавать правила и пользоваться универсальной обработкой.
5. Belander 06.11.19 10:09 Сейчас в теме
(2) Формат справочников от чего зависит?
6. alivan 06.11.19 10:21 Сейчас в теме
(5) от формата справочника в данной конфигурации. как называются реквизиты, какого типа и размера.
если у одного справочника есть реквизит ЕдИзм справочник ЕдиницыИзм а у другого ЕдиницыИзмерения то как загрузить без исправления ? Будет ругатся на несоответствие форматов.

Ставится конвертация, загружаются обе конфигурации, сопоставляются объекты, сохраняются правила....
9. Belander 06.11.19 10:51 Сейчас в теме
(6) Спасибо за разъяснение)
3. ZergKRSK 125 06.11.19 10:03 Сейчас в теме
Это можно сделать, например, через конвертацию данных. Напишите свои правила обмена и будет xml загружаться прекрасно.
4. Belander 06.11.19 10:08 Сейчас в теме
(3) В конфигурации "Конвертация данных"?
8. ZergKRSK 125 06.11.19 10:51 Сейчас в теме
(4) да, это специализированная конфигурация.
11. Belander 06.11.19 10:57 Сейчас в теме
(8) Уже установил, пробую разобраться. Спасибо
7. DmitriyTih 06.11.19 10:47 Сейчас в теме
Если необходимо выгружать небольшое количество реквизитов ,то проще и быстрее написать свою обработку по выгрузке в txt, xml. Можно использовать COM, ТекстовыйДокумент, ЧтениеТекста, ЗаписьXML, фабрику XDTO, Конвертация данных. Все зависит от сути, сложности задачи, объема данных, архитектуры и т.п. Считаю каждый метод имеет место быть и нужно знать как они работают. Также хочу напомнить и про планы обмена, которые позволяют регистрировать изменения и кстати с их помощью можно тоже писать в xml быстро и не сложно - пример есть в желтой книге.
10. Belander 06.11.19 10:55 Сейчас в теме
(7) В идеале конечно чтобы все работало как : пользователь зашел в базу(самописная) и у него уже были данные обновленные по справочникам или хотя бы открывал обработку которая новые записи номенклатуры вытаскивала из 1С:Бухгалтерии и записывала в текущую. Лучше это реализовать каким методом?
12. ivan1703 06.11.19 11:03 Сейчас в теме
(10)Если не хотите сопоставлять конфигурации, пишите обработки по выгрузке/загрузки формат сами выбираете (.xml например). Вешаете на фоновое задание и обменивайтесь данными сколько угодно)
13. DmitriyTih 06.11.19 11:21 Сейчас в теме
(10)Регламент обновления может быть абсолютно любой, может конечно зависеть от объема данных. Можно настроить с помощью регламентного задания (если БД не файловая) и назначить расписание, например обмен ночью или обмен каждые 5 мин. Можно при входе пользователя, но не рекомендую, т.к. это не очень универсально. Давайте так БД Файловые или серверные? Сколько и какие реквизиты нужно обновлять (наименования, полное наименование и т.п.)? Какое количество номенклатур в БД? как часто номенклатуры могут изменяться? Есть ли потенциальный рост объема обновляемых данных? Обмен однонаправленный? Есть вероятность что появится третья БД для обмена номенклатурой?
Вот перечень важных вопросов которые возникли сразу.
16. Belander 06.11.19 12:45 Сейчас в теме
(13)
1. БД серверные.
2. 6 реквизитов(Код, Артикул, Наименование, Полное наименование, Класс ТМЦ, Базовая ед. изм.)
3. около 6000 номенклатур.
4. Добавляется каждый день около 3-5 номенклатур.
5. Обмен однонаправленный.
6. Есть вероятность что появится третья БД.
18. DmitriyTih 06.11.19 12:57 Сейчас в теме
(16)Я даже похожую задачу решал как-то давно, тоже с конфигурацией Хьюмен)
20. DmitriyTih 06.11.19 13:25 Сейчас в теме
(16) 1. БД серверные значит лучше использовать регламентные задания
Нужно определиться по каким критериям осуществлять поиск номенклатуры. Сейчас можно в самописной создавать номенклатуру с УИД как в бухгалтерии и определять номенклатуру по УИД. Можно завести реквизит в самописной БД "УИДБухгалтерии" и делать поиск по УИД. НО! если появится третья БД надо определяться как сапоставлять номенклатуру из разных БД, что делать при добавлении, изменении, удалении номенклатуры В БД, как разрешать коллизии, какая БД будет главной. Может придется делать поиск по артикулу, тогда рекомендую добавить реквизит "Бренд", чтобы артикулы не повторялись. Ой, много можно писать....
2. 6 реквизитов это тоже хорошо, только нужно определиться как синхронизировать ссылочные типы "Класс ТМЦ" и "Базовая ед. изм". Базовую ед. изм. по ОКЭД. Класс ТМЦ можно по наименованию (я полагаю их будет немного). Соответственно не забываем про вероятность появления третьей БД.
3. 6000 номенклатур это немного, можно выбрать любой способ.
4. 3-5 номенклатур это круто! обмены будут занимать секунды)
5. Пока однонаправленный это упрощает жизнь
6. третья БД даст большое усложнение алгоритма, если о ней не думать все просто

Я бы наверное сделал так :
Создал объект конфигурации "План обмена" и настроил на регистрацию изменений справочника номенклатура.
Провел первоначальную выгрузку данных из источника в приемник (написал обработку или зарегистрировал изменения по плану обмена).
В БД источник создал регламентное задание, которое дергает процедуру, которая сначала проверяет есть ли ответ по загруженным сообщениям от БД приемника. Если ответ есть, то снимаем регистрацию измениний для сообщений с соответствующим номером. Далее проверяет, есть ли изменения по номенклатуре, если есть, то формирует xml-файл для обмена , допустим в 7 утра или каждые 5 мин, как угодно.
В БД приемник создал регламентное задание, которое дергает процедуру, которая проверяет, есть ли файл для обмена, если есть, то выполняется обмен. После обмена файл удаляется и приемник шлет ответ, что сообщения с таким-тло номером загружены.

В общем как-то так, почитайте про планы обмена, я думаю они вам лучше подойдут. Зато получите новые знания и четко будете понимать что у вас просходит. Да и задачи Вам в дальнейшем могут поставить очень нетривиальные, раз есть самописная конфигурация
21. Belander 06.11.19 13:45 Сейчас в теме
(20) Хорошо, сейчас буду пробовать, спасибо!
24. DmitriyTih 06.11.19 14:04 Сейчас в теме
(21) Я конечно могу поискать готовые куски кода, в общем если наткнетесь на стену, пишите, помогу в меру свободного времени. И про планы обмена в желтой книге написано, информация что там есть вам будет достаточна
26. Belander 06.11.19 14:07 Сейчас в теме
(24) Да было бы замечательно! Буду разбираться, спасибо большое за помощь)
28. DmitriyTih 06.11.19 14:19 Сейчас в теме
(26) Пожалуйста! Кто-то когда-то мне помог, теперь я в меру своих знаний, возможностей и времени стараюсь помогать)
30. starik-2005 1973 06.11.19 15:19 Сейчас в теме
(16)
6 реквизитов
Дел на полчаса - уже бы написал давно и выгрузку, и загрузку.
14. DmitriyTih 06.11.19 11:26 Сейчас в теме
(10)Да, скажите а бухгалтерия чья? 1с, Хьюмен ...
17. Belander 06.11.19 12:45 Сейчас в теме
19. DmitriyTih 06.11.19 13:00 Сейчас в теме
(17)в настройках какое значение флага "ВестиУчетНоменклатурыПоНесколькимВидам"?
22. Belander 06.11.19 13:46 Сейчас в теме
(19) В настройке учетной политики и констант, ВестиУчетНоменклатурыПоНесколькимВидам = Истина.
23. DmitriyTih 06.11.19 13:59 Сейчас в теме
(22)Тогда не забывайте, что одна и та же номенклатура может быть, допустим и товаром и материалом. Например в самописной БД у вас пока нет возможности это понимать. Хотя если у вас нет производства, может для вас это неактуально.
25. Belander 06.11.19 14:06 Сейчас в теме
27. DmitriyTih 06.11.19 14:17 Сейчас в теме
(25) Тогда вам еще информация для размышления) Смотря какие задачи стоят перед самописной.
32. Belander 14.11.19 09:56 Сейчас в теме
(27) Пробовал выгрузить, настроил правила, начал выгружать файлы написано что загружено 0 объектов. Пересмотрел кучу видео перепробовал многое ничего не выходит
Прикрепленные файлы:
34. DmitriyTih 15.11.19 14:00 Сейчас в теме
(32) Так выгружать надо из бухгалтерии а загружать в самописную. Я смотрю делаете через обработку "Универсальный обмен данными". Я ей пользовался очень давно, не совсем помню как она работает. Вам быстрее самому написать выгрузку загрузку. План обмена создали? пришлите скрины объекта конфигурации. Я попробую вам скинуть код выгрузки, загрузки.
35. Belander 15.11.19 14:51 Сейчас в теме
(34) План обмена не создавал. Структуры метаданных XML могу скинуть.
Прикрепленные файлы:
36. DmitriyTih 15.11.19 15:16 Сейчас в теме
(35) а, я понял, Вы пошли другим путем, хотите каждый раз выгружать всю номенклатуру из базы источника в приемник. Я не сильно помню как работает универсальный обмен данными. Вроде нужно запускать обработку в базе источнике ,чтобы данные выгрузились в файл, а потом загрузить этот файл в базе приемнике. Нужно открыть файл и посмотреть глазами, выгружена ли хотя бы одна номенклатура. если загрузка не проходит, то нужно включать возможность отладки, чтобы разобраться что происходит
39. Belander 15.11.19 15:23 Сейчас в теме
(36) В идеале я хочу чтобы все автоматом выгружалось и загружалось, пробую вручную потому что хочу элементарно для начала убедиться что все загружается. Буду искать причину через отладчик почему не загружается.
37. DmitriyTih 15.11.19 15:17 Сейчас в теме
(35)Если будете делать через планы обмена, пишите, а так много вам помочь не смогу
38. Belander 15.11.19 15:21 Сейчас в теме
(37) Планы обмена пока только изучаю, буду думать как сделать, а так спасибо за подсказку)
15. starik-2005 1973 06.11.19 11:28 Сейчас в теме
1. Определиться, какие реквизиты есть в базе-приемнике (на управляемых формах) в справочнике "Номенклатура".
2. Отделить простые реквизиты от ссылок.
3. Разобраться, откуда из базы-источника (обычные формы) взять каждый из реквизитов.
4. Создать структуру со списком полей базы источника, которые будут потом загружены в базу-приемник.
5. Написать запрос, который из базы источника получить все нудные поля.
6. Выполнить запрос и для каждого вернувшегося значения заполнить созданную структуру и положить ее в массив. Для простых типов (число, булево, строка, дата) в запросе должны быть взяты значения как есть. Для ссылочных типов нужно взять только те реквизиты ссылки, которые имеют место быть в базе-приемнике (код, наименование, иные существенные реквизиты).
7. Выгрузить массив структур в XML или JSON.
8. В базе-приемнике загрузить массив структур из XML или JSON.
9. Для каждого элемента массива произвести поиск всех имеющихся в нем сущностей (элементов ссылочного типа и элемента самой номенклатуры).
10. Создать все объекты ссылочных типов, если они не найдены.
11. Создать номенклатуру, если не найдена.
12. Заполнить данными.
13. Записать.
14. Профит.
15. Грустно посмотреть на вышний список и разобраться с конвертацией, где придется сделать ровно то же самое.
29. Vitaly1C8 06.11.19 15:12 Сейчас в теме
(15) Согласен с предыдущим постом, связываться с конвертацией не стал бы.
В целом идея следующая: из базы источника выгружаем объекты в "Стандартный" XML
В базе приемнике: читаем XML - файл с помощью DOM обрабатываем только нужные поля - так как нам надо, со всеми проверками и нюансами.
33. Belander 14.11.19 09:59 Сейчас в теме
(15) Запрос сделал. Не могли бы подсказать как это можно реализовать или подробная инструкция, или что нибудь почитать как реализовать это? не делал этого раньше.
31. yurikmellon 1 08.11.19 13:02 Сейчас в теме
я бы сделал с использованием стандартной обработки ЗагрузкаДанныхИзТабличногоДокумента.epf
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Екатеринбург
зарплата до 120 000 руб.
Полный день

Консультант-аналитик 1С
Рязань
зарплата до 80 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 90 000 руб.
Полный день

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день