8.х Заполнение табличной части документа из таблицы значений

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Mihell, 15 дек 2010.

  1. TopicStarter Overlay
    Mihell
    Offline

    Mihell

    Регистрация:
    8 ноя 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Заполнение проходит, но остальные поля ТЧ (ед. изм.; цена; способ списания), не заполняются. Как сделать так что бы они заполнялись по номенклатуре.

    Код создания документа и заполнения табличной части
    Код:
    ДокРеализТиУЦТО= Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    ПостТиУЦТО = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    КолЗап=ТЗЦТО.Количество();
    Пока i<КолЗап Цикл
    Если ТЗЦТО[i].КолСпис<>0 Тогда
    ДокРеализТиУЦТО.Товары.Добавить().Количество=1;
    Товар = Справочники.Номенклатура.НайтиПоНаименованию(ТЗЦТО[i].Товар, Истина);
    ДокРеализТиУЦТО.Товары[i].Номенклатура=Товар;//ТЗЦТО[i].Товар;
    ДокРеализТиУЦТО.Товары[i].Количество=ТЗЦТО[i].КолСпис;
    Иначе
    ПостТиУЦТО.Товары.Добавить().Количество=1;
    ПостТиУЦТО.Товары[i].Номенклатура=ТЗЦТО[i].Товар;
    ПостТиУЦТО.Товары[i].Количество=ТЗЦТО[i].КолСпис;
    КонецЕсли;	
    i=i+1;	
    КонецЦикла;
    ДокРеализТиУЦТО.Дата=ТекущаяДата();
    ДокРеализТиУЦТО.Организация=ПолеВвода4;
    
    ПостТиУЦТО.Дата=ТекущаяДата();
    ПостТиУЦТО.Организация=ПолеВвода3;
    
    ПостТиУЦТО.Записать();
    ДокРеализТиУЦТО.Записать();
    
    
    
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    1 часть - быстрый ответ.
    Т.к. конфигурация не указана - делаю предположение, что это бухгалтерия.
    Код:
    ДокРеализТиУЦТО.Товары[i].Номенклатура=Товар;
    ДокРеализТиУЦТО.Товары[i].Номенклатура=Товар.ЕдиницаХраненияОстатков;  // ед изм
    
    
    
    
    Цены можно получить отдельным запросом к регистру сведений ЦеныНоменклатурыдля каждой номенклатуры, при условии, что известен тип цен.

    Кто такой "способ списания" - я не знаю. Если это реквизит номенклатуры - по примеру как сделано с единицей измерения. Либо же - запросом к объекту, который хранит данную информацию.

    2. часть - нравоучительная (к прочтению не обязательная)
    1. Вопрос задан некорректно - не известно, какая у Вас конфигурация.
    2. Поиск по наименованию - может приводить к ошибкам, т.к. номенклатур "Кастрюлька 5л" может быть целая куча. Рекомендую использовать более уникальные реквизиты, например - код.
    3. Обращение к объектам через точку - порождает кучу неявных запросов к базе, которые в свою очередь порождают тормоза.
    4. Если уж пишите на русском - идите до конца, а то i в качестве счетчика при использовании русских имен переменных и методов выглядит ужасно.
    5. ПолеВвода4 ПолеВвода5 - ни вам ни другим программистам ничего не говорит - старайтесь использовать для реквизитов формы осмысленные названия.
    6. В целом - код требует полной переработки, с использованием запросов для оптимизации и добавления необходимых реквизитов.
  3. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Дополнение:
    Посмотрите обработчики событий при изменении номенклатуры, количества и так далее в форме документа. Из них вызываются экспортные процедуры или документа или модуля, которые и заполняют все поля. Вот вам надо добавить их вызов.
  4. TopicStarter Overlay
    Mihell
    Offline

    Mihell

    Регистрация:
    8 ноя 2010
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Спасибо что ответили.

Поделиться этой страницей