Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обрезка предложения в 1с

    • #1
    • 18.06.2014 16:01
    0
    Добрый день! Я новичок в программировании. Поэтому вопрос
    Как обрезать предложения до скобок. Например, вид расчета Премия месячная(разовая) а в печатную форму надо чтобы выводилось Премия месячная.
    В макете есть параметр Расчет строки, находится в ОбластиМаектаШапка
    в запросе написано,
    ПремииРаботниковОрганизации.ВидРасчета.Наименование КАК РасчетСтрокой
    • #2
    • 18.06.2014 16:27
    0
    Если совсем без программирования, то просто переименовать соответствующий элемент Плана видов расчета
    • #3
    • 18.06.2014 16:33
    +1
    Для данного конкретного случая примера можно так:
    РасчетСтрокой = СтрЗаменить(РасчетСтрокой, "(разовая)", "");


    Можно "вырезать" строку до скобки:
    ПозицияСкобки = Найти(РасчетСтрокой, "(");
    РасчетСтрокой = Лев(РасчетСтрокой, ПозицияСкобки-1);


    Еще масса вариантов.
    • #4
    • 18.06.2014 21:23
    0
    Спасибо! Переименовать не вариант.
    До слова "разовая" тоже, есть премия месячная,например
    А вот когда пишешь код ругается объект РасчетСтрокой не определен, я так тоже пробовала.... Поэтому и кинулась на форум.
    Всем спасибо за отклики....
    • #5
    • 18.06.2014 22:19
    • Отредактировано: 18.06.2014 22:19:29
    0
    anastasya06
    А вот когда пишешь код ругается объект РасчетСтрокой


    Я привел лишь пример как отсечь не нужное, а не готовое решение для Вас. Естественно если Вы получаете данные из запроса, например, будет:
    ПозицияСкобки = Найти(РасчетСтрокой, "(");
    РасчетСтрокой = Лев(Выборка.РасчетСтрокой, ПозицияСкобки-1);

    Выборка - здесь выборка из результата выполнения запроса, у Вас он может называться по другому. Я думал об этом Вы уже в курсе...
    • #6
    • 19.06.2014 11:11
    0
    Добрый день!
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.РасчетСтрокой = ВидРасчета;
    Если Найти(НРег(ВидРасчета),"(")>0 Тогда
    СтрокаРезультат = Лев(ВидРасчета,Найти(ВидРасчета,"(")-1);
    Иначе
    СтрокаРезультат = ВидРасчета;

    Скобки не убираются.............. где ошибка ((((
    • #7
    • 19.06.2014 11:15
    • Отредактировано: 19.06.2014 11:16:24
    0
    Надо так:
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    
    Если Найти(НРег(ВидРасчета),"(")>0 Тогда
    СтрокаРезультат = Лев(ВидРасчета,Найти(ВидРасчета,"(")-1);
    Иначе
    СтрокаРезультат = ВидРасчета;
    КонецЕсли;
    ОбластьМакета.Параметры.РасчетСтрокой = СтрокаРезультат ;
    • #8
    • 19.06.2014 11:23
    0
    Не а не обрезает...
    • #9
    • 19.06.2014 11:25
    0
    Ну здесь у вас непонятно, что такое "ВидРасчета" и вообще выводится ли потом область макета
    • #10
    • 19.06.2014 11:51
    0
    Функция СформироватьЗапросДляПечати(Режим)

    Запрос = Новый Запрос;

    // Установим параметры запроса
    Запрос.УстановитьПараметр("ДокументСсылка", Ссылка);
    Запрос.УстановитьПараметр("ДатаДокумента", Дата);

    Если Режим = "ПоРеквизитамДокумента" Тогда

    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос.УстановитьПараметр("СтруктурнаяЕдиница",Организация);

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

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

    ИначеЕсли Режим = "ПоТабличнойЧастиДокумента" Тогда

    Запрос.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначенияЗК.ГоловнаяОрганизация(Организация));

    Запрос.Текст =
    "ВЫБРАТЬ
    | ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, ПремииРаботниковОрганизацииНачисления.Сотрудник.Наименование) КАК Работник,
    | ПремииРаботниковОрганизацииНачисления.Физлицо.Пол,
    | ВЫБОР
    | КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаДокумента
    | И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    | ТОГДА РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизацииЗавершения.Наименование
    | ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации.Наименование
    | КОНЕЦ КАК ПодразделениеРаботника,
    | ВЫБОР
    | КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаДокумента
    | И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    | ТОГДА РаботникиОрганизацииСрезПоследних.ДолжностьЗавершения.Наименование
    | ИНАЧЕ РаботникиОрганизацииСрезПоследних.Должность.Наименование
    | КОНЕЦ КАК Должность,
    | ПремииРаботниковОрганизацииНачисления.Показатель1,
    | ПремииРаботниковОрганизацииНачисления.Показатель2,
    | ПремииРаботниковОрганизацииНачисления.Показатель3,
    | ПремииРаботниковОрганизацииНачисления.Показатель4,
    | ПремииРаботниковОрганизацииНачисления.Показатель5,
    | ПремииРаботниковОрганизацииНачисления.Показатель6,
    | ПремииРаботниковОрганизацииНачисления.Результат КАК Величина,
    | ПремииРаботниковОрганизацииНачисления.Сотрудник.Код КАК ТабельныйНомер
    |ИЗ
    | Документ.ПремииРаботниковОрганизаций.Начисления КАК ПремииРаботниковОрганизацииНачисления
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
    | &ДатаДокумента,
    | Сотрудник В
    | (ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ПремииРаботниковОрганизацииНачисления.Сотрудник
    | ИЗ
    | Документ.ПремииРаботниковОрганизаций.Начисления КАК ПремииРаботниковОрганизацииНачисления
    | ГДЕ
    | ПремииРаботниковОрганизацииНачисления.Ссылка = &ДокументСсылка)) КАК РаботникиОрганизацииСрезПоследних
    | ПО ПремииРаботниковОрганизацииНачисления.Сотрудник = РаботникиОрганизацииСрезПоследних.Сотрудник
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
    | &ДатаДокумента,
    | Физлицо В
    | (ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ПремииРаботниковОрганизацииНачисления.Сотрудник.Физлицо
    | ИЗ
    | Документ.ПремииРаботниковОрганизаций.Начисления КАК ПремииРаботниковОрганизацииНачисления
    | ГДЕ
    | ПремииРаботниковОрганизацииНачисления.Ссылка = &ДокументСсылка)) КАК ФИОФизЛиц
    | ПО ПремииРаботниковОрганизацииНачисления.Сотрудник.Физлицо = ФИОФизЛиц.ФизЛицо
    |ГДЕ
    | ПремииРаботниковОрганизацииНачисления.Ссылка = &ДокументСсылка
    | И (НЕ ПремииРаботниковОрганизацииНачисления.Сторно)
    |
    |УПОРЯДОЧИТЬ ПО
    | ПремииРаботниковОрганизацииНачисления.НомерСтроки";

    Иначе
    Возврат Неопределено;

    КонецЕсли;

    Возврат Запрос.Выполнить();

    КонецФункции // СформироватьЗапросДляПечати()
    • #11
    • 19.06.2014 11:52
    0
    Функция ПечатьТ11а()

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ПолеСлева = 0;
    ТабДокумент.ПолеСправа = 0;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПремииРаботниковОрганизации_Т11а";
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;

    // получаем данные для печати
    ВыборкаДляШапкиИПодвала = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать();
    ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать();

    // подсчитываем количество страниц документа - для корректного разбиения на страницы
    ВсегоСтрокДокумента = ВыборкаРаботники.Количество();

    // запоминаем области макета
    Макет = ПолучитьМакет("Т11а");
    ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); // Шапка документа.
    ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ПовторятьПриПечати"); // повторяющаяся шапка страницы
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");// Подвал документа
    ОбластьМакета = Макет.ПолучитьОбласть("Строка"); // строка работника
    ВыводитьИтоги = Ложь;

    // массив с двумя строками - для разбиения на страницы
    ВыводимыеОбласти = Новый Массив();
    ВыводимыеОбласти.Добавить(ОбластьМакета);

    // выводим данные о руководителях организации

    Если ВыборкаДляШапкиИПодвала.Следующий() Тогда
    ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Шапка документа.
    ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
    ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Для подвала

    КонецЕсли;

    // Начинаем формировать выходной документ
    ТабДокумент.Вывести(ОбластьМакетаШапка); // Шапка документа.
    ВыведеноСтрок = 0;
    ПодИтогСтраницы = 0;
    ИтогДокумента = 0;
    // выводим строки по работникам
    Пока ВыборкаРаботники.Следующий() Цикл

    // Данные по работнику.
    ОбластьМакета.Параметры.Заполнить(ВыборкаРаботники);

    РезультатСклонения = "";
    Если УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО"), ВыборкаРаботники.Работник, 4,ВыборкаРаботники.ФизЛицоПол, РезультатСклонения) Тогда
    ОбластьМакета.Параметры.Работник = РезультатСклонения
    КонецЕсли;

    ПодИтогСтраницы = ПодИтогСтраницы + ВыборкаРаботники.Величина;
    ИтогДокумента = ИтогДокумента + ВыборкаРаботники.Величина;


    //уберем из табельного номера префикс
    ОбластьМакета.Параметры.ТабельныйНомер = ВыборкаРаботники.ТабельныйНомер;

    // разбиение на страницы
    ВыведеноСтрок = ВыведеноСтрок + 1;

    // Проверим, уместится ли строка на странице или надо открывать новую страницу
    ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
    Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
    ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
    ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
    КонецЕсли;
    Если ВывестиПодвалЛиста Тогда
    ПодИтогСтраницы = 0;
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    ТабДокумент.Вывести(ПовторятьПриПечатиСтроки);
    КонецЕсли;

    ТабДокумент.Вывести(ОбластьМакета);

    КонецЦикла;

    // если не было ни одного работника - выводим пустой бланк
    ВыводимыеОбласти = Новый Массив();
    ВыводимыеОбласти.Добавить(ОбластьМакета);
    ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
    Для Сч = 1 По ОбластьМакета.Параметры.Количество() Цикл
    ОбластьМакета.Параметры.Установить(Сч - 1,"");
    КонецЦикла;
    ОбластьМакета.Параметры.Работник = " " + Символы.ПС + " ";
    Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
    ТабДокумент.Вывести(ОбластьМакета);
    КонецЦикла;

    // выводим предварительно подготовленный Подвал документа.
    ТабДокумент.Вывести(ОбластьМакетаПодвал);

    Возврат ТабДокумент;

    КонецФункции // ПечатьТ11а()
    • #12
    • 19.06.2014 11:52
    0
    Вроде все просто))))) В макете есть поле Шапка там параметр РасчетСтрокой..............
    • #13
    • 19.06.2014 12:04
    0
    Вот это:
    Если ВыборкаДляШапкиИПодвала.Следующий() Тогда 
    ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Шапка документа.
    ОбластьМакетаШапка.Параметры.НазваниеОрганизации	= СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
    ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Для подвала
    
    КонецЕсли;
    

    Попробуйте заменить вот этим:
    Если ВыборкаДляШапкиИПодвала.Следующий() Тогда 
    ВР=ВыборкаДляШапкиИПодвала.РасчетСтрокой;
    Поз=Найти(ВР,"(");
    Если Поз>0 Тогда
    СтрокаРезультат = Лев(ВР,Поз-1);
    Иначе
    СтрокаРезультат = ВР;
    КонецЕсли;
    ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Шапка документа.
    ОбластьМакетаШапка.Параметры.РасчетСтрокой = СтрокаРезультат ;
    ОбластьМакетаШапка.Параметры.НазваниеОрганизации	= СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
    ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Для подвала
    КонецЕсли;
    
    • #14
    • 19.06.2014 12:55
    0
    УРАААААААААААААААААААААААААААААААААААААААААААААААААААА
    Вы гений))))))))))))))))))))))))))))))))))))))))))))))))))))))
    • #15
    • 19.06.2014 12:55
    0
    СПАСИБО))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Яндекс-директ
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться