Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 апр 2024, 00:41

Добавить новую строку в документ

Автор Валент, 20 фев 2013, 11:19

0 Пользователей и 1 гость просматривают эту тему.

Валент

Добрый день.
Помогите, пожалуйста, добавить новую строку в табличную часть документа программно.
Есть документ с многострочной табличной частью. Процедурой Сформировать() расчитываются и заносятся данные. Здесь НоваяСтрока() великолепно работает. Хочу в эту сформированную табличную часть из другой процедуры добавить новые строки. Не получается. НоваяСтрока() не работает. Пыталась выгрузить табличную часть в таблицу значений, добавить туда новые строки, затем загрузить из ТЗ, загружаются только старые записи, без новых добавленных. Спасибо.

Yura063


Стр = Объект.ТабличнаяЧасть.Добавить();
Стр.Товар = Значение1;
// и так далее по колонкам которые у вас в таб. части!

Добавлено: 20 фев 2013, 12:11


Табличная часть (Tabular section)
Добавить (Add)
Синтаксис:

Добавить()
Возвращаемое значение:

Тип: Строка табличной части.

Описание:

Добавляет строку в конец табличной части.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:

Состав.Добавить();

Помогли, отблагодари!

mixqn

речь идет о 7.7, так что ответ Yura063, видимо не в тему.
по идее НоваяСтрока() должна работать. может быть покажите кусок кода из второй процедуры?

Yura063

Извините за невнимательность, mixqn!
Помогли, отблагодари!

Валент

Процедура, из которой я хочу добавить строки. Процедура работает, но новые строки не добавляютя. Меняются данные в той строке, на которой стою. Если в цикле получается несколько новых строк, то записывается последняя. 
Процедура ПриВыбореПрРазвернуть()
    НомСтрНов=0;
    НомСтр   =НомерСтрокиЗаписи;
    Родитель =СокрЛП(Клиент);
    Ит = создатьОбъект("БухгалтерскиеИтоги");         
    РазделительУчета = БухИтоги.ИспользоватьРазделительУчета();
    Ит.ИспользоватьРазделительУчета(РазделительУчета);
    ПланСчетов = ВыбранныйПланСчетов();
    Ит.ИспользоватьПланСчетов(ПланСчетов);
    ВидСубконто1 = НомерСчета.ВидСубконто(1);
    Ит.ИспользоватьСубконто(ВидСубконто1,,1,1);
    ДатаНачала=НачГода(ДатаДок-1);
    ДатаОкончания=ДатаДок-1;
    Ит.ВыполнитьЗапрос(ДатаНачала,ДатаОкончания,НомерСчета);
    Ит.ВыбратьСубконто();
    Пока Ит.ПолучитьСубконто(1)=1 Цикл
   Если СокрЛП(Ит.Субконто().Родитель)=Родитель Тогда
      НоваяСтрока();
      УстановитьАтрибут("Клиент",Ит.ПредставлениеСубконто());
      УстановитьАтрибут("ДтЗадолженность",Ит.СКД());
      УстановитьАтрибут("КтЗадолженность",Ит.СКК());
      УстановитьАтрибут("ДатаНач",ДатаОкончания);
      НомСтрНов=НомСтрНов+1;
      УстановитьАтрибут("НомерСтрокиДляРазвернуть",НомСтрНов);
      УстановитьАтрибут("НомерСтрокиЗаписи",НомСтр);
   КонецЕсли;   
    КонецЦикла;
    СортироватьСтроки("+НомерСтрокиЗаписи,НомерСтрокиДляРазвернуть");
Конецпроцедуры

Herby

Цитата: Валент от 20 фев 2013, 14:02Процедура работает, но новые строки не добавляютя.

Каким образом она работает, если новые строки не добавляются? По коду видно, что назначение процедуры как раз в добавлении строк, а раз они не добавляются, то почему вы считаете что процедура работает?)

Скорее всего проблема в этом условии:
Если СокрЛП(Ит.Субконто().Родитель)=Родитель Тогда

возможно что при каком-либо варианте это условие не срабатывает, и строки не добавляются.

отладчик откройте и посмотрите на каком варианте условие не срабатывает.

Валент

Условие
Если СокрЛП(Ит.Субконто().Родитель)=Родитель Тогда
работает, новые данные, полученные внутри условия, записываются в текущую строку табличной части.
Смотрела в отладчике.

start2000

После строки
   НоваяСтрока();
добавьте строку
   АктивизироватьСтроку(КоличествоСтрок());
иначе у Вас курсор на последней выбранной строке табличной части установлен
если помог, то смело жми Спасибо!

Валент

Дело в том, что не добавляюся строки после НоваяСтрока(). Например, табличная часть имеет 45 строк.
Смотрю в отладчике :
КоличествоСтрок()=45,
Работает процедура :
...
НоваяСтрока();
УстановитьАтрибут("Клиент",Клиент);
...
в отладчике КоличествоСтрок()=45, т.е. после НоваяСтрока() число строк не увеличивается

start2000

В версии 7.7: Добавлять/удалять строки в табличной части можно:

  • из процедуры, вызываемой из элемента диалога "Кнопка";
  • из предопределенных процедур;
  • из процедуры, вызываемой из элемента диалога не табличной части типа реквизит, переключатель, флажок, список, поле со списком.
И Вы до сих пор не озвучили какая у Вас конфигурация и версия платформы 1С.
если помог, то смело жми Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск