8.х Удалить XML на сайте

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

  1. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, выгружаю на сайт расписание, но когда след. раз выгружаю еще раз, то старые данные остаются просто добавляется новые. Возможно ли удалить или как нибудь, что бы данные выгружались поверх старого данных?
  2. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Все сразу поняли о каком рассписании идет речь, из какой конфигурации и какой прогрммой вы это делаете. Ога.
    Ну а коли уж было сказанно XML - то разумеется все поняли что за XML, что у него за структура и главное, как эта иксэмээлька отражается на сайте (не исключено что скрипт ее перегоняет в БД сайта... что могло бы кое-что объяснить)

    P.S.
    Или я и впрямь тупой, а все все поняли?
  3. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Вообщем, выгружаю с 1с 8.1, был обработка обмен сайтом. Переделал немного. Расписание на прием к врачу.
    вот сайт http://kost.stomed.kz/appointments/ где расписание висит
    Код:
    Функция ПолучитьОбъектДляЗаписиXML(ИмяФайла, ДатаФормирования)
    
    ЗаписьXML = Новый ЗаписьXML();
    
    Если ( ПустаяСтрока(ИмяФайла) ) Тогда
    ЗаписьXML.УстановитьСтроку("UTF-8");
    Иначе
    ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8");
    КонецЕсли;
    
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("КоммерческаяИнформация");
    ЗаписьXML.ЗаписатьАтрибут("ВерсияСхемы", "2.04");
    ЗаписьXML.ЗаписатьАтрибут("ДатаФормирования", ФорматДатыДляCML(ДатаФормирования, Истина, Истина));
    ВыгрузкаДанных(ЗаписьXML);
    Возврат ЗаписьXML;
    
    КонецФункции
    
    Код:
    Функция ВыгрузкаДанных(ЗаписьXML)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПодразделенияКомпании.Ссылка КАК Организация,
    | КлассификаторСпециализаций.Ссылка КАК Специализация,
    | Сотрудники.Ссылка КАК Сотрудники
    |ИЗ
    | Справочник.Сотрудники КАК Сотрудники
    |  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияКомпании КАК ПодразделенияКомпании
    |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |   ПО ПодразделенияКомпании.Ссылка = КонтактнаяИнформация.Объект
    |  ПО Сотрудники.Подразделение = ПодразделенияКомпании.Ссылка
    |  ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.КлассификаторСпециализаций КАК КлассификаторСпециализаций
    |  ПО Сотрудники.Специализации.Специализация.Ссылка = КлассификаторСпециализаций.Ссылка
    |ГДЕ
    | КлассификаторСпециализаций.Ссылка = &Специализация
    | И ПодразделенияКомпании.Ссылка <> &Подразделение
    | И Сотрудники.Ссылка <> &Специалист
    |
    |СГРУППИРОВАТЬ ПО
    | ПодразделенияКомпании.Ссылка,
    | КлассификаторСпециализаций.Ссылка,
    | Сотрудники.Ссылка
    |
    |УПОРЯДОЧИТЬ ПО
    | Организация,
    | Сотрудники
    |ИТОГИ ПО
    | Организация,
    | Специализация,
    | Сотрудники";
    Запрос.УстановитьПараметр("Специализация",  Справочники.КлассификаторСпециализаций.НайтиПоНаименованию("Врач-стоматолог-терапевт"));
    Запрос.УстановитьПараметр("Подразделение", Справочники.ПодразделенияКомпании.НайтиПоКоду("ЦБ000006"));
    Запрос.УстановитьПараметр("Специалист", Справочники.Сотрудники.НайтиПоКоду("0000000858"));
    
    РЗ = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, );
    //================================= начало Классификатор
    ЗаписьXML.ЗаписатьНачалоЭлемента("Классификатор");
    P = "P"; //PODRAZDELENIE
    S = "S"; //SPESIALNOST
    v = "V"; // VRACH
    D = "D"; //DEN
    //================================= начало подразделение
    Пока РЗ.Следующий() Цикл
    
    P = "P" + СокрЛП(РЗ.Организация.Код);
    
    
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группы");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группа");
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
    ЗаписьXML.ЗаписатьТекст(P);  //G
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
    ЗаписьXML.ЗаписатьТекст(СокрЛП(РЗ.Организация.Наименование));
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    //Сообщить(РЗ.Организация);
    
    РЗ2 = РЗ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,);
    
    //================================= начало специализация
    Пока РЗ2.Следующий() Цикл
    PS = P + S + СокрЛП(РЗ2.Специализация.Код);
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группы");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группа");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
    ЗаписьXML.ЗаписатьТекст(PS); //GV
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
    ЗаписьXML.ЗаписатьТекст(РЗ2.Специализация.Наименование);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    // Сообщить(РЗ2.Специализация);
    
    //========================= начало   Сотрудники
    РЗ3 = РЗ2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,);
    Пока РЗ3.Следующий() Цикл
    PSV = PS + V + СокрЛП(РЗ3.Сотрудники.Код);
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группы");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группа");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
    ЗаписьXML.ЗаписатьТекст(PSV); //GV
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
    ЗаписьXML.ЗаписатьТекст(РЗ3.Сотрудники.Наименование);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    
    //========================== начало дни месяца  
    ТекДата =ТекущаяДата();
    Неделя = текДата + 604800;
    
    Пока ТекДата < Неделя Цикл
    ТекДата = ТекДата + 86400;
    
    D = "D" + Формат(ТекДата,"ДФ=dd");
    PSVD = PSV + D;
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группы");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группа");
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
    ЗаписьXML.ЗаписатьТекст(PSVD);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
    ЗаписьXML.ЗаписатьТекст(строка(формат(ТекДата,"ДЛФ=DD"))+ " " + " " + ДеньНеделиПрописью(ДеньНедели(ТекДата)));	
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    
    КонецЦикла;
    //================================= конец дни месяца  
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    //================================= конец сотрудники
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    //================================= конец специализация
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
    КонецЦикла;
    //================================= конец подразделение
    ЗаписьXML.ЗаписатьКонецЭлемента();
    //================================================================  конец Классификатор
    ЗаписьXML.ЗаписатьНачалоЭлемента("Каталог");
    РЗ.Сбросить();
    РЗ2.Сбросить();
    РЗ3.Сбросить();
    РЗ = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,);
    //================================================================  Начало Товары
    ЗаписьXML.ЗаписатьНачалоЭлемента("Товары");
    //=======================================================
    //========================= рз
    Пока РЗ.Следующий() Цикл
    P = "P" + СокрЛП(РЗ.Организация.Код);
    РЗ2 = РЗ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,);
    //========================= рз2
    Пока РЗ2.Следующий() Цикл
    PS = P + S + СокрЛП(РЗ2.Специализация.Код);
    РЗ3 = РЗ2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,);
    //========================= рз3
    Пока РЗ3.Следующий() Цикл
    PSV = PS + V + СокрЛП(РЗ3.Сотрудники.Код);
    
    ТекДата =ТекущаяДата();
    Неделя = текДата + 604800;
    
    
    ЗапросДатаПриема = Новый ЗАпрос("ВЫБРАТЬ
    | ТалонНаПриемВызовСпециалиста.ДатаВремяПриема КАК ДатаПриема,
    | ТалонНаПриемВызовСпециалиста.СпециалистНаправления КАК Специалист
    |ИЗ
    | Документ.ТалонНаПриемВызовСпециалиста КАК ТалонНаПриемВызовСпециалиста
    |ГДЕ
    | ТалонНаПриемВызовСпециалиста.ДатаВремяПриема МЕЖДУ &Начало И &Конец
    | И ТалонНаПриемВызовСпециалиста.СпециалистНаправления = &Специалист
    |
    |УПОРЯДОЧИТЬ ПО
    | ДатаПриема");
    ЗапросДатаПриема.УстановитьПараметр("Начало", ТекДата);
    ЗапросДатаПриема.УстановитьПараметр("Конец", Неделя);
    ЗапросДатаПриема.УстановитьПараметр("Специалист", Рз3.сотрудники);
    
    //========================= Дни
    Пока ТекДата < Неделя Цикл
    ТекДата = ТекДата + 86400;
    //========================= Часы	
    //Для Часы = 9 по 16 цикл
    
    Множитель = Час(рз3.сотрудники.ДлительностьПриема) * 1800;
    Множитель = Множитель + Минута(рз3.сотрудники.ДлительностьПриема) * 60;
    ТекВремя = рз3.Сотрудники.ГрафикРаботы.НачалоРабочегоВремениПоУмолчанию;
    Пока ТекВремя <= рз3.Сотрудники.ГрафикРаботы.КонецРабочегоВремениПоУмолчанию Цикл
    //
    Если Рз3.сотрудники.ГрафикРаботы.СменапоУмолчанию = Справочники.Смены.Первая тогда
    Если Час(ТекВремя) < 12 ИЛИ Час(ТекВремя) > 12 Тогда
    ТекВремя = ТекВремя + Множитель;
    Продолжить;
    КонецЕсли;
    КонецЕсли;
    //
    Если Рз3.сотрудники.ГрафикРаботы.СменапоУмолчанию = Справочники.Смены.Вторая тогда
    Если Час(ТекВремя) < 16 ИЛИ Час(ТекВремя) > 16 Тогда
    ТекВремя = ТекВремя + Множитель;
    Продолжить;
    КонецЕсли;
    КонецЕсли;
    //
    Если Рз3.сотрудники.ГрафикРаботы.СменапоУмолчанию = Справочники.Смены.Полная тогда
    Если Час(ТекВремя) < 16 ИЛИ Час(ТекВремя) > 16 Тогда
    ТекВремя = ТекВремя + Множитель;
    Продолжить;
    КонецЕсли;
    КонецЕсли;
    
    Время = Сред(Формат(ТекВремя,"ДЛФ=T"),0,5);
    
    P = "P" + СтрЗаменить(Строка(Формат(ТекВремя,"ДЛФ=T")), ":", "_");
    
    PSVD = PSV + "D" + Строка(формат(ТекДата,"ДФ=dd"));
    PSVDP = PSVD + P;
    
    ЗапросДатаПриема.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    РезультатДатаПриема = ЗапросДатаПриема.Выполнить().Выгрузить();
    
    НС = РезультатДатаПриема.Найти(Дата(Год(ТекДата),Месяц(ТекДата),День(ТекДата),Час(ТекВремя),Минута(ТекВремя),Секунда(ТекВремя)),"ДатаПриема");
    
    
    Если НЕ НС = Неопределено Тогда
    ТекВремя = ТекВремя + Множитель;
    Продолжить;
    
    КонецЕсли;		
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Товар");
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
    ЗаписьXML.ЗаписатьТекст(PSVDP);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Артикул");
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Наименование");
    ЗаписьXML.ЗаписатьТекст(Строка(формат(ТекДата,"ДЛФ=D")) + " " + "Время:"+ " " +Строка(Время));
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("БазоваяЕдиница");
    ЗаписьXML.ЗаписатьАтрибут("НаименованиеПолное", "Время приема:" +" " + Строка(формат(ТекДата,"ДЛФ=D")) + " " + "Время:" + " " + Строка(Время));
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Группы");
    ЗаписьXML.ЗаписатьНачалоЭлемента("Ид");
    ЗаписьXML.ЗаписатьТекст(PSVD);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();  
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Картинка");
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("ЗначенияСвойств");
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ТекВремя = ТекВремя + Множитель;
    КонецЦикла;
    
    //========================= Конец Часы  
    КонецЦикла;
    //========================= Конец Дни  
    КонецЦикла;
    //========================= Конец РЗ3  
    КонецЦикла;
    //========================= Конец РЗ2
    КонецЦикла;
    //========================= Конец РЗ
    
    ЗаписьXML.ЗаписатьКонецЭлемента();
    ЗаписьXML.ЗаписатьКонецЭлемента();
    //====================================================
    ЗаписьXML.ЗаписатьКонецЭлемента();	
    ЗаписьXML.Закрыть();
    конецФункции
  4. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    многабукаф. ниасилил.
    вы распишите структуру работы, что выгружается, как это отражается на сайте, приосходит ли конвертирования хмл в БД сайта... а читать тексты многострочные - не, чукча не читатель, чукча писатель :)
  5. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Знаю что многабукаф =Д
    Выгружается,
    организация
    -специализация
    --Специалист
    ---времяприема
    вот таким образом, да он сразу идет в бд, но мне разработчики из сайта сказали. что в обмене есть функцию "Полная выгрузка", типо у меня выгружается "Только измененные". Когда ставлю полная выгрузка эффекта такой же. Просто тупо данные добавляются к старому...
    Или сново так же не понятно? =Д
  6. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Вы на выхлопе выходе 1С получаете XMLку и потом передаете ее кудыто. Так ведь?
    Ну дык а руками вы посмотреть выходную XMLку не можете? Что там? Те даные что нужно или нет?
    Коли с вашей стороны уходят экспортируются ВСЕ данные, а инструмент по засасыванию импорту загружает только изменения, хотя документированно что должне загрузить все - парьте разрабов импорта в БД сайта. Пусть чинят.
  7. TopicStarter Overlay
    Drakonchegg
    Offline

    Drakonchegg Опытный в 1С

    Регистрация:
    17 мар 2012
    Сообщения:
    117
    Симпатии:
    0
    Баллы:
    26
    Я тож подумавал что БД проблема, на сколько должен знать, хоть в бд под одним файлом название делаешь импорт, то старые данные удаляются
  8. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Зависит от процедур импорта данных. Как раз таки проще не удалять, а всякий раз "досасывать". Но это по реализации нужно смотреть. А так - тыкать пальцем в небо с закрытыми глазами, в надежде угадать полярную звезду.
  9. MAXiDROME
    Offline

    MAXiDROME

    Регистрация:
    13 май 2012
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Удалять XML нужно не средствами 1С, а в скрипте на сайте, когда он завершает обработку этого файла и посылает 1С команду "success", после этого можно написать unlink($filename), если это PHP и в $filename лежить путь и имя XML-файла.
Похожие темы
  1. |R|U|D|E|N|
    Ответов:
    2
    Просмотров:
    613
  2. kostize
    Ответов:
    1
    Просмотров:
    309
  3. Камильевич
    Ответов:
    24
    Просмотров:
    837
Загрузка...

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