Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Присвоить значение табличной части вновь созданного элемента справочника

Присвоить значение табличной части вновь созданного элемента справочника
Я
   Sidius
 
18.08.20 - 10:22
Прошу не бить ногами по лицу, только учусь.
Рисую простенькую программу, аля: приход, расход, списание
В документе прихода формирую партию (справочник.Партия)
&НаСервере
Процедура ПередЗакрытиемНаСервере()
    Для Каждого Строчка Из Объект.Товар Цикл
        Если НЕ ЗначениеЗаполнено(Строчка.Партия) = Истина Тогда
            НоваяПартия = Справочники.Партия.СоздатьЭлемент(); // Создаем элемент справочника
            НоваяПартия.Владелец = Строчка.Номенклатура;
            НоваяПартия.Наименование = ""+Строчка.Цена+"/"+Строчка.Серия;
            НоваяПартия.Цена = Строчка.Цена;
            НоваяПартия.Серия = Строчка.Серия;
            НоваяПартия.СрокГодности = КонецДня(Строчка.СрокГодности);
            НоваяПартия.ВидФинансирования = Объект.ВидФинансирования;
            Если НЕ ЗначениеЗаполнено(Строчка.SGTIN) = Истина Тогда
                НоваяПартия.SGTIN = Строчка.SGTIN;
            КонецЕсли;
            НоваяПартия.СуммаНДС = Строчка.СуммаНДС;
            НоваяПартия.Записать(); // записали в справочник
            Строчка.Партия = Справочники.Партия.НайтиПоКоду(НоваяПартия.Код,,,Строчка.Номенклатура);
            //ЭтаФорма.Партия = Справочники.Партия.НайтиПоКоду(НоваяПартия.Код,,,Строчка.Номенклатура);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры


Партия Создается, но как заставить Эту партию встать в табличную часть не соображу
= Справочники.Партия.НайтиПоКоду(НоваяПартия.Код,,,Строчка.Номенклатура); Вот тут затык
   Momus
 
1 - 18.08.20 - 10:28
Строчка.Партия = НоваяПартия.Ссылка
   Sidius
 
2 - 18.08.20 - 10:31
(1) Не прокатило, все равно пусто
   Sidius
 
3 - 18.08.20 - 10:33
Прогоняю отладчиком, присваивается, но в документе не сохраняется
   Momus
 
4 - 18.08.20 - 10:34
(2) ну так ты обновляешь данные формы, а не объект с товарами. Нужно в конце процедуры записать объект - владельца формы
   Momus
 
5 - 18.08.20 - 10:35
(4)
Об = РеквизитФормыВЗначение("Объект");
Об.Записать();
   Momus
 
6 - 18.08.20 - 10:37
Обновляй ТЧ товаров в событии при записи, а не при закрытии
   Sidius
 
7 - 18.08.20 - 10:38
(5) Дай бог тебе здоровья. Спасибо
(6) Спасибо учту
   Sidius
 
8 - 18.08.20 - 10:47
Эээ...Теперь при записи ругается
Об = РеквизитФормыВЗначение("Объект");

по причине:
Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных
Чего не так?
   Sidius
 
9 - 18.08.20 - 10:48
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    Для Каждого Строчка Из Объект.Товар Цикл
        Если НЕ ЗначениеЗаполнено(Строчка.Партия) = Истина Тогда
            НоваяПартия = Справочники.Партия.СоздатьЭлемент();// Создаем элемент справочника

            НоваяПартия.Владелец = Строчка.Номенклатура;
            НоваяПартия.Наименование = ""+Формат(Строчка.Цена, "ЧДЦ=3")+"/"+Строчка.Серия; 
            НоваяПартия.Цена = Строчка.Цена;
            НоваяПартия.Серия = Строчка.Серия;
            НоваяПартия.СрокГодности = КонецДня(Строчка.СрокГодности);
            НоваяПартия.ВидФинансирования = Объект.ВидФинансирования;
            Если НЕ ЗначениеЗаполнено(Строчка.SGTIN) = Истина Тогда
                НоваяПартия.SGTIN = Строчка.SGTIN;
            КонецЕсли;
            НоваяПартия.СуммаНДС = Строчка.СуммаНДС;
            НоваяПартия.Записать();// записали в справочник

            Строчка.Партия = НоваяПартия.Ссылка;
            Об = РеквизитФормыВЗначение("Объект");
            Об.Записать();
            //Строчка.Партия = Справочники.Партия.НайтиПоКоду(НоваяПартия.Код,,,Строчка.Номенклатура);

        КонецЕсли;
    КонецЦикла;

КонецПроцедуры
   Жан Пердежон
 
10 - 18.08.20 - 11:15
ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

в ТекущийОбъект пиши что тебе надо
   Жан Пердежон
 
11 - 18.08.20 - 11:17
но самая идея - всё равно на вынос
   Lexandr
 
12 - 18.08.20 - 11:24
Использовать установку реквизитов "при записи" - это ошибка. Ибо объект уже записан в базу и тут ты пытаешься его еще изменить. В синтаксис помощнике есть же всё. Описание:  ПриЗаписи (OnWrite)
Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.
   DJ Anthon
 
13 - 18.08.20 - 11:27
надо писать в ПередЗаписью
   lodger
 
14 - 18.08.20 - 11:28
(0) такие штуки, обычно, в модуле объекта делаются.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.