Печатная форма Т-11а

1. amalisheva 17.06.14 10:59 Сейчас в теме
Добрый день! вопрос следующий.Зарплата и Управление Персоналом, редакция 2.5 (2.5.80.2)
Есть документ Премии сотрудников организации. Бухгалтера в виде премий для своей аналитики создали достаточное кол-во видов, например "Премия месячная (бла-бла), Премия месячная (бла-бла-бла), Перемия месячная (бла-бла-бла-бла) и т.д. Кадровая служба хочет чтобы в печатную форму попадала только Премия месячная, без (бла-бла)........
Вопрос как написать в коде, чтобы на печать выводилось только до скобки......

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


Расчет строкой в макете Т-11а есть параметр.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. platon_ 10 17.06.14 11:08 Сейчас в теме
потом идёт построчный анализ строк запроса?
Вот там ловите где наименование вашего расчёта выводится, и отрезайте до скобки через Лев() и Найти()
7. amalisheva 17.06.14 11:37 Сейчас в теме
(2) platon_, Спасибо Вам ОГРОМНОЕ!)))
8. platon_ 10 17.06.14 11:39 Сейчас в теме
(7) amalisheva, но книжки читайте. ну и СП вам в помощь.
3. amalisheva 17.06.14 11:12 Сейчас в теме
Вот это понятно, только я не давно занимаюсь 1с.... что значит отрезайте до скобки через Лев() и Найти() ка это написать кодом...
4. Boneman 298 17.06.14 11:25 Сейчас в теме
(3) amalisheva, прочитайте хоть какую нибудь книжку по программированию 1С.
Это даже не просто основы, а без этого вообще никуда.
Функции работы со строками.
5. amalisheva 17.06.14 11:32 Сейчас в теме
6. platon_ 10 17.06.14 11:33 Сейчас в теме
(5) amalisheva,
	Если Найти(НРег(РасчетСтрокой),"премия месячная")>0 Тогда
		СтрокаРезультат = Лев(РасчетСтрокой,Найти(РасчетСтрокой,"(")-1);	
	КонецЕсли; 
9. amalisheva 17.06.14 11:45 Сейчас в теме
Да я читаю..... Только Вы пишите премия месячная, но есть еще премия годовая, и тоже до скобок....
Так я смогла))) а надо чтобы не прописывать.... а просто предложение а если скобки сразу обрезать....
10. platon_ 10 17.06.14 11:53 Сейчас в теме
(9) amalisheva, ну можно и без этой проверки. это уже моя паранойя) вдруг есть начисления в которых нужно выводить скобки)
11. amalisheva 17.06.14 11:57 Сейчас в теме
Не нет начислений в которых нужно выводить скобки
12. platon_ 10 17.06.14 12:00 Сейчас в теме
(11) amalisheva, ну тогда так)
    Если Найти(НРег(РасчетСтрокой),"(")>0 Тогда
        СтрокаРезультат = Лев(РасчетСтрокой,Найти(РасчетСтрокой,"(")-1);
    Иначе
        СтрокаРезультат = РасчетСтрокой;
    КонецЕсли;
13. amalisheva 17.06.14 12:07 Сейчас в теме
Спасибо... буду пробовать.... что то я основательно запуталась....Спасибо еще раз
14. platon_ 10 17.06.14 12:11 Сейчас в теме
(13) amalisheva, ну будут вопросы пишите) обязательно поможем.
15. amalisheva 17.06.14 12:15 Сейчас в теме
16. amalisheva 19.06.14 11:11 Сейчас в теме
Добрый день вот мой код....

ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.РасчетСтрокой = ВидРасчета;
Если Найти(НРег(ВидРасчета),"(")>0 Тогда
СтрокаРезультат = Лев(ВидРасчета,Найти(ВидРасчета,"(")-1);
Иначе
СтрокаРезультат = ВидРасчета;

Нне подскажите почему скобки не убираются.....
где я ошибаюсь
17. tim06 19.06.14 11:16 Сейчас в теме
(16) amalisheva, Посомтрите в отладчике что возвращает функция НАЙТИ, может она у вас ноль возвращает!
24. platon_ 10 19.06.14 11:52 Сейчас в теме
(16) amalisheva,
надо что бы так было
ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); 
Если Найти(НРег(ВидРасчета),"(")>0 Тогда 
 СтрокаРезультат = Лев(ВидРасчета,Найти(ВидРасчета,"(")-1); 
