Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику Vofka ::: Спасибо сказали: 4519 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
22.07.11, 8:43 Пример чтения xml файла встроенными средствами 1С 8
Для 8.1 и 8.2

Чтение = Новый ЧтениеXML; 
Чтение.ОткрытьФайл(ПутьКФайлу);

Пока Чтение.Прочитать() Цикл

    // Прочитать "структурные части" элементов.  
    // Проверить, какая часть элемента - текущая.  
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        ИмяУзла = Чтение.Имя; Сообщить("--" + ИмяУзла);

        // Атрибуты элементов можно читать только если текущая часть -  
        // начало элемента  
        Пока Чтение.ПрочитатьАтрибут() Цикл

            // Прочитать данные узла атрибута.  
            ТипУзла = Чтение.ТипУзла;
            Имя = Чтение.Имя;
            Значение = Чтение.Значение;

            // Обработать полученные значения.

        КонецЦикла;

    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда

        // В примере просто выводим текст в окно сообщений.  
        Сообщить("Текст:" + Чтение.Значение);

    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда

        // В примере просто выводим признак конца элемента  
        // в окно сообщений Сообщить("--Конец:" + Чтение.Имя);  

    КонецЕсли;

КонецЦикла;


(с)
andreykyiv@bigmir.net, bsa1968, itkonstantine, mister-x, roman457, zetovich,
21.07.11, 21:29 Браузер 1С
Обработка, представляющая из себя веб-проводник, наделенный всеми возможностями современного браузера, которые удалось реализовать в 1С: вкладки, история, рейтинг посещений, просмотр информации о странице, код HTML-документа, куки, выбор сайта из списка, избранное, сохранение настроек пользователя, а также управление этими настройками и другое.

В главном окне отображается просматриваемая страница, URL которой можно ввести вручную, выбрать из списка, либо открыть избранное и в открывшемся окне нажать "перейти". Текущую страница сохраняется в виде вкладки, её можно дублировать, либо создать пустую. Текущую страницу можно закрыть либо закрыть все, кроме текущей. Соответствующие кнопки находятся в области поля ввода URL.

В меню Настройки-информация, выбором соответствующего пункта можно посмотреть HTML-код документа, всю информацию, которую предоставляет объектная модель ie. В пункте История-полный отчет о посещенных страницах с указанием точной даты последнего посещения с градацией по сессиям и датам. В пункте Рейтинг выводится отчет, в котором отображаются сайты в порядке частоты их посещения. Пункт Настройки позволяет указать для конкретного пользователя: сохранять ли список вкладок при выходе, сохранять ли список переходов, вести ли историю, здесь же можно очистить историю и список переходов. В подгруппе избранное настраивается управление сохранения URL в отдельные папки, чтобы удобно в последствии можно было выбирать нужные сайты. Здесь можно настроить ,чтобы URL сохранялся в одно нажатие в папку по умолчанию(снят флаг "Спрашивать папку"), указать саму эту папку или создать новую. Причем возможно создание сложной иерархии этих папок.













Скачать (пароль ищите в правилах): [attachment=423:brauzer_1s.zip]
5_kopeek, art010, balogo, docent81, Gorus, Santino, siancom, Егор Динин,
21.07.11, 11:24 Улыбнуло
Alan68, Batchir, logist, mister-x,
21.07.11, 7:05 Видео с ютуба
Я когда-то сделал возможность добавления видео с ютуба прям нам на сайт. Но не афишировал, т.к. это немного неудобно с точки зрения пользователя, т.е. не просто копи паст smile.gif . Но, в принципе, как бы то ни было, большого ума для этого не надо. Спасибо за внимание. smile.gif
mister-x, yur,
20.07.11, 20:37 1С 8: Работаем с файлами MS Excel используя OpenOffice/LibreOffice
Работа через COM с фйлами MS Excel используя OpenOffice/LibreOffice.

Есть ситуации, когда нет возможности установить Excel на стороне клиента, а нужно загружать в базу данные *.xls файлов. Спасением является бесплатный OpenOffice (либо LibreOffice, т.к. работа через COM с ними абсолютно одинакова).

Ниже привожу процедуры загрузки и выгрузки.

