-
0
Добрый день! Я новичок в программировании. Поэтому вопрос
Как обрезать предложения до скобок. Например, вид расчета Премия месячная(разовая) а в печатную форму надо чтобы выводилось Премия месячная.
В макете есть параметр Расчет строки, находится в ОбластиМаектаШапка
в запросе написано,
ПремииРаботниковОрганизации.ВидРасчета.Наименование КАК РасчетСтрокой
-
0
Если совсем без программирования, то просто переименовать соответствующий элемент Плана видов расчета
-
+1
Для данного конкретного случая примера можно так:
РасчетСтрокой = СтрЗаменить(РасчетСтрокой, "(разовая)", "");
Можно "вырезать" строку до скобки:
ПозицияСкобки = Найти(РасчетСтрокой, "(");
РасчетСтрокой = Лев(РасчетСтрокой, ПозицияСкобки-1);
Еще масса вариантов.
-
0
Спасибо! Переименовать не вариант.
До слова "разовая" тоже, есть премия месячная,например
А вот когда пишешь код ругается объект РасчетСтрокой не определен, я так тоже пробовала.... Поэтому и кинулась на форум.
Всем спасибо за отклики....
-
- #5
- 18.06.2014 22:19
-
Отредактировано: 18.06.2014 22:19:29
0
anastasya06
А вот когда пишешь код ругается объект РасчетСтрокой
Я привел лишь пример как отсечь не нужное, а не готовое решение для Вас. Естественно если Вы получаете данные из запроса, например, будет:
ПозицияСкобки = Найти(РасчетСтрокой, "(");
РасчетСтрокой = Лев(Выборка.РасчетСтрокой, ПозицияСкобки-1);
Выборка - здесь выборка из результата выполнения запроса, у Вас он может называться по другому. Я думал об этом Вы уже в курсе...
-
0
Добрый день!
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.РасчетСтрокой = ВидРасчета;
Если Найти(НРег(ВидРасчета),"(")>0 Тогда
СтрокаРезультат = Лев(ВидРасчета,Найти(ВидРасчета,"(")-1);
Иначе
СтрокаРезультат = ВидРасчета;
Скобки не убираются.............. где ошибка ((((
-
- #7
- 19.06.2014 11:15
-
Отредактировано: 19.06.2014 11:16:24
0
Надо так:
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
Если Найти(НРег(ВидРасчета),"(")>0 Тогда
СтрокаРезультат = Лев(ВидРасчета,Найти(ВидРасчета,"(")-1);
Иначе
СтрокаРезультат = ВидРасчета;
КонецЕсли;
ОбластьМакета.Параметры.РасчетСтрокой = СтрокаРезультат ;
-
0
Не а не обрезает...
-
0
Ну здесь у вас непонятно, что такое "ВидРасчета" и вообще выводится ли потом область макета
-
0
Функция СформироватьЗапросДляПечати(Режим)
Запрос = Новый Запрос;
// Установим параметры запроса
Запрос.УстановитьПараметр("ДокументСсылка", Ссылка);
Запрос.УстановитьПараметр("ДатаДокумента", Дата);
Если Режим = "ПоРеквизитамДокумента" Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("СтруктурнаяЕдиница",Организация);
Запрос.Текст = ФормированиеПечатныхФормЗК.ПолучитьТекстЗапросаПоОтветственнымЛицам(
"ДатаДокумента",
"ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)
|И СтруктурнаяЕдиница = &СтруктурнаяЕдиница");
Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| ПремииРаботниковОрганизации.Дата КАК ДатаДок,
| ПремииРаботниковОрганизации.Номер КАК НомерДок,
| ПремииРаботниковОрганизации.Организация.НаименованиеПолное КАК НазваниеОрганизации,
| ПремииРаботниковОрганизации.Организация.КодПоОКПО КАК КодПоОКПО,
| ОтветственныеЛицаОрганизаций.Должность КАК ДолжностьРуководителя,
| ОтветственныеЛицаОрганизаций.НаименованиеОтветственногоЛица КАК ФИОРуководителя,
| ПремииРаботниковОрганизации.ВидРасчета.Наименование КАК РасчетСтрокой,
| ПремииРаботниковОрганизации.Организация.Префикс
|ИЗ
| Документ.ПремииРаботниковОрганизаций КАК ПремииРаботниковОрганизации
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбОтветственномЛице КАК ОтветственныеЛицаОрганизаций
| ПО (ИСТИНА)
|ГДЕ
| ПремииРаботниковОрганизации.Ссылка = &ДокументСсылка";
ИначеЕсли Режим = "ПоТабличнойЧастиДокумента" Тогда
Запрос.УстановитьПараметр("ГоловнаяОрганизация", ОбщегоНазначенияЗК.ГоловнаяОрганизация(Организация));
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, ПремииРаботниковОрганизацииНачисления.Сотрудник.Наименование) КАК Работник,
| ПремииРаботниковОрганизацииНачисления.Физлицо.Пол,
| ВЫБОР
| КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаДокумента
| И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизацииЗавершения.Наименование
| ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации.Наименование
| КОНЕЦ КАК ПодразделениеРаботника,
| ВЫБОР
| КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &ДатаДокумента
| И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА РаботникиОрганизацииСрезПоследних.ДолжностьЗавершения.Наименование
| ИНАЧЕ РаботникиОрганизацииСрезПоследних.Должность.Наименование
| КОНЕЦ КАК Должность,
| ПремииРаботниковОрганизацииНачисления.Показатель1,
| ПремииРаботниковОрганизацииНачисления.Показатель2,
| ПремииРаботниковОрганизацииНачисления.Показатель3,
| ПремииРаботниковОрганизацииНачисления.Показатель4,
| ПремииРаботниковОрганизацииНачисления.Показатель5,
| ПремииРаботниковОрганизацииНачисления.Показатель6,
| ПремииРаботниковОрганизацииНачисления.Результат КАК Величина,
| ПремииРаботниковОрганизацииНачисления.Сотрудник.Код КАК ТабельныйНомер
|ИЗ
| Документ.ПремииРаботниковОрганизаций.Начисления КАК ПремииРаботниковОрганизацииНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(
| &ДатаДокумента,
| Сотрудник В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПремииРаботниковОрганизацииНачисления.Сотрудник
| ИЗ
| Документ.ПремииРаботниковОрганизаций.Начисления КАК ПремииРаботниковОрганизацииНачисления
| ГДЕ
| ПремииРаботниковОрганизацииНачисления.Ссылка = &ДокументСсылка)) КАК РаботникиОрганизацииСрезПоследних
| ПО ПремииРаботниковОрганизацииНачисления.Сотрудник = РаботникиОрганизацииСрезПоследних.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| Физлицо В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПремииРаботниковОрганизацииНачисления.Сотрудник.Физлицо
| ИЗ
| Документ.ПремииРаботниковОрганизаций.Начисления КАК ПремииРаботниковОрганизацииНачисления
| ГДЕ
| ПремииРаботниковОрганизацииНачисления.Ссылка = &ДокументСсылка)) КАК ФИОФизЛиц
| ПО ПремииРаботниковОрганизацииНачисления.Сотрудник.Физлицо = ФИОФизЛиц.ФизЛицо
|ГДЕ
| ПремииРаботниковОрганизацииНачисления.Ссылка = &ДокументСсылка
| И (НЕ ПремииРаботниковОрганизацииНачисления.Сторно)
|
|УПОРЯДОЧИТЬ ПО
| ПремииРаботниковОрганизацииНачисления.НомерСтроки";
Иначе
Возврат Неопределено;
КонецЕсли;
Возврат Запрос.Выполнить();
КонецФункции // СформироватьЗапросДляПечати()
-
0
Функция ПечатьТ11а()
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ПолеСлева = 0;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПремииРаботниковОрганизации_Т11а";
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
// получаем данные для печати
ВыборкаДляШапкиИПодвала = СформироватьЗапросДляПечати("ПоРеквизитамДокумента").Выбрать();
ВыборкаРаботники = СформироватьЗапросДляПечати("ПоТабличнойЧастиДокумента").Выбрать();
// подсчитываем количество страниц документа - для корректного разбиения на страницы
ВсегоСтрокДокумента = ВыборкаРаботники.Количество();
// запоминаем области макета
Макет = ПолучитьМакет("Т11а");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); // Шапка документа.
ПовторятьПриПечатиСтроки = Макет.ПолучитьОбласть("ПовторятьПриПечати"); // повторяющаяся шапка страницы
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");// Подвал документа
ОбластьМакета = Макет.ПолучитьОбласть("Строка"); // строка работника
ВыводитьИтоги = Ложь;
// массив с двумя строками - для разбиения на страницы
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакета);
// выводим данные о руководителях организации
Если ВыборкаДляШапкиИПодвала.Следующий() Тогда
ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Шапка документа.
ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Для подвала
КонецЕсли;
// Начинаем формировать выходной документ
ТабДокумент.Вывести(ОбластьМакетаШапка); // Шапка документа.
ВыведеноСтрок = 0;
ПодИтогСтраницы = 0;
ИтогДокумента = 0;
// выводим строки по работникам
Пока ВыборкаРаботники.Следующий() Цикл
// Данные по работнику.
ОбластьМакета.Параметры.Заполнить(ВыборкаРаботники);
РезультатСклонения = "";
Если УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной("глКомпонентаСклоненияФИО"), ВыборкаРаботники.Работник, 4,ВыборкаРаботники.ФизЛицоПол, РезультатСклонения) Тогда
ОбластьМакета.Параметры.Работник = РезультатСклонения
КонецЕсли;
ПодИтогСтраницы = ПодИтогСтраницы + ВыборкаРаботники.Величина;
ИтогДокумента = ИтогДокумента + ВыборкаРаботники.Величина;
//уберем из табельного номера префикс
ОбластьМакета.Параметры.ТабельныйНомер = ВыборкаРаботники.ТабельныйНомер;
// разбиение на страницы
ВыведеноСтрок = ВыведеноСтрок + 1;
// Проверим, уместится ли строка на странице или надо открывать новую страницу
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
КонецЕсли;
Если ВывестиПодвалЛиста Тогда
ПодИтогСтраницы = 0;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ПовторятьПриПечатиСтроки);
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
// если не было ни одного работника - выводим пустой бланк
ВыводимыеОбласти = Новый Массив();
ВыводимыеОбласти.Добавить(ОбластьМакета);
ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
Для Сч = 1 По ОбластьМакета.Параметры.Количество() Цикл
ОбластьМакета.Параметры.Установить(Сч - 1,"");
КонецЦикла;
ОбластьМакета.Параметры.Работник = " " + Символы.ПС + " ";
Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
// выводим предварительно подготовленный Подвал документа.
ТабДокумент.Вывести(ОбластьМакетаПодвал);
Возврат ТабДокумент;
КонецФункции // ПечатьТ11а()
-
0
Вроде все просто))))) В макете есть поле Шапка там параметр РасчетСтрокой..............
-
0
Вот это:
Если ВыборкаДляШапкиИПодвала.Следующий() Тогда
ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Шапка документа.
ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Для подвала
КонецЕсли;
Попробуйте заменить вот этим:
Если ВыборкаДляШапкиИПодвала.Следующий() Тогда
ВР=ВыборкаДляШапкиИПодвала.РасчетСтрокой;
Поз=Найти(ВР,"(");
Если Поз>0 Тогда
СтрокаРезультат = Лев(ВР,Поз-1);
Иначе
СтрокаРезультат = ВР;
КонецЕсли;
ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Шапка документа.
ОбластьМакетаШапка.Параметры.РасчетСтрокой = СтрокаРезультат ;
ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Для подвала
КонецЕсли;
-
0
УРАААААААААААААААААААААААААААААААААААААААААААААААААААА
Вы гений))))))))))))))))))))))))))))))))))))))))))))))))))))))
-
0
СПАСИБО))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))