Имя: Пароль:
1C
1С v8
Пропуск незаполненного значения
, , ,
0 noooobok
 
16.06.15
16:41
Здравствуйте! 1с 8.2 упп

Есть докумет с макетом.
В модуле объекта строка кода

"ВсеДокументы = Строка(ВсеДокументы) + Строка(СтрокаДок.РасходнаяНакладная.Номер) + ", " + Строка(СтрокаДок.РасходнаяНакладная.ДокументРТУ.Номер) + ", " ;"

дает такой результат:
ТН по форме ТОРГ-12: 000295,            , 000296,            , 000297,            , 000298,            , 000299, ХЛБ00000026, 000300, ХЛБ00000027, 000301, ХЛБ00000028, 000302,            , 000303,            , 000304, ХЛБ00000029, 000305, ХЛБ00000030, 000306, ХЛБ00000031, 000307,            ,      

Суть в следующем: Есть документы РН(расх накладная) и РТУ(реализация товаров и услуг). РТУ в свою очередь является реквизитом РН.

Что требуется вывести в итоге: если значение РТУ не заполнено, то в макете предоставляется номер РН, иначе выводится номер РТУ.

По сути почти получилось :)

Пробовал пофиксить так:

Если ЗначениеЗаполнено(СтрокаДок.РасходнаяНакладная.ДокументРТУ.Номер) Тогда
ВсеДокументы = Строка(ВсеДокументы)+ Строка(СтрокаДок.РасходнаяНакладная.ДокументРТУ.Номер) + ", ";
Иначе
ВсеДокументы = Строка(ВсеДокументы)+ Строка(СтрокаДок.РасходнаяНакладная.Номер) + ", ";
КонецЕсли;

но на выходе лишняя инфа появляется. Видимо не совсем корректно
задал условие в КОГДА .... ИНАЧЕ.

Подкиньте идею как допилить это, спасибо.
1 noooobok
 
16.06.15
16:50
Доп. инфо: в результате на выходе

ТН по форме ТОРГ-12: 000295,            , 000296,            , 000297,            , 000298,            , 000299, ХЛБ00000026, 000300, ХЛБ00000027, 000301, ХЛБ00000028, 000302,            , 000303,            , 000304, ХЛБ00000029, 000305, ХЛБ00000030, 000306, ХЛБ00000031, 000307,            ,


значения вида 000295 - это рн, ХЛБ00000026 - это рту
2 Stepankov Sergei
 
16.06.15
16:58
А чем первый результат от второго отличается? те же пробелы... Их нужно убрать?
3 Dmitriy_76
 
16.06.15
17:02
сокрЛП() юзай
4 bootini
 
16.06.15
17:03
(0)СтрокаДок.РасходнаяНакладная пустая тоже
5 noooobok
 
16.06.15
17:03
Видимо криво объяснил.
из моего примера 000299, ХЛБ00000026.
000299 это номер РН. ХЛБ00000026 это номер РТУ.
Если есть РТУ, то только он один должен выводиться. РН в данном случае не должен.
В идеале должно быть так:

ТН по форме ТОРГ-12: 000295,000296, 000297, 000298, ХЛБ00000026, ХЛБ00000027, ХЛБ00000028, 000302, 000303, ХЛБ00000029, ХЛБ00000030, ХЛБ00000031, 000307
6 Dmitriy_76
 
16.06.15
17:08
(5)
?(значениеЗаполнено(НомерРТУ),НомерРТУ,НомерРН)
7 bootini
 
16.06.15
17:25
Если ЗначениеЗаполнено(СтрокаДок.РасходнаяНакладная.ДокументРТУ.Номер) Тогда
ВсеДокументы = Строка(ВсеДокументы)+ Строка(СтрокаДок.РасходнаяНакладная.ДокументРТУ.Номер) + ", ";
ИначеЕсли ЗначениеЗаполнено(СтрокаДок.РасходнаяНакладная.Номер) Тогда
ВсеДокументы = Строка(ВсеДокументы)+ Строка(СтрокаДок.РасходнаяНакладная.Номер) + ", ";
иначе
КонецЕсли;
8 noooobok
 
17.06.15
08:04
(7)

результат такой:

ТН по форме ТОРГ-12: 000295,            , 000295, 000296,            , 000296, 000297,            , 000297, 000298,            , 000298, 000299, ХЛБ00000026, ХЛБ00000026, 000300, ХЛБ00000027, ХЛБ00000027, 000301, ХЛБ00000028, ХЛБ00000028, 000302,            , 000302, 000303,            , 000303, 000304, ХЛБ00000029, ХЛБ00000029, 000305, ХЛБ00000030, ХЛБ00000030, 000306, ХЛБ00000031, ХЛБ00000031, 000307,            , 000307,

дублей еще больше
9 noooobok
 
17.06.15
08:10
Пардон, (7) код рабочий. Косяк из-за моей невнимательности.

Спасибо, кто откликнулся!
10 Stepankov Sergei
 
17.06.15
08:12
(6) и (7) соответствует условиям в (5)... Похоже в другом месте ошибка. Покажи больше кода.
11 noooobok
 
17.06.15
08:16
Пока в теме есть народ задам еще вопрос:

можно ли выкинуть из имени часть символов?
например, ХЛБ00000029 будет выводиться как 000029. 4 левых символа убрать
12 Mankubus
 
17.06.15
08:18
(11) Синтаксис:

Прав(<Строка>, <ЧислоСимволов>)
Параметры:

<Строка> (обязательный)

Тип: Строка.
Исходная строка.
<ЧислоСимволов> (обязательный)

Тип: Число.
Количество выбираемых символов.
Возвращаемое значение:

Тип: Строка.
Строка выбранных символов.
Описание:

Выбирает последние справа символы строки.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

// Пусть номер автомобиля в справочнике основных средств задается
// в виде х999хх99, где последние две цифры - код региона.
// Получим код региона из номера.
КодРегиона = Прав(ОсновноеСредство.ГосНомер, 2);
13 Jokero
 
17.06.15
08:21
Если номер содержит кучу пробелов, то ЗначениеЗаполнено(Номер) выдаст истину. isnt it
14 GenAcid
 
17.06.15
08:40
(13) No. It is not.
СП: Для значений типа Строка возвращается Истина, если в строке есть не пробельные символы.
15 noooobok
 
17.06.15
08:50
(12) спасибо.

рабочий вариант выглядит так:

//новый номер РТУ (без приставки ХЛБ)
    НомерРТУ = Прав(СтрокаДок.РасходнаяНакладная.ДокументРТУ.Номер, 6);

    Если ЗначениеЗаполнено(СтрокаДок.РасходнаяНакладная.ДокументРТУ.Номер) Тогда
         ВсеДокументы = Строка(ВсеДокументы)+ Строка(НомерРТУ) + ", ";
    ИначеЕсли ЗначениеЗаполнено(СтрокаДок.РасходнаяНакладная.Номер) Тогда
         ВсеДокументы = Строка(ВсеДокументы)+ Строка(СтрокаДок.РасходнаяНакладная.Номер) + ", ";
    КонецЕсли;


wp guys
Независимо от того, куда вы едете — это в гору и против ветра!