Иначе 
 СтрокаРезультат = ВидРасчета;
КонецЕсли;
ОбластьМакета.Параметры.РасчетСтрокой = СтрокаРезультат; 
25. amalisheva 19.06.14 11:57 Сейчас в теме
26. platon_ 10 19.06.14 12:00 Сейчас в теме
(25) amalisheva, А почему у вас в запросе СтрокаРезультат, а в коде представленном уже ВидРасчета? там точно строка? если нет то тогда надо получить наименование этого вида расчёта.
18. amalisheva 19.06.14 11:22 Сейчас в теме
Ну да значение не меняется.....
19. tim06 19.06.14 11:23 Сейчас в теме
(18) amalisheva, а в виде расчета полная строка лежит? со скобками?
20. amalisheva 19.06.14 11:34 Сейчас в теме
ага Премия единовременная/разовая (МСК-адм.), надо чтобы было Премия единовременная/разовая
21. tim06 19.06.14 11:47 Сейчас в теме
(20) amalisheva, Ищите не в ВидРасчета.Наименование или в РАСЧЕТСТРОКОЙ
22. platon_ 10 19.06.14 11:48 Сейчас в теме
(20) amalisheva, Строку передачи параметра в область спустите вниз, что бы она уже была ниже преобразования. у вас сейчас сначала передаётся параметр в область, а потом вы производите её изменение.
23. platon_ 10 19.06.14 11:51 Сейчас в теме
(20) amalisheva, и да) придёт модератор будет ругаться) используйте теги кода)
27. amalisheva 19.06.14 12:12 Сейчас в теме
Запрос.Текст =
"ВЫБРАТЬ
.................
ПремииРаботниковОрганизации.ВидРасчета.Наименование КАК РасчетСтрокой,
.............................

В самом макете РасчетСтрокой есть параметр.
Вот я и пишу
ОбластьМакета.Параметры.РасчетСтрокой = ВидРасчета
не так.....
28. amalisheva 19.06.14 12:12 Сейчас в теме
А дальше уже вид расчета пытаюсь обрезать до скобки
29. platon_ 10 19.06.14 12:16 Сейчас в теме
(28) amalisheva, вот смотрите. у вас в запросе РасчетСтрокой. вот там и хранятся данные. их то вам и надо преобразовывать.
отладчиком встаньте и посмотрите что у вас в ВидРасчета.
30. amalisheva 19.06.14 12:20 Сейчас в теме
смотрела Премия разовая (МСК)
31. platon_ 10 19.06.14 12:22 Сейчас в теме
32. amalisheva 19.06.14 12:48 Сейчас в теме
................ это уже сложнее ..... насчет типа)))) Я ж говорю новичок, при том самоучка!!!!!!!!!!!!!!!!
33. platon_ 10 19.06.14 12:58 Сейчас в теме
(32) amalisheva, в отладчике посмотрите значение. он там и тип пишет
34. amalisheva 19.06.14 13:01 Сейчас в теме
Если ВыборкаДляШапкиИПодвала.Следующий() Тогда
ВР=ВыборкаДляШапкиИПодвала.РасчетСтрокой;
Поз=Найти(ВР,"(");
Если Поз>0 Тогда
СтрокаРезультат = Лев(ВР,Поз-1);
Иначе
СтрокаРезультат = ВР;
КонецЕсли;
ОбластьМакетаШапка.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Шапка документа.
ОбластьМакетаШапка.Параметры.РасчетСтрокой = СтрокаРезультат ;
ОбластьМакетаШапка.Параметры.НазваниеОрганизации = СокрЛП(ОбластьМакетаШапка.Параметры.НазваниеОрганизации);
ОбластьМакетаПодвал.Параметры.Заполнить(ВыборкаДляШапкиИПодвала); // Для подвала
КонецЕсли;
35. amalisheva 19.06.14 13:01 Сейчас в теме
так все работает.... Конечно же мне подсказали)))
36. platon_ 10 19.06.14 13:06 Сейчас в теме
(35) amalisheva, ну отлично) главное было адаптировать код под ваши нужды)
37. amalisheva 19.06.14 13:22 Сейчас в теме
Спасибо Вам за возню с таким "поленом" как я))))))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот