Имя: Пароль:
1C
1С v8
Не отображается цена табличной части
,
0 Bon Jovi
 
05.10.20
12:59
Конфигурация: Trade (10.3.29.1) (http://v8.1c.ru/trade/), версия: 8.3.11.2867, обычные формы.
Добрый день. Подскажите пожалуйста в следующем. Почему в табличной части документа Установка цен номенклатуры у номенклатуры нет цены (пусто / по нулям), а если через запрос вывести все поля табличной части, то находится цена? Также если получить объект документа и обратиться в табличной части товары, то в ТЗ выводится такой же результат, как и через запрос.
Например:
ВЫБРАТЬ
    *  
ИЗ
    Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
ГДЕ
    УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка

УПОРЯДОЧИТЬ ПО
    НомерСтроки


*Не получается загрузить фото. https://ibb.co/LNfN1Dj
1 Ёпрст
 
05.10.20
13:18
(0) Дык назначь цену то..
2 Bon Jovi
 
05.10.20
13:21
(1) Документы были созданы кое как программно (до меня). Теперь мне нужно найти документы, в табличной части которых есть позиции с такими пустыми значениями в полях цен. Чтобы именно было видно (отображено в документы при открытии), что пустая строка.
3 Ёпрст
 
05.10.20
13:22
(2) И ? Проблема то в чем ?
4 Bon Jovi
 
05.10.20
13:36
(3) Почему в табличной части документа Установка цен номенклатуры у номенклатуры нет цены (пусто / по нулям), а если через запрос вывести все поля табличной части, то находится цена? Также если получить объект документа и обратиться в табличной части товары, то в ТЗ выводится такой же результат, как и через запрос.
Я же прошу ответить на вопрос, а не прошу решение как было предложено в (1) .
5 Жан Пердежон
 
05.10.20
13:37
(4) там у документа еще табличные части есть, посмотри на них повнимательнее
6 Bon Jovi
 
05.10.20
13:43
(5) Там есть ещё только табличная часть ТипыЦен, которая содержит три поля: ссылку на документ, номер строки и сами типы цен.
7 вым
 
05.10.20
13:48
(4) посмотри не имя полей на форме, а что реально выводится, может не сами поля табличной части, а какие-то расчетные данные
8 Bon Jovi
 
05.10.20
13:51
(7) Скорее всего вы правы. Я думал об этом тоже, но не понимаю, куда рыть, чтобы запросом получить такую информацию
9 вым
 
05.10.20
13:55
(8) да, там на форме отражается таблица значений, в которую выводятся цены, устанавливаемые документом, а не просто напрямую данные табличной части
вот и смотри как они рассчитываются для вывода. все в коде
10 Йохохо
 
05.10.20
13:57
(8) проверьте ТЧ ТипыЦен, по ней создаются колонки
11 Bon Jovi
 
05.10.20
13:59
(10) не согласен. Так как иногда ТЧ ТипыЦен могут вообще отсутствовать в документах
12 Bon Jovi
 
05.10.20
14:00
(9) то есть, при открытии формы документа, происходит вычисления и заполнения полей табличной части товары... Плохо, потому что в таком случае, я понятия не имею как из тысяч документов найти те, в которых таким образом заполняются тч(
13 вым
 
05.10.20
14:01
// Процедура устанавливает колонки табличной часи в требуемом порядке,
// добавляет недостающие колонки, убирает ненужные.
//
Процедура ОбновитьСоставКолонок()

    // Надо расположить все нужные колонки в правильном порядке.
    // Сначала должна идти колонка "Код".
    КолонкиТаблицыЦен = ТаблицаЦен.Колонки;
    ОчереднойНомерКолонки = 1;

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Код");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Артикул");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("Номенклатура");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    ТекущаяКолонка = КолонкиТаблицыЦен.Найти("ХарактеристикаНоменклатуры");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);

    Для Каждого СтрокаТипаЦен Из ТипыЦен Цикл
        Если НЕ ЗначениеЗаполнено(СтрокаТипаЦен.ТипЦен) Тогда
            Продолжить;
        КонецЕсли;

        НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаТипаЦен.ТипЦен];
        Если НомерСоответствияТекущейКолонки = Неопределено Тогда
            НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен.Количество();
            мСоответствиеТиповЦен.Вставить(СтрокаТипаЦен.ТипЦен, мСоответствиеТиповЦен.Количество());
        КонецЕсли;

        // Цена.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("цена" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "цена" + НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2, ДопустимыйЗнак.Неотрицательный), СокрЛП(СтрокаТипаЦен.ТипЦен), 10);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;

        // Способ расчета.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("СпособРасчета" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "СпособРасчета" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("ПеречислениеСсылка.СпособыРасчетаЦены"), "Способ расчета", 8);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;

        // Валюта.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("валюта" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "валюта" + НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.Валюты"), "Валюта", 8);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;

        // Единица измерения.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("единица" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "единица"+НомерСоответствияТекущейКолонки, Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Единица", 8);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;

        // Процент скидки/наценки.
        ТекущаяКолонка = КолонкиТаблицыЦен.Найти("процент" + НомерСоответствияТекущейКолонки);
        Если ТекущаяКолонка = Неопределено Тогда // надо вставить
            КолонкиТаблицыЦен.Вставить(ОчереднойНомерКолонки, "процент"+НомерСоответствияТекущейКолонки, ОбщегоНазначения.ПолучитьОписаниеТиповЧисла(15, 2), "% скидки (наценки)", 8);
            ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
        Иначе
            СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
        КонецЕсли;

    КонецЦикла;

    // Все, что за пределами, надо удалить.
    Для НомерУдаляемойКолонки = ОчереднойНомерКолонки По КолонкиТаблицыЦен.Количество() - 1 Цикл
        КолонкиТаблицыЦен.Удалить(ОчереднойНомерКолонки);
    КонецЦикла;

    ЭлементыФормы.ТаблицаЦен.СоздатьКолонки();

    // Установим недостающие параметры.
    УстановитьНедостающиеПараметры();

