Showing posts with label 1c 1c82 1С83. Show all posts
Showing posts with label 1c 1c82 1С83. Show all posts

Wednesday, August 19, 2015

Доработка прав доступа в УТ11

Постоянно донимали пользователи со своими правами и разрешениями. В связи с этим пришлось доработать УТ11 на ускорение ввода разрешений или блокировок.

Вот и сделал себе "кайф", а пользователям радость.
Повозился пока нашел удобный вариант получения из ПВХ (Планов видов характеристик) необходимый мне объект и как итог его форму выбора
Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ОсновнаяФормаДляВыбора.ПолноеИмя()

И добавил следующий код

&НаКлиенте
Процедура КомандаПодбор(Команда) 
 ПараметрыФормы = Новый Структура;
 ПараметрыФормы.Вставить("РежимВыбора", Истина);
 ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь);
 ПараметрыФормы.Вставить("МножественныйВыбор",Истина);
 ОткрытьФорму(ВернутьТекущуюФормуВЫбора(),ПараметрыФормы,Элементы.ЗначенияДоступа);
 //Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ПолноеИмя()
 //Если Метаданные.Справочники
КонецПроцедуры

Функция ВернутьТекущуюФормуВЫбора() 
 Возврат Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ОсновнаяФормаДляВыбора.ПолноеИмя();
КонецФункции

&НаКлиенте
Процедура ЗначениеДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
 
 Если ВыбранноеЗначение = Тип("СправочникСсылка.Пользователи") ИЛИ
      ВыбранноеЗначение = Тип("СправочникСсылка.ГруппыПользователей") Тогда
 
  СтандартнаяОбработка = Ложь;
  НачальноеЗначение = Элементы.ЗначенияДоступа.ТекущиеДанные.ЗначениеДоступа;
  ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", Новый Структура("ВыборГруппПользователей, ТекущаяСтрока", Истина, НачальноеЗначение), Элемент);
 
 ИначеЕсли ВыбранноеЗначение = Тип("СправочникСсылка.ВнешниеПользователи") ИЛИ
           ВыбранноеЗначение = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда
 
  СтандартнаяОбработка = Ложь;
  НачальноеЗначение = Элементы.ЗначенияДоступа.ТекущиеДанные.ЗначениеДоступа;
  ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаВыбора", Новый Структура("ВыборГруппВнешнихПользователей, ТекущаяСтрока", Истина, НачальноеЗначение), Элемент);
 КонецЕсли;
 
 тМасс = Новый Массив;
 Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") тогда
  тМасс.Добавить(ВыбранноеЗначение);
 Иначе
  тМасс = ВыбранноеЗначение;
 КонецЕсли;
 
 Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") тогда
  Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл
   Если Объект.ЗначенияДоступа.НайтиСтроки(Новый Структура("ЗначениеДоступа",ВыбранныйЭлемент)).Количество() = 0  Тогда
    НоваяСтрока = Объект.ЗначенияДоступа.Добавить();
    НоваяСтрока.ЗначениеДоступа = ВыбранныйЭлемент;
    НоваяСтрока.ВидДоступа = ТекущийВидДоступа;
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;
 
КонецПроцедуры


В общем пока все работает.

Thursday, August 6, 2015

Перенос остатков на склад после включения в бухгалтерии "Ввести складской учет"

В общем тривиальная задача, есть 1С Бухгалтерия 8.2 необходимо перебросить остатки на счетах после включения "Ввести складской учет".
В нете решения не нашел, делаю свое. Форма с 3 полями "На дату", "Организация", "На склад".
Задача тривиальная, но вот заставило задумать по работе с установкой субконто и работа с партиями.


Процедура КнопкаВыполнитьНажатие(Кнопка)
   
 
 Запрос = Новый Запрос;
 Запрос.Текст = 
  "ВЫБРАТЬ
  | ХозрасчетныйОстатки.Счет,
  | ХозрасчетныйОстатки.Субконто1,
  | ХозрасчетныйОстатки.Субконто2,
  | ХозрасчетныйОстатки.Субконто3,
  | ХозрасчетныйОстатки.Организация,
  | ХозрасчетныйОстатки.Валюта,
  | ХозрасчетныйОстатки.НалоговоеНазначение,
  | ХозрасчетныйОстатки.КоличествоОстаток КАК Количество,
  | ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
  | ХозрасчетныйОстатки.ВалютнаяСуммаОстаток КАК ВалютнаяСумма,
  | ХозрасчетныйОстатки.СуммаНУОстаток КАК СуммаНУ
  |ИЗ
  | РегистрБухгалтерии.Хозрасчетный.Остатки(
  |   &НаДату,
  |   ,
  |   ,
  |   Организация = &Организация
  |    И (ТИПЗНАЧЕНИЯ(Субконто1) = ТИП(Справочник.Склады)
  |     ИЛИ ТИПЗНАЧЕНИЯ(Субконто2) = ТИП(Справочник.Склады)
  |     ИЛИ ТИПЗНАЧЕНИЯ(Субконто3) = ТИП(Справочник.Склады))) КАК ХозрасчетныйОстатки";
 
 Запрос.УстановитьПараметр("НаДату",НачалоДня(НаДату));
 Запрос.УстановитьПараметр("Организация",Организация);
 
 РезультатЗапроса = Запрос.Выполнить();
 
 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
 Операция = Документы.ОперацияБух.СоздатьДокумент();
 Операция.УстановитьНовыйНомер();
 Операция.Дата = НачалоДня(НаДату)-1;
 Операция.Организация = Организация;
 Операция.Содержание = "Корректировка остатков бух";
 Операция.Записать(); 
 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
  НоваяЗапись  = Операция.Движения.Хозрасчетный.Добавить();
  НоваяЗапись.Активность = Истина;  
  НоваяЗапись.Регистратор = Операция.Ссылка;
  НоваяЗапись.ВалютаДт = ВыборкаДетальныеЗаписи.Валюта;
  НоваяЗапись.ВалютаКт = ВыборкаДетальныеЗаписи.Валюта;
  НоваяЗапись.ВалютнаяСуммаДт = ВыборкаДетальныеЗаписи.ВалютнаяСумма;
  НоваяЗапись.ВалютнаяСуммаКт = ВыборкаДетальныеЗаписи.ВалютнаяСумма;
  НоваяЗапись.КоличествоДт =  ВыборкаДетальныеЗаписи.Количество;
  НоваяЗапись.КоличествоКт =  ВыборкаДетальныеЗаписи.Количество;
  НоваяЗапись.НалоговоеНазначениеДт = ВыборкаДетальныеЗаписи.НалоговоеНазначение;
  НоваяЗапись.НалоговоеНазначениеКт = ВыборкаДетальныеЗаписи.НалоговоеНазначение;
  НоваяЗапись.Организация = Организация;
  НоваяЗапись.Сумма = ВыборкаДетальныеЗаписи.Сумма;
  НоваяЗапись.СуммаНУДт = ВыборкаДетальныеЗаписи.СуммаНУ;
  НоваяЗапись.СуммаНУКт = ВыборкаДетальныеЗаписи.СуммаНУ;
  НоваяЗапись.СчетДт = ВыборкаДетальныеЗаписи.Счет;
  НоваяЗапись.СчетКт = ВыборкаДетальныеЗаписи.Счет;
  УстановитьСубконтоКт(НоваяЗапись,ВыборкаДетальныеЗаписи.Субконто1);
  УстановитьСубконтоКт(НоваяЗапись,ВыборкаДетальныеЗаписи.Субконто2);
  УстановитьСубконтоКт(НоваяЗапись,ВыборкаДетальныеЗаписи.Субконто3);
  Если ТипЗнч(ВыборкаДетальныеЗаписи.Субконто1) = Тип("СправочникСсылка.Склады") тогда
   УстановитьСубконтоДт(НоваяЗапись,Склад);
  Иначе
   УстановитьСубконтоДт(НоваяЗапись,ВыборкаДетальныеЗаписи.Субконто1);
  КонецЕсли;
  
  Если ТипЗнч(ВыборкаДетальныеЗаписи.Субконто2) = Тип("СправочникСсылка.Склады") тогда
   УстановитьСубконтоДт(НоваяЗапись,Склад);
  Иначе
   УстановитьСубконтоДт(НоваяЗапись,ВыборкаДетальныеЗаписи.Субконто2);
  КонецЕсли;
  
  Если ТипЗнч(ВыборкаДетальныеЗаписи.Субконто3) = Тип("СправочникСсылка.Склады") тогда
   УстановитьСубконтоДт(НоваяЗапись,Склад);
  Иначе
   УстановитьСубконтоДт(НоваяЗапись,ВыборкаДетальныеЗаписи.Субконто3);
  КонецЕсли;
  
 КонецЦикла;
 //Операция.записать(); 
 Операция.ПолучитьФорму("ФормаДокумента").Открыть();
 
 

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

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

