- Юрий

12
Рейтинг

Malice
Юрий -



  •   Регистрация: 12.06.2009 (14 лет назад)

  •   Был(а) на сайте: 17.04.2024

Подписчики 2

Группы

IE 2013 REV Участник

Рейтинг 12

Универсальная выгрузка данных из 1С 7.7 в JSON

Инструменты и обработки Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m) Внешняя обработка (ert,epf) Внешние источники данных

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

2 стартмани

09.10.2019    16827    73    Malice    16       

12

Комментарии

ОбменУниверсальная выгрузка данных из 1С 7.7 в JSON#16 01.11.21 16:43
(15) 1. Т.к. выгрузка универсальная, для выгрузки остатков надо модифицировать запрос под конфигурацию. Свести к группировкам Склад, Товар и Остаток. Примерно так:
Код
   ТекстЗапроса = ТекстЗапроса +
   "//{{ЗАПРОС(ТоварыЗаПериоды)
   |Склад=Регистр.ОстаткиТМЦ.Склад;
   |Товар=Регистр.ОстаткиТМЦ.Номенклатура;
   |Кол=Регистр.ОстаткиТМЦ.Количество;
   |Функция КонКол  = КонОст(Кол);";


2. Тут не понятно, посмотреть бы под отладкой. Повторить не получилось. Возможно связано с выгрузкой реквизита ЮрФизЛицо и оно не заполнено..
ОбменУниверсальная выгрузка данных из 1С 7.7 в JSON#11 10.10.19 12:29
(7)
В принципе, можно. Алгоритм там такой:
1. Запускаем обработчик ожидания - форма.ОбработкаОжидания("Выгрузка",60*2);
2. В нем - получить список изменений - запрос к таблице 1SUPDTS
3. Вызов этой обработки с передачей списка - открытьформумодально("Отчет",список, каталогИб()+"extforms\ВыгрузитьJson.ert");
4. Удаление изменившихся объектов из списка - - запрос к таблице 1SUPDTS
5. В 8-ке по регламенту запускается обработка с загрузкой из каталога.

На больших оборотах подглючивает. 1SUPDTS фиксирует только факт изменения, не соблюдается порядок. Иногда это критично.
В результате от онлайн отказались, выгрузили/загрузили всё 1 раз.
ОбменУниверсальная выгрузка данных из 1С 7.7 в JSON#10 10.10.19 12:20
(8)
В 7-ке и 8-ке формат uid-ов разный. Я делал 2-мя способами:
1. добавлял новый общий реквизит к объектам в 8-ке, в него писал uid7, по нему синхронизировал
2. писал uid7 в комментарий к объекту, по нему поиск при загрузке.
Без программирования как раз запись в комментарий подойдет.
ОбменУниверсальная выгрузка данных из 1С 7.7 в JSON#6 10.10.19 9:38
(3) Типовая конвертация не работает с самописными конфигурациями. Документов было много, более 3т в сутки. Из типовых конфигураций выгрузить штатно тоже не вышло.. Висит по 2 дня, потом падает с ошибкой. Здесь формат компактнее, запись в файл через Scripting.FileSystemObject - быстрее, нет проблем с длинными строками.
ОбменУниверсальная выгрузка данных из 1С 7.7 в JSON#5 10.10.19 9:30
(1)
Грузить своей обработкой. Если кратко, то процесс такой:

&НаКлиенте
Процедура Загрузитьjson(Команда)
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.ОткрытьФайл(ЭтаФорма.Объект.файлЗагрузки, "windows-1251");
таб = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
ЗагрузитьНаСервере (таб);
КонецПроцедуры

&Насервере
процедура ЗагрузитьНаСервере (таб)
Для каждого стр из таб Цикл
если стр.свойство("ссылка") тогда // справочники
если стр.ссылка.TYPE="СправочникСсылка.НормыСписания" тогда
ЗагрузитьНормыСписанияСервер(стр);
иначеесли стр.ссылка.TYPE="СправочникСсылка.Местахранения" тогда
ЗагрузитьМестаХраненияСервер(стр);
//и т.д. для каждого вида, либо если только код+наименование +родитель - одной процедурой
конецесли;
иначеесли стр.свойство("TYPE") тогда // документы
если стр.TYPE="ДокументСсылка.ПриходнаяНакладная" тогда
ЗагрузитьДокументПриходнаяНакладная(стр, "ПриходнаяНакладная");
иначеесли стр.TYPE="ДокументСсылка.РасходнаяНакладная" тогда
// и т.д.
конецесли;
конеццикла;
конецпроцедуры

&Насервере
процедура ЗагрузитьДокументПриходнаяНакладная(стр, вид)
док="";
если не НайтиИЗаполнитьДокумент(стр, вид, док) тогда возврат; конецесли; // тут поиск. По номеру/уиду/как угодно.
шапка = стр.шапка[0];
док.Склад = Справочники.МестаХранения.НайтиПоКоду(шапка.Склад.код);
док.Клиент = Справочники.Контрагенты.НайтиПоКоду(шапка.клиент.код);
док.товары.очистить();
для каждого строка из стр.табличнаячасть цикл
товары = док.товары.Добавить();
товары.товар = справочники.Номенклатура.НайтиПоКоду(строка.Товар.код);
товары.Количество = строка.Количество;
товары.Цена = строка.цена;
товары.Сумма = строка.Сумма;
товары.НДС = строка.НДС;
конеццикла;
ЗаписатьДокумент(стр, док);
конецпроцедуры
ОбменУниверсальная выгрузка данных из 1С 7.7 в JSON#4 10.10.19 9:18
(2)
Ссылки на редактор:
https://www.onlinejsonconvert.com/json-editor.php
https://jsoneditoronline.org/
Нужны не для редактирования, а для проверки, что файл валидируется. Помогают при отладке, поиске ошибок. По практике - проблемы бывают из-за символов, переносимых в реквизиты копированием - табуляции, ентеры и проч. Для решения этого добавлена галка на форме - удаляет эти символы из текстовых реквизитов. Немного замедляет выгрузку (процентов на 10), если такой проблемы нет, то можно без нее.
ОбменУниверсальная выгрузка данных из 1С 7.7 в JSON#0 09.10.19 19:08
Обработка для универсальной выгрузки данных из конфигурации 7.7 в JSON. Может быть полезна для задач переноса данных из различных конфигураций в другие конфигурации, для перехода на другие версии 1С, для перехода на 8.3, для переноса данных в другие системы учета, для организации онлайн выгрузки с целью синхронизации разных систем учета. Выгрузка справочников, документов, результатов запросов, остатков по планам счетов.
О жизниИтоги конференции Infostart Event 2013 Revolution#238 16.11.13 1:26
Хотелось бы подтянуть общий уровень докладчиков, некоторые доклады были чтением текста со слайдов, что не очень интересно. На эту тему есть хорошая книга http://www.iphones.ru/iNotes/52137 . Хотелось бы лучшего контроля за временем докладов, например: 1 день, 2-й зал, первый доклад не оставил шансов остальным, они вынуждены были скомкать интересные темы до 20 минут. Невнятное окончание конференции. В остальном все отлично!