Скачать обработку 1С для слияния журналов регистрации.
В основе обработки лежит платформенный ме
СкопироватьЖурналРегистрации(<ИмяВходногоФайла>, <ИмяВыходногоФайла>, <Отбор>)[/pre]
После обновления на платформу 8.3.23 и далее 8.3.24. При рассылке сообщений на электронную почту появляется ошибка:
Произошла ошибка при работе с SMTP. Код ошибки: 27 (Ошибка установки защищенного SSL/TLS соединения.)"
Произошла ошибка при работе с IMAP ...
Э
Описание:
При использовании поч
Произошла ошибка соединения с сервером при работе с IMAP. Код ошибки: 43 Ошибка установки защищенного SSL/TLS соединения
Способ обхода:
В conf.cfg добавить опцию IgnoreInternetMailServerCertificateVerificationList:
В баг репорте ошибка описана для почты gmail, но у нас свой поч
Файл conf.cfg находится в папке C:\Program Files\1cv8\conf (для 64 платформы).
Сделайте запись по примеру выше.
// Возвращает содержимое ответа HTTP-сервера, полученного мето дом GET, в виде строки или двоичных данных
// ** Coded by Sergey (aka Porutchik) * 2014 http://forum.aeroion.ru/cat1.html //
// Параметры
// СерверПриемник - - доменное имя сервера или полный адрес (url) запрашиваемой ссылки.
// Может включать прото кол (http://, https://) и порт.
// АдресСтраницы - - опционально. Адрес страницы на сервере без прото кола (http://, https://),
// доменного имени сервера (хоста) и порта.
// Если не указано, адрес страницы будет извлечён из параметра СерверПриемник
// ПараметрыСоединения - - опционально. Структура, содержащая дополнительные параметры для HTTPСоединение.
// Назначение ключей:
// Логин или Пользователь - Тип Строка - Имя пользователя на указанном сервере.
// Пароль - Тип Строка - Пароль пользователя на указанном сервере.
// Прокси - Тип ИнтернетПрокси - Прокси, используемый для соединения с сервером.
// Таймаут - Тип Число - Таймаут осуществляемого соединения и операций, в секундах. 0 - не устанавливать таймаут..
// ЗаголовкиHTTP - - опционально.
// Заголовки, кото рые будут отправлены на сервер в виде соответствия: "Заголовок" - "Значение".
// Если указано, функция возвратит в программу заголовки HTTP-ответа с кодом состо яния в ключе StatusCode,
// имя файла в ключе FileName, url-кодированное имя в ключе EncodeFileName
// ПолучитьКакДвоичныеДанные - - опционально. Определяет, в каком виде получить содержимое ответа сервера
// По умолчанию Ложь.
// ЗащищенноеСоединение - - опционально. По умолчанию Ложь.
// Если Истина, соединение будет происходить по прото колу https://
//
// Возвращаемое значение:
// , - содержимое ответа сервера, если ресурс найден по указанному адресу.
//
Функция ПолучитьСодержимоеВебАдреса(Знач СерверПриемник, Знач АдресСтраницы = "",
Знач ПараметрыСоединения = Неопределено, ЗаголовкиHTTP = Неопределено,
Знач ПолучитьКакДвоичныеДанные = Ложь, Знач ЗащищенноеСоединение = Ложь) Экспорт
Перем ИмяФайлаОтветаКодированное, ИмяФайлаОтвета, Порт, Логин, Пользователь, Пароль, Прокси, Таймаут;
Если Не ЗначениеЗаполнено(СерверПриемник) Тогда Возврат Неопределено; КонецЕсли;
Если ТипЗнч(ЗаголовкиHTTP) Тип("Соответствие") Тогда ЗаголовкиHTTP = Новый Соответствие; КонецЕсли;
Если Найти(Нрег(СерверПриемник), "https://") = 1 Тогда ЗащищенноеСоединение = Истина; КонецЕсли;
Прото кол = ?(Найти(Нрег(СерверПриемник), "https://") = 1 ИЛИ ЗащищенноеСоединение, "https://", "http://");
Если Лев(НРег(СерверПриемник), СтрДлина(Прото кол)) = Прото кол Тогда
СерверПриемник = Сред(СерверПриемник, СтрДлина(Прото кол) + 1);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(АдресСтраницы) Тогда
Позиция = Найти(СерверПриемник, "/");
Если Позиция > 0 Тогда
АдресСтраницы = Сред(СерверПриемник, Позиция, СтрДлина(СерверПриемник));
СерверПриемник = Лев(СерверПриемник, Позиция - 1);
Иначе
АдресСтраницы = "/";
КонецЕсли;
КонецЕсли;
СерверПриемник = СтрЗаменить(СерверПриемник, "/", "");
//Выделяем порт из доменного имени
ПозицияДвоето чия = Найти(СерверПриемник, ":");
Если ПозицияДвоето чия > 0 Тогда
Порт = Число(Сред(СерверПриемник, ПозицияДвоето чия + 1));
СерверПриемник = Лев(СерверПриемник, ПозицияДвоето чия - 1);
КонецЕсли;
Если ТипЗнч(ПараметрыСоединения) = Тип("Структура") Тогда
Для каждого КлючЗначение из ПараметрыСоединения Цикл
Значение = КлючЗначение.Значение; Выполнить(КлючЗначение.Ключ + " = Значение;");
КонецЦикла;
Пользователь = ?(ЗначениеЗаполнено(Пользователь), Пользователь, Логин);
КонецЕсли;
НТТР = Новый HTTPСоединение(СерверПриемник, Порт, Пользователь, Пароль, Прокси, Таймаут,
?(ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено));
//Ответ от сервера получим в возвращаемом значении типа HTTPОтвет
ОтветHTTP = НТТР.Получить(Новый HTTPЗапрос(АдресСтраницы, ЗаголовкиHTTP)); //
ОшибкаЗапроса = (ОтветHTTP.КодСосто яния >= 400);
//После получения ответа сервера необходимо проверить статус или код состо яния.
//http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.... //Если сервер вернул один из статусов переадресации
//301 Moved Permanently («перемещено навсегда») или 302 Moved Temporarily («перемещено временно»),
//то в это м случае можно попытаться перейти на ресурс, на кото рый переадресовал сервер
Если ОтветHTTP.КодСосто яния = 301 или ОтветHTTP.КодСосто яния = 302 Тогда
Если ОтветHTTP.Заголовки.Количество() > 0 Тогда
//Адрес страницы переадресации содержится в поле Location заголовка ответа
АдресСтраницы = ОтветHTTP.Заголовки["Location"]; //
Если ЗначениеЗаполнено(АдресСтраницы) Тогда
Если Найти(НРег(АдресСтраницы), "http://") = 0 И Найти(НРег(АдресСтраницы), "https://") = 0 Тогда
АдресСтраницы = ?(Лев(АдресСтраницы, 1) = "/", Сред(АдресСтраницы, 2), АдресСтраницы);
Если Найти(АдресСтраницы, СерверПриемник + "/") = 0 Тогда
АдресСтраницы = Прото кол + СерверПриемник + ?(ЗначениеЗаполнено(Порт), ":" + Порт, "") + "/" + АдресСтраницы;
КонецЕсли;
КонецЕсли;
//Если сервер вернул cookies (http://ru.wikipedia.org/wiki/HTTP_cookie, http://www.faqs.org/rfcs/rfc6265.html?#41;, //вставим их в заголовки для передачи на страницу перехода
Куки = ОтветHTTP.Заголовки["Set-Cookie"];//
Если ЗначениеЗаполнено(Куки) Тогда ЗаголовкиHTTP.Вставить("Cookie", Куки); КонецЕсли;
//Рекурсивный вызов
Возврат ПолучитьСодержимоеВебАдреса(АдресСтраницы, , , ЗаголовкиHTTP, ПолучитьКакДвоичныеДанные, ЗащищенноеСоединение);//
КонецЕсли;
КонецЕсли;
ИначеЕсли ОтветHTTP.КодСосто яния >= 100 И ОтветHTTP.КодСосто яния 0 Тогда
ТипСодержимого = ОтветHTTP.Заголовки["Content-Type"];
//http://ru.wikipedia.org/wiki/Список_MIME-типов Если Найти(ТипСодержимого, "text/") = 1 ИЛИ Найти(ТипСодержимого, "/javascript")
ИЛИ Найти(ТипСодержимого, "+xml") ИЛИ Найти(ТипСодержимого, "/xml") 0 ИЛИ Найти(ТипСодержимого, "/json") 0 Тогда
ПолучитьКакДвоичныеДанные = Ложь;
ИначеЕсли Найти(ТипСодержимого, "image/") = 1 ИЛИ Найти(ТипСодержимого, "video/") = 1
ИЛИ Найти(ТипСодержимого, "application/") = 1 ИЛИ Найти(ТипСодержимого, "audio/") = 1 Тогда
//Если содержимое полученного ответа представляет собой изображение, видео, приложение,
//возвращаем двоичные данные, так как возвращать в виде строки не имеет смысла.
ПолучитьКакДвоичныеДанные = Истина;
КонецЕсли;
//Некото рые сервера возвращают в типе содержимого имя отданного файла, например image/png; name="Имя файла.png"
//или отдают в заголовке Content-Disposition: attachment; filename=Имя файла.png (http://www.http11.ru/post.php?post=2) Если ОтветHTTP.Заголовки["Content-Disposition"] Неопределено Тогда
ТипСодержимого = ОтветHTTP.Заголовки["Content-Disposition"];
КонецЕсли;
ТипСодержимого = СтрЗаменить(СтрЗаменить(ТипСодержимого, """", ""), "'", "");
//в ключе filename*=UTF-8'' содержится url-кодированное имя файла
ПозицияИмениФайла = Найти(ТипСодержимого, "filename*=UTF-8");
Если ПозицияИмениФайла 0 Тогда
ИмяФайлаОтветаКодированное = Сред(ТипСодержимого, ПозицияИмениФайла + СтрДлина("filename*=UTF-8"));
ПозицияДвоето чия = Найти(ИмяФайлаОтветаКодированное, ";");
Если ПозицияДвоето чия 0 Тогда
ИмяФайлаОтветаКодированное = Лев(ИмяФайлаОтветаКодированное, ПозицияДвоето чия - 1);
КонецЕсли;
КонецЕсли;
//в ключе filename= содержится обычное имя файла
ПозицияИмениФайла = Найти(ТипСодержимого, "name=");
Если ПозицияИмениФайла 0 Тогда
ИмяФайлаОтвета = Сред(ТипСодержимого, ПозицияИмениФайла + СтрДлина("name="));
ПозицияДвоето чия = Найти(ИмяФайлаОтвета, ";");
Если ПозицияДвоето чия 0 Тогда
ИмяФайлаОтвета = Лев(ИмяФайлаОтвета, ПозицияДвоето чия - 1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ЗаголовкиHTTP = ОтветHTTP.Заголовки;
//Добавляем в заголовки ответа код состо яния (ответа) HTTP-сервера и имя файла содержимого, если есть.
ЗаголовкиHTTP.Вставить("StatusCode", ОтветHTTP.КодСосто яния);
Если ЗначениеЗаполнено(ИмяФайлаОтвета) Тогда ЗаголовкиHTTP.Вставить("FileName", ИмяФайлаОтвета); КонецЕсли;
Если ЗначениеЗаполнено(ИмяФайлаОтветаКодированное) Тогда
ЗаголовкиHTTP.Вставить("EncodeFileName", ИмяФайлаОтветаКодированное);
КонецЕсли;
Если ОшибкаЗапроса ИЛИ НЕ ПолучитьКакДвоичныеДанные Тогда Возврат ОтветHTTP.ПолучитьТелоКакСтроку(); КонецЕсли;
Возврат ОтветHTTP.ПолучитьТелоКакДвоичныеДанные();
КонецФункции // ПолучитьСодержимоеВебАдреса()
//Исто чник: http://forum.aeroion.ru/topic749.html[/pre]Примеры использования:
// Получение содержимого в виде строки//
СодержимоеАдреса = ПолучитьСодержимоеВебАдреса("
//
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Referer", "a href="http://some_site.com/" )"="">http://some_site.com/");
СодержимоеАдреса = ПолучитьСодержимоеВебАдреса("
Добрый день, коллеги!
Помогите, пожалуйста, разобраться с таким вопросом:В УТ 11.5 при формировании документа счет-фактура выданный номер документа создается видом МФУТ-0008606
Как сделать номер без префикса, ч
Заранее благодарю
При разработке очередного обмена с интернет магазином через API с
из кода ясно ч
В переменной ДанныеЛога будет структура в виде
В результате получилась функция с 2-мя вариантами возрата, в зависимости от
На прос
Стандарт ISO 8601, составлен таким образом, ч
Конвертация даты из формата ISO8601 в дату 1С:
Час
Ниже приведены 2 примера:
Посмотрите более подробную статью Табличная часть ~ Как настроить отбор строк?
Всем доброго дня.
Прошу помощи.
Конфигурация - Бухгалтерия для Беларуси, редакция 2.1 Локализация для Республики Беларусь (2.1.41.3)
Есть задача - ограничить доступ пользователей в 1С к определённым организациям. То есть ч
База на MSQL Server.
Само ограничение не работает прос
Затем включить "Ограничить доступ на уровне записей" и настроить ограничения через "Группы доступа".
Проблема в
Подскажите пожалуйста, как сделать так, ч
Как известно делать проводки по счетам-группам нельзя. Однако жизнь течет и после введения бухгалтером очередного нового счета какой либо старый, ко
Добрый день. УТ11 (11.4.13.46) Наша организация принимает
Бывают случаи когда нужно восстановить доступ к 1С, но пароль утерян или прошлый программист уволился и прочее. Доступные ме
Пункт 1. Открываем Microsoft Management Studios, выбираем нужную базу, нажимаем правой кнопкой мыши, выбираем Новый запрос (New Query)
Пункт 2. Вставляем запрос, ко
EXEC sp_rename 'v8users', 'v8users_passwords_data'GOUPDATE ParamsSET FileName = 'users.usr_pd'WHERE FileName = 'users.usr'GO
DROP TABLE v8usersGO
create table v8users(ID binary(16) NOT NULL,Name nvarchar(64) NOT NULL,Descr nvarchar(128) NOT NULL,OSName nvarchar(128) NULL,Changed datetime2(0) NOT NULL,RolesID numeric(10,0) NOT NULL,Show binary(1) NOT NULL,Data varbinary(max) NOT NULL,EAuth binary(1) NULL,AdmRole binary(1) NULL,UsSprH numeric(10,0) NULL,PRIMARY KEY (ID));
Пункт 3. Открываем конфигура
DROP TABLE v8usersGOEXEC sp_rename 'v8users_passwords_data', 'v8users'GOUPDATE ParamsSET FileName = 'users.usr'WHERE FileName = 'users.usr_pd'GO
Пункт 4. Открываем в конфигура
Инсталяция:> dotnet add package sabatex.V1C77
или добавить через NUGET пакет sabatex.V1C77.
Добавить пространство имен: using sabatex.V1C77;
пример использованя: ---C#
static void Main(string[] args) { // создаём строку соединения var connection = new sabatex.V1C77.Models.Connection { DataBasePath = @"C:\demo\1SBUKRD", // путь к базе PlatformType = sabatex.V1C77.Models.EPlatform1C.V77M, // платформа 1С77 UserName = "Админов", // имя пользователя UserPass = "" // пароль или пустая строка }; // соединяемся с 1С77 // using (var _1c77 = sabatex.V1C77.COMObject1C77.CreateConnection(connection)) { // перебор всего справочника Контрагенты var contr = _1c77.GlobalContext.CreateObject("Справочник.Контрагенты"); if (contr.Method<double>("ВыбратьЭлементы") == 1) { while (contr.Method<double>("ПолучитьЭлемент")==1) { if (contr.Method<double>("Это Группа") == 1) continue; var name = contr.GetProperty<string>("Наименование"); Console.WriteLine(name); } } } } [/pre]
соответствие типов данных 1С7.7 и C#
возможно использовать bool для замены double(0- false;1 - true)
Добрый день!
В счете учета включили Субкон
Спасибо.
//////////////////////////// Разборка на инициалы Руководителя
////////////////////////////Выборка.ОРуководитель = "Иванов Иван Иванович" ПервИнициалР = 0; ПервИнициалР = СтрНайти(Выборка.ОРуководитель, " ") + 1; ПервИнициалР = Сред(Выборка.ОРуководитель, ПервИнициалР, 1); В
//////////////вывод в табличной части "Подвал"
Подвал.Параметры.ОРуководитель = Лев(Выборка.ОРуководитель, СтрНайти(Выборка.ОРуководитель, " ")) + ПервИнициалР + "." + В
Данная конструкция формирует строку с нужным фрагмен