Поиск по блогу

четверг, 29 октября 2015 г.

Передача двоичных данных с помощью веб-сервиса

Объект метаданных "Веб-сервис" предназначен для обмена данными посредством веб-технологий, а если быть точнее - по протоколу HTTP. Как же осуществляется передача двоичных данных в мире веб-разработки? Для этого используется кодирование двоичных данных под названием base64 (64 — это число символов в алфавите кодирования, из которого формируется конечный буквенно-цифровой текст на основе латинского алфавита).

Закодированные двоичные данные выглядят примерно так:
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0

Платформа 1С в своем арсенале имеет имеет парочку функций, которые умеют кодировать двоичные данные в base64:
  • Base64Строка - имеет один входящий параметр типа ДвоичныеДанные, возвращает строку, закодированную по алгоритму base64.
  • XMLСтрока - так же имеет один входящий параметр, который может принимать значение типа ДвоичныеДанные и возвращать строку в формате base64, следует использовать для создания XML.
Допустим, имеется веб-сервис, который содержит метод GetFacsimile. Этот метод принимает номер заказа и возвращает счет факсимиле в виде PDF-файла.
Рисунок 1. Метод веб-сервиса GetFacsimile

понедельник, 19 октября 2015 г.

Фиксируйся транзакция большая и маленькая!

Платформа 1С не поддерживает вложенные транзакции, но разработчик может использовать вложенность транзакций при написании кода. По факту будет существовать только один уровень транзакций. Такое поведение платформы накладывает ограничение: не существует возможности отменить действие транзакции некоторого уровня, не отменяя транзакции вышестоящего уровня.

В рамках уже выполняемой транзакции можно обращаться к методам:
  • НачатьТранзакцию();
  • ЗафиксироватьТранзакцию();
  • ОтменитьТранзакцию().
Вызов метода НачатьТранзакцию() при выполняемой транзакции не окажет никакого влияния на работу системы, просто произойдет увеличение значения счетчика транзакций на 1. Данный метод начинает новую транзакцию только в том случае, если значение счетчика транзакций равно 0.

понедельник, 12 октября 2015 г.

Рекомендации по настройке и использованию веб-браузера корпорации добра (Google Chrome)

 Рекомендации по настройке и использованию веб-браузера Mozilla Firefox
Рекомендации по настройке и использованию веб-браузера Internet Explorer

Для использования веб-браузера необходимо выполнить настройку свойств обозревателя.
Для этого откройте меню Настройка и управление Google Chrome (Customize and control Google Chrome), выберите пункт Настройки (Settings). Либо наберите в адресной строке адрес chrome://settings/.
Рисунок 1. Настройки браузера
Далее нажмите ссылку Показать дополнительные настройки (Show advanced settings). В группе Личные данные нажмите кнопку Настройки контента или введите адрес chrome://settings/content.
Рисунок 2. Настройки контента
Выполните следующие настройки:

пятница, 9 октября 2015 г.

Передача таблицы значений с сервера на клиент

Отличия функций РеквизитФормыВЗначение и ДанныеФормыВЗначение

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

Вариант №1


Здесь все просто, обходим в цикле строки таблицы значений, данные каждой строки вставляем в структуру, а структуру добавляем в массив.

&НаСервере
Функция ПолучитьТЗКакМассивСтруктур()

МояТаблицаЗначений = СоздатьТаблицуЗначений();

МассивСтруктур = Новый Массив;
Для Каждого СтрокаТЗ Из МояТаблицаЗначений Цикл
СтрокаСтруктура = Новый Структура;
Для Каждого КолонкаТЗ Из МояТаблицаЗначений.Колонки Цикл
СтрокаСтруктура.Вставить(КолонкаТЗ.Имя, СтрокаТЗ[КолонкаТЗ.Имя]);
КонецЦикла;
МассивСтруктур.Добавить(СтрокаСтруктура);
КонецЦикла;

Возврат МассивСтруктур;

КонецФункции // ПолучитьТЗКакМассивСтруктур()

&НаКлиенте
Процедура ПолучитьДанные()

ДанныеТаблицы = ПолучитьТЗКакМассивСтруктур();

КонецПроцедуры // ПолучитьДанные()


Минус данного решения - это отсутствие тех самых полезных методов таблицы значений.