Функция УстановитьСубконтоКт(Проводка,ЗначениеСубконто)
 Для Каждого ВидСубконто Из Проводка.СчетКт.ВидыСубконто Цикл
     //Если Строка(ТипЗнч(ЗначениеСубконто)) = Строка(ВидСубконто.ВидСубконто.ТипЗначения) Тогда
  Если ВидСубконто.ВидСубконто.ТипЗначения.СодержитТип(ТипЗнч(ЗначениеСубконто)) тогда
         Проводка.СубконтоКт[ВидСубконто.ВидСубконто.Ссылка] = ЗначениеСубконто;
     КонецЕсли;
 КонецЦикла;
КонецФУнкции



Процедура ПриОткрытии()
 //НаДату = НачалоМесяца(ТекущаяДата());
 НаДату =  Дата(2015,07,01);
 Склад = Справочники.Склады.НайтиПоНаименованию("Основной склад",Истина);
КонецПроцедуры

Monday, July 13, 2015

1C & REGEX Как упростить себе жизнь

Много времени экономит Regex, очень много, до него код моих программ превращался в монстроидальным и занимавшим не одну сотню строчек. Так что плюсы в нем очень и очень, опишу основные процедуры и функции которые упрощают и ускоряют мне работу.
Вот мои глобальные процедуры
//Простой возврат
Функция RegExp(Знач тСтрока,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина) Экспорт //Возвращает первое вхождение
 RegExp = Новый COMОбъект("VBScript.RegExp");
 тСтрока = Строка(тСтрока);
 RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка 
 RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения 
 RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске  
 RegExp.Pattern = Паттерн;
 Matches=RegExp.Execute(Строка(тСтрока));
 Если RegExp.Test(тСтрока) тогда
  Возврат Matches.Item(0).SubMatches.Item(0);
 КонецЕсли;
 Возврат Неопределено;
КонецФункции

//Возврат в массив
Функция RegExpМассив(Строка,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина) Экспорт 
 RegExp = Новый COMОбъект("VBScript.RegExp");
 
 RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка 
 RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения 
 RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске  
 RegExp.Pattern = Паттерн;
 Matches=RegExp.Execute(Строка);
 возМассив = Новый Массив;
 Если RegExp.Test(Строка) тогда
  Для н=0 по Matches.Count-1 Цикл 
   Для х=0 по Matches.Item(н).SubMatches.Count-1 Цикл
    возМассив.Добавить(Matches.Item(н).SubMatches.Item(х));
   КонецЦикла;
  КонецЦикла;
  Возврат возМассив
 КонецЕсли;
 Возврат возМассив;
КонецФункции

//Возврат в таблицу значений
Функция RegExpТаблицаЗначений(Строка,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина, КвоКолонок=0) Экспорт
 RegExp = Новый COMОбъект("VBScript.RegExp");
 Тбл = Новый ТаблицаЗначений;
 Если КвоКолонок=0 тогда
  КвоКолонок = СтрЧислоВхождений(Паттерн,"(");
 КонецЕсли;
 Для х=1 по КвоКолонок Цикл
  Тбл.Колонки.Добавить("К"+х);
 КонецЦикла;
 RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка 
 RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения 
 RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске  
 RegExp.Pattern = Паттерн;
 Matches=RegExp.Execute(Строка);
 //возМассив = Новый Массив;
 Если RegExp.Test(Строка) тогда
  Для н=0 по Matches.Count-1 Цикл 
   НоваяСтрока = Тбл.Добавить();
   Для х=0 по Matches.Item(н).SubMatches.Count-1 Цикл
    //возМассив.Добавить(Matches.Item(н).SubMatches.Item(х));
    НоваяСтрока["К"+(х+1)]=Matches.Item(н).SubMatches.Item(х);
   КонецЦикла;
  КонецЦикла;
  Возврат Тбл
 КонецЕсли;
 Возврат Тбл;
КонецФункции

//Замена
Функция RegExpRepalce(Pattern, НачальнаяСтрока,ЗаменяемаяСтрока) Экспорт
 
 RegExp = Новый COMОбъект("VBScript.RegExp");
 //СтруктураФайлов = Новый СписокЗначений;
 RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка 
 RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения 
 RegExp.IgnoreCase = Истина; // истина — игнорировать регистр строки при поиске  
 RegExp.Pattern = Pattern; 
 ВозвращаемаяСтрока = RegExp.Replace(НачальнаяСтрока,ЗаменяемаяСтрока);
 
 //Matches=RegExp.Execute(НачальнаяСтрока);
 //Если RegExp.Test(НачальнаяСтрока) тогда
 // ВозвращаемаяСтрока = Matches.Item(0).SubMatches.Item(0)+Matches.Item(0).SubMatches.Item(1)+HTMLподпись+Matches.Item(0).SubMatches.Item(2);
 // Возврат СтрЗаменить(ВозвращаемаяСтрока,"<%br%>",Символы.ПС);
 //КонецЕсли;
 
 Возврат ВозвращаемаяСтрока;
