HTTP POST запрос к УТМ системы ЕГАИС

Публикация № 398079

Разработка - Практика программирования

ЕГАИС http post запрос алкоголь обмен УТМ егаис утм

В преддверии ввода системы ЕГАИС, разбирались с УТМ и HTTP POST запросами.

 

С 01.01.2016 через систему ЕГАИС (Единая государственная автоматизированная информационная система http://egais.ru)  - будут обязаны работать оптовики и розничные продавцы крепкого и слабого алкоголя.

В преддверии внедрения на своих учетных системах обмена с УТМ (ЕГАИС) разбирались, как работает.

Для обработки использовалась статья "Передача файлов и данных на веб-сервер средствами 1С:Предприятие 8.X методом POST".

 

 

XML запрос к справочнику организаций (из Технической документации УТМ 1.1)

Сформируем xml-файл запроса (client.xml) c запросом рекивизитов организации вида (структура запроса взята из описания УТМ модуля):

<?xml version="1.0" encodmg="UTF-8"?>
<ns:Documents Version="1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"
    xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef"
    xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters">
 <ns:Owner>
  <ns:FSRAR_ID>00040218</ns:FSRAR_ID>
 </ns:Owner>
 <ns:Document> (5.1)
 <ns:QueryClients>
  <qp:Parameters>
   <qp:Parameter>
    <qp:Name>ИНН</qp:Name>
    <qp:Value>1681000049<</qp:Value>
   </qp:Parameter>
  </qp:Parameters>
  </ns:QueryClients>
 </ns:Document>
</ns:Documents>

Запрос реквизитов организации выполняется по ее ИНН и FSRAR_ID содержит идентификатор организации, отправляющей данный документ.

В ответ на этот запрос, УТМ подписывает файл запроса и возвращает реквизиты подписи в квитанции следующего вида:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<A>
   <url>d9ef780e-4d35-41b0-bb9c-f06e53ac23d3</url>
        <sign>895B92CAD115B57B02C7D12ADC488066D99B60549D57A737B0CAC18E5E3E1C72E6B8D414C763CB58A5E67DE7C8C2ECE908451C4AE6838479A42ABBA8179D0CE8
        </sign>
   <ver>2</ver>
</

В элементе url возвращается идентификатор запроса, его значение требуется запомнить для поиска впоследствии ответа на этот запрос.

 

При использовании CURL, команда будет вида: curl -F "xml_file=@client.xml" http://localhost:8080/opt/in/QueryPartner

 

УТМ отправляет запрос на сервер ЕГАИС. Сервер ЕГАИС формирует ответ на запрос, возвращает ответ в УТМ.

 

Далее сформируем запрос средствами 1С, без использования CURL:

 

1. Подготовка переменных: 

 

        Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); // Идентификатор границы разделов POST запроса
        ИмяФайлаДляЗагрузки = КаталогВременныхФайлов() + "select.xml";       
        ИмяФайлаОтвета = КаталогВременныхФайлов() + "answer.xml"; // Имя файла ответа на POST запрос
        ИмяФайлаОтправки = КаталогВременныхФайлов() + "post.txt";

 

2. Формируем XML запрос :

 

    ОбъектXML  = Новый ЗаписьXML();
    ОбъектXML.ОткрытьФайл(ИмяФайлаДляЗагрузки);
    ОбъектXML.ЗаписатьОбъявлениеXML();
    ОбъектXML.ЗаписатьНачалоЭлемента("ns:Documents");
    ОбъектXML.ЗаписатьАтрибут("Version", "1.0");
    ОбъектXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    ОбъектXML.ЗаписатьСоответствиеПространстваИмен("ns", "http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01");
    ОбъектXML.ЗаписатьСоответствиеПространстваИмен("oref", "http://fsrar.ru/WEGAIS/ClientRef");
    ОбъектXML.ЗаписатьСоответствиеПространстваИмен("qp", "http://fsrar.ru/WEGAIS/QueryParameters");
    ОбъектXML.ЗаписатьНачалоЭлемента("ns:Owner");
    ОбъектXML.ЗаписатьНачалоЭлемента("ns:FSRAR_ID");
    ОбъектXML.ЗаписатьТекст(FSRAR_ID);
    ОбъектXML.ЗаписатьКонецЭлемента();//ns:FSRAR_ID
    ОбъектXML.ЗаписатьКонецЭлемента();//ns:Owner
    ОбъектXML.ЗаписатьНачалоЭлемента("ns:Document");
    ОбъектXML.ЗаписатьНачалоЭлемента("ns:QueryClients");
    ОбъектXML.ЗаписатьНачалоЭлемента("qp:Parameters");
    ОбъектXML.ЗаписатьНачалоЭлемента("qp:Parameter");
    ОбъектXML.ЗаписатьНачалоЭлемента("qp:Name");
    ОбъектXML.ЗаписатьТекст("ИНН");
    ОбъектXML.ЗаписатьКонецЭлемента();//qp:Name
    ОбъектXML.ЗаписатьНачалоЭлемента("qp:Value");
    ОбъектXML.ЗаписатьТекст(ИННКонтрагента);
    ОбъектXML.ЗаписатьКонецЭлемента();//qp:Value
    ОбъектXML.ЗаписатьКонецЭлемента();//qp:Parameter
    ОбъектXML.ЗаписатьКонецЭлемента();//qp:Parameters
    ОбъектXML.ЗаписатьКонецЭлемента();//ns:QueryClients
    ОбъектXML.ЗаписатьКонецЭлемента();//ns:Document
    ОбъектXML.ЗаписатьКонецЭлемента();//ns:Documents
    ОбъектXML.ЗаписатьТекст(Символы.ПС);
    ОбъектXML.Закрыть();

 

 