Функция ЗагрузитьТЗизФайла(ПутьКФайлу)

       //OpenOffice Calc//////////////////////////////////////////////////////////////////////////////////////////////
       Попытка
                ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
       Исключение
                Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice\LibreOffice не установлена на данном компьютере!");
       Возврат Неопределено;
       КонецПопытки;
       Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
       Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
       Свойства.Name = "AsTemplate";
       Свойства.Value = Истина;
       Args = Новый COMSafeArray("VT_VARIANT", 2);
       Args.SetValue(0, Свойства);
       Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
       Свойства1.Name = "Hidden";
       Свойства1.Value = Истина;
       Args.SetValue(1,Свойства1);
       Document = Desktop.LoadComponentFromURL(ПривестиФайлКУРЛ(ПутьКФайлу), "_blank", 0, Args);
       Sheets = Document.getSheets();
       Sheet = Sheets.getByIndex(текЛист-1);
       локТабЗнач = Новый ТаблицаЗначений;
       begCol = 0;
       begRow = 0;
       endCol = Sheet.Data.GetLength(6) - 1;
       endRow = Sheet.Data.GetLength() - 1;
       нКол = 0;
       локТабЗнач.Колонки.Очистить();

       КС = Новый КвалификаторыСтроки(50);
       Массив = Новый Массив;
       Массив.Добавить(Тип("Строка"));

       ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , КС);

       Пока нКол <= endCol Цикл
            ИмяКол = "К"+Строка(нкол+1);
            локТабЗнач.Колонки.Добавить(ИмяКол,ОписаниеТиповСтрока);
            нКол = нКол + 1;
       КонецЦикла;
       Range = Sheet.getCellRangeByPosition(begCol, begRow, endCol, endRow);
       МассивКом = Новый COMSafeArray("VT_VARIANT", Range.Columns.Count, Range.Rows.Count);
       МассивКом = Range.getDataArray();
       тмпПростойМассив = МассивКом.Выгрузить();
       Для каждого массив из тмпПростойМассив Цикл
             ит = 0;
             НовСтрока = локТабЗНач.Добавить();
             Для каждого ЭлементМассива из массив цикл
                   НовСтрока[ит] = ЭлементМассива;
                   ит = ит + 1;
             КонецЦикла;
       КонецЦикла;
       Возврат локТабЗнач;

КонецФункции


Как видно из функции ЗагрузитьТЗизФайла - читается сразу вся область данных файла, поэтому с быстродействием все отлично. На выходе имеем готовую таблицу значений. В данном случае каждой колонке опреден тип Строка(50), но можна этого и не делать, просто это нужно если собираетесь, например, помещать ее во временную таблицу.

Процедура ВыгрузитьТЗвФайл(ТаблицаРезультата)

    //OpenOffice Calc///////////////////////////////////////////////////////////////////////////
    Попытка
        ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
    Исключение
        Предупреждение(ОписаниеОшибки() + Символы.ПС + "программа OpenOffice не установлена на данном компьютере!");
        Возврат;
    КонецПопытки;
    Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
    Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    Свойства.Name = "AsTemplate";
    Свойства.Value = Истина;
    Args = Новый COMSafeArray("VT_VARIANT", 3);
    Args.SetValue(0, Свойства);
    Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    Свойства1.Name = "Hidden";
    Свойства1.Value = Истина;
    Args.SetValue(1, Свойства1);
    Document = Desktop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Args);
    Sheets = Document.getSheets();
    Sheet = Sheets.getByIndex(0);
    мИтКол = 0;
    Для каждого кол из ТаблицаРезультата.Колонки Цикл
        Sheet.getCellByPosition(мИтКол,0).setString(кол.Имя);
        мИтКол = мИтКол + 1;
    КонецЦикла
    
    ВсегоСтрок = ТаблицаРезультата.Количество();
    ВсегоКолонок = ТаблицаРезультата.Колонки.Количество();
    МассивКОМ = Новый COMSafeArray("VT_VARIANT", ВсегоСтрок,ВсегоКолонок);
    иткол = 0;
    итстр = 0;

    Для каждого стр из ТаблицаРезультата Цикл
        Для каждого кол из ТаблицаРезультата.Колонки Цикл
            стрРез = СокрЛП(стр[кол.Имя]);
            МассивКОМ.SetValue(итстр,иткол,стрРез);
            иткол = иткол+1;
         КонецЦикла;
        иткол = 0;
        итстр = ?(итстр=ВсегоСтрок,0,итстр+1);
    КонецЦикла;
    begCol = 0;
    begRow = 1;
    endCol = ВсегоКолонок-1;
    endRow = ВсегоСтрок;
    Range = Sheet.getCellRangeByPosition(begCol, begRow, endCol, endRow);
    Range.setDataArray(МассивКОМ);
    //Document.storeToURL(ПривестиФайлКУРЛ(ПутьКФайлу),Args);
    Свойства2 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    Свойства2.Name = "FilterName";
    Свойства2.Value = "MS Excel 97";
    Args.SetValue(2,Свойства2);
    Document.GetCurrentController().GetFrame().GetContainerWindow().SetVisible(Истина);
    //Document.storeToURL(ПривестиФайлКУРЛ(ФайлКартотеки),Args);

КонецПроцедуры


Процедура ВыгрузитьТЗвФайл сохраняет любую таблицу значений в файл MS Excel. В текущем примере откроется OpenOffice/LibreOffice Calc c данными переданной таблицы значений. Если раскомментировать строки:

//Document.storeToURL(ПривестиФайлКУРЛ(ПутьКФайлу),Args);

...................................................

//Document.storeToURL(ПривестиФайлКУРЛ(ФайлКартотеки),Args);


и закомментировать

Document.GetCurrentController().GetFrame().GetContainerWindow().SetVisible(Истина);


при этом добавив Параметр ПутьКФайлу, то данные запишутся в файл без открытия Calc`a. Если обратить внимание на сохранение, то сразу бросается двойной вызов Document.storeToURL - это необходимо для корректного сохранения в формате MS Excel.

функция ПривестиФайлКУРЛ(ПутьКФайлу)

    ПутьКФайлу = СтрЗаменить(ПутьКФайлу," ","%20");
    ПутьКФайлу = СтрЗаменить(ПутьКФайлу,"\","/");
    Возврат "file:/" + "/localhost/" + ПутьКФайлу;

Конецфункции


Функция ПривестиФайлКУРЛ просто приводит путь к виду, необходимому OpenOffice/LibreOffice.

Вот и все. Как вы смогли убедиться - работа с Calc`ом не сложнее таковой с Microsoft Excel.

(с)
alex_shkut, mister-x, pablo, shurik_shurik,
20.07.11, 20:17 Вывести список и Сравнение файлов в помощь обыкновенному пользователю.
Пару возможностей 1с, которые спасёт от неуёмных расходов времени и денег на программистов.

Многие пользователи 1с и программисты не знают о такой простой, но мощной функции 1с, как СРАВНЕНИЕ ФАЙЛОВ. Что это и зачем оно простому пользователю?
Данная функция позволяет находить отличия практически в любых отчетах и списках, как в одной базе, так и в разных базах. Без программирования. Без COM. Без OLE.
Как же достигается такая универсальность простого метода? Всё благодаря встроенной в 1с v8 возможности выводить практически любые списки в табличные документы, а табличные документы (в т.ч. и отчеты) сохранять во внешние файлы. Вот, например, для сравнения планов счетов 2х конфигураций написали целую обработку, хотя можно было обойтись всего лишь СРАВНЕНИЕМ ФАЙЛОВ. Итак. Как это делать по пунктам.

1. *Если нужно сравнить результаты отчетов или уже готовые табличные или текстовые документы, то пропускаем этот пункт.* Вывести на экран нужный нам список и нажать на нем правой кнопкой мыши, чтобы появилось контекстное меню. И выбрать в нём пункт Вывести список.

После этого появится окно в котором можно настроить в Табличный или Текстовый документ выводить, а также можно настроить список выводимых полей

После нажатия на ОК на экране появится табличный (или текстовый) документ со списком.

2. Сохраним Табличный (Текстовый) документ в файл.
3. Повторим пункты 1 и 2 для данных, с которыми хотим сравнивать, чтобы получить второй сохраненный Табличный (Текстовый) документ.
4. Теперь можно выполнять собственно сравнение. Для это открываем пункт главного меню Файл и нажимает на Сравнить файлы

Откроется окно в котором нужно указать сравниваемые файлы Табличный (Текстовых) документов.

После нажатия на ОК откроется окно, в котором будут построчно сравниваться файлы. Переход по различающимся строкам осуществляется специальными кнопками

В результате никакого программирования и возможность сравнивания практически любых данных!





















(с)

//**************************
Это для всех версий 8.
Alan68, logist,
20.07.11, 19:51 помогите, пожалуйста
Вопрос из серии "хочу знать ВСЕЁЁЁ". Вы затрагиваете разные темы и просите вас в них просветить, хотя по каждой отдельной теме можно писать книги.

