После обновления на платформу 8.3.23 и далее 8.3.24. При рассылке сообщений на электронную почту появляется ошибка:
Произошла ошибка при работе с SMTP. Код ошибки: 27 (Ошибка установки защищенного SSL/TLS соединения.)"
Произошла ошибка при работе с IMAP ...
Это ошибка1С https://bugboard.v8.1c.ru/error/000142347
Описание:
При ис
Произошла ошибка соединения с сервером при работе с IMAP. Код ошибки: 43 Ошибка установки защищенного SSL/TLS соединения
Способ обхода:
В conf.cfg добавить опцию IgnoreInternetMailServerCertificateVerificationList:
В баг репорте ошибка описана для почты gmail, но у нас свой почтовый сервер и ошибка та же самая, и попутно было обнаружено, что и с mail.ru такая же есть ошибка, а вот Yandex.ru ошибку не дает.
Файл conf.cfg находится в папке C:\Program Files\1cv8\conf (для 64 платформы).
Сделайте запись по примеру выше. только замените gmail.com на свой сервер
// Возвращает содержимое ответа 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/");
СодержимоеАдреса = ПолучитьСодержимоеВебАдреса("
При разработке очередного обмена с интернет магазином через API столкнулисть что сайт возвращает ответ в виде:
из кода ясно что это JSON и ис
В переменной ДанныеЛога будет структура в виде
В результате
На просторах интернета была найдена еще одна функция:
Стандарт ISO 8601, составлен таким образом, что:
Конвертация даты из формата ISO8601 в дату 1С:
Всем доброго дня.
Прошу помощи.
Конфигурация - Бухгалтерия для Беларуси, редакция 2.1 Локализация для Республики Беларусь (2.1.41.3)
Есть задача - ограничить доступ
База на MSQL Server.
Само ограничение не работает просто если включить "Ограничить доступ на уровне записей". Сначала нужно включить Константу "Ис
Затем включить "Ограничить доступ на уровне записей" и настроить ограничения через "Группы доступа".
Проблема в том, что, если ограничить для
Подскажите пожалуйста, как сделать так, чтобы сама организация тоже не была видна.
Как известно делать проводки по счетам-группам нельзя. Однако жизнь течет и после введения бухгалтером очередного нового счета какой либо старый, который ранее не являлся счетом-группы, теперь становится групповым. И соответственно все проводки на этот счет становятся ошибочными. Для предупреждения подобной ситуации целесообразно перед записью данных по счетам имеет смысл всегда проверять счета на предмет группы. Один из возможных вариантов такой проверки привожу ниже:
Бывают случаи когда нужно восстановить доступ к 1С, но пароль утерян или прошлый программист уволился и прочее. Доступные методы в интернете не работают с версии 8.3.17, а некоторые методы
Пункт 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. Открываем конфигуратор 1С (откроется сразу, без пароля и логина), не закрывая конфигуратор вы
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;
пример ис
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#
возможно ис
Добрый день!
В счете учета включили Субконто3=Партии. Как за
Спасибо.
Данная конструкция формирует строку с нужным фрагментом, повторенным N раз.
Здравствуйте!
Прошу помощи.
Зарплата и управление персоналом, редакция 3.1 (3.1.16.108)
Столкнулся с такой ситуацией:
При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов для исчисления страховых взносов" не совпадают. Пример во вложении.
Обнаружили при подготовке отчета за 2020г.
Если пред
До октября цифры совпадают
Регистр "Начисления и удержания по сотрудникам" совпадает с расчетным листком.
Проверял с помощью «chdbfl.exe», тестировал из конфигуратора : реиндексация, проверка логической целостности, проверка ссылочной целостности, перерасчет итогов, сжатие таблиц, реструктуризация таблиц. Ошибка осталась
Отменил все начисления зарплаты после октября 2020, на текущей конфигурации, с помощью нового документы сделал начисление зарплаты. Результат тот же.
При нажатии на строку в регистре, открывает документ начисление зарплаты, где ни у кого нет такой суммы начисления.
В регистре "Учет доходов для исчисления страховых взносов" документ-основание "Начисление зарплаты и взносов" стоит на всех записях октября
Сравнивал конфигурацию рабочей базы с чистой конфигурацией. Они идентичны.
Выгрузка в «dt» и обратная загрузка в пустую конфигурацию не помогла.
У меня несколько клиентов, у всех все нормально.
Внешнего воздействия на базу не было, за исключением загрузки кадровых документов из «Контур персонал». Кадровичка не хочет работать с 1С. Следов в этом регистре тоже не обнаружил.
Не совпадают начисления почти все, за исключение созданных отдельным документом, доплаты и т.д.
Повторюсь, ошибки примерно у
Пробовал отследить с отладчиком откуда берется дурное значение, запутался в модулях.
Я так глубоко давно не разбирался с конфигурацией.
Если кто то подскажет хотя бы примерно где копать, буду очень благодарен.
Спасибо.
Здравствуйте!
Прошу помощи.
Зарплата и управление персоналом, редакция 3.1 (3.1.16.108)
Столкнулся с такой ситуацией:
При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов для исчисления страховых взносов" не совпадают. Пример во вложении.
Обнаружили при подготовке отчета за 2020г.
Если пред
До октября цифры совпадают
Регистр "Начисления и удержания по сотрудникам" совпадает с расчетным листком.
Проверял с помощью «chdbfl.exe», тестировал из конфигуратора : реиндексация, проверка логической целостности, проверка ссылочной целостности, перерасчет итогов, сжатие таблиц, реструктуризация таблиц. Ошибка осталась
Отменил все начисления зарплаты после октября 2020, на текущей конфигурации, с помощью нового документы сделал начисление зарплаты. Результат тот же.
При нажатии на строку в регистре, открывает документ начисление зарплаты, где ни у кого нет такой суммы начисления.
В регистре "Учет доходов для исчисления страховых взносов" документ-основание "Начисление зарплаты и взносов" стоит на всех записях октября
Сравнивал конфигурацию рабочей базы с чистой конфигурацией. Они идентичны.
Выгрузка в «dt» и обратная загрузка в пустую конфигурацию не помогла.
У меня несколько клиентов, у всех все нормально.
Внешнего воздействия на базу не было, за исключением загрузки кадровых документов из «Контур персонал». Кадровичка не хочет работать с 1С. Следов в этом регистре тоже не обнаружил.
Не совпадают начисления почти все, за исключение созданных отдельным документом, доплаты и т.д.
Повторюсь, ошибки примерно у
Пробовал отследить с отладчиком откуда берется дурное значение, запутался в модулях.
Я так глубоко давно не разбирался с конфигурацией.
Если кто то подскажет хотя бы примерно где копать, буду очень благодарен.
Спасибо.
Здравствуйте!
Прошу помощи.
Зарплата и управление персоналом, редакция 3.1 (3.1.16.108)
Столкнулся с такой ситуацией:
При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов для исчисления страховых взносов" не совпадают. Пример во вложении.
Обнаружили при подготовке отчета за 2020г.
Если пред
До октября цифры совпадают
Регистр "Начисления и удержания по сотрудникам" совпадает с расчетным листком.
Проверял с помощью «chdbfl.exe», тестировал из конфигуратора : реиндексация, проверка логической целостности, проверка ссылочной целостности, перерасчет итогов, сжатие таблиц, реструктуризация таблиц. Ошибка осталась
Отменил все начисления зарплаты после октября 2020, на текущей конфигурации, с помощью нового документы сделал начисление зарплаты. Результат тот же.
При нажатии на строку в регистре, открывает документ начисление зарплаты, где ни у кого нет такой суммы начисления.
В регистре "Учет доходов для исчисления страховых взносов" документ-основание "Начисление зарплаты и взносов" стоит на всех записях октября
Сравнивал конфигурацию рабочей базы с чистой конфигурацией. Они идентичны.
Выгрузка в «dt» и обратная загрузка в пустую конфигурацию не помогла.
У меня несколько клиентов, у всех все нормально.
Внешнего воздействия на базу не было, за исключением загрузки кадровых документов из «Контур персонал». Кадровичка не хочет работать с 1С. Следов в этом регистре тоже не обнаружил.
Не совпадают начисления почти все, за исключение созданных отдельным документом, доплаты и т.д.
Повторюсь, ошибки примерно у
Пробовал отследить с отладчиком откуда берется дурное значение, запутался в модулях.
Я так глубоко давно не разбирался с конфигурацией.
Если кто то подскажет хотя бы примерно где копать, буду очень благодарен.
Спасибо.
&НаСервере
Процедура НайтиДоговорКонтрАгента(ФормаОрганизация,ФормаКонтрагент)
Сообщить(ФормаКонтрагент);
КАгент = Новый Структура;
КАгент.Вставить("Организация",ФормаОрганизация);
КАгент.Вставить("Контрагент",ФормаКонтрагент);
КАгент.Вставить("ВидДоговора",Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
Сообщить(РегистрыСведений.ОсновныеДоговорыКонтрагента.Получить(ТекущаяДата(),КАгент)[0]);
КонецПроцедуры