3. Формирование тела POST запроса через объеденение текстовых файлов:

 

	//Определяем массив для процедуры ОбъединитьФайлы
	МассивФайловДляОбъединения = Новый Массив;

	//Формируем начальный фрагмент файла POST-запроса
	ИмяФайлаОтправкиНачало = ПолучитьИмяВременногоФайла("txt");
	ФайлОтправкиНачало = Новый ЗаписьТекста(ИмяФайлаОтправкиНачало, КодировкаТекста.ANSI, Символы.ПС, Ложь);
	//Определяем раздел двоичных данных
	ФайлОтправкиНачало.ЗаписатьСтроку("--" + Boundary);
	//Указываем имя файла для передачи
	ФайлОтправкиНачало.ЗаписатьСтроку("Content-Disposition: form-data; name=""xml_file""; filename=""" + "select.xml" + """");
	//Указываем тип передаваемых данных.
	ФайлОтправкиНачало.ЗаписатьСтроку("Content-Type: text/xml; charset=utf-8");
	ФайлОтправкиНачало.ЗаписатьСтроку("");
	ФайлОтправкиНачало.Закрыть();

	МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиНачало);

        МассивФайловДляОбъединения.Добавить(ИмяФайлаДляЗагрузки);

	//Формируем конечный фрагмент файла POST-запроса
	ИмяФайлаОтправкиКонец = ПолучитьИмяВременногоФайла("txt");
	ФайлОтправкиКонец = Новый ЗаписьТекста(ИмяФайлаОтправкиКонец, КодировкаТекста.ANSI, Символы.ПС, Ложь);

	//Завершение раздела двоичных данных
	//Завершение сообщения для сервера
	
	ФайлОтправкиКонец.ЗаписатьСтроку("--" + Boundary + "--");
	ФайлОтправкиКонец.Закрыть();

	МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправкиКонец); // !!! 3 добавление в массив

	//Теперь сформированные фрагменты сообщения для сервера объединяем в один файл POST-запроса
	ОбъединитьФайлы(МассивФайловДляОбъединения, ИмяФайлаОтправки);

 

4. Формируем заголовок POST запроса:

 

        ЗаголовокHTTP = Новый Соответствие();

        //Укажем формат данных Content-Type
        ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);

        //Укажем длину POST-запроса Content-Length
        ФайлОтправки = Новый Файл(ИмяФайлаОтправки);
        РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
        ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки);

 

5.  Инициализируем HTTPСоединение,  При необходимости задаём параметры прокси.

 

        СерверПриемник = "localhost"; //Без протокола http://. Естественно, следует указать свой адрес.
        Порт = "8080"; //Порт УТМ
        ИспользоватьПрокси = Ложь;
	
        Если ИспользоватьПрокси Тогда
	        Прокси = Новый ИнтернетПрокси;
	        Прокси.НеИспользоватьПроксиДляЛокальныхАдресов = Истина;
	        Прокси.Пароль = "ПарольПрокси"; // укажите своё значение
	        Прокси.Пользователь = "ПользовательПрокси"; // укажите своё значение
	        НТТР = Новый HTTPСоединение(СерверПриемник, Порт, , , Прокси);
	    Иначе
                НТТР = Новый HTTPСоединение(СерверПриемник, Порт);
        КонецЕсли;

	
	Попытка
		АдресСкрипта = "/opt/in/QueryPartner"; //Адрес ресурса.
		
		//Формируем HTTP запрос
		ЗапросHTTP = Новый HTTPЗапрос(АдресСкрипта, ЗаголовокHTTP);
		ЗапросHTTP.УстановитьИмяФайлаТела(ИмяФайлаОтправки);  //Устанавливает имя файла, из которого будет прочитано тело POST-запроса.
		
		//Ответ от сервера получим в возвращаемом значении типа HTTPОтвет
		ОтветHTTP = НТТР.ОтправитьДляОбработки(ЗапросHTTP, ИмяФайлаОтвета);
	Исключение
		Сообщить("Неудачная попытка соединения с " + СерверПриемник + ": " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	//Разрушаем объект HTTP-запроса для освобождения файла POST-запроса.
	//В противном случае при попытке удаления файла получим ошибку совместного доступа.
	ЗапросHTTP = Неопределено;

 

6. Читаем ответ на запрос, разбираем XML файл ответа.

 

	ЧтениеОтвета = Новый ЧтениеXML;
	ЧтениеОтвета.ОткрытьФайл(ОтветHTTP.ПолучитьИмяФайлаТела());
	
	ИдОтвета = "";
	ПодписьОтвета = "";
	ИмяУзла = "";
	
	Пока ЧтениеОтвета.Прочитать() Цикл
		Если ЧтениеОтвета.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
			ИмяУзла = ЧтениеОтвета.Имя;
		КонецЕсли;
		Если ЧтениеОтвета.ТипУзла=ТипУзлаXML.Текст Тогда
			Если ИмяУзла = "url" Тогда
				urlЗначение=ЧтениеОтвета.Значение;
				Сообщить("ID "+urlЗначение);
			КонецЕсли;
			Если ИмяУзла = "sign" Тогда
				signЗначение=ЧтениеОтвета.Значение;
				Сообщить("SIGN "+signЗначение);
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

	//Разрушаем объект HTTP-ответ для освобождения файла ответа.
	ЧтениеОтвета = Неопределено;

 

7. Удаляем временные файлы.

 

	// Удаляем файлы POST-запроса и фрагменты сообщения. Больше они не нужны.
	УдалитьФайлы(ИмяФайлаОтвета); // "answer.xml"
	УдалитьФайлы(ИмяФайлаОтправки); // "post.txt"
	УдалитьФайлы(ИмяФайлаДляЗагрузки); // "select.xml"
	
	Для каждого ЭлементМассива Из МассивФайловДляОбъединения Цикл
		УдалитьФайлы(ЭлементМассива);
	КонецЦикла;

В итоге  мы получаем ключ url вида "d9ef780e-4d35-41b0-bb9c-f06e53ac23d3", и "sign" вида "895B92CAD115B57B02C7D12ADC488066D99B60549D57A737B0CAC18E5E3E1C72E6B8D414C763CB58A5E67DE7C8C2ECE908451C4AE6838479A42ABBA8179D0CE8", что с этим делать и что это значит? Наш запрос был принят УТМ и подписан, далее каждые 5 минут УТМ отправляет запросы на сервер ЕГАИС, сервер обрабатывает и присылает на ответы. Список ответов будет находится по адресу "http://localhost:8080/opt/out?refresh=true" в виде :

 

 

Строим HTTP запрос к ресурсу "/opt/out" получаем список ответов, в списке находим нужный ответ по url = relayId,

получаем ссылку "http://localhost:8080/opt/out/ReplyPartner/1" на файл ответа с сервера и по ссылке получаем XML файл ответа.

Ответ на запрос к справочнику организаций будет вида:

 

<?xml version="1.0" encoding="UTF-8"?>
<ns:Documents xmlns:rc="http://fsrar.ru/WEGAIS/ReplyClient" xmlns:oref="http://fsrar. ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ns:Owner>
         <ns:FSRAR_ID>3463047</ns:FSRAR_ID>
    </ns:Owner>
   <ns:Document> (5.9)
       <ns:ReplyClient>
       <rc:Clients xmlns:rc="http://fsrar.ru/WEGAIS/ReplyClient" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
           <rc:Client>
               <oref:ClientRegId>00008907</oref:ClientRegId>
               <oref:INN>1681000049</oref:INN>
               <oref:KPP>303265456</oref:KPP>
               <oref:FuMName>ООО "Пример"</oref:FuMName> <oref:ShortName>П</oref:ShortName>
               <oref:address>
                   <oref:Country>643</oref:Country>
                   <oref:RegionCode>30</oref:RegionCode>
                   <oref:city>Астрахань г</o ref: city>
                   <oref:street>1 -й проезд</оге^^ее^ <oref:house>12</oref:house>
                   <oref:description>643,,AcTpaxaHCK8H обл,,Астрахань г,,1 -й проезд,12,,,</oref:description>
               </oref:address>
           </rc:Client>
       </rc:Clients>
       </ns:ReplyClient>
   </ns:Document>
</ns:Documents>

...

 

 

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. SergVD 17.09.15 13:26 Сейчас в теме
УТС возвращает код ошибки 500
4. desarz 62 19.09.15 18:23 Сейчас в теме
(1) SergVD, обновил статью, тело запроса составляется через объединение текстовых файлов, 100% работает )
Добавил разбор файл ответа.
2. flyer 230 18.09.15 08:16 Сейчас в теме
может в виде обработки выложите или конфы?
3. Corvax46 40 18.09.15 15:30 Сейчас в теме
СерверПриемник = "localhost"; //Без протокола http://. Если УТМ установлени на удаленном компьютере, указываем свой адрес.
Прикрепленные файлы:
HTTPPOSTЗапросКУТМСистемыЕГАИС.epf
5. Uncore 1326 20.09.15 04:32 Сейчас в теме
А на 8.2 не пробовали сделать через HTTPСоединение? Там HTTPЗапрос нет. Вроде все то же, но не выполняется запрос, чего-то видимо все-таки не хватает.
6. 31ric 23.09.15 13:58 Сейчас в теме
(5) Uncore, Обновите платформу. Начиная с 8.2.18 HTTPЗапрос есть
7. Uncore 1326 23.09.15 17:10 Сейчас в теме
(6) 31ric, мне как раз для 8.2 нужно было для старых версий без обновления платформы. Уже разобрался, заработало и без HTTPЗапрос.
8. Diman_Kr 28.09.15 07:04 Сейчас в теме
А для 7.7 есть что нибудь?
9. Teodor_kr 29.09.15 07:57 Сейчас в теме
-<head> <met a content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"/>
<title>Error 500 Server Error</title>
</head>
-<body><h2>HTTP ERROR 500</h2>
-<p>Problem accessing /opt/in/QueryPartner. Reason: <pre> Server Error</pre></p>


at java.lang.Thread.run(Unknown Source)


Вот у меня тоже почему-то ошибка 500.
10. desarz 62 29.09.15 11:42 Сейчас в теме
(9) Teodor_kr,
1. Проверить запущена ли служба УТМ "Transport".
2. Работает и видится ли ключ JaCarta.
3. Проверить в браузере доступ к - http://localhost:8080/opt/out
4. Отключить брандмауэр и антивирус если УТМ находится не на локальной машине.
11. agorohov 29.09.15 16:30 Сейчас в теме
(10) А служба УТМ "Transport" не запустится, если JaCarta не работает
12. desarz 62 30.09.15 00:38 Сейчас в теме
(11) agorohov, Да, если ключ не вставлен, на нем нет сертификата, и т.д. УТМ не запускается.
13. Teodor_kr 01.10.15 13:03 Сейчас в теме
(10) Машина локальная. Доступ к http://localhost:8080/opt/out?refresh=true есть.Транспорт запущен (ключ JaCarta вставлен и читается)

Пробовал HTTPPOSTЗапросКУТМСистемыЕГАИС.epf из (3)
в ответ приходит вот такое, но ошибки не дает:
<A>
<error>null</error>
<ver>2</ver>
</A>
14. desarz 62 02.10.15 09:43 Сейчас в теме
(13) Teodor_kr, то что вы пробовали, старая версия (она работала не везде).
В статье обновленный пример, если код из статьи перенесете в обработку, подставите свои значения FSRARID, все заработает.
15. demon_infernal 32 05.10.15 20:59 Сейчас в теме
(14) у меня такой же ответ, как у (13)
пробовал и обработкой HTTPPOSTЗапросКУТМСистемыЕГАИС.epf, и копипастил код из статьи. в чем может быть дело?
16. mma928 06.10.15 14:02 Сейчас в теме
(15) demon_infernal, такая же проблема.. вчера загрузил справочник организаций, ттн, а сегодня "Error 500 Server Error", хотя ТТН все же загружаются.
17. gzharkoj 07.10.15 11:38 Сейчас в теме
Для тех у кого вылезает ошибка <A> <error>null</error> <ver>2</ver> </A>
Правильное формирование запроса (Тут главное последовательность перевода строки правильно расставить и Boundary):
        ТелоЗапроса = Новый ТекстовыйДокумент();
	ТелоЗапроса.ДобавитьСтроку(Символы.ПС);
	ТелоЗапроса.ДобавитьСтроку("--" + Boundary);
	ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""xml_file""");
	ТелоЗапроса.ДобавитьСтроку("Content-Type: application/octet-stream");
	ТелоЗапроса.ДобавитьСтроку(Символы.ПС);
	ТелоЗапроса.ДобавитьСтроку(Текст);
	ТелоЗапроса.ДобавитьСтроку("--" + Boundary);
	ТелоЗапроса.ДобавитьСтроку("--" + Boundary+ "--");
	
	Текст = ТелоЗапроса.ПолучитьТекст();      

	Запрос = Новый HTTPЗапрос("/opt/in/QueryPartner");
	Запрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary);
	Запрос.УстановитьТелоИзСтроки(Текст, КодировкаТекста.UTF8);
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать


тут Текст - ваш сформированный xml - запрос, Boundary - тоже, что и в основной статье.
47. dima_home 122 23.12.15 10:42 Сейчас в теме
(17) ifal, В конце XML обязательно должен быть перевод строки. По умолчанию - ЗаписьXML() не заканчивает файл XML переносом строки.
не забудьте... как в примере закончить :
    ОбъектXML.ЗаписатьТекст(Символы.ПС);
    ОбъектXML.Закрыть();
48. gzharkoj 24.12.15 22:09 Сейчас в теме
(47) dima_home, а где у меня ЗаписьXML используется?
18. desarz 62 07.10.15 15:18 Сейчас в теме
Обработка была тестированием УТМ с целью разобраться и посмотреть как работает УТМ и т.д.
Если собираетесь внедрять, то советую код и принцип работы с УТМ взять из последней редакции 1С 8 Розница 2.1.
Обмен построен на XDTO объектах, очень удобно и красиво )
19. gzharkoj 07.10.15 18:38 Сейчас в теме
(18) с оттуда и взял, и он не заработал! Пришлось немного поразбираться, почитав стандарт передачи данных в POST. Возможно все дело в настройках веб-сервера (Jetty), но факт - из коробки не работает.
20. bds22 14 28.10.15 11:15 Сейчас в теме
xsd файлы не пробовали импортировать в 1С? у меня проблема в 1С возникает, когда тип не описан отдельно, а идет как "описание типов", указанное непосредственно у значения. в этом случае выходит сообщение вроде нельзя присвоить значение типу "" (пустая строка). после того как отдельно описываю этот тип и указываю его, 1С начинает воспринимать эти данные

