8.х Выгрузка приема из сайта в 1С 8.1

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Drakonchegg, 2 окт 2012.

  1. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Хм... Ладно щя напишу в ТЗ посмотрю че и как)
  2. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Тоже Так же двоиться, а как там что бы свернуть его или как?
  3. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    Напишите код, как вы заполняете ТЗ.
  4. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Код:
       ТаблицаПациентов = Новый ТаблицаЗначений;
    ТаблицаПациентов.Колонки.Добавить("Наименование");
    ТаблицаПациентов.Колонки.Добавить("Фамилия");
    ТаблицаПациентов.Колонки.Добавить("Имя");
    ТаблицаПациентов.Колонки.Добавить("Отчество");
    ТаблицаПациентов.Колонки.Добавить("ГодРождения");
    
    
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(ОбъектCML);
    
    POSITION = ДокументDOM.ПолучитьЭлементыПоИмени("Контрагент");
    НоваяСтрока = ТаблицаПациентов.Добавить();
    Для Позиц = 0 По POSITION.Количество()-1 Цикл
    ДочерниеУзлы = POSITION[Позиц].ДочерниеУзлы;
    Для каждого Узел Из ДочерниеУзлы Цикл
    Если Узел.ИмяУзла = "Фамилия" Тогда
    ФамилияПациента = Узел.ТекстовоеСодержимое;
    НоваяСтрока.Фамилия = ФамилияПациента;
    Сообщить(Узел.ТекстовоеСодержимое);
    КонецЕсли;
    Если Узел.ИмяУзла = "Имя" Тогда
    ИмяПациента = Узел.ТекстовоеСодержимое;
    НоваяСтрока.Имя = ИмяПациента;
    Сообщить(Узел.ТекстовоеСодержимое);
    КонецЕсли;
    Если Узел.ИмяУзла = "Отчество" Тогда
    ОтчествоПациента = Узел.ТекстовоеСодержимое;
    НоваяСтрока.Отчество = ОтчествоПациента;
    Сообщить(Узел.ТекстовоеСодержимое);
    КонецЕсли;
    Если Узел.ИмяУзла = "ГодРождения" Тогда
    ГодРожденияПациента = Узел.ТекстовоеСодержимое;
    НоваяСтрока.ГодРождения = ИзСтрокиВДату(ГодРожденияПациента);
    Сообщить(Узел.ТекстовоеСодержимое);
    КонецЕсли;
    КонецЦикла;	 
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Пациенты.Ссылка
    |ИЗ
    | Справочник.Пациенты КАК Пациенты
    |ГДЕ
    | Пациенты.Фамилия = &ФамилияПациента
    | И Пациенты.Имя = &ИмяПациента
    | И Пациенты.Отчество = &ОтчествоПациента
    | И Пациенты.ДатаРождения = &ГодРожденияПациента";
    Запрос.УстановитьПараметр("ФамилияПациента", СокрЛП(ФамилияПациента));
    Запрос.УстановитьПараметр("ИмяПациента", СокрЛП(ИмяПациента));
    Запрос.УстановитьПараметр("ОтчествоПациента", СокрЛП(ОтчествоПациента));
    Запрос.УстановитьПараметр("ГодРожденияПациента", ИзСтрокиВДату(ГодРожденияПациента));
    
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Количество() > 0 Тогда 
    Пока Выборка.Следующий() Цикл
    НоваяСтрока.Наименование = Выборка.Ссылка;
    Сообщить(Выборка.Ссылка);
    КонецЦикла;
    Иначе
    //СписокПациентов.Добавить(Выборка.Ссылка);
    НоваяСтрока.Наименование(Выборка.Ссылка);
    Для Каждого Строка из ТаблицаПациентов Цикл 
    НовыйПациент =Справочники.Пациенты.СоздатьЭлемент();
    НовыйПациент.УстановитьНовыйКод();
    НовыйПациент.Фамилия = Строка.Фамилия;
    НовыйПациент.Имя = Строка.Имя;
    НовыйПациент.Отчество = Строка.Отчество;
    НовыйПациент.ДатаРождения = Строка.ГодРождения;
    Сообщить("Создан: " + ФамилияПациента + " " + ИмяПациента + " " + ОтчествоПациента);
    НовыйПациент.Записать();
    КонецЦикла;
    КонецЕсли; 
    КонецЦикла;
    
    вот где
    Код:
    Пока Выборка.Следующий() Цикл
    НоваяСтрока.Наименование = Выборка.Ссылка;
    Сообщить(Выборка.Ссылка);
    КонецЦикла; 
    начинаеться дублировать строки((
  5. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    А если как-то так?
    Код:
    ТаблицаПациентов = Новый ТаблицаЗначений;
    ТаблицаПациентов.Колонки.Добавить("Пациент");
    ТаблицаПациентов.Колонки.Добавить("Поздразделение");
    ТаблицаПациентов.Колонки.Добавить("Специалист");
    ТаблицаПациентов.Колонки.Добавить("ДатаПриема");
    
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(ОбъектCML);
    
    POSITION = ДокументDOM.ПолучитьЭлементыПоИмени("Контрагент");
    Для Позиц = 0 По POSITION.Количество()-1 Цикл
    
    НоваяСтрока = ТаблицаПациентов.Добавить();
    ДочерниеУзлы = POSITION[Позиц].ДочерниеУзлы;
    
    Для Каждого Узел Из ДочерниеУзлы Цикл
    //данные пациента
    Если Узел.ИмяУзла = "Фамилия" Тогда
    ФамилияПациента = Узел.ТекстовоеСодержимое;
    КонецЕсли;
    Если Узел.ИмяУзла = "Имя" Тогда
    ИмяПациента = Узел.ТекстовоеСодержимое;
    КонецЕсли;
    Если Узел.ИмяУзла = "Отчество" Тогда
    ОтчествоПациента = Узел.ТекстовоеСодержимое;
    КонецЕсли;
    Если Узел.ИмяУзла = "ГодРождения" Тогда
    ГодРожденияПациента = Узел.ТекстовоеСодержимое;
    КонецЕсли;
    //данные подразделения
    Если Узел.ИмяУзла = "Подразделение" Тогда
    мПодразделение = Узел.ТекстовоеСодержимое;
    КонецЕсли;
    //данные специалиста
    Если Узел.ИмяУзла = "Специалист" Тогда
    мСпециалист = Узел.ТекстовоеСодержимое;
    КонецЕсли;
    //данные даты приема
    Если Узел.ИмяУзла = "ДатаПриема" Тогда
    мДатаПриема = Узел.ТекстовоеСодержимое;
    КонецЕсли;
    КонецЦикла;
    
    //добавляем пациента
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Пациенты.Ссылка
    |ИЗ
    | Справочник.Пациенты КАК Пациенты
    |ГДЕ
    | Пациенты.Фамилия = &ФамилияПациента
    | И Пациенты.Имя = &ИмяПациента
    | И Пациенты.Отчество = &ОтчествоПациента
    | И Пациенты.ДатаРождения = &ГодРожденияПациента";
    Запрос.УстановитьПараметр("ФамилияПациента", СокрЛП(ФамилияПациента));
    Запрос.УстановитьПараметр("ИмяПациента", СокрЛП(ИмяПациента));
    Запрос.УстановитьПараметр("ОтчествоПациента", СокрЛП(ОтчествоПациента));
    Запрос.УстановитьПараметр("ГодРожденияПациента", ИзСтрокиВДату(ГодРожденияПациента));
    
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Количество() > 0 Тогда //нашли пациента
    Пока Выборка.Следующий() Цикл
    НоваяСтрока.Пациент = Выборка.Ссылка;
    КонецЦикла;
    Иначе //создаем нового
    НовыйПациент = Справочники.Пациенты.СоздатьЭлемент();
    НовыйПациент.УстановитьНовыйКод();
    НовыйПациент.Фамилия = Строка.Фамилия;
    НовыйПациент.Имя = Строка.Имя;
    НовыйПациент.Отчество = Строка.Отчество;
    НовыйПациент.ДатаРождения = Строка.ГодРождения;
    Сообщить("Создан: " + ФамилияПациента + " " + ИмяПациента + " " + ОтчествоПациента);
    НовыйПациент.Записать();
    
    НоваяСтрока.Пациент = НовыйПациент.Ссылка;
    КонецЕсли;
    
    //добавляем поздразделение
    НоваяСтрока.Подразделение = Справочники.ПодразделенияКомпании.НайтиПоНаименованию(мПодразделение);
    
    //добавляем специалиста
    НоваяСтрока.Специалист = Справочники.ПодразделенияКомпании.НайтиПоНаименованию(мСпециалист);
    
    //добавляем дату приема
    НоваяСтрока.ДатаПриема = мДатаПриема;
    
    КонецЦикла;
  6. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Тоже Двоиться)))
  7. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    А POSITION.Количество() = ТаблицаПациентов.Количество() ?
  8. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    не понял...
  9. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    Количество записей на сайте равно количеству в итоговой ТЗ? Должно быть равно.
  10. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    ДА ровно 2 приема на сайте записан.
  11. yzek
    Offline

    yzek Опытный в 1С

    Регистрация:
    13 окт 2010
    Сообщения:
    713
    Симпатии:
    0
    Баллы:
    26
    И ТаблицаПациентов.Количество() = 2 ?

Поделиться этой страницей