8 июл. 2019 г.

Программное добавление отборов (ИЛИ)

    Форма = ПолучитьФорму("РегистрСведений.Долги.ФормаСписка");
        
    ГруппаОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.Использование = Истина;
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
    
    ЭлементОтбора1 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));    
    ЭлементОтбора1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДокументРаботы");
    ЭлементОтбора1.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора1.Использование = Истина;
    ЭлементОтбора1.ПравоеЗначение = Объект.Ссылка;
    
    ЭлементОтбора2 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДокументОснование");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.ПравоеЗначение = Объект.Ссылка;
    
    Форма.Открыть();

Программное добавление\удаление обязательных для заполнения реквизитов

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
  
  Если ТипЗнч(Грузоотправитель) = Тип("СправочникСсылка.Организации") Тогда
        ПроверяемыеРеквизиты.Добавить("Бухгалтер");
        ПроверяемыеРеквизиты.Добавить("Отпустил");
    КонецЕсли;
    
    Если инт_СтороннийПеревозчик Тогда
        ПроверяемыеРеквизиты.Очистить();
                                           
        ПроверяемыеРеквизиты.Добавить("Грузоотправитель");
        ПроверяемыеРеквизиты.Добавить("Подразделение");
        ПроверяемыеРеквизиты.Добавить("Дата");
        ПроверяемыеРеквизиты.Добавить("Грузополучатель");
    КонецЕсли;
    
КонецПроцедуры

Сохранить файлы в ХранилищеЗначений (Сохранение \ Восстановление)

&НаКлиенте
Процедура Завантажити(Команда)
        ИмяФайла = "";
        ПутьФайла = "";
        НачатьПомещениеФайла(Новый ОписаниеОповещения("ПослеЗавершенияПомещения",ЭтаФорма),ПутьФайла,ИмяФайла,Истина);               
КонецПроцедуры

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

&НаКлиенте
Процедура НачатьПроверкуСуществованияЗавершение(Существует,ДопПараметры) Экспорт 
        Если Существует Тогда 
                ДопПараметры.Файл.НачатьПолучениеРазмера(Новый ОписаниеОповещения("НачатьПолучениеРазмераЗавершение",ЭтаФорма,ДопПараметры));
        КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура НачатьПолучениеРазмераЗавершение(Размер, ДопПараметры) Экспорт 
        Если Размер > 10000000 Тогда 
                Сообщить("Розмір файлу не повинен бути більше 10 МБ!");
                Объект.Розширення = "";
                Объект.Наименование = "";
                Возврат;
        КонецЕсли;
       
        ДопПараметры.Удалить("Файл");
        НачатьСозданиеДвоичныхДанныхИзФайла(Новый ОписаниеОповещения("ДДЗавершение",ЭтаФорма,ДопПараметры),ДопПараметры.ВыбранноеИмяФайла);   
КонецПроцедуры

&НаСервере
Процедура ДДЗавершение(ДД,ДопПараметры) Экспорт 
        _Объект = РеквизитФормыВЗначение("Объект");
        _Объект.Файл = Новый ХранилищеЗначения(ДД,Новый СжатиеДанных(9));
        _Объект.Наименование = ДопПараметры.ИмяБезРасширения;
        _Объект.Розширення = ДопПараметры.Расширение;
        _Объект.Записать();
        ЗначениеВРеквизитФормы(_Объект,"Объект");
КонецПроцедуры

&НаКлиенте
Процедура Вивантажити(Команда)     
        Если ЭтаФорма.Модифицированность Тогда 
                Сообщить("З початку потрібно зберегти об'єкт");
                Возврат;
        КонецЕсли;
       
        ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
        ДиалогСохраненияФайла.Заголовок = "Зберегти файл"; 
        ДиалогСохраненияФайла.Показать(Новый ОписаниеОповещения("ПослеЗавершенияИзвлечения",ЭтаФорма));
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗавершенияИзвлечения(СписокФайлов,ДопПараметры) Экспорт 
        ДД = ПолучитьФайл();
       
        Если ДД = Неопределено Или ТипЗнч(ДД) <> Тип("ДвоичныеДанные") Тогда 
                Сообщить("Помилка при зберіганні");
                Возврат;
        КонецЕсли;
       
        Путь = СписокФайлов[0] +"\"+ Объект.Наименование + Объект.Розширення;             
        ДД.НачатьЗапись(Новый ОписаниеОповещения("ДДНачалоЗапись",ЭтаФорма),Путь); 
        ПоказатьПредупреждение(Новый ОписаниеОповещения("ПоказатьПредупреждениеПриЗавершении",ЭтаФорма),"Збережено по шляху " + Путь,,"Увага");
КонецПроцедуры

&НаСервере
Функция ПолучитьФайл()
        Возврат Объект.Ссылка.Файл.Получить();
КонецФункции

&НаКлиенте
Процедура ПоказатьПредупреждениеПриЗавершении(ДопПараметры) Экспорт 
КонецПроцедуры

&НаКлиенте
Процедура ДДНачалоЗапись(ДопПараметры) Экспорт   
КонецПроцедуры

Отбор в выпадающем списке

Задача: “сделать, чтобы при выпадающем списке не показывало одно значение перечисление”

Добавить реквизит на форму








&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
                       
            Запрос = Новый Запрос;
            Запрос.Текст =
                        "ВЫБРАТЬ
                        |           Инт_ВидыОперацийЗаявкаНаПеревозку.Ссылка
                        |ИЗ
                        |           Перечисление.Инт_ВидыОперацийЗаявкаНаПеревозку КАК Инт_ВидыОперацийЗаявкаНаПеревозку
                        |ГДЕ
                        |           Инт_ВидыОперацийЗаявкаНаПеревозку.Ссылка <> ЗНАЧЕНИЕ(Перечисление.Инт_ВидыОперацийЗаявкаНаПеревозку.Перемещение)";
           
Элементы.инт_ВидОперации.СписокВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
           
           
КонецПроцедуры

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

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

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

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