я вообще сначала попробовал отправить через curl -F свой запрос и получил ответ
<A><error>??????????? ???? ?? ???????. ?????????? ????????? ? ?????? "ns:FSRAR_ID":0</error><ver>2</ver></A>
потом средствами 1С (спасибо за Ваш код), и получил те же самые знаки вопроса, что-то с кодировкой
21. bds22 14 28.10.15 12:45 Сейчас в теме
в общем причина у меня была в том, что с пустым namespace загрузка не происходит. если кто-то будет использовать фабрику XDTO (загружая файлы xsd), то рабочий код такой

ТипDocuments=ФабрикаXDTO_ЕГАИС.Тип("http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01", "Documents");
		ЗначениеDocuments=ФабрикаXDTO_ЕГАИС.Создать(ТипDocuments);
		
		ТипSenderInfo=ФабрикаXDTO_ЕГАИС.Тип("http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01", "SenderInfo");
		ЗначениеSenderInfo=ФабрикаXDTO_ЕГАИС.Создать(ТипSenderInfo);
		ЗначениеSenderInfo.FSRAR_ID=FSRAR_ID;
		
		ЗначениеDocuments.Owner=ЗначениеSenderInfo;
		
		ТипDocument=ТипDocuments.Свойства.Получить("Document").Тип;
		ЗначениеDocument=ФабрикаXDTO_ЕГАИС.Создать(ТипDocument);
		
		ТипQueryParameters=ФабрикаXDTO_ЕГАИС.Тип("http://fsrar.ru/WEGAIS/QueryParameters", "QueryParameters");
		ЗначениеQueryParameters=ФабрикаXDTO_ЕГАИС.Создать(ТипQueryParameters);
		
		ТипParameters=ТипQueryParameters.Свойства.Получить("Parameters").Тип;
		ТипParameter=ТипParameters.Свойства.Получить("Parameter").Тип;
		ЗначениеParameter=ФабрикаXDTO_ЕГАИС.Создать(ТипParameter);
		
		ЗначениеQueryParameters.Parameters=ФабрикаXDTO_ЕГАИС.Создать(ТипParameters);
		
		ЗначениеParameter.Name="ИНН";
		ЗначениеParameter.Value=INN;
		ЗначениеQueryParameters.Parameters.Parameter.Добавить(ЗначениеParameter);
		
		ЗначениеDocument.QueryClients=ЗначениеQueryParameters;
		
		ЗначениеDocuments.Document=ЗначениеDocument;
		
		//ФабрикаXDTO_ЕГАИС.ЗаписатьXML(ЗаписьXML, ЗначениеDocuments);
		
		ЗаписьXML.ЗаписатьНачалоЭлемента("ns:Documents");
    	ЗаписьXML.ЗаписатьАтрибут("Version", "1.0");		
		
		ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("ns", "http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01");
		ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    	ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("ns", "http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01");
    	ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("oref", "http://fsrar.ru/WEGAIS/ClientRef");
    	ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("qp", "http://fsrar.ru/WEGAIS/QueryParameters");		
		
		ФабрикаXDTO_ЕГАИС.ЗаписатьXML(ЗаписьXML, ЗначениеDocuments.Owner, "Owner");
		ФабрикаXDTO_ЕГАИС.ЗаписатьXML(ЗаписьXML, ЗначениеDocuments.Document);
		
		ЗаписьXML.ЗаписатьКонецЭлемента();
		
	ЗаписьXML.ЗаписатьТекст(Символы.ПС);	
	СтрокаОбъект = ЗаписьXML.Закрыть();
