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


Добавить реквизит на форму
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Инт_ВидыОперацийЗаявкаНаПеревозку.Ссылка |ИЗ | Перечисление.Инт_ВидыОперацийЗаявкаНаПеревозку КАК Инт_ВидыОперацийЗаявкаНаПеревозку |ГДЕ | Инт_ВидыОперацийЗаявкаНаПеревозку.Ссылка <> ЗНАЧЕНИЕ(Перечисление.Инт_ВидыОперацийЗаявкаНаПеревозку.Перемещение)"; Элементы.инт_ВидОперации.СписокВыбора.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); КонецПроцедуры
Получить ближайшую рабочую дату от произвольной даты
&НаКлиенте Процедура Команда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&amp;url="+Ссылка; ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP"); ХМЛХТТП.Open("GET", Адрес, Ложь); ХМЛХТТП.Send(Null); Возврат СокрЛП(ХМЛХТТП.ResponseText); КонецФункции
3 мар. 2019 г.
7 янв. 2019 г.
Проверить открыта ли форма?
&НаКлиенте
Функция ДокументЗаказНаОтгрузкуОткрыт()
Заказ = ПолучитьЗаказНаОтгрузку(); // Ссылка на заказ
Если Заказ.Пустая() Тогда
Возврат Ложь;
КонецЕсли;
Окна = ПолучитьОкна();
Для Каждого Окно Из Окна Цикл
Если Окно.Заголовок = Строка(Заказ) Тогда
Если Вопрос("Для правильной работы формы контроля, открытый подчиненный документ ""ЗаказНаОтгрузку"" должен быть закрыт. Закрыть документ?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда
Предупреждение("Команда не может быть выполнена, если есть открытый подчиненный документ ""ЗаказНаОтгрузку""");
Возврат Истина; //ошибка
Иначе
Если Окно.Содержимое.Количество() = 0 Тогда
Предупреждение("Ошибка при закрытии подчиненной формы ""ЗаказКлиента""");
Возврат Истина; //ошибка
КонецЕсли;
Форма = Окно.ПолучитьСодержимое();
Если Форма <> Неопределено И ТипЗнч(Форма) = Тип("УправляемаяФорма") Тогда
Форма.Закрыть();
КонецЕсли;
Возврат Ложь; //открытая форма закрыта
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат Ложь; //открытая форма не найдена
КонецФункции
Подписаться на:
Сообщения (Atom)