8.х WEB Выборка данных из документа на страницу сайта

Тема в разделе ""1C:Web-Сервер"", создана пользователем Bormoda, 19 мар 2014.

  1. TopicStarter Overlay
    Bormoda
    Offline

    Bormoda

    Регистрация:
    19 мар 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Всем доброго времени суток!
    Только-только начинаю ознакомление с 1С, но уже есть задача для решения...
    В базе 1С 8.2 есть документ, необходимо осуществить выборку из него на страницу сайта. Фильтром для выборки будет определенное значение реквизита.
    Как это примерно должно выглядеть: некий человек заходит на страницу сайта, получает результат выборки по нашему фильтру и, обрадованный увиденным, продолжает жить дальше. ;)
    Для начала будет локальный сайт, без доступа к нему из внешнего мира(для начала просто получить хоть какой-то результат).
    Апач+php установил, и теперь сижу, заземляюсь в какую сторону двигаться.:)
    Подскажите, пожалуйста, с чего начать решение данной задачи(необходимо решать используя XDTO-пакеты?), если не сложно, или дайте ссылку на статью/руководство где рассмотрен подобный пример.
    Заранее спасибо за советы.
  2. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Вы в каком формате хотите загружать на сайт ваши данные ?
  3. TopicStarter Overlay
    Bormoda
    Offline

    Bormoda

    Регистрация:
    19 мар 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Насколько я понял, выгружаться данные из 1С будут в xml...
    Потом из xml как-то надо будет на страницу локального сайта.
  4. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    У меня подобное реализовано как раз через xml файл. Т.е. из 1С регламентым заданием выгружается в файл xml нужные данные с нужной мне периодичностью. Файл хранится на FTP-сервере. Затем сайт берет этот файл и загружает. Все хорошо и все прекрасно.
    Bormoda нравится это.
  5. TopicStarter Overlay
    Bormoda
    Offline

    Bormoda

    Регистрация:
    19 мар 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо за оперативные ответы.:)
    nbIpKuH_BaH9I, если не сложно, можно чуть поподробнее.
    В данный момент для меня важно просто получить хоть какой-то результат, чтобы потом уже "копать" в нужном направлении.
    Выгрузку из 1С в файл нужно делать, используя XDTO?
  6. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Зачем. Нет. Обычное формирование XML файлов.
    Вот мой код, возьмите для примера.
    Выборка - это выборка из результат запроса.
    Код:
        Пока Выборка.Следующий() Цикл
            //    Для каждого стр из ТабШкол Цикл
            запросДенег.УстановитьПараметр("Отделение", рез.Школа);
            запросДенег.УстановитьПараметр("ЛицевойСчет", рез.ЛицевойСчет);
            ЗаписьXML.ЗаписатьНачалоЭлемента("data"); //data
            ЗаписьXML.ЗаписатьАтрибут("account", СокрЛП(рез.ЛицевойСчет.наименование));
            ЗаписьXML.ЗаписатьАтрибут("name", СокрЛП(рез.ЛицевойСчет.Школьник.наименование));
            ЗаписьXML.ЗаписатьАтрибут("school", СокрЛП(Строка(рез.ЛицевойСчет.Школьник.Школа)));
            ЗаписьXML.ЗаписатьАтрибут("balance",Формат( ОбщиеФункции.получитьБаланс(рез.ЛицевойСчет, Дата),ФорматСумм));
            guest = ?(ПолучитьПоследнююКатегорию(Дата, рез.ЛицевойСчет.Школьник) = Справочники.КатегорииКарты.НайтиПоКоду("000000005"), "1","0");
            ЗаписьXML.ЗаписатьАтрибут("guest",guest);
            Выборка = запросДенег.Выполнить().Выбрать();
            если Выборка.Количество()>0 тогда
                ЗаписьXML.ЗаписатьНачалоЭлемента("operations");//oprations    
                Пока Выборка.Следующий() Цикл
                   
                    ЗаписьXML.ЗаписатьНачалоЭлемента("operation"); //opration
                   
                    НовЗаписьСпискаДоков = Табл.Добавить();
                    НовЗаписьСпискаДоков.ДокСсылка = Выборка.Ссылка;
                   
                    если Выборка.Тип = 2 тогда // Поступления с диксис
                        ЗаписьXML.ЗаписатьАтрибут("type", "2");
                        ЗаписьXML.ЗаписатьАтрибут("date", Формат(Выборка.Дата ,"ДФ='yyyy-MM-dd HH:mm:ss'"));
                        ЗаписьXML.ЗаписатьАтрибут("sum", Формат(Выборка.Сумма ,ФорматСумм));
                        Если Выборка.Ссылка.ВидОперации = Перечисления.ВидыОперацийПоступленияЭлектронныхДенег.Dixis Тогда
                            ЗаписьXML.ЗаписатьТекст("DIXIS");
                        ИначеЕсли Выборка.Ссылка.ВидОперации = Перечисления.ВидыОперацийПоступленияЭлектронныхДенег.СберБанк Тогда
                            ЗаписьXML.ЗаписатьТекст("Сбербанк");
                        ИначеЕсли Выборка.Ссылка.ВидОперации = Перечисления.ВидыОперацийПоступленияЭлектронныхДенег.ПустаяСсылка() Тогда
                            ЗаписьXML.ЗаписатьТекст("DIXIS"); // Старые записи, у ктороых не проставлено вида операций
                        КонецЕсли;
                    ИначеЕсли Выборка.Тип = 1 тогда // Электронные чеки
                        ЗаписьXML.ЗаписатьАтрибут("type", "1");
                        ЗаписьXML.ЗаписатьАтрибут("date", Формат(Выборка.Дата ,"ДФ='yyyy-MM-dd HH:mm:ss'"));
                        для каждого строкидок из Выборка.Ссылка.Товары Цикл
                            ЗаписьXML.ЗаписатьНачалоЭлемента("item"); //item
                            ЗаписьXML.ЗаписатьАтрибут("sum", Формат(строкидок.Сумма ,ФорматСумм));
                            ЗаписьXML.ЗаписатьАтрибут("count", Формат(строкидок.Количество ,"ЧДЦ=0; ЧН=0"));
                            ЗаписьXML.ЗаписатьТекст(СокрЛП(Строка(строкидок.Номенклатура)));
                            ЗаписьXML.ЗаписатьКонецЭлемента(); //item
                        КонецЦикла;
                    ИначеЕсли Выборка.Тип = 3 Тогда // Корректировка
                        //ЗаписьXML.ЗаписатьНачалоЭлемента("operation");
                        ЗаписьXML.ЗаписатьАтрибут("date", Формат(Выборка.Дата ,"ДФ='yyyy-MM-dd HH:mm:ss'"));
                        ЗаписьXML.ЗаписатьАтрибут("type", "3");
                        ЗаписьXML.ЗаписатьАтрибут("sum", Формат(Выборка.Сумма ,ФорматСумм));
                        ЗаписьXML.ЗаписатьТекст(СокрЛП(Строка(Выборка.Ссылка.Коментарий)));
                        ЗаписьXML.ЗаписатьКонецЭлемента(); //operation
                        Если Выборка.Ссылка.Товары.Количество() > 0 Тогда
                            ЗаписьXML.ЗаписатьНачалоЭлемента("operation");
                            ЗаписьXML.ЗаписатьАтрибут("date", Формат(Выборка.Дата ,"ДФ='yyyy-MM-dd HH:mm:ss'"));
                            ЗаписьXML.ЗаписатьАтрибут("type", "1");
                            Для каждого строкидок из Выборка.Ссылка.Товары Цикл
                                ЗаписьXML.ЗаписатьНачалоЭлемента("item"); //item
                                ЗаписьXML.ЗаписатьАтрибут("sum", Формат(строкидок.Сумма ,ФорматСумм));
                                ЗаписьXML.ЗаписатьАтрибут("count", Формат(строкидок.Количество ,"ЧДЦ=0; ЧН=0"));
                                ЗаписьXML.ЗаписатьТекст(СокрЛП(Строка(строкидок.Номенклатура)));
                                ЗаписьXML.ЗаписатьКонецЭлемента();        //item
                            КонецЦикла;
                            ЗаписьXML.ЗаписатьКонецЭлемента(); //operation
                        КонецЕсли;
                    КонецЕсли;
                    Если НЕ Выборка.Тип = 3 Тогда
                        ЗаписьXML.ЗаписатьКонецЭлемента(); //operation
                    КонецЕсли;
                КонецЦикла;               
                ЗаписьXML.ЗаписатьКонецЭлемента();//operation    
            КонецЕсли;
            ЗаписьXML.ЗаписатьКонецЭлемента();     //data
        КонецЦикла;
        ЗаписьXML.ЗаписатьКонецЭлемента();    //general
        ЗаписьXML.Закрыть();
        Попытка
            Соединение.ОтправитьДляОбработки(ИмяФайлаОтправки,Источник, ИмяФайлаОтвета, );
        Исключение
           
        КонецПопытки;
    Код не очень красивый. Но работает.
  7. TopicStarter Overlay
    Bormoda
    Offline

    Bormoda

    Регистрация:
    19 мар 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо за помощь, буду разбираться в этом могучем коде сейчас.
    Если возникнут вопросы(а они, думаю, точно возникнут) я еще попристаю к Вам?
  8. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Да, конечно.
  9. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Может все таки web-сервисы сделаете?
  10. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Через веб-сервисы вообще кошерно будет.
  11. TopicStarter Overlay
    Bormoda
    Offline

    Bormoda

    Регистрация:
    19 мар 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    mialord, alexburn, я, в общем, согласен на любую реализацию поставленной задачи.
    Пока у меня нет четкого понимания как это сделать, а соответственно и предпочтений в выборе методов решения.:)
    Опыта работы в 1С мало и приходится много читать. Сейчас штудирую выгрузку документов в xml, пока идет со скрипом.
    Постараюсь поискать инфу по веб-сервисам.
    --- Объединение сообщений, 19 мар 2014 ---
    mialord, alexburn, если есть у Вас на примете ссылка/инфа по web-сервисам(лучше для чайников:)), применимая данной теме, киньте, пожалуйста.
    Последнее редактирование: 19 мар 2014
  12. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Начните с библии платформы "Профессиональная разработка в системе "1С Предприятие""
  13. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Да, web-сервисы будут гораздо удобнее. Так как для этого в принципе и предназначены. Но если с ними не разберетесь (что очень Вам советую), то делайте как я описал выше.
  14. TopicStarter Overlay
    Bormoda
    Offline

    Bormoda

    Регистрация:
    19 мар 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо еще раз Всем, кто ответил!
    До web-сервисов руки пока не дошли(такая я ленивая задница), но я обязательно займусь ими.
    Пока доделываю вариант "выгрузка документов в xml-загрузка xml на сайт".
    В основном, все работает. Осталось у меня несколько(скорее всего, дурацких) вопросов:
    1) Каким образом можно организовать порядок сортировки выводимой информации?
    Требуется выводить данные документа в порядке убывания значения определенного реквизита.
    Каким образом мне изначально отсортировать документы перед выгрузкой их в xml?
    2) nbIpKuH_BaH9I, подскажите, пожалуйста, как настроить "регламентное задание" чтобы выгрузка в xml проходила без моего участия? Сейчас реализована только ручная выгрузка по кнопке...
    3) Как можно чуть "украсить" выводимую из xml информацию(шрифты, цвета и т.д.)?
    Сейчас вывожу данные из xml просто списком, используя simplexml. Работает корректно, но хотелось бы "удобочитаемости" выводимой инфы.
    Заранее спасибо за советы.:)
  15. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Смотря как выводите. В запросе или где там у вас.
    В конфигураторе создаете регламентное задание. Настриаваете время и все.
    Это уже на самом сайте делайте.
Похожие темы
  1. ae89
    Ответов:
    5
    Просмотров:
    578
  2. Димыч28
    Ответов:
    5
    Просмотров:
    581
Загрузка...

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