Показать
22. Fuego 448 28.10.15 18:02 Сейчас в теме
Я не мучился со средствами 1С. Сделал на более интуитивных инструментах.
Function PostXMLFile(URL, XML)
	
	Boundary = String(New UUID());
	
	XMLHTTPRequest = CreateXMLHTTPRequest();

	XMLHTTPRequest.open("POST", URL, False);

	XMLHTTPRequest.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + Boundary);
	
	FormData = 
	"--" + Boundary + CrLf()
	+ "Content-Disposition: form-data; name=""xml_file""; filename=""file.xml""" + CrLf()
	+ "Content-Type: text/xml; charset=utf-8" + CrLf()
	+ "Content-Transfer-Encoding: binary" + CrLf()
	+ CrLf()
	+ XML + CrLf()
	+ "--" + Boundary + "--" + CrLf();
	
	XMLHTTPRequest.send(FormData);

	If XMLHTTPRequest.status = 200 Then
		
		XMLDocument = XMLHTTPRequest.responseXML;
		If IsBlankString(XMLDocument.xml) Then
			XMLDocument.load(XMLHTTPRequest.responseStream);
		EndIf;
		XMLDocument.setProperty("SelectionLanguage", "XPath");
					
		Return XMLDocument.selectSingleNode(".//url").text;
		
	Else

		HandleError(XMLHTTPRequest, URL);

	EndIf;

	
	Return "";
	
