Форма = ПолучитьФорму("РегистрСведений.Долги.ФормаСписка"); ГруппаОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.Использование = Истина; ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ; ЭлементОтбора1 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДокументРаботы"); ЭлементОтбора1.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора1.Использование = Истина; ЭлементОтбора1.ПравоеЗначение = Объект.Ссылка; ЭлементОтбора2 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДокументОснование"); ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора2.Использование = Истина; ЭлементОтбора2.ПравоеЗначение = Объект.Ссылка; Форма.Открыть();
8 июл. 2019 г.
Программное добавление отборов (ИЛИ)
Программное добавление\удаление обязательных для заполнения реквизитов
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) Если ТипЗнч(Грузоотправитель) = Тип("СправочникСсылка.Организации") Тогда ПроверяемыеРеквизиты.Добавить("Бухгалтер"); ПроверяемыеРеквизиты.Добавить("Отпустил"); КонецЕсли; Если инт_СтороннийПеревозчик Тогда ПроверяемыеРеквизиты.Очистить(); ПроверяемыеРеквизиты.Добавить("Грузоотправитель"); ПроверяемыеРеквизиты.Добавить("Подразделение"); ПроверяемыеРеквизиты.Добавить("Дата"); ПроверяемыеРеквизиты.Добавить("Грузополучатель"); КонецЕсли; КонецПроцедуры
Сохранить файлы в ХранилищеЗначений (Сохранение \ Восстановление)
&НаКлиенте Процедура Завантажити(Команда) ИмяФайла = ""; ПутьФайла = ""; НачатьПомещениеФайла(Новый ОписаниеОповещения("ПослеЗавершенияПомещения",ЭтаФорма),ПутьФайла,ИмяФайла,Истина); КонецПроцедуры &НаКлиенте Процедура ПослеЗавершенияПомещения(Результат,Адрес, ВыбранноеИмяФайла,ДопПараметры) Экспорт Если Результат Тогда Файл = Новый Файл(ВыбранноеИмяФайла); ДопПараметры = Новый Структура; ДопПараметры.Вставить("Файл",Файл); ДопПараметры.Вставить("ИмяБезРасширения",Файл.ИмяБезРасширения); ДопПараметры.Вставить("ВыбранноеИмяФайла",ВыбранноеИмяФайла); ДопПараметры.Вставить("Расширение",Файл.Расширение); Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("НачатьПроверкуСуществованияЗавершение",ЭтаФорма,ДопПараметры)) КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НачатьПроверкуСуществованияЗавершение(Существует,ДопПараметры) Экспорт Если Существует Тогда ДопПараметры.Файл.НачатьПолучениеРазмера(Новый ОписаниеОповещения("НачатьПолучениеРазмераЗавершение",ЭтаФорма,ДопПараметры)); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура НачатьПолучениеРазмераЗавершение(Размер, ДопПараметры) Экспорт Если Размер > 10000000 Тогда Сообщить("Розмір файлу не повинен бути більше 10 МБ!"); Объект.Розширення = ""; Объект.Наименование = ""; Возврат; КонецЕсли; ДопПараметры.Удалить("Файл"); НачатьСозданиеДвоичныхДанныхИзФайла(Новый ОписаниеОповещения("ДДЗавершение",ЭтаФорма,ДопПараметры),ДопПараметры.ВыбранноеИмяФайла); КонецПроцедуры &НаСервере Процедура ДДЗавершение(ДД,ДопПараметры) Экспорт _Объект = РеквизитФормыВЗначение("Объект"); _Объект.Файл = Новый ХранилищеЗначения(ДД,Новый СжатиеДанных(9)); _Объект.Наименование = ДопПараметры.ИмяБезРасширения; _Объект.Розширення = ДопПараметры.Расширение; _Объект.Записать(); ЗначениеВРеквизитФормы(_Объект,"Объект"); КонецПроцедуры &НаКлиенте Процедура Вивантажити(Команда) Если ЭтаФорма.Модифицированность Тогда Сообщить("З початку потрібно зберегти об'єкт"); Возврат; КонецЕсли; ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); ДиалогСохраненияФайла.Заголовок = "Зберегти файл"; ДиалогСохраненияФайла.Показать(Новый ОписаниеОповещения("ПослеЗавершенияИзвлечения",ЭтаФорма)); КонецПроцедуры &НаКлиенте Процедура ПослеЗавершенияИзвлечения(СписокФайлов,ДопПараметры) Экспорт ДД = ПолучитьФайл(); Если ДД = Неопределено Или ТипЗнч(ДД) <> Тип("ДвоичныеДанные") Тогда Сообщить("Помилка при зберіганні"); Возврат; КонецЕсли; Путь = СписокФайлов[0] +"\"+ Объект.Наименование + Объект.Розширення; ДД.НачатьЗапись(Новый ОписаниеОповещения("ДДНачалоЗапись",ЭтаФорма),Путь); ПоказатьПредупреждение(Новый ОписаниеОповещения("ПоказатьПредупреждениеПриЗавершении",ЭтаФорма),"Збережено по шляху " + Путь,,"Увага"); КонецПроцедуры &НаСервере Функция ПолучитьФайл() Возврат Объект.Ссылка.Файл.Получить(); КонецФункции &НаКлиенте Процедура ПоказатьПредупреждениеПриЗавершении(ДопПараметры) Экспорт КонецПроцедуры &НаКлиенте Процедура ДДНачалоЗапись(ДопПараметры) Экспорт КонецПроцедуры
Отбор в выпадающем списке
Задача: “сделать, чтобы при выпадающем списке не показывало одно значение перечисление”
Добавить реквизит на форму
Добавить реквизит на форму
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Инт_ВидыОперацийЗаявкаНаПеревозку.Ссылка |ИЗ | Перечисление.Инт_ВидыОперацийЗаявкаНаПеревозку КАК Инт_ВидыОперацийЗаявкаНаПеревозку |ГДЕ | Инт_ВидыОперацийЗаявкаНаПеревозку.Ссылка <> ЗНАЧЕНИЕ(Перечисление.Инт_ВидыОперацийЗаявкаНаПеревозку.Перемещение)"; Элементы.инт_ВидОперации.СписокВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); КонецПроцедуры
Получить ближайшую рабочую дату от произвольной даты
&НаКлиенте Процедура Команда1(Команда) Сообщить(ПолучитьБлижайшуюРабочуюДатуОтИсходнойДаты(ДатаКалендаря)); КонецПроцедуры Функция ПолучитьБлижайшуюРабочуюДатуОтИсходнойДаты(Знач ИсходнаяДата) ИсходнаяДата = НачалоДня(ИсходнаяДата); ИсходнаяДата = ИсходнаяДата + 24 * 60 * 60; Пока Истина Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РегламентированныйПроизводственныйКалендарь.ВидДня |ИЗ | РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь |ГДЕ | РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря"; Запрос.УстановитьПараметр("ДатаКалендаря", ИсходнаяДата); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий") Тогда Возврат ИсходнаяДата; Иначе ИсходнаяДата = НачалоДня(ИсходнаяДата); ИсходнаяДата = ИсходнаяДата + 24 * 60 * 60; КонецЕсли; КонецЦикла; КонецЦикла; КонецФункции
Подписаться на:
Сообщения (Atom)