ЗЫ. даже не знаю в какой раздел эту тему перенести why.gif , явно это не "Вся 1С"
ctrlw,
20.07.11, 14:29 Приведение строки к типу "Дата"
Мне уже не в первой имеется надобность имея строку вида "20.07.2011" привести её к типу значения Дата (ну чтоб в запросе вставить куда-то, или записать в какой-то объект или... или...). К сожалению нету в 1С встроенной функции, которая могла бы помочь в этом деле. "А что же делать?", - спросят новички. А сделать надо следующее:
Функция ПривестиКТипуДата(СтрДата)
    День = Сред(СтрДата, 1, 2);
    Месяц = Сред(СтрДата, 4, 2);
    Год = Сред(СтрДата, 7, 4);
    Возврат(Дата(Год+Месяц+День));
КонецФункции

Ничего сложного нету. Спасибо за внимание smile.gif
DartRomanius, MATEVI,
20.07.11, 12:03 связь с клиент банком
Цитата
1C допустим формат файла загрузки только *.txt, но КБ не дает такого формата. Что можно сделать?

Найти банк, который поддерживает нужный формат и заключить договор с ним crazy.gif
Espresso.Doktor,
16.07.11, 21:37 С днём бухгалтера!
Уважаемые наши "бухи"! smile.gif

Твой день, бухгалтер, к нам явился.
Желаю всяческих удач:
Чтобы всегда баланс сходился,
Чтоб не случалось недостач,

Чтоб шла работа, как по маслу,
Чтобы проблем не знать совсем,
Чтоб жизнь - полна любви и страсти,
Чтоб нравиться всегда и всем!

ЗЫ. Лучше поздно вечером чем никогда. icon_beer17.gif
Alan68, Batchir, logist, shurik_shurik,
15.07.11, 11:12 Как списать ТМЦ
Цитата
У меня программисты никогда не лезут в бухгалтерию, если что-то надо исправить то бухгалтер пишет бумажку с подписью, которую еще и ГБ заверят - с четкими указания чиво-куда и какими проводками надо сделать, программист только выполняет корректировочные действия которые недоступны бухгалтеру.

Далеко не везде такой процесс налажен. Я пару лет назад работал в организации, где не о каких бумажках речь не шла, всё решалось обычным или телефонным разговором. И действительно было:
Цитата
все косяки и считаются ошибками программиста

И все очень любили с прошлыми числами работать 47047450.gif
caprica,
14.07.11, 17:34 Выгрузка форматированного документа 1С на свой сайт
Суть задачи. Пользователи в 1с ведут описание объектов, которые редактируются в объекте ФорматированныйДокумент. Необходимо обеспечить выгрузку форматированного документа на фтп.

Для решения этой задачи воспользуемся методом форматированного документа ПолучитьHTML(). Этот метод вернет нам сам текст html документа и структуру картинок. После выполнения данного метода нам следует выгрузить картинки на наш сайт. Во время выгрузки картинок определяем тип картинки и на основании этого определяем расширение файла. Поэтому нам надо и подкорректировать сам текст html, так как источник картинки в нем по умолчанию прописывается в виде «image001″ (без расширения). Эта корректировка не критична для нас, страница будет отображаться нормально, но отдельно по ссылке открыть рисунок будет проблематично.

Код функции:

&НаСервере
Функция ВыгрузитьОбъект(ТекОбъект)  Экспорт
    РезультатВыгрузки = "";

    //проверим есть ли описание объекта в базе
    ФорматированныйДокумент = ТекОбъект.Описание.Получить();
    Если ФорматированныйДокумент = Неопределено Тогда
        РезультатВыгрузки = "   У данного объекта не определено описание. Выгрузка объекта остановлена";
        Возврат РезультатВыгрузки;
    КонецЕсли;

    //Определяем настройки подключения к фтп
    Сервер = ХранилищеНастроек.ФТПСервер;
    Порт = ХранилищеНастроек.ФТПпорт;
    ИмяПользователяФТП = ХранилищеНастроек.ФТПИмяПользователя;
    ПарольПользователяФТП = ХранилищеНастроек.ФТППароль;
    ТекущийКаталогFTP = ХранилищеНастроек.ФТПТекущийКаталог;

    ФТП = Новый FTPСоединение(Сервер,,ИмяПользователяФТП,ПарольПользователяФТП);

    Попытка
        ФТП.УстановитьТекущийКаталог(ТекущийКаталогFTP);
    Исключение
        РезультатВыгрузки = "Невозможно подключиться к фтп";
        Возврат РезультатВыгрузки;
    КонецПопытки;

    ИмяКаталогаОбъекта = Формат(ТекОбъект.Ссылка.Код, "ЧЦ=5; ЧВН=; ЧГ=");

    //Каталог для элемента
    Попытка
        ФТП.УстановитьТекущийКаталог(ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта);
    Исключение
        ФТП.СоздатьКаталог(ИмяКаталогаОбъекта);
        ФТП.УстановитьТекущийКаталог(ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта);
        РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + "   Создан каталог " + ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта;
    КонецПопытки;

    //Чистка имеющихся элементов в каталоге элемента
    ФТП.Удалить(ТекущийКаталогFTP + "/" + ИмяКаталогаОбъекта,"*.*");

    ТекстХТМЛ = "";
    СтруктураКартинок = Новый Структура;
    ФорматированныйДокумент.ПолучитьHTML(ТекстХТМЛ, СтруктураКартинок);

    //Выгрузка картинок и корректировка ХТМЛ
    Для Каждого ТекКартинка Из СтруктураКартинок Цикл
        ИмяТемпФайла = ПолучитьИмяВременногоФайла();
        ТекКартинка.Значение.Записать(ИмяТемпФайла);
        ФорматТекущейКартинки = Строка(ТекКартинка.Значение.Формат());
        Если Не ФорматТекущейКартинки = ФорматКартинки.НеизвестныйФормат Тогда
            ФорматТекущейКартинкиСтрока = Строка(ФорматТекущейКартинки);
            ТекстХТМЛ = СтрЗаменить(ТекстХТМЛ,ТекКартинка.Ключ,ТекКартинка.Ключ+ "." + ФорматТекущейКартинкиСтрока);
            ФТП.Записать(ИмяТемпФайла, ТекКартинка.Ключ+ "." + ФорматТекущейКартинкиСтрока);
            РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + "   Записан файл " + ТекКартинка.Ключ+ "." + ФорматТекущейКартинкиСтрока;
        Иначе
            ФТП.Записать(ИмяТемпФайла, ТекКартинка.Ключ);
            РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + "   Записан файл " + ТекКартинка.Ключ;
        КонецЕсли;
    КонецЦикла;

    //ВыгрузкаХТМЛ
    ИмяТемпФайла = ПолучитьИмяВременногоФайла("html");
    ФайлHТМЛ = Новый ТекстовыйДокумент;
    ФайлHТМЛ.ДобавитьСтроку(ТекстХТМЛ);
    ФайлHТМЛ.Записать(ИмяТемпФайла);

    //Собственно запись хтмл
    ФТП.Записать(ИмяТемпФайла, ИмяКаталогаОбъекта + ".html");
    РезультатВыгрузки = РезультатВыгрузки + Символы.ПС + "   Записан файл " + ИмяКаталогаОбъекта + ".html";

    Возврат РезультатВыгрузки;
КонецФункции


(с)
-=VJ=-,
14.07.11, 17:29 Выгрузка табличного документа в Google таблицу
Надумал когда-то задачу себе: выгрузить содержимое табличного документа в Google Document. Одним из вариантов использования данного функционала может быть выгрузка состояния заказов пользователей из базы в 1с в google spreadsheet. Если клиент знает адрес данного документа, то они могут ознакомиться с состоянием дел не звоня менеджеру. Может кто еще придумает варианты использования – пишите в комментарии, буду рад.

Последовательность выгрузки документа такова: сначала получаем список таблиц, которые есть у пользователя в системе Google Document. Затем после определения таблицы выгрузки пользователю предлагаем выбрать лист, в который будет выгружаться содержимое. Во время выбора всех этих параметров так же предоставляется возможность создания новых элементов (таблиц, листов). Уже после определения листа выгрузки обходим все ячейки документа и их содержимое переносим в таблицу на соответствующее место. Вопрос сохранения форматирования табличного документа в данной задаче не рассматривался.

Для написания функционала использовалась информация про google document API. Для того чтобы получить доступ к данным необходимо чтобы 1с сначала прошла аутентификацию. Про аутентификацию приложений можно почитать в соответствующем документе. Для того чтобы пройти аутентификацию мы должны сначала получить маркер, затем этот маркер прописывать каждый раз при обращении к серверу.

Функция получения маркера следующая:

Функция ПолучитьМаркер(ВидСервиса,Пользователь = Неопределено) Экспорт
    ПараметрыПользователя = ПолучитьПараметрыПользователя();

    Если ПараметрыПользователя = Неопределено Тогда
        Возврат Неопределено;
    КонецЕсли;

    АдресКлиентЛогин = "https://www.google.com/accounts/ClientLogin";
    Если ВидСервиса = "Таблица" Тогда
        Сервис = "wise";
    ИначеЕсли ВидСервиса = "Документ" Тогда
        Сервис = "writely";
    КонецЕсли;

    Попытка
        ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
        ХМЛХТТП.Open("POST", АдресКлиентЛогин, Ложь);
        ХМЛХТТП.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        ХМЛХТТП.Send("Email=" + ПараметрыПользователя.Логин + "&Passwd=" + ПараметрыПользователя.Пароль + "&service=" + Сервис + "&source=Gulp-CalGulp-1.05");
    Исключение
        Сообщить("Ошибка:" + ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;

    Если ХМЛХТТП.Status = 200 Тогда
        Маркер = ХМЛХТТП.ResponseText;
        Маркер = Прав(Маркер, СтрДлина(Маркер) - СтрДлина("Auth=") - Найти(Маркер, "Auth=") + 1);
        Возврат Маркер;
    Иначе
        Сообщить("Ошибка:" +  ХМЛХТТП.Status + "-" + ХМЛХТТП.ResponseText);
        Возврат Неопределено;
    КонецЕсли;
КонецФункции


Функция получения маркера в качестве входного параметра получает вид службы, для которой будет проходить аутентификация. Это очень важный момент. Например, полученный маркер для Календаря не даст возможности работать с документами.

Для получения списка таблиц отправляется GET запрос по адресу «https://spreadsheets.google.com/feeds/spreadsheets/private/full». В запросе параметр «Authorization» определяется значением полученного маркера аутентификации. В результате выполнения запроса в ResponseText мы получаем xml, который для удобство дальнейшего разбора перегоняется в ДеревоЗначений.Функция получения списка таблиц имеет следующий вид:

&НаСервере
Функция ПолучитьСписокТаблиц(Пользователь = Неопределено) Экспорт

    ПараметрыПользователя = ПолучитьПараметрыПользователя();
    Если ПараметрыПользователя = Неопределено Тогда
        Возврат Ложь;
    КонецЕсли;

    Маркер = ПолучитьМаркер("Таблица");
    Если Маркер = Неопределено Тогда
        Возврат Ложь;
    КонецЕсли;

    Адрес = "https://spreadsheets.google.com/feeds/spreadsheets/private/full";
    ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
    ХМЛХТТП.Open("GET", Адрес, Ложь);
    ХМЛХТТП.SetRequestHeader("Content-Type", "application/atom+xml");
    ХМЛХТТП.SetRequestHeader("Authorization", "GoogleLogin auth=" +Маркер);
    ХМЛХТТП.Send(Null);

    Если ХМЛХТТП.Status = 200 Тогда
        ОтветСервера = ХМЛХТТП.ResponseText;
        ДеревоXML = ПрочитатьResponseTextXML(ОтветСервера);
        СписокТаблиц = Новый СписокЗначений;
        ТаблицаСсылка = "";
        НазваниеТаблицы = "";

        Для Каждого Строка Из ДеревоXML.Строки[0].Строки Цикл
            Если Строка.ИмяXMLЭлементаДанных = "entry" Тогда
                Для Каждого ТекАтрибут Из Строка.Строки Цикл
                    Если ТекАтрибут.ИмяXMLЭлементаДанных = "link" Тогда
                        ТекРел = ТекАтрибут.СписокАтрибутов.НайтиПоЗначению("rel");
                        Если ТекРел.представление = "http://schemas.google.com/spreadsheets/2006#worksheetsfeed" Тогда
                            ТекСсылка = ТекАтрибут.СписокАтрибутов.НайтиПоЗначению("href");
                            ТаблицаСсылка = ТекСсылка.Представление;
                            ТаблицаСсылка = СтрЗаменить(ТаблицаСсылка,"https://","http://");
                        КонецЕсли;
                    КонецЕсли;

                    Если ТекАтрибут.ИмяXMLЭлементаДанных = "title" Тогда
                        НазваниеТаблицы = ТекАтрибут.ЗначениеXMLЭлементаДанных;
                    КонецЕсли;
                КонецЦикла;
                Если ЗначениеЗаполнено(ТаблицаСсылка) И ЗначениеЗаполнено(НазваниеТаблицы) Тогда
                    СписокТаблиц.Добавить(ТаблицаСсылка,НазваниеТаблицы);
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;

        Возврат СписокТаблиц;
    Иначе
        Сообщить("Ошибка:" + ХМЛХТТП.Status + "-" + ХМЛХТТП.ResponseText);
        Возврат Неопределено;
    КонецЕсли;
КонецФункции


Теперь остановимся на самой выгрузке значения в ячейку google таблицы. Для определения значения в ячейке выполняется POST запрос по адресу листа таблицы, который пользователь определил до этого. Успешность выполнения обновления контролируется по значению Status, в случае удачного обновления он должен быть равен 201. Функция обновления значения ячейки на листе Google таблицы имеет следующий вид:

&НаСервере
Функция ОбновитьЯчейкуЛистаГугл(Маркер,ИДЛиста,Строка,Колонка,Значение)
    ТекстСоздания = "
    | " + ИДЛиста + "/R" + Строка(Строка) + "C" + Строка(Колонка)+"
    | + ИДЛиста + "/R"+ Строка(Строка) + "C" + Строка(Колонка)+"""/>
    |   + Строка(Строка) + """ col=""" + Строка(Колонка)+ """ inputValue=""" + Значение+"""/>
    | ";
    ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
    ХМЛХТТП.Open("POST", ИДЛиста, Ложь);
    ХМЛХТТП.SetRequestHeader("Content-Type", "application/atom+xml;type=feed");
    ХМЛХТТП.SetRequestHeader("X-If-No-Redirect", "true");
    ХМЛХТТП.SetRequestHeader("Authorization", "GoogleLogin auth=" + Маркер);
    ХМЛХТТП.Send(ТекстСоздания);
    Если ХМЛХТТП.Status = 201 Тогда
        Возврат Истина;
    Иначе
        Сообщить("Ошибка:" + ХМЛХТТП.Status + "-" + ХМЛХТТП.ResponseText);
        Возврат Ложь;
    КонецЕсли;
КонецФункции




(с)
yur,
14.07.11, 15:57 Анекдот
Милиция повязала группу мошенников, продающих дипломы в метро.
- Нам пришлось их отпустить, - заявил доктор экономических наук сержант Иванов.

Дорогая, я назвал нашего ребенка Лексус.
- Ты долбоеб?
- Зато у нас теперь в семье есть Лексус.
- И долбоеб!

Крошка — сын к отцу пришел, а отец — буханка.

Театр. Свет притушен. Полная тишина, идёт спектакль. Вдруг ряда из
третьего раздаётся возглас:
- Доктор! Есть в зале доктор?!
Где то с балкона отвечают:
- Я доктор. Что случилось?
- Коллега! Что за х...ю нам показывают?!
yur,
13.07.11, 8:10 Количество субконто счета %s превышает максимально возможное!
Руками счета добавить
wmatik,
12.07.11, 15:54 Улыбнуло
А может попала "на конец" ... blush.gif
yur,
12.07.11, 12:10 Конфигурация "Конвертация данных"
Цитата
лучше почитать книгу по КД Бояркин "Конвертация данных".

Кому надо - я выложил книгу тут
Alan68, kivals, shurik_shurik, vbi, Егор Динин,
12.07.11, 12:09 1С: Предприятие 8. Конвертация данных. Обмен данными между прикладными решениями


"1С: Предприятие" - универсальная система для автоматизации деятельности предприятия, которая может применяться при решении широкого круга задач учета и управления. На данный момент на платформе "1С: Предприятия" создано множество как типовых, так и специализированных решений, они способны работать в сочетании с другими решениями на этой же платформе или с ПО сторонних производителей. Для того чтобы работа была результативной, большое значение имеет возможность организовать обмен между разными информационными системами. Платформа "1С: Предприятия" обладает различными инструментами, которые позволяют осуществлять обмен данными и интегрировать решения прикладного характера. В книге В. Э. Бояркина и А. И. Филатова "1С: Предприятие 8. Конвертация данных. Обмен данными между прикладными решениями" детально описан обмен данными в формате XML, который на данный момент является общепринятым для представления данных. Кроме того, в книге рассмотрены процедуры по разработке правил, применяя которые возможно перенести данные из одной из одной информационной системы в другую, а также обеспечивать обмен информацией между типовыми конфигурациями "1С: Предприятия". Полезным приложением к книге служит CD-диск с демонстрационными информационными базами, примерами правил обмена, а также конфигурацию "1С: Предприятие. Конвертация данных".

Скачать: tutorbit | letitbit
akella, craneua, Domowoy, fagot, Flexy, Irina_, Pisatell, swap7, vegas, Wadja,
11.07.11, 16:02 Прервать регламентное задание
Может функция
ВызватьИсключение()

поможет?

Т.е. как-то так:

НачатьТранзакцию();
Попытка
      // здесь например формируется какой-то документ и возникает ошибка блокировки данных
      // выполнение перейдет в исключение
      ЗафиксироватьТранзакцию();
Исключение
      ОтменитьТранзакцию();
      ВызватьИсключение();
КонецПопытки;
Batchir,
09.07.11, 20:22 Консоль отчетов СКД+
Внешний отчет ”Консоль отчетов” основан на системе компоновки данных и использует большинство ее возможностей © 1С.

В начале освоения системы компоновки данных не понятно, во что превращается запрос написанный в ней. Особенно это касается параметров. Включив ”Выводить текст запроса” мы увидим привычный запрос.

Возможность увидеть время выполнение запроса + вывод в табличный документ положительно влияет на качество кода smile.gif

Имеется скрин:



Скачать: [attachment=574:KonsolSKD_.zip]

В архиве находятся 2 варианта: для 8.1 и для 8.2
alexche, anna_v, Flexy, logist, max1gu, mister-x, oskar_soft, Romanich_spb, siancom, sicheva, Sweta, undin, Vond, Zaval, Володька,
09.07.11, 19:26 Декларация о прибыли
По словам коллеги с форума smile.gif есть тестовый релиз 1.2.2, в котором есть новая декларация.
pan1982, Reader, yur,
08.07.11, 14:56 Улыбнуло
Batchir, logist, mister-x,
07.07.11, 13:06 потрібна групова обробка елементів довідника
Поищите в интернете, должны быть универсальные групповые обработки, я уверен. Заодно поделитесь со всеми smile.gif
yur,
07.07.11, 12:30 потрібна групова обробка елементів довідника
Обработку написать. Там на 5 минут работы.
yur,
07.07.11, 10:12 Курс по СКД для начинающих и не только…
Были времена, сидел без работы, разработал курс по СКД, думал преподавать его в онлайн-режмие через инет. Сейчас времени не стало, преподавать его возможности нет. Увидел ваш проект, думаю, вам может это пригодиться

С уважением, Дмитрий Салихов.

В данном курсе присутствует как теоретическая, так и практическая сторона основ (и не только их) работы с компоновкой. По сути, в небольшом методическом пособии Дмитрия, собрано почти все, с чем сталкиваются программисты при использовании СКД.

Что представляет из себя курс?

Курс состоит из методического пособия в формате pdf на 63 листах. Главы пособия оформлены подобно статьям на данном ресурсе. Т.е. теореитеческая часть, подкрепленная скриншотами.
Также к курсу прилагается выгрузка тестовой базы (формат .dt) и внешние отчеты, примеры которых рассмотрены в методическом пособии.

Какие вопросы рассмотрены в курсе?

Как я уже говорил, в курсе рассмотрено все то, что обязан знать программист, использующий СКД. Рассмотрены примеры от простого отчета без программирования, до программной работы с расшифровкой и т.д.

Содержание:
- Шаг первый. Простой отчет без кодирования;
- Немного теории. Устройство системы компоновки данных;
- Шаг второй. Работа с параметрами и отборами;
- Шаг третий. Работа с различными наборами данных. Внешние наборы данных;
- Шаг четвертый. Макеты компоновки данных. Создание собственных макетов;
- Шаг пятый. Использование характеристик. Условное оформление. Вычисляемые поля;
- Шаг шестой. Расшифровка

Залил на аплоад
Acid, alex_shkut, asd34, Flexy, light07, logist, maks_75, mister-x, pablo, Petre, psyterror, Vond, Анонимка,

80 страниц V  « < 63 64 65 66 67 > » 
RSS Текстовая версия Сейчас: 19.04.24, 21:41
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!