EndFunction

Function CrLf()
	Return Chars.CR + Chars.LF;
EndFunction

Function CreateXMLHTTPRequest()
	Return New COMObject("Msxml2.XMLHTTP.6.0");
EndFunction

Procedure SendQueryForOrgData()
	XML =
	"<?xml version=""1.0"" encoding=""UTF-8""?>
	|<ns:Documents Version=""1.0""
	|xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
	|xmlns:ns=""http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01""
	|xmlns:oref=""http://fsrar.ru/WEGAIS/ClientRef""
	|xmlns:qp=""http://fsrar.ru/WEGAIS/QueryParameters""
	|>
	|<ns:Owner>
	|<ns:FSRAR_ID>543751347</ns:FSRAR_ID>
	|</ns:Owner>
	|<ns:Document>
	|<ns:QueryClients>
	|<qp:Parameters>
	|<qp:Parameter>
	|<qp:Name>ИНН</qp:Name>
	|<qp:Value>652348658</qp:Value>
	|</qp:Parameter>
	|</qp:Parameters>
	|</ns:QueryClients>
	|</ns:Document>
	|</ns:Documents>
	|";
	URL = "http://my_egais_srv:8080/opt/in/QueryPartner";
	
	ReplyID= PostXMLFile(URL, XML);
	// Do something
EndProcedure

Показать
23. Геннадьевич 15 13.11.15 07:23 Сейчас в теме
Из браузера такой запрос может прокатить? Например на PHP если написать? Никто не пробовал?
У меня в ответ на запрос выдаёт:

HTTP ERROR: 404
Problem accessing opt/in/QueryPartner. Reason:
Not Found
24. maljaev 794 26.11.15 11:06 Сейчас в теме
Скажите пожалуйста, а можно ли передать на сервер ЕГАИС коды товаров PDF417 и получить обратно информацию об этих товарах (карточки товаров)?
25. krv2k 369 28.11.15 20:01 Сейчас в теме
(24) maljaev, можно передать в запросе AlcCode, и получить информацию только об этом конкретном товаре (в отличие от запроса по ИНН, в котором возвращаются все товары).
26. aziat71 03.12.15 01:56 Сейчас в теме
(25) krv2k, запрос AlcCode - применимо для проверки акцизной марки??? Интересует как раз получение информации (проверка акцизной марки) по штрих-коду PDF417 !!!
27. Uncore 1326 03.12.15 03:44 Сейчас в теме
(26) aziat71, в штрихкоде есть алккод, его можно оттуда вытащить
35. beard1 10.12.15 22:17 Сейчас в теме
(27) Uncore, AlcCode достали, проверили, результат положительный, но разве этот факт === подлинная акцизная марка?
38. aziat71 11.12.15 14:45 Сейчас в теме
(35) beard1, нет, думаю не равен, проверить подлинность все равно прийдется в личном кабинете ФСРАР либо через терминал сбора данных с поддержкой CheckMark, либо при помощи детектора Госзнак. В данном случае цель получения AlcoCode - правильная/точная постановка на учет при проведении инвентаризации.
31. maljaev 794 04.12.15 00:31 Сейчас в теме
(25) krv2k, А где есть информация о том как сформировать запрос к серверу по AlcСode?
32. Uncore 1326 04.12.15 04:34 Сейчас в теме
(31) maljaev, вместо ИНН производителя нужно передавать параметр КОД:
ТекстЗапроса.ЗаписатьНачалоЭлемента("qp:Name");
ТекстЗапроса.ЗаписатьТекст("КОД");
ТекстЗапроса.ЗаписатьКонецЭлемента(); //name
aziat71; gzharkoj; maljaev; +3 Ответить
33. Uncore 1326 04.12.15 09:44 Сейчас в теме
+(32) для запроса контрагента/производителя по регномеру, тоже поправить нужно в одном месте:
ТекстЗапроса.ЗаписатьНачалоЭлемента("qp:Name");
    Если ЭтоРегНомер Тогда
	ТекстЗапроса.ЗаписатьТекст("СИО");
    Иначе	
	ТекстЗапроса.ЗаписатьТекст("ИНН");
   КонецЕсли;	