КонецФункции

//Проверка
Функция RegExpTest(Строка,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина) Экспорт 
 RegExp = Новый COMОбъект("VBScript.RegExp");
 
 RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка 
 RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения 
 RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске  
 RegExp.Pattern = Паттерн;
 //Matches=RegExp.Execute(Строка); 
 Возврат RegExp.Test(Строка);
 
КонецФункции


Thursday, July 9, 2015

Создание в УТ11 документов, основная форма




HTML Editor - Full Version


Создание в УТ11 документов, основная форма


После создания документа и добавление реквизитов, переходим к оформлению формы:


  1. В процедуру "ПриСозданииНаСервере" добавляем 
    • ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма);
  2. В процедуру "ПриЧтенииНаСервере" добавляем
    • ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);


Создание в УТ11 документов, права




HTML Editor - Full Version


Создание в УТ11 документов, права


  1. Создаем документ и заполняем основные реквизиты
    • Организация
    • Подразделение
    • Менеджер
    • Автор
    • и т.п.
  2. Прописуем права "Чтение" и "ДобавлениеИзменение". Вначале создаем право "Чтение", заполняем и оформляем, после копирование создаем право "ДобавлениеИзменение". Из примеров "ЧтениеРассылкаПрайсЛистов" и "ДобавлениеИзменениеПрайсЛистов"

  • Не забываем изменить в свойствах прав синоним, дабы в настройках прав все было понятно
  • Добавляем шаблоны ограничений (берем уже из созданых прав), сейчас у меня 3 вида "ПоЗначениям", "ПоЗначениямРасширенный", "ПоЗначениямИНаборамРасширенный"
  • Далее в праве отключаем все галки которые установила 1С, дабы не было проблем с открытым доступом
  • Находим необходимый документ и включаем в нем следующие права "Ввод по строке", "Просмотр",  "Чтение"
  • В чтении добавляем поле "Ограничение к доступа к данным", поля оставляем по умолчанию, а в ограничение доступа добавляем строку #ПоЗначениям( "Документ.РассылкаПрайсЛистов","Чтение","",

    "Подразделения","Подразделение",

    "","",

    "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )
  • После этого копируем право, переименовываем "ДобавлениеИзменение"
  • Добавляем все галки кроме "Удаление", "Интерактивное удаление",  "Интерактивное удаление помеченных", что бы случайно не удалить документы безвозвратно.
  • Далее в правах "Добавление" и "Изменение" добавляем строку в "Ограничение к доступа к данным", и копируем "Ограничение доступа" из "Чтение", заменяя "Чтение" на "Добавление" и "Изменение" #ПоЗначениям( "Документ.РассылкаПрайсЛистов","Добавление","",

    "Подразделения","Подразделение",

    "","",

    "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )

 


 



Friday, April 10, 2015

1С БСП И РЛС

"Будь проклят тот день, когда я сел за баранку этого автомобиля" - наверное каждый скажет этим слова в благодарность 1с и РЛС.
Меня мучает только один вопрос, почему так мало описаний и нет обработок позволяющих быстро проверить всю работу с правами.
Вот возникла у меня проблема, необходимо сделать доступ к документам через РЛС, но часть реквизитов в документе может быть не заполнена, в общем не буду описывать историю радости по поводу поиска как это сделать, сама процедура:

#ПоЗначениямРасширенный( "Документ.Посылка","Чтение","",
"",
"",
"Организации","Т.Организация","И",
"Подразделения","Т.Подразделение","И( ВЫБОР КОГДА Т.СкладОтправитель=Значение(Справочник.Склады.ПустаяСсылка) тогда Истина Иначе ",
"Склады","Т.СкладОтправитель","Конец ИЛИ ВЫБОР КОГДА Т.СкладПолучатель=Значение(Справочник.Склады.ПустаяСсылка) тогда Истина Иначе ",
"Склады","Т.СкладПолучатель","Конец )",
"","","","","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" )

Wednesday, March 25, 2015

Простая схема передачи данных между 1с и битрикс используя post запросы

Используем битрикс как сайт. И для несложных схем обмена использую php скрипты. С Get проблем не было, с Post пришлось поковыряться. Простое решение

Код 1с 8.2

 ИФ = ПолучитьИмяВременногоФайла();
 ЗФ = Новый ЗаписьТекста(ИФ);
 ЗФ.ЗаписатьСтроку("Привет1");
 ЗФ.ЗаписатьСтроку("Привет2");
 ЗФ.ЗаписатьСтроку("Привет3");
 ЗФ.ЗаписатьСтроку("Привет4");
 ЗФ.ЗаписатьСтроку("Привет5");
 ЗФ.ЗаписатьСтроку("Привет6");
 ЗФ.Закрыть();
 //Фл = Новый Файл(ИФ);
 ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
 adoStream = Новый COMОбъект("ADODB.Stream");
 
 adoStream.Mode = 3;          // read write
 adoStream.Type = 1;          // adTypeBinary
 
 adoStream.Open();
 adoStream.LoadFromFile(ИФ);
 adoStream.Position = 0;
 
 connectstring = Константы.ПорталB2BАдресСайта.Получить()+"/tools/get_users_info.php";
 request = "POST";
 ХТТП.Open(request, connectstring, Ложь);  
 ХТТП.SetRequestHeader("Content-Type", "application/upload");
 //ХТТП.SetRequestHeader("X-File-Name", "input.txt");
 //ХТТП.SetRequestHeader("X-File-Size", Фл.Размер());
 ХТТП.Send(adoStream.Read(adoStream.Size));
 Сообщить(ХТТП.Status);
 Сообщить( ХТТП.ResponseText);


код на сервере php
<?php
$data = file_get_contents('php://input');//ile_get_contents("input.txt"); //read the file
$convert = explode("\n", $data); //create array separate by new line

for ($i=0;$i<count($convert);$i++)  
{
    echo $convert[$i].', '; //write value by index
}
?>

Итого, создаем файл запихиваем в него 6 приветов и отправляем, от сервера получаем ответ.

Saturday, January 3, 2015

Публикация картинок на parse.com

Решил переделать схему работы на мобильных устройствах в связи с проблемами в работе SOAP, постоянная не хватка памяти и проблемы в работе с 1С (Скорость и ключи). Возникла проблема в передаче на parse.com картинок в правильном формате, заставила данная проблема повозиться и поискать решений, итого код:


ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
  
 ХТТП.Open("GET", "https://api.parse.com/1/login?username=1&password=F7/83?b5bf", Ложь);
 ХТТП.SetRequestHeader("Host", "api.parse.com");
 ХТТП.SetRequestHeader("Content-Type", "application/json");
 ХТТП.SetRequestHeader("X-Parse-Application-Id", "*********************************************");
 ХТТП.SetRequestHeader("X-Parse-REST-API-Key","****************************************");
 ХТТП.Send(""); 
 Ses = json.ПрочитатьJSON(ХТТП.ResponseText);
 
 sessionToken = Ses.Получить("sessionToken");
 
 
 ТНом = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("c564fdf4-247e-11e4-9dd2-000c29ce19d5"));
 СсылкаНаФайл = РаботаСПрайсами.ПолучениеКартинкиНоменклатуры(ТНом,"png",200,200,50,true);
 Если не СсылкаНаФайл=неопределено тогда
  adoStream = Новый COMОбъект("ADODB.Stream");
    
     adoStream.Mode = 3;          // read write
     adoStream.Type = 1;          // adTypeBinary
    
     adoStream.Open();
     adoStream.LoadFromFile(СсылкаНаФайл);
  adoStream.Position = 0;
  
  connectstring = "https://api.parse.com/1/files/"+Строка(ТНом.УникальныйИдентификатор())+".png";
  request = "POST";
  ХТТП.Open(request, connectstring, Ложь);
  ХТТП.SetRequestHeader("Host", "api.parse.com");
  ХТТП.SetRequestHeader("Content-Type", "image/png");
  ХТТП.SetRequestHeader("X-Parse-Application-Id", "***********************************");
  ХТТП.SetRequestHeader("X-Parse-REST-API-Key","******************************");
  ХТТП.SetRequestHeader("X-Parse-Session-Token",sessionToken);
  ХТТП.Send(adoStream.Read(adoStream.Size));
  Сообщить(ХТТП.Status);
  Сообщить( ХТТП.ResponseText);
  ТСО =  json.ПрочитатьJSON(ХТТП.ResponseText);
  fileName = ТСО.Получить("name");
  
  
  
  
 КонецЕсли;