Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 91
1
1C 8.x

Как отобразить только одно значение результата?

01.08.2017, 15:45. Показов 562. Ответов 4
Метки нет (Все метки)

Здравствуйте, продолжаю решать свою задачу в которой всплывают разные косячки.

На данный момент при получении результата из цикла, в печатной форме в строке основание выводятся два одинаковых значения, а мне надо, чтобы отобразилось только одно, можете подсказать как это сделать, либо куда мне копать?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
ТаблицаРодителей=Новый ТаблицаЗначений;
        ТаблицаРодителей.Колонки.Добавить("Родитель");
        Объект=СсылкаНаОбъект;
        Для каждого Реквизит из СсылкаНаОбъект.Метаданные().Реквизиты цикл
            МетаданныеРеквизита=Метаданные.НайтиПоТипу(ТипЗнч(Объект[Реквизит.Имя]));
            Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) тогда
                Если ЗначениеЗаполнено(Объект[Реквизит.Имя]) тогда
                    ТаблицаРодителей.Добавить().Родитель=Объект[Реквизит.Имя];
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        Для каждого ТабличнаяЧасть из СсылкаНаОбъект.Метаданные().ТабличныеЧасти цикл
            Для каждого Строка из Объект[ТабличнаяЧасть.Имя] цикл
                Для каждого Реквизит из ТабличнаяЧасть.Реквизиты цикл
                    МетаданныеРеквизита=Метаданные.НайтиПоТипу(ТипЗнч(Строка[Реквизит.Имя]));
                    Если МетаданныеРеквизита<>Неопределено И Метаданные.Документы.Содержит(МетаданныеРеквизита) тогда
                        Если ЗначениеЗаполнено(Строка[Реквизит.Имя]) тогда
                            ТаблицаРодителей.Добавить().Родитель=Строка[Реквизит.Имя];
                        КонецЕсли;
                    КонецЕсли;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
        ТаблицаРодителей.Свернуть("Родитель");
                        
        А = "";
        Для каждого Стр из ТаблицаРодителей Цикл
            
        //номер без префикса и начальных нулей
        Если ТипЗнч(Стр.Родитель) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            Если Стр.Родитель.ДокументОснование = Неопределено Тогда
                Сообщить("В основании заказа покупателю не заполнен счёт на оплату покупателю!");
            КонецЕсли;
            НомерБезПрефикса = Стр.Родитель.ДокументОснование.Номер;
        ИначеЕсли ТипЗнч(Стр.Родитель) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") Тогда
            НомерБезПрефикса = Стр.Родитель.РасшифровкаПлатежа[0].Сделка.ДокументОснование.Номер;
        Иначе
            НомерБезПрефикса = Стр.Родитель.Сделка.ДокументОснование.Номер;
 
        КонецЕсли;
        
        Пока Найти(НомерБезПрефикса,"0") <> 1 Цикл
            НомерБезПрефикса = Сред(НомерБезПрефикса,2); //удаляет лидирующие ненули
        КонецЦикла;
 
        НомерБезНулей = НомерБезПрефикса;
        Пока Найти(НомерБезНулей,"0") = 1 Цикл
            НомерБезНулей = Сред(НомерБезНулей,2); //удаляет лидирующие нули
        КонецЦикла;
        
        Если ТипЗнч(Стр.Родитель) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
            Дата = Стр.Родитель.ДокументОснование.Дата;
        ИначеЕсли ТипЗнч(Стр.Родитель) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") Тогда
            Дата = Стр.Родитель.РасшифровкаПлатежа[0].Сделка.ДокументОснование.Дата;
        Иначе
            Дата = Стр.Родитель.Сделка.ДокументОснование.Дата;
        КонецЕсли;
        
        //основание
        В = "№ " + НомерБезНулей + " от " + Формат(Дата,"ДЛФ=Д") + "; ";
            Если Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам
            И Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСчетам Тогда
                А = А+(В);
                ОбластьМакета.Параметры.Основание = А;
            Иначе
            Если ЗначениеЗаполнено(Шапка.Сделка) Тогда
                ОбластьМакета.Параметры.Основание = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка.Сделка, Строка(Шапка.Сделка.Метаданные().Синоним));
            КонецЕсли;
            КонецЕсли;
        КонецЦикла;
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Как отобразить только одно значение результата?  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2017, 15:45
Ответы с готовыми решениями:

Как отправить из формы только одно значение?
подскажите как можно передать один элемент формы отдельно? К примеру так: &lt;form...

Как из JSON строки получить только одно значение?
есть ответ от сервера {&quot;code&quot;:0,&quot;code&quot;:&quot;OK&quot;} я успешно смог это спарсить с помощью JObject.Parse,...

Как выбрать только одно значение используя LINQ?
Здравствуйте. Есть у меня вот такой вопрос, допустим есть класс public Class() { public...

Отобразить значение результата умножения в PHP в HTML
здравствуйте. помогите. как отобразить одно значение умножения из PHP на странице HTML чтоб...

4
1432 / 955 / 335
Регистрация: 16.01.2015
Сообщений: 3,971
01.08.2017, 21:34 2
Neophyte1C, Код отрабатывает верно. Вы же включили вывод основания в цикл:
1C
1
Для каждого Стр из ТаблицаРодителей Цикл //(строка кода 27)
В таблице Родителей две строки - два основания. Либо выносите вывод основания из цикла
1C
1
2
3
4
5
6
7
8
9
Если Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам
            И Шапка.ВедениеВзаиморасчетов <> Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСчетам Тогда
                А = А+(В);
                ОбластьМакета.Параметры.Основание = А;
            Иначе
            Если ЗначениеЗаполнено(Шапка.Сделка) Тогда
                ОбластьМакета.Параметры.Основание = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка.Сделка, Строка(Шапка.Сделка.Метаданные().Синоним));
            КонецЕсли;
            КонецЕсли;
Либо ищите способ определить основание другим способом (например, запросом)
1
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 91
02.08.2017, 10:28  [ТС] 3
polax, а есть ли метод, который проверяет циклом результат цикла и если одинаковые значения, то удалять дубль?
0
1432 / 955 / 335
Регистрация: 16.01.2015
Сообщений: 3,971
02.08.2017, 14:36 4
Neophyte1C, Должен быть метод попроще, но это надо видеть весь код и знать общую задачу. Но, если отталкиваться от приведенного кода, то можно собирать значения Основания в массив. Перед циклом создаете Массив,
В цикле собираете значения основания в созданный массив, по условию неповторяющийся значений и уже после окончания цикла выводите основание в макет из массива. Массив можно заменить на ТЗ. Попробуйте разобраться сами, если не получится, ответить смогу только позже, вечером.
1
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 91
02.08.2017, 14:38  [ТС] 5
polax, спасибо, мне как раз посоветовали сделать через ТЗ и свернуть одинаковые значения, изучаю материал.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2017, 14:38

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как сделать что бы не каждая строка выводилась, а только одно значение?
Как сделать что бы не каждая строка выводилась, а только одно значение using System; using...

Как распарсить строку JSON и получить оттуда только одно значение?
Сервер возвращает мне длинную JSON строку. Из нее мне нужно вытащить только ID. Я сделал так: ...

Вывести только одно значение y и p
что я делаю не так чтобы выводило только одно значение y и p ?????? Помогите пожалуйста! ...

Если только одно значение
Приветствую, господа! Есть задание, которое звучит вот так &quot;вернуть true, если только одно из...

Передается только одно первое значение
Здравствуйте! У меня есть скрипт который выводит список файлов с названием и ajax который передает...

Выборка из БД возвращает только одно значение
Нужно вытянуть из таблицы параметры, а вытаскивает только 1 значение.Нужна помошь:Вот код:Где...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.