Имя: Пароль:
1C
1С v8
Не отображаются строки табл части
0 Обизян
 
30.10.25
09:30
1с 8.3.27 УФ
Проблема в том, что когда вызываю фому, не отображаются строки тч, хотя данные в этой ТЧ есть, сделал вывод строк через сообщить.
Вызываю форму:
    
ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ТабЧасть",Объект.ТаблицаНоменклатуры);

                
    ОткрытьФорму(
            "ВнешняяОбработка.РабочееМестоМенеджера.Форма.ФормаОтправкиЗаказаПоставщикуАрмтек",
            ПараметрыФормы,
            ЭтаФорма,
            ,
            ,
            ,
            Оповещение,
            РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

далее, в процедуре ПриАктивизацииСтроки есть следующий код, при котором видимость пропадает, если его закоментить, то строки видно

    Для Каждого Элемент Из СписокЭлементов Цикл
        Если Элемент.fieldName = "shipmentAddress" тогда
            ЭтаФорма.Элементы.shipmentAddress.Видимость = истина;
            Для Каждого СтрокаЭлемента Из Элемент.enum Цикл                            
                name = стрзаменить(СтрокаЭлемента.name,""","""");
                Элементы.shipmentAddress.СписокВыбора.Добавить(СтрокаЭлемента.Value,name);
                Если СтрокаЭлемента.selected тогда
                    Объект.shipmentAddress = СтрокаЭлемента.Value;
                КонецЕсли;
            КонецЦикла;  
        КонецЕсли;        
    КонецЦикла;  
конкретно вот эта строка влияет
Элементы.shipmentAddress.СписокВыбора.Добавить(СтрокаЭлемента.Value,name);
1 Обизян
 
30.10.25
09:32
ТЧ - ТаблицаЗаказа, т.е. я даже к ней не обращаюсь
2 Обизян
 
30.10.25
10:03
Если вывести процедуру с кодом

Элементы.shipmentAddress.СписокВыбора.Добавить(СтрокаЭлемента.Value,name);

на отдельную кнопку, то тоже все в порядке, данные ТЧ видны
3 Обизян
 
30.10.25
09:58
Получается только когда этот код срабатывает в процедуре ТЧ ПриАктивизацииСтроки, тогда в ТЧ не видно данных
4 Обизян
 
30.10.25
11:42
up
5 Chameleon1980
 
30.10.25
11:47
чего?
ПараметрыФормы.Вставить("ТабЧасть",Объект.ТаблицаНоменклатуры);

далее, в процедуре ПриАктивизацииСтроки
ПриАктивизацииСтроки где, в чем?

кто есть СписокЭлементов
что в при создании на сервере РабочееМестоМенеджера?

в общем ничего не понятно
6 Обизян
 
30.10.25
11:55
Есть Форма, с неё я открываю другую и передаю туда ТЧ,
и в этой новой открытой форме обработки, есть ТабличнаяЧасть "ТаблицаЗаказа" у нее есть процедура ПриАктивизацииСтроки, в этой процедуре есть строка кода, после которой исчезают все данные ТЧ "ТаблицаЗаказа", но при этом данные там есть, их просто не видно. Строка при которой исчезают данные:

Элементы.shipmentAddress.СписокВыбора.Добавить(СтрокаЭлемента.Value,name);
7 Обизян
 
30.10.25
11:56
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //ПервыйРаз = истина;
    ЭтаФорма.Элементы.commentString.Видимость = ложь;
    ЭтаФорма.Элементы.COMPL_DLV.Видимость = ложь;
    ЭтаФорма.Элементы.shipmentAddress.Видимость = ложь;
    ЭтаФорма.Элементы.weTab.Видимость = ложь;
    ЭтаФорма.Элементы.contactTab.Видимость = ложь;
    ЭтаФорма.Элементы.paymentMethod.Видимость = ложь;
    ЭтаФорма.Элементы.shipmentMethod.Видимость = ложь;
    ЭтаФорма.Элементы.shippingDateLast.Видимость = ложь;
    ЭтаФорма.Элементы.transportType.Видимость = ложь;
    //
    ТабЧасть = Параметры.ТабЧасть;
    Для каждого СтрТЧ из Параметры.ТабЧасть цикл
        КодСтроки = СтрТЧ.КодСтроки;
        Номенклатура = СтрТЧ.Номенклатура;  
        Поставщик = СтрТЧ.Поставщик;
        ПоставщикНаСайте = СтрТЧ.ПоставщикНаСайте;
        Количество = СтрТЧ.Количество;
        Цена = СтрТЧ.Цена;
        СтрокаТабЗаявок = Объект.ТаблицаЗаказа.Добавить();
        СтрокаТабЗаявок.Номенклатура = Номенклатура;
        СтрокаТабЗаявок.Количество = Количество;
        СтрокаТабЗаявок.Цена = Цена;
        СтрокаТабЗаявок.Сумма = Цена*Количество;
        СтрокаТабЗаявок.КодСтроки = формат(КодСтроки,"ЧГ=0");
        СтрокаТабЗаявок.Поставщик = Поставщик;
        СтрокаТабЗаявок.ПоставщикНаСайте = ПоставщикНаСайте;
    КонецЦикла;
КонецПроцедуры
8 Обизян
 
30.10.25
11:57
Список элементов это распарсеная строка
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаОтвет);
    ОтветJSON = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();  
    СписокЭлементов = ОтветJSON["orderParams"];
9 Обизян
 
30.10.25
11:59
Если вместо ПриАктивизацииСтроки использовать предопределенную процедуру ТЧ ТаблицаЗаказаВыбор, то все работает
10 Мультук
 
гуру
30.10.25
12:09
(7)

1) Чему равно ?
Параметры.ТабЧасть.количество()

2) В цикл то отладчик заходит ?

    ТабЧасть = Параметры.ТабЧасть;
    Для каждого СтрТЧ из Параметры.ТабЧасть цикл


3) Или всё же нужно

ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ТабЧасть",Объект.ТаблицаНоменклатуры.Выгрузить());
11 Обизян
 
30.10.25
12:23
(10) Да проблема не тут, ТЧ прекрасно заполняется, только если В процедуре ПриАкитивизацииСтроки исполняется эта строчка
Элементы.shipmentAddress.СписокВыбора.Добавить(СтрокаЭлемента.Value,name);

то данные пропадают, хотя и продолжают хранится в ТЧ
12 Мультук
 
гуру
30.10.25
12:29
13 Обизян
 
30.10.25
12:53
(12) оно, спасибо, единственное что странно, это то, что он постоянно долбится в процедуру ПриАктивизацииСтроки, хотя на форме стою на одной строчке
14 Обизян
 
30.10.25
13:05
Видимо из-за того, что я серверной процедуре получаю данные и меняю реквизиты на форме, оно снова уходит в обработку при активизацииСтроки, как-то можно это побороть?
15 Обизян
 
30.10.25
13:09
Добавил ОтключитьОбработчикОжидания("ПолучитьДанныеСайтаКлиент");

теперь срабатывает только два раза
16 программистище
 
30.10.25
14:29
можно организовать флаг проверки активизации строки
и проверять его вначале вызова активизации, елси не активровать, то ставить истина, и если есть сервеная процедура то она вызовет активзацию которая проигнорирутеся, в конце после сервеной процедуры флаг снова в ложь
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший