Имя: Пароль:
1C
 
Изменить данные колонки динамического списка
☑
0 kible89
 
22.10.26
✎
09:18
Здравствуйте!

Из типовой формы подбора взял 2 строчки кода.
        Элементы.СписокНоменклатуры.ТекущиеДанные.КоличествоОстаток =
            Элементы.СписокНоменклатуры.ТекущиеДанные.КоличествоОстаток - Количество;

СписокНоменклатуры - это динамический список на форме.

При отладке Элементы.СписокНоменклатуры.ТекущиеДанные.КоличествоОстаток уменьшается, но на форме остается неизменным.

Как изменить данные колонки динамического списка?
1 Ненавижу 1С
 
гуру
22.10.26
✎
09:49
(0) так они перечитываются заново из запроса. Либо в подборе делаете таблицу значений, либо более хитрый запрос с использованием опять же таблицы значений
2 kible89
 
22.10.26
✎
10:01
(1) Почему в типовом подборе этот код работает? Элементы.СписокНоменклатуры.ТекущиеДанные.КоличествоОстаток =
            Элементы.СписокНоменклатуры.ТекущиеДанные.КоличествоОстаток - Количество;

Уменьшает количество на форме без проблем. На форме ДС. Нет доп. колонки с количеством.
3 Ненавижу 1С
 
гуру
22.10.26
✎
11:22
(2) подробности про типовую: что за конфигурация, где именно
ну и посмотрите отладкой, какой источник данных, что за запрос
4 kible89
 
22.10.26
✎
11:36
(3) Конфигурация Бухгалтерия для Казахстана.

Типовой код

&НаКлиенте
Процедура СписокНоменклатурыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
        Если Элемент.ТекущиеДанные <> Неопределено Тогда
          
          ....

           Иначе
        ДобавитьВыбраннуюНоменклатуру(СтруктураПараметрыНоменклатуры, 1);
       КонецЕсли;

        КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ДобавитьВыбраннуюНоменклатуру(ПараметрыНоменклатуры, Количество, ВыбратьВсе = Ложь) Экспорт

    Если ПараметрыНоменклатуры = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Если ПараметрыНоменклатуры.Свойство("Количество") И ПараметрыНоменклатуры.Количество <> 0 Тогда
        Количество = ПараметрыНоменклатуры.Количество;
    КонецЕсли;

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

    РезультатПоиска = Объект.ПодобраннаяНоменклатура.НайтиСтроки(ПараметрыПоиска);
    Если РезультатПоиска.Количество() = 0 Тогда
        ТекущаяСтрока = Объект.ПодобраннаяНоменклатура.Добавить();
        ЗаполнитьЗначенияСвойств(ТекущаяСтрока, ПараметрыНоменклатуры);
        ТекущаяСтрока.Количество = Количество;
    Иначе
        ТекущаяСтрока            = РезультатПоиска[0];
        ТекущаяСтрока.Количество = Количество + ТекущаяСтрока.Количество;
    КонецЕсли;

    Если ПараметрыНоменклатуры.Свойство("Цена") Тогда
        ТекущаяСтрока.Сумма = ТекущаяСтрока.Количество * ТекущаяСтрока.Цена;
    КонецЕсли;
    
    Если Элементы.СписокНоменклатуры.ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
        
        ////Здесь уменьшается остаток

    Если НЕ Приход И Элементы.СписокНоменклатуры.ТекущиеДанные.Свойство("КоличествоОстаток") И НЕ ВыбратьВсе Тогда
        Элементы.СписокНоменклатуры.ТекущиеДанные.КоличествоОстаток =
            Элементы.СписокНоменклатуры.ТекущиеДанные.КоличествоОстаток - Количество;
    КонецЕсли;

    // Активизируем текущую строку табличной части
    Элементы.ПодобраннаяНоменклатура.ТекущаяСтрока = ТекущаяСтрока.ПолучитьИдентификатор();
    
КонецПроцедуры

//Типовой текст запроса взял в отладке в процедуре ПриСозданииНаСервере
ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Номенклатура,
    СправочникНоменклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
    СправочникНоменклатура.ОсобенностьУчета КАК ОсобенностьУчета,
    СправочникНоменклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ЕСТЬNULL(ТиповойОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЕСТЬNULL(ЦеныНоменклатурыДокументов.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка))) КАК Валюта,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ЕСТЬNULL(ЦеныНоменклатурыДокументов.Цена, 0)) КАК Цена,
    ТиповойОстатки.Счет КАК СчетУчета,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ТипЦен, ЗНАЧЕНИЕ(Справочник.ТипыЦенНоменклатуры.ПустаяСсылка)) КАК ТипЦен,
    ЕСТЬNULL(ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры, ЗНАЧЕНИЕ(Справочник.СпецификацииНоменклатуры.ПустаяСсылка)) КАК Спецификация,
    ЕСТЬNULL(ЦеныНоменклатурыДокументов.СпособЗаполненияЦены, ЗНАЧЕНИЕ(Перечисление.СпособыЗаполненияЦен.ПустаяСсылка)) КАК СпособЗаполненияЦены,
    //ЕСТЬNULL(СведенияОНоменклатуреГСВССрезПоследних.ПризнакУчетаНаВиртуальномСкладе, Ложь) КАК ПризнакУчетаНаВиртуальномСкладе,
    //ЕСТЬNULL(СведенияОНоменклатуреГСВССрезПоследних.ПризнакПеречняИзьятий, Ложь) КАК ПризнакПеречняИзьятий,
    //ЕСТЬNULL(СведенияОНоменклатуреГСВССрезПоследних.ПризнакУникальногоТовара, Ложь) КАК ПризнакУникальногоТовара,
    //ЕСТЬNULL(СведенияОНоменклатуреГСВССрезПоследних.ПризнакТовараДвойногоНазначения, Ложь) КАК ПризнакТовараДвойногоНазначения,
    //ЕСТЬNULL(СведенияОНоменклатуреГСВССрезПоследних.ПризнакАктивности, Ложь) КАК ПризнакАктивности
    Ложь КАК ПризнакУчетаНаВиртуальномСкладе,
    Ложь КАК ПризнакПеречняИзьятий,
    Ложь КАК ПризнакУникальногоТовара,
    Ложь КАК ПризнакТовараДвойногоНазначения,
    Ложь КАК ПризнакАктивности
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ПериодРасчета)}, {(Организация).* КАК Организация, (Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК Валюта}) КАК ЦеныНоменклатурыСрезПоследних
        ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И (ВЫБОР
                КОГДА &ЗаданаОрганизация
                    ТОГДА ЦеныНоменклатурыСрезПоследних.Организация = &Организация
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ)
            И (ВЫБОР
                КОГДА &ЗаданТипЦен
                    ТОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ)}
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Типовой.Остатки({(&ПериодРасчета)}, {(Счет).* КАК Счет}, {(&ВидыСубконто)}, {(Организация).* КАК Организация, (СтруктурноеПодразделение).* КАК СтруктурноеПодразделение, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура, (Субконто2)}) КАК ТиповойОстатки
        ПО СправочникНоменклатура.Ссылка = ТиповойОстатки.Субконто1
            И (ВЫБОР
                КОГДА &ЗаданаОрганизация
                    ТОГДА ТиповойОстатки.Организация = &Организация
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ)
            И (ТиповойОстатки.КоличествоОстаток > 0)}
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних({(&ПериодРасчета)}, {(Номенклатура).* КАК Ссылка}) КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
        ПО СправочникНоменклатура.Ссылка = ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура
            И (ВЫБОР
                КОГДА &ЕстьСпецификация
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ)}
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыДокументов КАК ЦеныНоменклатурыДокументов
        ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыДокументов.Номенклатура
            И (ВЫБОР
                КОГДА &ЗаполнятьЦеныНоменклатурыДокументов
                    ТОГДА ЦеныНоменклатурыДокументов.СпособЗаполненияЦены = &СпособЗаполненияЦены
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ)}
        //{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОНоменклатуреГСВС.СрезПоследних({(&ПериодРасчета)}, НоменклатураГСВС.ТипКодаГСВС = ЗНАЧЕНИЕ(Перечисление.ТипыКодовГСВС.ТНВЭД)) КАК СведенияОНоменклатуреГСВССрезПоследних
        //ПО СправочникНоменклатура.КодТНВЭД = СведенияОНоменклатуреГСВССрезПоследних.НоменклатураГСВС.КодГСВС}            
ГДЕ
    НЕ СправочникНоменклатура.ЭтоГруппа
{ГДЕ
    СправочникНоменклатура.Ссылка.* КАК Номенклатура}
Закон Брукера: Даже маленькая практика стоит большой теории.