Взято с интернета.
Число=1.1; ЧислоОкр=Окр(Число + 0.5, 0, РежимОкругления.Окр15как10);
Простыми словами о сложном
Взято с интернета.
Число=1.1; ЧислоОкр=Окр(Число + 0.5, 0, РежимОкругления.Окр15как10);
// Процедура СтрокаВДату преобразует строку в дату по шаблону форматной строки//// Параметры// Строка - строка, содержащая дату,// ФорматДаты - форматная строка вида:// [dd MM yy]// [yy-MM-dd HH:mm]// [dd MM yy HH mm ss]// [dd MM yyyy]// [MM dd, yyyy, HH:mm]// [dd.MM.yy]// [MM, dd, yyyy]// [yyyyMMdd]// [HH-mm-ss, dd-MM-yy]// [dd]// [dd MM HH:mm:ss yyyy]// [HH:mm:ss]// [HH:mm]// [yyyy-MM-dd HH:mm:ss]// [yyyy-MM-dd]// [yyyy/MM/dd]// [dd/MM/yy]// [MM dd yyyy]// [yyyy-MM]// [yyyy]// [MM, dd, yyyy]// [dd-MM-yyyy]// [ddMMyyyy]// Функция СтрокаВДату(Знач Строка, Знач ФорматДаты) Экспорт Ч = Новый Соответствие; Для ё = 1 По СтрДлина(ФорматДаты) + 6 Цикл Ч[Сред(ФорматДаты + "dMyHms", ё, 1)] = 0 КонецЦикла; Для ё = 1 По СтрДлина(ФорматДаты) Цикл Ч[Сред(ФорматДаты, ё, 1)] = 10 * Ч[Сред(ФорматДаты, ё, 1)] + Найти("123456789", Сред(Строка, ё, 1)); КонецЦикла; Ч["y"] = Ч["y"] + ?(0 < Ч["y"] И Ч["y"] < 50, 2000, ?(0 < Ч["y"] И Ч["y"] < 100, 1900, 0)); Возврат Дата(Макс(Ч["y"], 1), Макс(Ч["M"],1), Макс(Ч["d"],1), Ч["H"], Ч["m"], Ч["s"]); КонецФункции
Функция взята с интернета.
Функция ПолучитьФамилиюСИнициалами(знач ФИО) ФИОСПереносами = СтрЗаменить(ФИО, " ", Символы.ПС); ЧастиСтроки = Новый Массив; Для Индекс = 1 По СтрЧислоСтрок(ФИОСПереносами) Цикл Стр = СтрПолучитьСтроку(ФИОСПереносами, Индекс); Если ЗначениеЗаполнено(Стр) Тогда ЧастиСтроки.Добавить(СокрЛП(Стр)); КонецЕсли; КонецЦикла; Результат = ""; Если ЧастиСтроки.Количество() > 0 Тогда Результат = Результат + ЧастиСтроки[0]; Если ЧастиСтроки.Количество() > 1 Тогда Результат = Результат + " " + Лев(ЧастиСтроки[1], 1) + "."; Если ЧастиСтроки.Количество() > 2 Тогда Результат = Результат + " " + Лев(ЧастиСтроки[2], 1) + "."; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции
Отправляем в функцию Иванов Иван Иванович в результате получаем Иванов И.И.
Процедура КнопкаВыполнитьНажатие(Кнопка) таб1 = Новый ТабличныйДокумент; таб1.Вывести(ПолучитьМакет("Макет1")); таб1.Показать(); таб2 = Новый ТабличныйДокумент; таб2.Вывести(ПолучитьМакет("Макет2")); таб2.Показать(); таб = Новый ТабличныйДокумент; выс = Макс(таб1.ВысотаТаблицы, таб2.ВысотаТаблицы); обл = ПолучитьМакет("Макет").ПолучитьОбласть("Область1|Область2"); обл1= таб1.ПолучитьОбласть(1,1, выс, таб1.ШиринаТаблицы); обл2= таб2.ПолучитьОбласть(1,1, выс, таб2.ШиринаТаблицы); таб.Вывести(обл1); таб.Присоединить(обл); таб.Присоединить(обл2); таб.Показать(); КонецПроцедуры
&НаКлиенте Функция ВыполнитьФормулуНаСервере() Экспорт Перем Р; Формула = ""; Для Каждого Ф Из ЗаписатьВМассивФормулу Цикл ТекстФормулы = НайтиШаблон(Ф); Если ЗначениеЗаполнено(ТекстФормулы) Тогда Формула = Формула + ТекстФормулы; Иначе Сообщить("Формулу " + Ф + " в списке шаблонов не найдено"); КонецЕсли; КонецЦикла; Выполнить("Р=" +Формула); Возврат Р; КонецФункции"Секрет" в том, что функция Выполнить() должна возвращать какое то значение,
&НаСервере Процедура Команда1НаСервере() //Список - это динамический список на форме списка справочника Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(Схема,Настройки); КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) //посмотреть запрос динамического списка Команда1НаСервере(); КонецПроцедурыСтавим точку останова на Макет, а далее Макет.НаборыДанных.НаборДанныхДинамическогоСписка.Запрос
// Функция "расщепляет" строку на подстроки, используя заданный // разделитель. Разделитель может иметь любую длину. // Если в качестве разделителя задан пробел, рядом стоящие пробелы // считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр // игнорируются. // Например, // РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов, // три из которых - пустые строки, а // РазложитьСтрокуВМассивПодстрок(" ку му", " ") возвратит массив значений из двух элементов // // Параметры: // Стр - строка, которую необходимо разложить на подстроки. // Параметр передается по значению. // Разделитель - строка-разделитель, по умолчанию - запятая. // // // Возвращаемое значение: // массив значений, элементы которого - подстроки // Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции// глРазложить
В результате на клиенте получим не ТЗ, а Структура, если отправим в эту функцию ТЗ.
Функция была взята из интернета.
Функция ТаблицаЗначенийВМассивСтруктур(ТЗ) // Создаем список имен колонок МассивИменКолонок = Новый Массив; Для Каждого ТекКолонка Из ТЗ.Колонки Цикл МассивИменКолонок.Добавить(ТекКолонка.Имя); КонецЦикла; МассивСтруктур = Новый Массив; // перебираем строки ТЗ и обращаемся к колонкам по списку Для Каждого ТекСтр Из ТЗ Цикл СтруктураСтроки = Новый Структура; Для Каждого ТекКол Из МассивИменКолонок Цикл СтруктураСтроки.Вставить(ТекКол, ТЗ[ТекКол]); КонецЦикла; МассивСтруктур.Добавить(СтруктураСтроки); КонецЦикла; Возврат МассивСтруктур; КонецФункции
Процедура ВхождениеНоменклатурыВОднуИзГруппСписка(Номенклатура) Выборка = Справочники.Группы.Выбрать(); Пока Выборка.Следующий() Цикл Если Номенклатура.ПринадлежитЭлементу(Выборка.Группа) Тогда //Номенклатура входит в группу Иначе //Номенклатура не входит в группу КонецЕсли; КонецЦикла КонецПроцедуры
Запрос = Новый Запрос; //заполнение не обязательных параметров запроса Текст_Список_ОТК_Несоответствия = ""; Если Объект.ОТК_Несоответствия.Количество() <> 0 Тогда Список_ОТК_Несоответствия = Новый Массив; Для Каждого Эл Из Объект.ОТК_Несоответствия Цикл Список_ОТК_Несоответствия.Добавить(Эл.Значение); КонецЦикла; Текст_Список_ОТК_Несоответствия = " И ОтчетПроизводстваЗаСменуНесоответствия.Несоответствие В (&Несоответствие)"; Запрос.УстановитьПараметр("Несоответствие",Список_ОТК_Несоответствия); КонецЕсли; //ЗАПРОС Запрос.Текст = "ВЫБРАТЬ | ОтчетПроизводстваЗаСменуТовары.Ссылка.Ссылка КАК Ссылка, | ОтчетПроизводстваЗаСменуТовары.Номенклатура, | ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Номер КАК ОПзС, | ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Заказ.НомерЗаказаУТП КАК НомерЗаказа |ИЗ | Документ.ОтчетПроизводстваЗаСмену.ГрафикРабот КАК ОтчетПроизводстваЗаСменуГрафикРабот | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Товары КАК ОтчетПроизводстваЗаСменуТовары | ПО ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Ссылка = ОтчетПроизводстваЗаСменуТовары.Ссылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.ПричиныОстановки КАК ОтчетПроизводстваЗаСменуПричиныОстановки | ПО ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Ссылка = ОтчетПроизводстваЗаСменуПричиныОстановки.Ссылка.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену.Несоответствия КАК ОтчетПроизводстваЗаСменуНесоответствия | ПО ОтчетПроизводстваЗаСменуГрафикРабот.Ссылка.Ссылка = ОтчетПроизводстваЗаСменуНесоответствия.Ссылка.Ссылка |ГДЕ | ОтчетПроизводстваЗаСменуГрафикРабот.Дата МЕЖДУ &ДатаНач И &ДатаКон | И ОтчетПроизводстваЗаСменуГрафикРабот.Операция = &Отгрузка" +Текст_Список_ОТК_Несоответствия+"; //обязательные параметры запроса Запрос.УстановитьПараметр("ДатаКон", КонецДня(Объект.ДатаКонец)); Запрос.УстановитьПараметр("ДатаНач", НачалоДня(Объект.ДатаНачало)); Запрос.УстановитьПараметр("Отгрузка", Константы.ПроизводствоОперацияОтгрузка.Получить()); //обязательные параметры запроса РезультатЗапроса = Запрос.Выполнить();
CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07