КонецПроцедуры // ОбновитьСоставКолонок()
14 вым
 
05.10.20
14:02
(10) истину глаголишь

    Для Каждого СтрокаТипаЦен Из ТипыЦен Цикл
15 Bon Jovi
 
05.10.20
14:03
(13) проверю...
16 Йохохо
 
05.10.20
14:10
(12) запросу то все равно, а вот чтобы показать пользователю вам придется починить/перезаполнить в документах ТЧ ТипыЦен
17 Bon Jovi
 
05.10.20
15:01
(16) к сожалению, вы правы. По крайней мере я уверен в этом на 99%
18 Bon Jovi
 
06.10.20
12:08
Хочу попробовать кое что ещё Не подскажите, как найти все документы, в табличной части которых есть позиции, у которых не заполнены цены типах цен (пустые строки)? Мой метод не совсем походит:
[C]ВЫБРАТЬ
    УстановкаЦенНоменклатурыТовары.Ссылка КАК ДокументУстановкиЦен,
    УстановкаЦенНоменклатурыТовары.ИндексСтрокиТаблицыЦен КАК ИндексСтрокиТаблицыЦен,
    УстановкаЦенНоменклатурыТовары.Номенклатура КАК Номенклатура
ИЗ
    Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары

СГРУППИРОВАТЬ ПО
    УстановкаЦенНоменклатурыТовары.Ссылка,
    УстановкаЦенНоменклатурыТовары.ИндексСтрокиТаблицыЦен,
    УстановкаЦенНоменклатурыТовары.Номенклатура

ИМЕЮЩИЕ
    СУММА(УстановкаЦенНоменклатурыТовары.Цена) = 0

УПОРЯДОЧИТЬ ПО
    ИндексСтрокиТаблицыЦен УБЫВ
ИТОГИ ПО
    ДокументУстановкиЦен[/C]
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн