COM-подключение к базе 7.7 из .NET, .NET Core Инсталяция:> 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#
строка - string число - doubl дата - DataTime остальное - V1C77COMObject возможно использовать bool для замены double(0- false;1 - true) тогда выражение сократится к if (contr.Method("ВыбратьЭлементы"))
Категория:
OLE, ActiveX Вывод в поле Наименование справ очника Штатное список значений из справ очника Подразделения? Есть два справ очника Штатное и Подразделения. В справ очнике Штатное есть автоматически генерируемое поле Наименование. Как программно сделать так чтобы в поле Наименование справ очника Штатное выводились списком значений из поля Наименование справ очника Подразделения? Я только начал изучать программирование в 1С. Вариант с добавлением в код модуля списка выбора я уже реализовал. Но сами понимаете что это не то. Посмотрите код. Может у кого то решение есть лучше.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Наименование.РежимВыбораИзСписка = Истина;
Элементы.Наименование.СписокВыбора.Добавить("Администрация");
Элементы.Наименование.СписокВыбора.Добавить("Бухгалтерия");
Элементы.Наименование.СписокВыбора.Добавить("Отдел ИТ");
КонецПроцедуры
&НаКлиенте
Процедура ТЧШтатноеЕдиницыПриИзменении(Элемент)
РассчитатьСуммуТЧШтатное();
КонецПроцедуры
&НаКлиенте
Процедура ТЧШтатноеОкладПриИзменении(Элемент)
РассчитатьСуммуТЧШтатное();
КонецПроцедуры
&НаКлиенте
Процедура ТЧШтатноеСуммаПриИзменении(Элемент)
Стр = Элементы.ТЧШтатное.ТекущиеДанные;
Если Стр.Единицы=0 И Стр.Оклад=0 Тогда
ИначеЕсли Стр.Единицы=0 Тогда
Стр.Единицы=Стр.Сумма / Стр.Оклад;
ИначеЕсли Стр.Оклад=0 Тогда
Стр.Оклад=Стр.Сумма / Стр.Единицы;
Иначе
Стр.Оклад=Стр.Сумма / Стр.Единицы;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСуммуТЧШтатное()
Стр = Элементы.ТЧШтатное.ТекущиеДанные;
Стр.Сумма = Стр.Единицы * Стр.Оклад;
КонецПроцедуры
&НаКлиенте
Процедура ЕдиницыИтогПриИзменении(Элемент)
Стр = Элементы.Штатное.ТекущиеДанные;
Стр.ЕдиницыИтог = Стр.Единицы + 1;
КонецПроцедуры
&НаКлиенте
Процедура СуммаИтогПриИзменении(Элемент)
Стр = Элементы.Штатное.ТекущиеДанные;
Стр.СуммаИтог = Стр.Сумма + 1;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Объект.ЕдиницыИтог = Объект.ТЧШтатное.Итог("Единицы");
Объект.СуммаИтог = Объект.ТЧШтатное.Итог("Сумма");
КонецПроцедуры
Категория:
Справочники Как очистить ХранилищеЗначение в Управляемой форме
&НаСервере Процедура УдалитьДанныеХЗНаСервере() ЭлементСправочника = РеквизитФормыВЗначение("Объект"); ЭлементСправочника.ХранилищеЗначения = Новый ХранилищеЗначения(Неопределено); ЭлементСправочника.Записать(); ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); КонецПроцедуры
Категория:
Работа с Хранилищем Значений Кнопка выбора в отборе построителя отчёта В общем, создал отбор отчёта с помощью построителя. В колонке значение нет кнопки выбора, чтобы я мог выбрать элемент из справ очника. Кто-нибудь знает можно ли её вообще как-то добавить?
Категория:
Прочие вопросы Отправка почты через Mail.ru с использованием технологии шифрования SSL Часто клиенты просят сделать автоматическую отправку счетов или отчетов на электронную почту, ниже приведены примеры кода для разных версий 1С:
Код 1C v 8.3
//Код для обычного приложения, для управляемого приложения отправка почты так же, только с файлами и предупреждение нужно изменить код
Функция ПолучитьПрофильПочты()
//Создаем профиль либо считываем из справ очника
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";//Отправитель.АдресСервераSMTP; //"smtp.mail.ru";
Профиль.АдресСервераPOP3 = "pop.mail.ru"; //Отправитель.АдресСервераPOP3; //"pop.mail.ru";
Профиль.ПортPOP3 = 995;//Отправитель.ПортPOP3; //110;
Профиль.ПортSMTP = 465;//Отправитель.ПортSMTP; //587;
Профиль.Пользователь = "s_v@inbox.ru";// Отправитель.Email; //"test@mail.ru";
Профиль.Пароль = "8mFTnDjC4KftTzh"; //Отправитель.Пароль; //"123456789";
Профиль.ПользовательSMTP = "s_v@inbox.ru";//Отправитель.Email; //"test@mail.ru";
Профиль.ПарольSMTP = "8mFTnDjC4KftTzh";//Отправитель.Пароль; //"123456789";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.ИспользоватьSSLPOP3 = Истина;
Профиль.ИспользоватьSSLSMTP = Истина;
//Создаем письмо
Возврат Профиль;
КонецФункции
Процедура ОсновныеДействияФормыСчетОтправитьНаПочту(Кнопка)
Если ЗначениеЗаполнено(Ответственный.ПочтаДляОтправкиСчета) Тогда
Почта = Новый ИнтернетПочта;
Письмо = Новый ИнтернетПочтовоеСообщение;
Текст = Письмо.Тексты.Добавить("В приложении счет");
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Письмо.Тема = Строка(Ссылка);
Письмо.Отправитель = "s_vmeste@inbox.ru";
Письмо.ИмяОтправителя = "1С";
Письмо.Получатели.Добавить(Ответственный.ПочтаДляОтправкиСчета);
врфайл=ПолучитьИмяВременногоФайла("pdf");
текТабдок=СчетФаксимилеТовары(); //Функция возвращает табличный документ печать счета
текТабдок.Записать(врфайл,ТипФайлаТабличногоДокумента.PDF);
Письмо.Вложения.Добавить(врфайл);
//добавляем вложение если нужно, например "C:\Приложение.doc"
//Вложений можно добавлять сколько требуется.
//Отправляем письмо
Попытка
Почта.Подключиться(ПолучитьПрофильПочты()); Почта.Послать(Письмо); Предупреждение("Письмо отправлено",3);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
//Закрываем письмо
Почта.Отключиться();
//Закрываем файл вложения
Письмо.Вложения.Очистить();
Иначе
Предупреждение("В настройках ответственного не указана почта для отправки счета");
КонецЕсли;
КонецПроцедуры
С версиями 8.2 сложнее, так как все почтовые сервисы перешли на SSL, а медоты:
Код 1C v 8.3 Профиль.ИспользоватьSSLPOP3 = Истина;
Профиль.ИспользоватьSSLSMTP = Истина;
появились только в 8.3.1 , остается использовать stunnel или CDO :
Код 1C v 8.2 УП //Отправка через CDO, Адрессаты через ";"
Функция ПослатьПоПочте(Знач Адрессаты, ТемаСообщения = "",ТекстСообщения = "" ,СписокВложений = "")Экспорт
Оправитель = "s_v@inbox.ru";
Пароль = "8mFTnDjC4KftTzh";
loConfig = Новый COMОбъект("CDO.Configuration");
loCdoMessage = Новый COMОбъект("CDO.Message");
loCdoMessage.Configuration = loConfig;
loCdoMessage.From = Строка("1С <"+Оправитель+">"); //loCdoMessage.From = "Тест 1C"""" <xxxxxxx@yandex.ru>";
loCdoMessage.To = Адрессаты; //loCdoMessage.To = "xxxxxxx@gmail.ru>";
loCdoMessage.Subject = ?(ТемаСообщения="","1С",ТемаСообщения);
loCdoMessage.TextBody = "1C";
HTMLBody = "<html>
|<head>
|<meta content=""text/html; charset=Windows-1251"" http-equiv=""content-type"">
|<title> Тестовое сообщение </title>
|</head>
|<body>
|<h4>" + ТекстСообщения + "</h4>
|<p></p>
|</body>
|</html>";
//loCdoMessage.BodyPart.Charset = "windows-1251";
loCdoMessage.HTMLBody = HTMLBody;
Если ТипЗнч(СписокВложений) = Тип("Строка") И Не СписокВложений = "" Тогда
Попытка
loCdoMessage.AddAttachment(СписокВложений);
Исключение
КонецПопытки;
ИначеЕсли ТипЗнч(СписокВложений) = Тип("СписокЗначений") Тогда
Для каждого ПутьКВложению Из СписокВложений Цикл
Попытка
loCdoMessage.AddAttachment(ПутьКВложению.Значение);
Исключение
КонецПопытки;
КонецЦикла;
КонецЕсли;
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing"). Value = 2;
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver"). Value = "smtp.mail.ru";
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"). Value = "465";
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"). Value = 1;
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername"). Value = Оправитель;
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword"). Value = Пароль;
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl"). Value = 1;
loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;
loConfig.Fields.Update();
Попытка
loCdoMessage.Send();
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецФункции
Процедура ОсновныеДействияФормыСчетТовары(Кнопка)
Если ЗначениеЗаполнено(Менеджер.ПочтаДляОтправкиСчета) Тогда
врфайл=ПолучитьИмяВременногоФайла("xls");
текТабдок=СчетФаксимилеТовары();
текТабдок.Записать(врфайл,ТипФайлаТабличногоДокумента.XLS);
ПослатьПоПочте(Менеджер.ПочтаДляОтправкиСчета,Строка(Ссылка),"Счет в приложении",врфайл);
Предупреждение("Письмо отправлено",3);
Иначе
Предупреждение("В настройках ответственного не указана почта для отправки счета");
КонецЕсли;
КонецПроцедуры
Через stunnel в 1С код, менять не нужно, только установить программу и изменить настройки подключения к почтовому ящику
Скачиваем stunnel c официального сайта (stunnel.org) и запускаем инсталятор, жмем yes при установке спросит страну и ваши данные, это нужно для создания сертификата на вашем компьютере.
После запуска в трее появится его иконка, правой клавишей и редактировать edit configuration
В блокноте откроется файл настроек, там будет пример для gmail дополняем или заменяем его следующим:
Код Batch File (DOS, CMD, BAT) [gmail-pop3]
client = yes
accept = 127.0.0.1:10110
connect = pop.gmail.com:995
[gmail-imap]
client = yes
accept = 127.0.0.1:10143
connect = imap.gmail.com:993
[gmail-smtp]
client = yes
accept = 127.0.0.1:10025
connect = smtp.gmail.com:465
[yandex-pop3]
client = yes
accept = 127.0.0.1:20110
connect = pop.yandex.ru:995
[yandex-imap]
client = yes
accept = 127.0.0.1:20143
connect = imap.yandex.ru:993
[yandex-smtp]
client = yes
accept = 127.0.0.1:20025
connect = smtp.yandex.ru:465
[mail-pop3]
client = yes
accept = 127.0.0.1:30110
connect = pop.mail.ru:995
[mail-imap]
client = yes
accept = 127.0.0.1:30143
connect = imap.mail.ru:993
[mail-smtp]
client = yes
accept = 127.0.0.1:30025
connect = smtp.mail.ru:465
Сохраняем файл и делаем Reload configuration
В настройка 1С меняем порты для работы
gmail
pop3 10110
imap 10143
smtp 10025
yandex
pop3 20110
imap 20143
smtp 20025
mail
pop3 30110
imap 30143
smtp 30025
Если в коде прописано, то:
Код 1C v 8.х Функция ПолучитьПрофильПочты()
//Создаем профиль либо считываем из справ очника
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "localhost";//"smtp.mail.ru";//Отправитель.АдресСервераSMTP; //"smtp.mail.ru";
Профиль.АдресСервераPOP3 = "localhost";//"pop.mail.ru"; //Отправитель.АдресСервераPOP3; //"pop.mail.ru";
Профиль.ПортPOP3 = 30110;//Отправитель.ПортPOP3; //110; 995
Профиль.ПортSMTP = 30025;//Отправитель.ПортSMTP; //587; 465
Профиль.Пользователь = "s_v@inbox.ru";// Отправитель.Email; //"test@mail.ru";
Профиль.Пароль = "8mFTnDjC4KftTzh"; //Отправитель.Пароль; //"123456789";
Профиль.ПользовательSMTP = "s_v@inbox.ru";//Отправитель.Email; //"test@mail.ru";
Профиль.ПарольSMTP = "8mFTnDjC4KftTzh";//Отправитель.Пароль; //"123456789";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
//Профиль.ИспользоватьSSLPOP3 = Истина;
//Профиль.ИспользоватьSSLSMTP = Истина;
//Создаем письмо
Возврат Профиль;
КонецФункции
Все, можно отправлять и проверять работу через консоль Show log window в меню
P.S. Почтовый ящик в примерах не рабочий, как пример
Категория:
Работа с Интернет, Почтой (Mail), FTP Перемещение товаров между складами. Есть некий справ очник с номенклатурой и Регистр накопления " Товары на складах" с измерениями: Склад,Номенклатура; ресурс: Количество.
Необходимо реализовать механизм перемещения номенклатуры между складами посредством документа "Перемещение товара". Склады определяются в документе с помощью реквизитов "Склад отправитель" и "Склад получатель". Данный документ регистрирует изменение складских остатков и так же в нём должен быть реализован контроль остатков.
Подскажите пожалуйста подробно,как с помощью конструктора запроса в Обработке проведения это реализовать?
Категория:
Документы Отправка и получение почты с использованием технологии шифрования SSL Почти все почтовые сервисы перешли на использование SSL и для получения почты нужно использовать IMAP, можно конечно и POP, но это уже прошлый век )
Пример получения почты с mail.ru по IMAP используя SSL:
Код 1C v 8.3 Функция ПолучитьНовыеПисьма() Экспорт
Почта = Новый ИнтернетПочта;
ИспользоватьIMAP=Истина; ПочтовыйЯщик = "";
Профиль = ПолучитьПрофиль();
Попытка
Если ИспользоватьIMAP Тогда
Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP);
Если ПочтовыйЯщик = "" Тогда
ПочтовыйЯщик = "INBOX";
КонецЕсли;
Почта.ТекущийПочтовыйЯщик = ПочтовыйЯщик;
Иначе;
Почта.Подключиться(Профиль, ПротоколИнтернетПочты.POP3);
КонецЕсли;
Исключение
Сообщить(НСтр("ru = 'Ошибка при подключении к почтовому серверу. Проверьте настройки.'"));
Сообщить(ОписаниеОшибки());
Возврат 0;
КонецПопытки;
ЗагруженныеПисьма = ПолучитьИдентификаторыЗагруженныхПисем();
ИдентификаторыНовыхПисем = Почта.ПолучитьИдентификаторы(ЗагруженныеПисьма);
Если ИдентификаторыНовыхПисем.Количество() = 0 Тогда
//Новых нет
Иначе
//Получаем новые письма
Письма = Почта.Выбрать(Ложь, ИдентификаторыНовыхПисем,Истина);
Для каждого Письмо Из Письма Цикл
Если Найти(Письмо.Тема,"siteabc.ru")>0 Тогда //Если это наше письмо то грузим его
ПисьмоОбъект = Справочники.ВходящиеПисьма.СоздатьЭлемент();
ПисьмоОбъект.Идентификатор = Письмо.Идентификатор[0];
ПисьмоОбъект.Наименование = Письмо.Тема;
ПисьмоОбъект.Дата = Письмо.ДатаОтправления;
ПисьмоОбъект.Отправитель = Письмо.Отправитель;
Если ИспользоватьIMAP Тогда
ПисьмоОбъект.ПочтовыйЯщик = "IMAP/" + ПочтовыйЯщик;
Иначе
ПисьмоОбъект.ПочтовыйЯщик = "POP3";
КонецЕсли;
Для каждого Элемент Из Письмо.Тексты Цикл
Если Элемент.ТипТекста = ТипТекстаПочтовогоСообщения.HTML Тогда
ПисьмоОбъект.ВидСодержимого = "HTML";
Текст = Элемент.Текст;
Если Найти(Текст, "<HTML>") = 0 Тогда
Текст = "<HTML><BODY>" + Текст + "</BODY></HTML>";
КонецЕсли;
//Вложения = Новый Массив;
//// обрабатываем вложения, что бы правильно сформировать HTML
//Для каждого Вложение Из Письмо.Вложения Цикл
// Ид = "cid:" + Вложение.Идентификатор;
// Если Найти(Текст, Ид) <> 0 Тогда
// Вложения.Добавить(Вложение);
// КонецЕсли;
//КонецЦикла;
Прервать;
ИначеЕсли Элемент.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст Тогда
ПисьмоОбъект.ВидСодержимого ="Текст";
Текст = Элемент.Текст;
КонецЕсли;
КонецЦикла;
ПисьмоОбъект.Текст = Текст;
ПисьмоОбъект.Записать();
КонецЕсли;
КонецЦикла;
КонецЕсли;
Почта.Отключиться();
Функция ПолучитьПрофиль(ИмяОтправителя = "", ИспользоватьIMAP = Ложь) Экспорт
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
Профиль.POP3ПередSMTP=Ложь;
Профиль.АдресСервераIMAP = "imap.mail.ru";
Профиль.ПортIMAP = 993;
Профиль.ИспользоватьSSLIMAP = Истина;
Профиль.ПользовательIMAP ="siteabcz@mail.ru";
Профиль.ПарольIMAP = "9Ljkuf";
Профиль.ТолькоЗащищеннаяАутентификацияIMAP = Ложь;
Возврат Профиль;
КонецФункции
Функция ПолучитьИдентификаторыЗагруженныхПисем() Экспорт
Идентификаторы = Новый Массив();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Идентификатор ИЗ Справочник.ВходящиеПисьма";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Идентификаторы.Добавить(Выборка.Идентификатор);
КонецЦикла;
Возврат Идентификаторы;
КонецФункции
/// ЕЩЕ примеры настройки профиля
Функция ПолучитьПрофиль(ИмяОтправителя = "", ИспользоватьIMAP = Ложь) Экспорт
//Профиль = Новый ИнтернетПочтовыйПрофиль;
//Профиль.АдресСервераSMTP = Выборка.АдресSMTPСервера;
//Профиль.ПортSMTP = Выборка.ПортSMTP;
//Профиль.ИспользоватьSSLSMTP = Выборка.SSLSMTP;
//Профиль.ПарольSMTP = Выборка.ПарольSMTP;
//Профиль.ПользовательSMTP = Выборка.ПользовательSMTP;
//Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
//
//Профиль.АдресСервераIMAP = Выборка.АдресIMAPСервера;
//Профиль.ПортIMAP = Выборка.ПортIMAP;
//Профиль.ИспользоватьSSLIMAP = Выборка.SSLIMAP;
//Профиль.ПользовательIMAP = Выборка.ПользовательIMAP;
//Профиль.ПарольIMAP = Выборка.ПарольIMAP;
//Профиль.ТолькоЗащищеннаяАутентификацияIMAP = Ложь;
//
//Профиль.АдресСервераPOP3 = Выборка.АдресPOP3Сервера;
//Профиль.ПортPOP3 = Выборка.ПортPOP3;
//Профиль.ИспользоватьSSLPOP3 = Выборка.SSLPOP3;
//Профиль.Пароль = Выборка.ПарольPOP3;
//Профиль.Пользователь = Выборка.ПользовательPOP3;
//Профиль.ТолькоЗащищеннаяАутентификацияPOP3 = Ложь;
//
//Профиль.ВремяОжидания = Выборка.ТаймаутИнтернетПочты;
//
//ИмяОтправителя = Выборка.ИмяОтправителяПочтовогоСообщения;
//ИспользоватьIMAP = Выборка.ИспользоватьIMAP;
//
Профиль = Новый ИнтернетПочтовыйПрофиль;
//Профиль.АдресСервераSMTP = "smtp.mail.ru";
//Профиль.ПортSMTP = 465;
//Профиль.ИспользоватьSSLSMTP = Истина;
//Профиль.ПарольSMTP ="9LEY";
//Профиль.ПользовательSMTP = "siteabcz@mail.ru";
//Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;
//Профиль.Пользователь = "siteabcz@mail.ru";
//Профиль.Пароль = "siteabcz";
//Профиль.АдресСервераPOP3 = "pop.mail.ru";
//Профиль.ПортPOP3 = 995;
//Профиль.ИспользоватьSSLPOP3 = Истина;
Профиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
Профиль.POP3ПередSMTP=Ложь;
Профиль.АдресСервераIMAP = "imap.mail.ru";
Профиль.ПортIMAP = 993;
Профиль.ИспользоватьSSLIMAP = Истина;
Профиль.ПользовательIMAP ="siteabcz@mail.ru";
Профиль.ПарольIMAP = "siteabcz";
Профиль.ТолькоЗащищеннаяАутентификацияIMAP = Ложь;
Возврат Профиль;
КонецФункции
//ОБЩИЙ ПРИМЕР ОТПРАВКИ и ПОЛУЧЕНИЯ
Функция ОтправитьПисьмо(EmailОтправителя, ПарольОтправителя,
Порт, АдресСервера, EmailПолучателя,
ИмяПолучателя, ТекстСообщения,
ЗаголовокСообщения, МассивФайловыхПутей)
//ПОЧТОВЫЙ ПРОФИЛЬ
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.АдресСервераSMTP = АдресСервера;
Профиль.ПортSMTP = Порт;
Профиль.Пользователь = EmailОтправителя;
Профиль.Пароль = ПарольОтправителя;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.ПарольSMTP = ПарольОтправителя;
Профиль.ПользовательSMTP = EmailОтправителя;
//ПОЧТОВОЕ СООБЩЕНИЕ
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Отправитель = EmailОтправителя;
Сообщение.Тема = ЗаголовокСообщения;
Сообщение.Тексты.Добавить(ТекстСообщения, ТипТекстаПочтовогоСообщения.HTML);
Сообщение.Организация = "The company";
Адрес = Сообщение.Получатели.Добавить(EmailПолучателя);
Адрес.ОтображаемоеИмя = ИмяПолучателя;
Для каждого ПутьКФайлу Из МассивФайловыхПутей Цикл
Сообщение.Вложения.Добавить(ПутьКФайлу);
КонецЦикла;
// ПОЧТОВЫЙ СЕРВЕР
Почта = Новый ИнтернетПочта();
//Подключение к серверу
Попытка
Почта.Подключиться(Профиль);
Исключение
Сообщить("Ошибка при подключении к серверу: " + ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
//Отправка письма
Попытка
Почта.Послать(Сообщение);
Исключение
Почта.Отключиться();
Сообщить("Ошибка при отправке письма: " + ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
Почта.Отключиться();
Возврат Истина;
КонецФункции
Функция ПолучитьПисьма()
//ПОЧТОВЫЙ ПРОФИЛЬ
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.Пользователь = "xxx@xxxx.xx";
Профиль.Пароль = "xxxxxx";
Профиль.АдресСервераPOP3 = "pop3.mail.ru";
ПРофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
МассивПисем = Новый массив();
//ПОЛУЧЕНИЕ ПИСЕМ
Попытка
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
МассивПисем = Почта.Выбрать(Ложь);
Исключение
Сообщить("Ошибка получения почты " + ОписаниеОшибки());
КонецПопытки;
Возврат МассивПисем;
КонецФункции
Категория:
Работа с Интернет, Почтой (Mail), FTP Программное создание, заполнение документа и открытие формы (УП, тонкий клиент) Чтобы программно заполнить документ по кнопке, делаем примерно следующее:
1. на форму, в нашем случае документа, добавляем кнопку (Команда и у нее процедура СоздатьПеремещение(Команда))
2. в ее обработчике пишем код создания документа перемещение товаров и заполняем его
Код 1C v 8.3 &НаСервере
Функция СоздатьПеремещениеНаСервере(ДанныеФормы)
ДанныеФормы.Дата=ТекущаяДата();
// ДанныеФормы.Номер="1";
ДанныеФормы.СкладОтправитель = Справочники.Склады.НайтиПоНаименованию("Склад гарантийного обслуживания");
ДанныеФормы.СкладПолучатель = Справочники.Склады.НайтиПоНаименованию("Склад гарантийных");
новСП=Новый СписокЗначений; н=0;
Для Каждого стр из Объект.ДанныеПоГН Цикл
Если стр.ДанныеПроверки=Перечисления.СтатусПроверкиГарантии.зн0 тогда //!В документ перемещение только записи статус=зн0
новСП.Добавить(Строка(стр.НомерЗаводской)); н=н+1;
КонецЕсли;
КонецЦикла;
Если н>0 Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугСерии.Серия КАК Серия,
| РеализацияТоваровУслугСерии.Ссылка.Дата КАК ДатаОтгрузки,
| РеализацияТоваровУслугСерии.Ссылка.Контрагент КАК Контрагент,
| РеализацияТоваровУслугСерии.Ссылка КАК Возврат,
| РеализацияТоваровУслугСерии.Номенклатура,
| ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугСерии.Серия) КАК СерияСТР
|ИЗ
| Документ.ВозвратТоваровОтКлиента.Серии КАК РеализацияТоваровУслугСерии
|ГДЕ
| РеализацияТоваровУслугСерии.Серия В
| (ВЫБРАТЬ
| СерииНоменклатуры.Ссылка КАК Ссылка
| ИЗ
| Справочник.СерииНоменклатуры КАК СерииНоменклатуры
| ГДЕ
| СерииНоменклатуры.Наименование В (&Наименование))
|
|УПОРЯДОЧИТЬ ПО
| Серия
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Наименование", новСП);
ТаблицаЗапроса = Запрос.Выполнить().Выгрузить();
Для каждого стр из новСП Цикл
НайденнаяСтрока=ТаблицаЗапроса.Найти(стр.Значение,"СерияСТР");
Если НайденнаяСтрока = Неопределено Тогда
//нет такого
Иначе
нстр=ДанныеФормы.Товары.Добавить();
нстр.Номенклатура = НайденнаяСтрока.Номенклатура;
нстр.Серия=НайденнаяСтрока.Серия;
нстр.КоличествоУпаковок=1;
нстр.Количество=1;
нстр.СтатусУказанияСерий=2;
нстр.СтатусУказанияСерийОтправитель=2;
нстр.СтатусУказанияСерийПолучатель=2;
нстр=ДанныеФормы.Серии.Добавить();
нстр.Номенклатура = НайденнаяСтрока.Номенклатура;
нстр.Серия=НайденнаяСтрока.Серия;
нстр.Количество=1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ДанныеФормы;
КонецФункции
&НаКлиенте
Процедура СоздатьПеремещение(Команда)
Форма=ПолучитьФорму("Документ.ПеремещениеТоваров.ФормаОбъекта");
ДанныеФормы=Форма.Объект;
ДанныеФормы=СоздатьПеремещениеНаСервере(ДанныеФормы);
КопироватьДанныеФормы(ДанныеФормы,Форма.Объект);
Форма.Открыть();
КонецПроцедуры
Категория:
Документы Пример работы с общим макетом типа ActiveDocument в клиент-серверном варианте Код 1C v 8.х //**********************************************************************************
//получаем макет на сервере, сохраняем в файл и передаем на клиента
&НаСервере
Функция ПолучитьДанныеМакета()
АдресХранилища = Новый УникальныйИдентификатор();
Макет = ПолучитьОбщийМакет("Договор");
ВременныйФайл = ПолучитьИмяВременногоФайла("doc");
Макет.Записать(ВременныйФайл);
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ВременныйФайл), АдресХранилища);
УдалитьФайлы(ВременныйФайл);
Возврат Адрес;
КонецФункции
//**********************************************************************************
//код сотрудника, нужно для создания уникального имени файла для каждого пользователя
&НаСервере
Функция КодПользователя(Пользователь)
Возврат СокрЛП(Пользователь.Сотрудник.Код);
КонецФункции
//**********************************************************************************
//Ссылка - ссылка на договор(ссылка справ очника, нужно для подстановки реквизитов)
//РеквизитыДляПечати - структура с нужными реквизитами
&НаКлиенте
Процедура ПечатьДоговора(Ссылка,РеквизитыДляПечати)
Пользователь = ОбщегоНазначения.ТекущийПользователь();
Каталог = КаталогВременныхФайлов();
Каталог = ?(Прав(Каталог,1) = "\", Каталог, Каталог+"\");
ПолноеИмяФайла = Каталог+"Договор_"+КодПользователя(Пользователь)+".doc";
Попытка
Индификатор = ПолучитьДанныеМакета();
МакетДоговора = ПолучитьИзВременногоХранилища(Индификатор);
МакетДоговора.Записать(ПолноеИмяФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Попытка
MSWord = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Ошибка при попытке создать объект ""MS Word""!" + Символы.ПС +
"Возможно приложение ""MS Word"" не установлено или установлено неправильно.", СтатусСообщения.Внимание);
КонецПопытки;
MSWord.Documents.Open(ПолноеИмяФайла);
Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке, и объект закрывается.
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
MSWord.Application.Quit();
Возврат;
КонецПопытки;
//*******************************************
//тут выполняем замену
Попытка
Замена = Документ.Content.Find;
Замена.Execute("{ЧтоМеняем}", Ложь, Истина, Ложь, , , Истина, , Ложь, "На что меняем");
Исключение
КонецПопытки;
// Делаем видимым приложение и активизируем его.
MSWord.Application.Visible = Истина;
MSWord.Activate();
КонецПроцедуры
Категория:
Работа с Microsoft Office и OpenOffice Перестал работать поиск в документах, справ очниках и журналах Открыли документ Счет, в поле Контрагент набираете первую букву & поиск осуществляется, набираете вторую (третью) букву и список становится пустым - это слетел индекс полнотекстового поиска, его нужно обновить:
- Главное меню - Все функции - Стандартные - Управление полнотекстовым поиском
Если Пункт меню Все функции недоступен, то включить его можно в меню Сервис - Параметры - Показывать Все функции
или такой вариант:
Меню - Администрирование - Поддержка и обслуживание - Регламентные операции - Полнотекстовый поиск данных - Настроить - Очистить индекс - Обновить индекс
Категория:
1С Общие вопросы - Управляемые формы и Такс… Полезные советы по интерфейсу "Такси" Чтобы шрифт не казался крупным, и формы помещались на экране, можно уменьшить масштаб
Для этого нужно воспользоваться Меню «Вид – Изменить масштаб».
Чтобы быстро найти нужный пункт меню, можно воспользоваться поиском меню
Найти окно поиска меню на любой панели. В верхнем правом углу написать ключевое слово для поиска.
Так же используя поиск можно быстро искать необходимые документы или элементы справ очника
Чтобы на форме помещалось больше информации, можно сократить панель разделов
Вызвать настройку панели разделов, для этого нужно воспользоваться Меню «Вид – Настройка панели разделов». Убрать надписи с панели разделов и оставить только картинку в окне «Показывать».
Чтобы на форме были видны нужные колонки и не видны ненужные, можно настроить форму
Открыть форму и воспользоваться кнопкой «Еще». В верхней правой части формы снять флажки с ненужных колонок, а нужные колонки передвинуть вперед.
Чтобы добавить журналы документов покупателей и поставщиков, можно настроить панели «Продажи» и «Покупки»
Нажать меню «Продажи». В правом верхнем углу нажать на серую шестеренку «Настройки». Выбрать меню «Настройка навигации». В списке слева щелкнуть два раза на «Документы покупателей».
Фильтры / отборы в журнале
Нажать на меню «Операции». Открыть «Журнал операций». В левом верхнем углу в поле «Контрагент» указать покупателя.
Все функции и стандартные операции
Откройте Меню-Сервис-Параметры, установите галку Отображать команду Все функции и нажмите ОК
Стандартные
Внизу раздел Стандартные:
Как вернуть стандартную настроку списка документов или справ очника
Избранное - быстрый доступ к документам, справ очникам
Для добавления в избранное нажмите на значек звездочки в открытом списке
или в меню раздела
Для быстрого доступа к избранному нажмите на звездочку в левом верхнем углу
Категория:
1С Общие вопросы - Управляемые формы и Такс… Как в УТ 11.3, в справ очник номенклатуры добавить остатки на складах и актуальные цены Попросил клиент добавить в справ очник номенклатуры остатки и цены на текущий момент. Нужно!? Делаем:
1. Открываем форму списка номенклатуры и в свойства СписокНоменклатуры - Настройка списка
Корректируем запрос добавляя выборку по остаткам склада, новый вариант:
Код 1C v 8.3 ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Ссылка,
СпрНоменклатура.Код КАК Код,
СпрНоменклатура.Наименование КАК Наименование,
СпрНоменклатура.Артикул КАК Артикул,
СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
СпрНоменклатура.Родитель,
ВЫБОР
КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
ТОГДА 4 + ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА СпрНоменклатура.ПометкаУдаления
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ + ВЫБОР
КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
ТОГДА 0
ИНАЧЕ 2
КОНЕЦ
КОНЕЦ КАК ИндексКартинки,
ТоварыНаСкладахОстатки1.ВНаличииОстаток КАК Остаток_Про,
ТоварыНаСкладахОстатки2.ВНаличииОстаток КАК Остаток_Лемм
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(,
Склад =Склад1
) КАК ТоварыНаСкладахОстатки1
ПО (ТоварыНаСкладахОстатки1.Номенклатура = СпрНоменклатура.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(,
Склад =Склад2
) КАК ТоварыНаСкладахОстатки2
ПО (ТоварыНаСкладахОстатки2.Номенклатура = СпрНоменклатура.Ссылка)
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
(СпрНоменклатура.Ссылка В
(ВЫБРАТЬ
Сегменты.Номенклатура
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
ГДЕ
Сегменты.Сегмент =СегментНоменклатуры))}
2. Устанавливаем параметры в Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Код 1C v 8.3 СписокНоменклатура.Параметры.УстановитьЗначениеПараметра("Склад1", Справочники.Склады.НайтиПоНаименованию("PRO"));
СписокНоменклатура.Параметры.УстановитьЗначениеПараметра("Склад2", Справочники.Склады.НайтиПоНаименованию("ЛЕММ"));
Цены.Параметры.УстановитьЗначениеПараметра("КонПериода", ТекущаяДата());
Добавляем Динамический список Цены:
В свойствах произвольный запрос:
Код 1C v 8.3 ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.ВидЦены,
ЦеныНоменклатурыСрезПоследних.Характеристика,
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонПериода, ) КАК ЦеныНоменклатурыСрезПоследних
И для списка номенклатуры пропишем обновление цен при активизации строки
Код 1C v 8.3
Цены.Отбор.Элементы.Очистить();
НовыйЭлементОтбора = Цены.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ПолеОтбора = Новый ПолеКомпоновкиДанных("Номенклатура");
НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
НовыйЭлементОтбора.Использование = Истина;
НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = ?(Элемент.ТекущиеДанные <> Неопределено, Элемент.ТекущиеДанные.Ссылка,ВернутьЗначениеНоменклатура());
В результате:
Клиент доволен, а это самое главное
Если Вам нужна аналогичная настройка, обращайтесь, контакты тут
Категория:
1С Управление торговлей 11 Проверка на дублирование контрагентов по ИНН и КПП Часто клиенты просят включить при записи контрагента проверку на дублирование, в некоторых конфигурациях это встроенный функционал, а если этого нет, то:
1. Создаем общий модуль
и помещаем в него процедуру:
Код 1C v 8.3 //Проверка ИНН на дублирование
Процедура ЗапретДублированияКонтрагентовОбработкаПроверкиЗаполнения(ИНН, КПП, Источник, Отказ) Экспорт
// Проверка осуществляется только для контрагентов с заполненным ИНН и КПП
Если Не ЗначениеЗаполнено(ИНН) ИЛИ Не ЗначениеЗаполнено(КПП) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПРЕДСТАВЛЕНИЕ(Контрагенты.Код) КАК Код,
| Контрагенты.Наименование,
| ПРЕДСТАВЛЕНИЕ(Контрагенты.КПП) КАК КПП
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН =ИНН
| И Контрагенты.КПП =КПП";
Если Не ЗначениеЗаполнено(Источник) Тогда
Запрос.Текст = Запрос.Текст + "
|И Контрагенты.Ссылка <>ссылкаТекущийКонтрагент";
КонецЕсли;
Запрос.УстановитьПараметр("ссылкаТекущийКонтрагент", Источник);
Запрос.УстановитьПараметр("ИНН", ИНН);
Запрос.УстановитьПараметр("КПП", КПП);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ТекстСообщения = "ВНИМАНИЕ! Существуют контрагенты с таким же ИНН/КПП ("+ИНН+"/"+КПП+"):";
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ТекстСообщения = ТекстСообщения + Символы.ПС + Строка(ВыборкаДетальныеЗаписи.Код)+" "+ Строка(ВыборкаДетальныеЗаписи.Наименование);
КонецЦикла;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстСообщения;
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
2. в форме контрагента в процедуру перед записью добавляем:
Код 1C v 8.3 Процедура ПередЗаписью(Отказ)
мЭтоНовый = ЭтоНовый();
мИНН = Ссылка.ИНН;
Если ОбособленноеПодразделение И ЗначениеЗаполнено(ГоловнойКонтрагент) И ГоловнойКонтрагент <> Ссылка Тогда
ИНН = ГоловнойКонтрагент.ИНН;
КонецЕсли;
//all4cf проверка на дубли
all4cf.ЗапретДублированияКонтрагентовОбработкаПроверкиЗаполнения(ИНН, КПП, Ссылка, Отказ);
КонецПроцедуры // ПередЗаписью()
Результат:
Категория:
Полезные, Универсальные Функции Добавление дополнительных отчетов и обработок в тонком клиенте БП 3.0, ЗУП 3.0, УТ 11 Любой отчет и обработку можно подключить пользователям как дополнительные отчеты или обработки, вот например пункт в БП - Банк:
Добавление происходит через
далее Дополнительные отчеты и обработки , в списке нажмите Создать и Выберите Файл отчета/обработки:
Перед добавлением файл нужно подготовить, дописать в модуль объекта код подключения:
Для обработок код:
Код 1C v 8.3 Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
//Вид
//Строка, вид обработки, один из возможных:
//"ДополнительнаяОбработка", "ДополнительныйОтчет", "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов"
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
//Массив строк имен объектов метаданных в формате:
//<ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>].
//Например, "Документ.СчетЗаказ" или "Справочник.*".
//Прим. параметр имеет смысл только для назначаемых обработок, для глобальных может не задаваться.
ПараметрыРегистрации.Вставить("Назначение", Новый СписокЗначений);
//Наименование обработки, которым будет заполнено наименование элемента справ очника по умолчанию - краткая строка для идентификации обработки администратором
ПараметрыРегистрации.Вставить("Наименование", "Сравнение документов БУХ и УТ");
//Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу. Например “.
ПараметрыРегистрации.Вставить("Версия", "1.0");
//Принимает значение Истина или Ложь, в зависимости от того, требуется ли устанавливать или отключать безопасный режим исполнения обработок. Если истина, обработка будет запущена в безопасном режиме. Более подбробно о безопасном режиме в справ ке к платформе 1С:Предприятие.
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
//Краткая информация по обработке, описание обработки.
ПараметрыРегистрации.Вставить("Информация", "");
//Команды, поставляемые обработкой. Таблица значений с колонками:
ПараметрыРегистрации.Вставить("Команды", Новый СписокЗначений);
ТаблицаКоманд = ПолучитьТаблицу_Команд();
ДобавитьКоманду(ТаблицаКоманд,
"Сравнение документов БУХ и УТ", //Представление
"Сравнение документов БУХ и УТ", //Идентификатор
"ОткрытиеФормы", //Использование
Ложь, //ПоказыватьОповещение
""); //Модификатор
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицу_Команд()
Команды = Новый ТаблицаЗначений;
//Представление – представление команды в пользовательском интерфейсе;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
//Идентификатор – идентификатор команды;
//любая строка, уникальная в пределах данной обработки (отчета).
//В случае с обработками печатных форм на основе макета табличного документа передается список макетов,
//на основе которых нужно получить печатную форму
//(см. описание параметра ИменаМакетов процедуры УправлениеПечатьюКлиент.ВыполнитьКомандуПечати в разделе Печать).
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
//"ОткрытиеФормы" – открыть форму обработки;
//"ВызовКлиентскогоМетода" – вызвать клиентскую экспортную процедуру из модуля формы обработки;
//"ВызовСерверногоМетода" – вызвать серверную экспортную процедуру из модуля объекта обработки.
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
//ПоказыватьОповещение – если Истина, требуется показать оповещение при начале и при завершении работы обработки.
//Имеет смысл только при запуске обработки без открытия формы.
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
//Модификатор – дополнительный модификатор команды.
//Используется для дополнительных обработок печатных форм на основе табличных макетов,
//для таких команд должен содержать строку ПечатьMXL (см. пример в демонстрационной конфигурации).
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Для отчетов и печатных форм меняйте параметр Вид :
Код 1C v 8.3 //"ДополнительнаяОбработка", "ДополнительныйОтчет", "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов"
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
Возможные значения этого поля приведу в виде таблицы
Значение поля "Вид" Расположение команды Расширение
файла
ПечатнаяФорма В меню "Печать" на форме объекта или списка epf ЗаполнениеОбъекта В меню "Заполнить" на форме объекта или списка epf СозданиеСвязанныхОбъектов В меню "Создать на основании" - "Создание связанных объектов.." на форме объекта или списка epf Отчет В меню "Отчеты" на форме объекта или списка erf ДополнительнаяОбработка В списке соответствующих подсистем в меню "Сервис" - "Дополнительные обработки" epf ДополнительныйОтчет В списке соответствующих подсистем в меню "Сервис" - "Дополнительные отчеты" erf
Это поле может принимать одно из значений, возвращаемых функциями в типовых конфигурациях:
ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработки<Вид>(). Например, для вида "ПечатнаяФорма" есть функция ВидОбработкиПечатнаяФорма().
Категория:
Внешние печатные формы, отчеты и обработк… Отправка SMS через SMS.ru Один из самый простых сервисов для работы с смс.
Регистрируемся на сайта sms.ru Добавляем отправителя, проходим все проверки и разрешения (очень просто и быстро) Получаем API ключ и начинаем кодить в 1С. Сама отправка смс, через http, выглядит вот так
https://sms.ru/sms/send?api_id=ВАШ_АПИ_КЛЮЧ&to=Номер1,Номер2&msg=hello+world&json=1 [/pre]
Для примера , у меня будет цикл по запросу, который отправляет заранее заданный текст из справ очника, клиентам.
В нем у нас есть 2 объекта.
1) HTTP соединения
2) HTTP Запрос
В запрос кидаем сформированную строку, в которой есть
1) API ключ - записан в константы
2) Текст, из справ очника (с заменой)
3) номер телефона из заказа (у кого откуда )
4) конец строки JSON= 1 , означает получение ответа от сайта , о успешной или не успешной отправке смс с кодами авторизации/отправки в формате JSON (Разбор JSON отдельная тема)
В запросе, указываем адрес который идет после sms.ru, начиная со слэша!
В соединении, если httpS , не указываем изначально , какой это протокол, указать порт и создать объект защищенного соединения.
В остальном, все как в коде, в любом виде =)
Код 1C v 8.х
Соединение = Новый HTTPСоединение("sms.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос;
Пока ВыборкаДляСмс.Следующий() Цикл
ВремФайл = ПолучитьИмяВременногоФайла("txt");
текст = СтрЗаменить(Справочники.МДО_ТекстыСМС.НайтиПоКоду("000000001").Текст,"*номер*",ВыборкаДляСмс.НомерЗаказа);
запрос.АдресРесурса = "/sms/send?api_id="+Константы.SMSru_ApiКлюч.Получить()+"&to="+СтрЗаменить(ВыборкаДляСмс.ТелефонИзЗаказа," ","")+"&from="+Константы.SMSru_Отправитель.Получить()+"&msg="+текст+"&json=1";
Соединение.ВызватьHTTPМетод("GET",Запрос,ВремФайл);
ИзменитьСтатусСМС(ВремФайл,ВыборкаДляСмс.Заказ);
КонецЦикла;
Категория:
COM-объекты, WMI, WSH