8 июл. 2019 г.

Получить ближайшую рабочую дату от произвольной даты

&НаКлиенте
Процедура Команда1(Команда)
            Сообщить(ПолучитьБлижайшуюРабочуюДатуОтИсходнойДаты(ДатаКалендаря));        
КонецПроцедуры

Функция ПолучитьБлижайшуюРабочуюДатуОтИсходнойДаты(Знач ИсходнаяДата)       
            
            ИсходнаяДата = НачалоДня(ИсходнаяДата);
            ИсходнаяДата = ИсходнаяДата + 24 * 60 * 60;
            Пока Истина Цикл      
                        
                        Запрос = Новый Запрос;
                        Запрос.Текст =
                        "ВЫБРАТЬ
                        |           РегламентированныйПроизводственныйКалендарь.ВидДня
                        |ИЗ
                        |           РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                        |ГДЕ
                        |           РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";
                        
                        Запрос.УстановитьПараметр("ДатаКалендаря", ИсходнаяДата);              
                        РезультатЗапроса = Запрос.Выполнить();
                        
                        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();                       
                        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                                    Если ВыборкаДетальныеЗаписи.ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий") Тогда
                                               Возврат ИсходнаяДата;
                                    Иначе
                                               ИсходнаяДата = НачалоДня(ИсходнаяДата);
                                               ИсходнаяДата = ИсходнаяДата + 24 * 60 * 60;
                                    КонецЕсли;
                        КонецЦикла;
                        
            КонецЦикла;
            
КонецФункции
 

Ввести на основании (на клиенте)

&НаКлиенте
Процедура ТранспортнаяНакладная(Команда) 
    Форма = ПолучитьФорму("Документ.ТранспортнаНакладна.Форма.ФормаДокумента");
    ДанныеФормы = Форма.Объект;
    
    ТранспортнаяНакладнаяСервер(ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    
    Форма.Открыть();
КонецПроцедуры

&НаСервере
Процедура ТранспортнаяНакладнаяСервер(ДанныеФормы) 
    текДок = Элементы.Список.ТекущаяСтрока.Ссылка;
        
     Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ТранспортнаНакладна"));
     Док.Заполнить(текДок);
    
     ЗначениеВДанныеФормы(Док, ДанныеФормы);
КонецПроцедуры

Записать документ без проведения

ДокОбъект = Ссылка.ПолучитьОбъект(); 

Если  ДокОбъект.Проведен Тогда
    ДокОбъект.Проведен = Истина; 
ИначеЕсли  ДокОбъект.Проведен = Ложь Тогда

ИначеЕсли  ДокОбъект.ПомеченНаУдаления Тогда
    ДокОбъект.ПомеченНаУдаление = Истина;
КонецЕсли;

ДокОбъект.ОбменДанными.Загрузка = Истина; 
ДокОбъект.Записать();

13 мар. 2019 г.

Сократить ссылки через 1С

Что бы сократить ссылку через 1С используя сайт https://clck.ru/ пишем

Процедура КнопкаВыполнитьНажатие(Кнопка)
 Сообщить(СократитьСсылку("http://copyraite.blogspot.com"));    
КонецПроцедуры

Функция СократитьСсылку(Ссылка) Экспорт 
 Ссылка = КодироватьСтроку(Ссылка, СпособКодированияСтроки.КодировкаURL,); 
 Адрес = "https://clck.ru/--?url="+Ссылка;
 
 ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
 ХМЛХТТП.Open("GET", Адрес, Ложь);
 ХМЛХТТП.Send(Null);
 Возврат СокрЛП(ХМЛХТТП.ResponseText);
КонецФункции

для использования https://is.gd/ сервиса изменяем только адрес сервиса и описания параметров

Процедура КнопкаВыполнитьНажатие(Кнопка)
 Сообщить(СократитьСсылку("http://copyraite.blogspot.com")); 
КонецПроцедуры

Функция СократитьСсылку(Ссылка) Экспорт 
 Ссылка = КодироватьСтроку(Ссылка, СпособКодированияСтроки.КодировкаURL,); 
 Адрес = "https://is.gd/create.php?format=simple&url="+Ссылка;
 
 ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
 ХМЛХТТП.Open("GET", Адрес, Ложь);
 ХМЛХТТП.Send(Null);
 Возврат СокрЛП(ХМЛХТТП.ResponseText);
КонецФункции

3 мар. 2019 г.

Автоподключение vpn Windows 10

Для автоподключения делаем .bat файл с содержимым
rasdial "VpnAddress" UserName UserPassword

А что бы при каждой авторизации впн соединение "поднималось" закинем его в Task Scheduler с такими настройками


7 янв. 2019 г.

Проверить открыта ли форма?


&НаКлиенте Функция ДокументЗаказНаОтгрузкуОткрыт() Заказ = ПолучитьЗаказНаОтгрузку(); // Ссылка на заказ Если Заказ.Пустая() Тогда Возврат Ложь; КонецЕсли; Окна = ПолучитьОкна(); Для Каждого Окно Из Окна Цикл Если Окно.Заголовок = Строка(Заказ) Тогда Если Вопрос("Для правильной работы формы контроля, открытый подчиненный документ ""ЗаказНаОтгрузку"" должен быть закрыт. Закрыть документ?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда Предупреждение("Команда не может быть выполнена, если есть открытый подчиненный документ ""ЗаказНаОтгрузку"""); Возврат Истина; //ошибка Иначе Если Окно.Содержимое.Количество() = 0 Тогда Предупреждение("Ошибка при закрытии подчиненной формы ""ЗаказКлиента"""); Возврат Истина; //ошибка КонецЕсли; Форма = Окно.ПолучитьСодержимое(); Если Форма <> Неопределено И ТипЗнч(Форма) = Тип("УправляемаяФорма") Тогда Форма.Закрыть(); КонецЕсли; Возврат Ложь; //открытая форма закрыта КонецЕсли; КонецЕсли; КонецЦикла; Возврат Ложь; //открытая форма не найдена КонецФункции

Необязательные параметры в запросе

ВЫБРАТЬ НАЧАЛОПЕРИОДА(Работы.Дата, МЕСЯЦ) КАК Месяц, Работы.Ссылка КАК Документ, Работы.Контрагент КАК Контрагент, СУММА(Работы.СуммаДокумента) КАК СуммаДокумента, СУММА(ЕСТЬNULL(Оплата.Оплачено, 0)) КАК Оплачено, СУММА(Работы.СуммаДокумента - ЕСТЬNULL(Оплата.Оплачено, 0)) КАК Долг ИЗ Документ.Работы КАК Работы ЛЕВОЕ СОЕДИНЕНИЕ Документ.Оплата КАК Оплата ПО (Оплата.Основание = Работы.Ссылка) И Работы.Проведен = Оплата.Проведен ГДЕ Работы.Проведен {ГДЕ (Работы.Дата МЕЖДУ &Начало И &Конец)} СГРУППИРОВАТЬ ПО Работы.Ссылка, Работы.Контрагент, НАЧАЛОПЕРИОДА(Работы.Дата, МЕСЯЦ)


Передать парамтр при закрытии формы

Форма1

&НаКлиенте Процедура ДобавитьПриИзменении(Элемент) ФормаВводаНовойРаботы = ПолучитьФорму("Документ.Работы.Форма.Форма2"); ФормаВводаНовойРаботы.Открыть(); КонецПроцедуры

&НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ПараметрКоторыйПередалиПриЗакрытии = ИмяСобытия; // переданное значения реквизита Комментарий КонецПроцедуры

Форма2

&НаКлиенте Процедура ЗакрытьФорму(Команда) Закрыть(); КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии(ЗавершениеРаботы) Оповестить(Комментарий); //реквизит формы Комментарий КонецПроцедуры
 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07