Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Столкнулся с задаче
Столкнулся с задачей по переносу из БД в БД 1С. Решили переносить данные через XML файлы. Покопался в интрнете, нашёл как это сделать, но возникли трудности.
Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "field" Тогда //Чтение атрибутов узла Пока ЧтениеXML.ПрочитатьАтрибут() Цикл Атрибут = ЧтениеXML.Значение; Если ЧтениеXML.Имя = "value" или ЧтениеXML.Имя = "size" Тогда СЗ.Добавить(Атрибут); КонецЕсли;
КонецЦикла; КонецЕсли;
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и ЧтениеXML.Имя = "row" Тогда СоздатьЭлементСправочника(СЗ); СЗ.Очистить(); КонецЕсли; КонецЦикла;
Работает вроде как надо.Из куска xml файла который выше, у меня есть справочник ТМЦ и справочник Вставки. В справочнике ТМЦ находятся изделия, а справочнике вставки(камни) к нему. Вот эта запись их XML файла <field name="Описание" value="Перли к.пр.б.:Нб-5,0-5,5"/> является вставкой. Как записать в справочник "Вставки" так, чтобы когда становишься на записи, то в табличной части которая отображает справочник "Вставки" отображалось три вставки:
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9
Цитата(kosalex @ 09.09.13, 13:52)
Как записать в справочник "Вставки" так, чтобы когда становишься на записи, то в табличной части которая отображает справочник "Вставки" отображалось три вставки:
Не совсем ясен вопрос. Способ записи никак не влияет на способ отображения...
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Цитата(Petre @ 09.09.13, 14:28)
Не совсем ясен вопрос. Способ записи никак не влияет на способ отображения...
С записью разберусь. Подскажите алгоритм, чтения файла XML для моей ситуации. Когда артикул у изделия один, а вставки разные.
Я читаю файл и заношу в СписокЗначений то что прочитал, когда собираюсь читать следующее изделие, то как понять что следующее изделие уже есть и в справочник изделий его добавлять не нужно, нужно только добавить к нему вставку.
После того как записал в СЗ данные по изделию и создал новый элемент справочника, я не очищаю СЗ. Начинаю читать следующее изделие, если артикул с файла равен артикулу с СЗ, тогда нужно прочитать и взять только поле "Описание" и создать запись нового элемента справочника Вставки.
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9
Очевидно, нужен ключ (идентификатор) не только для справочника "тмц", но и для справочника "вставки". Если для "тмц" таким ключом служит "артикул", то необходимо что-то аналогичное выгружать и для "вставок". Для дальнейшего поиска уже созданных элементов сз, имхо, не очень подходящая коллекция, т. к. должна содержать ключ и ссылку. Если ключ соответствует правилам именования переменных для 1с, удобнее использовать структуру, если нет - соответствие. В особо тяжелых случаях можно использовать тз.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Цитата(Petre @ 09.09.13, 15:27)
Очевидно, нужен ключ (идентификатор) не только для справочника "тмц", но и для справочника "вставки". Если для "тмц" таким ключом служит "артикул", то необходимо что-то аналогичное выгружать и для "вставок". Для дальнейшего поиска уже созданных элементов сз, имхо, не очень подходящая коллекция, т. к. должна содержать ключ и ссылку. Если ключ соответствует правилам именования переменных для 1с, удобнее использовать структуру, если нет - соответствие. В особо тяжелых случаях можно использовать тз.
Я читаю XML файл и записываю в СЗ. Т.е. из этого куска XML получается вот такой СЗ:
Как видно из XML дальше едёт такое же изделие, но только в "Описание" уже другая вставка(камень). Делаю запрос к справочнику "ТМЦ" и если артикул элемента в справочнике равен артикулу с XML файла, тогда берём новую вставку, добавляем её в справочник "Вставки" и привязываем новую вставку к уже имеющемуся изделию в справочнике "ТМЦ".
Запрос к справочнику ТМЦ:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТМЦ.Ссылка |ИЗ | Справочник.ТМЦ КАК ТМЦ |ГДЕ | ТМЦ.Артикул = &Артикул";
Запрос.УстановитьПараметр("Артикул", Артикул);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл //В ВыборкаДетальныеЗаписи находится информация о изделии из файла XML которое уже записано в справочник "ТМЦ", только в это изделие вставлена другая //вставка. //Нужно записать вставку из "СЗ1" в спавочник "Вставки" и указать связь к имеиющимуся изделию в справочнике "ТМЦ",
КонецЦикла;
Не выбирается ссылка на уже записанный ранее элемент справочника "ТМЦ". Как встать на этот элемент?
Получилось получить ссылку. Подскажите как встать на элемент справочника по ссылке?
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0
Цитата(logist @ 10.09.13, 9:49)
Вытираете ноги и становитесь, в чем проблема?
Есть ссылка на уже записанный элемент справочника(из запроса). Нужно открыть эту запись справочника "ТМЦ" и добавить в табличную часть вставку(камень) из справочника "Вставки".
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!