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


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

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

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

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