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

Как добавить строки в табличную часть программно?

Автор mzforums, 16 фев 2020, 22:05

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

mzforums

Как из внешней обработки добавить строки в табличную часть документа?
(Документ и Форму обработки см. на скриншотах).

По нажатию на кнопку должна добавиться строка в табличную часть документа "ВводНачальныхОстатков".
В строке должно быть только "Номенклатура" и "Количество".

Номенклатура имеет тип: СправочникСсылка.Номенклатура

Ниже привожу примерный код, который я пишу в модуле формы.
Прошу громко не смеяться, я новичок. Просто поправьте меня )


&НаКлиенте
Процедура Перенести()
    ПеренестиНаСервере() ;
КонецПроцедуры

&НаСервере
Процедура ПеренестиНаСервере()

ОбъектДок = Документы.ВводНачальныхОстатков.ПолучитьСсылку();
НоваяСтрока = Объектдок.Запасы.Добавить();
НоваяСтрока.Номенклатура  = "Запас1";
НоваяСтрока.Количество  = 5;
ОбъектДок.Записать();

КонецПроцедуры


Конфигурация 8.3 на управляемых формах

Поиск родных

Дубль https://forum-baza.ru/index.php?topic=75234.0
Гы, разные пользователи пишут одинаковые ляпы в одно и то же время?????
Почитайте про азы метапрогограммирования (по выдёргиванию стула, на котором сидишь):
https://ru.wikipedia.org/wiki/Метапрограммирование

https://ru.wikipedia.org/wiki/Самомодифицирующийся_код


1С - это не тот язык, который позволяет самомодификацию "на лету" своего кода

Цитата: mzforums от 16 фев 2020, 22:05
Как из внешней обработки добавить строки в табличную часть документа?
(Документ и Форму обработки см. на скриншотах).

По нажатию на кнопку должна добавиться строка в табличную часть документа "ВводНачальныхОстатков".
В строке должно быть только "Номенклатура" и "Количество".

Номенклатура имеет тип: СправочникСсылка.Номенклатура

Ниже привожу примерный код, который я пишу в модуле формы.
Прошу громко не смеяться, я новичок. Просто поправьте меня )


&НаКлиенте
Процедура Перенести()
    ПеренестиНаСервере() ;
КонецПроцедуры

&НаСервере
Процедура ПеренестиНаСервере()

ОбъектДок = Документы.ВводНачальныхОстатков.ПолучитьСсылку();
НоваяСтрока = Объектдок.Запасы.Добавить();
НоваяСтрока.Номенклатура  = "Запас1";
НоваяСтрока.Количество  = 5;
ОбъектДок.Записать();

КонецПроцедуры


Конфигурация 8.3 на управляемых формах

ef0din

Если верно понял - наверно нужно в форму добавить поле, в котором можно будет выбрать документ, в тч которого хотите добавить строки? Тип документССылка
Далее:
ДокументОбъект = СсылкаНужногоДокумента.ПолучитьОбъект();
Потом уже добавляйте в ДокументОбъект.

mzforums

Цитата: ef0din от 17 фев 2020, 10:35
Если верно понял - наверно нужно в форму добавить поле, в котором можно будет выбрать документ, в тч которого хотите добавить строки? Тип документССылка
Далее:
ДокументОбъект = СсылкаНужногоДокумента.ПолучитьОбъект();
Потом уже добавляйте в ДокументОбъект.

Создал на форме реквизит ОбъектДок  с  типом  ДокументСсылка.ВводНачальныхОстатков
В процедуре написал:
ОбъектДок = Документы.ВводНачальныхОстатков.ПолучитьОбъект();

Пишет - Ошибка: Метод объекта не обнаружен (ПолучитьОбъект)

bsn-chita

Что вы этой строкой хотите сделать?
Цитата: mzforums от 17 фев 2020, 20:52ОбъектДок = Документы.ВводНачальныхОстатков.ПолучитьОбъект();
Вы должны выбрать на форме нужный документ с помощью этого реквизита. Это будет Ссылка на документ. А от Ссылки уже можно получить объект. ДокументОбъект = ОбъектДок.ПолучитьОбъект();
Так же не будет работать и эта строка если только у вас номенклатура не строкового типа.
Цитата: mzforums от 16 фев 2020, 22:05НоваяСтрока.Номенклатура  = "Запас1";
Для примера можно использовать такой код.

НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("ложка");

ef0din

Цитата: mzforums от 17 фев 2020, 20:52
Цитата: ef0din от 17 фев 2020, 10:35
Если верно понял - наверно нужно в форму добавить поле, в котором можно будет выбрать документ, в тч которого хотите добавить строки? Тип документССылка
Далее:
ДокументОбъект = СсылкаНужногоДокумента.ПолучитьОбъект();
Потом уже добавляйте в ДокументОбъект.

Создал на форме реквизит ОбъектДок  с  типом  ДокументСсылка.ВводНачальныхОстатков
В процедуре написал:
ОбъектДок = Документы.ВводНачальныхОстатков.ПолучитьОбъект();

Пишет - Ошибка: Метод объекта не обнаружен (ПолучитьОбъект)


+ к вышесказанному, получать объект нужно "&НаСервере"

antoneus

Также следует обратить внимание, что реквизит "Номенклатура" наверняка имеет тип СправочникСсылка.Номенклатура и поэтому код

НоваяСтрока.Номенклатура  = "Запас1";

ничего в этот реквизит не запишет.

mzforums

Хочу добавить строку в табличную часть.
Код не срабатывает. Ошибок не выдает.
Прошу помочь как найти ошибку.


&НаСервере
Процедура ПеренестиНаСервере()

Ссылка = Документы.ВводНачальныхОстатков.НайтиПоНомеру("НФФР-000001",'20200216');
ОбъектДок = Ссылка.ПолучитьОбъект();

НоваяСтрока = ОбъектДок.Запасы.Добавить();

НоваяСтрока.СтруктурнаяЕдиница  = Справочники.СтруктурныеЕдиницы.НайтиПоКоду("00-000001");
НоваяСтрока.Номенклатура  = Справочники.Номенклатура.НайтиПоКоду("ФР-00002426");
НоваяСтрока.Количество  = 5;

КонецПроцедуры

Добавлено: 23 фев 2020, 19:40


Добавил в конец процедуры

ОбъектДок.Записать();


Пишет:
{ВнешняяОбработка.....Форма.Форма.Форма(19)}: Метод объекта не обнаружен (Записать)
   ОбъектДок.Записать();

antoneus

Отладчик что говорит? В переменной ОбъектДок что находится?


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

Рейтинг@Mail.ru

Поиск