ТекстЗапроса.ЗаписатьКонецЭлемента(); //name
41. Palmer1976 155 16.12.15 01:41 Сейчас в теме
28. gzharkoj 03.12.15 15:07 Сейчас в теме
Там по идее строка зашифрована, как же его оттуда вытащить?
29. Uncore 1326 03.12.15 16:50 Сейчас в теме
(28) ifal, расшифровать :) есть код для 1С на просторах инета, тут приводить не буду, т.к. используется в коммерческом решении.
30. gzharkoj 03.12.15 18:28 Сейчас в теме
(29) Uncore, Спасибо, помогли (навели на мысли), в общем-то код мне не нужен, а вот информация была бы кстати. В общем-то мне нужен только алкокод из марки, так как используя только марки быстрей и точней можно подготовки акты постановки на баланс. Собственно вот:"...для получения AlcСode из QR-кода надо символы с 8 по 19 (12 символов) перевести из тридцатишестеричной
системы счисления в десятичную систему счисления, добавить впереди недостающие ведущие нули,
и получим 19 -ти разрядное число, состоящее только из цифр". Получившаяся функция:
Функция ПолучитьАлкоКод(Марка)
	
	СтрокаАнализа = Сред(НРег(Марка), 8, 12);
	Длина = СтрДлина(СтрокаАнализа);
	Сообщить(СтрокаАнализа);
	
        // Переводим 36-ричное число в 10-ое
	Результат = 0;
	Для ин = 1 По СтрДлина(СтрокаАнализа) Цикл
		
		СимволСтроки = Сред(СтрокаАнализа,ин,1);
		
		ч = 0;
		Если КодСимвола(СимволСтроки)>=97 И КодСимвола(СимволСтроки)<=122 Тогда
			ч = КодСимвола(СимволСтроки) - 87; 
		Иначе
			ч = Число(СимволСтроки);
		КонецЕсли;
		
		Результат = Результат + Pow(36, (Длина - ин))*ч; 
		
	КонецЦикла;
	
	// Длина алкокода = 19 символов дополняем нулями спереди
	Результат = Формат(Результат, "ЧГ=");
	Для ин = 1 По 19 - СтрДлина(Результат) Цикл
		Результат = "0" + Результат;
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции
Показать
JetBrain; makus; aziat71; maljaev; Uncore; +5 Ответить
34. aziat71 06.12.15 22:27 Сейчас в теме
(30) ifal, И всетаки, чтобы получить AlcCode, какой код нужно сканировать, тот что поменьше на марке (формата DATA-MATRIX) или тот что побольше (формата PDF417) ???
36. gzharkoj 10.12.15 22:43 Сейчас в теме
(34) aziat71, Я думаю вы уже разобрались, но на всякий - PDF417
39. aziat71 11.12.15 16:57 Сейчас в теме
(36) ifal, да, огромное спасибо - то что нужно!!!
40. makus 15.12.15 16:09 Сейчас в теме
(30) ifal, огромное спасибо!

Не подскажете, Ваша функция для распознавания кода PDF417, если её адаптировать, будет работать в 1С 7.7?
Дело в том, что я ровным счётом ничего не понимаю в кодировках, но насколько я понял, функция КодСимв() в 7.7 может дать совсем не тот результат, что КодСимвола() в 8-ке. Я прав? И если это так, есть способ обойти проблему?
44. gzharkoj 16.12.15 22:02 Сейчас в теме
(40) makus, вообще надо проверять, по идее должна работать, только конечно надо адаптировать, например, в 7-ке нет оператора возведения в степень - надо функцию писать и т.д.
45. makus 17.12.15 12:15 Сейчас в теме
(44) ifal, спасибо!

В действительности, с возведением в степень, как раз, проблем нет, потому что в сети есть готовые функции, которые можно вставить в глобальный модуль и есть 1C++, где реализована функция возведения в степень, аналогичная восьмёрочной. Я больше беспокоюсь о соответствии кодов символов, которые будет возвращать 7-ка кодам, возвращаемым 8-кой, т.к. 7-ка не понимает юникод.

Как бы там ни было, я обнаружил буквально вчера функцию для 7.7, которая делает то же самое. Я её уже адаптировал, она работает.

Большое спасибо Вам за начальную информацию о содержании кода в PDF417 и за саму идею.
46. JetBrain 21.12.15 16:07 Сейчас в теме
(30) ifal, Если в платформе нет функций КодСимвола() и Pow(), вот нашел еще такой пример:
Функция ПолучитьАлкоКод(Значение) Экспорт
   	 Значение = Сред(Значение,8,12);
	 Нотация=36;
     Результат=0;
     Длина=СтрДлина(Значение);
     Для Х=1 По Длина Цикл
          М=1;
          Для У=1 По Длина-Х Цикл М=М*Нотация КонецЦикла;
          Результат=Результат+(Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1)*М;
     КонецЦикла;
     Возврат Строка(Результат);
КонецФункции

Показать
wowik; gzharkoj; +2 Ответить
37. beard1 11.12.15 09:23 Сейчас в теме
доброго времени суток,

а можно ли и как

    запросить всю продукцию
    запросить всех производителей
    запросить FSRAR_ID из УТМ

в документации по УТМ вроде не нашел параметров
43. makus 16.12.15 11:17 Сейчас в теме
Вот тут, вроде, в сообщении №84, для 7-ки хороший человек написал обработку, чтобы AlcCode из QR-кода доставать: http://infostart.ru/public/405305/#comm
49. aximo 1602 03.01.16 21:57 Сейчас в теме
а можно дополнить статью, что в итоге должно "нарисоваться" после выполнения п.3 ? спасибо
50. Shadow308 39 08.03.16 03:00 Сейчас в теме
А можно запрос на удаление документов???
51. art010 07.07.16 13:37 Сейчас в теме
С чем может быть связана ошибка, вылетающая при попытке отправить запрос в УТМ:

Ошибка при вызове конструктора (HTTPСоединение)
НТТР = Новый HTTPСоединение(СерверПриемник, Порт);
по причине:
Несоответствие типов (параметр номер '2')

Ошибка вылетает на 1с8 Розница 2.2.4.12
Платформа 8.3
СерверПриемник = "localhost" (и IP подставлял, и локально, и по сети)
Порт="8080"
52. desarz 62 07.07.16 17:04 Сейчас в теме
тип порта - число, попробуй Порт=8080;
53. desarz 62 07.07.16 17:08 Сейчас в теме
А так, универсальное решение... обнови платформу, обнови конфигурацию.
54. SerSinelnik 07.07.16 17:08 Сейчас в теме
Уже все перепробовал
Все последние релизы и платформа и конфигурация. Сейчас перепроверю, может еще что-то вышло
55. SerSinelnik 07.07.16 17:11 Сейчас в теме
уже голову сломал, что ему не нравится.
Бухгалтерия Предприятия 3,0 работает нормально
в некоторых Розницах - нормально.
У одного товарища эта ошибка выскакивает и хоть убейся
56. desarz 62 07.07.16 17:12 Сейчас в теме
57. SerSinelnik 07.07.16 17:14 Сейчас в теме
1С:Предприятие 8.3 (8.3.8.1675) (Кстати БП на такой платформе норм отрабатывает)
и на этой проверял и на следующей. сейчас уточню какая именно.
58. desarz 62 07.07.16 17:19 Сейчас в теме
1С:Предприятие 8 не ниже 8.3.8.1784 нужна, думаю в этом дело.
59. SerSinelnik 07.07.16 17:23 Сейчас в теме
а как же это
1С:Предприятие 8.3 (8.3.8.1675) (Кстати БП на такой платформе норм отрабатывает)
У этого товарища 1С:Предприятие 8.3 (8.3.8.1784)
60. desarz 62 07.07.16 17:28 Сейчас в теме
Возможно в Рознице изменили код соединения с УТМ и требуется новая платформа, в обновление Розницы, 1С пишет что нужна платформа "1С:Предприятие 8 не ниже 8.3.8.1784"...
Как то так, других мыслей нет.
61. SerSinelnik 07.07.16 17:31 Сейчас в теме
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    36821    unichkin    46    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    22306    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    20769    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    15534    kuzyara    33    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    29351    tormozit    100    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    16313    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    7901    Sibars    19    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    30403    Yashazz    50    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    77227    tormozit    131    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    44081    rpgshnik    63    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    45619    ids79    54    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    26308    YPermitin    24    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    47524    tormozit    40    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    24873    YPermitin    80    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    30145    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    72715    ids79    49    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    43891    tormozit    74    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    31782    avalakh    22    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    21700    json    13    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    53743    ids79    11    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15862    m-rv    2    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    33933    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    25178    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    19308    SeiOkami    50    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    19881    m-rv    17    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Варианты отчетов, работа с настройками вариантов: структура группировок, поля отчета, отборы, сортировка, условное оформление, другие настройки, настройки отображения диаграмм.

02.07.2019    42026    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    49099    ids79    25    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    23980    dmurk    144    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30014    m-rv    21    

Регистры накопления. Виртуальные таблицы. Часть №2: "Остатки" и "Остатки и обороты"

Практика программирования v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальными таблицами регистров накопления "Остатки" и "Остатки и обороты". Анализ SQL-запрос при работе с виртуальными таблицами

22.05.2019    22224    YPermitin    7    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    40532    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    28487    Eret1k    23    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    28002    itriot11    34    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    34347    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    26605    ellavs    88    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    30442    YPermitin    53    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    75544    Serginio    108    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    36264    Смешной 1С    27    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    21015    Vladimir Litvinenko    27    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    33758    ids79    40    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    37090    ids79    9    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    28901    grumagargler    28    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    25825    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    39655    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    35942    ids79    40    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

Практика программирования v8 Бесплатно (free)

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

04.09.2017    51835    m-rv    61    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    44279    Unk92    25