Имя: Пароль:
1C
 
Сохранять из табличной части формы добавленной программно в Регистр сведений.
,
0 art93
 
06.08.15
08:20
Создал регистр сведений СопровождаемыеПродукты. Нужно чтобы оттуда подтягивалась информация в табличную часть добавленную программно на форму справочника контрагенты. В итоге табличную часть добавил но инфа не подтягивается и не записывается. Помогите пожалуйста

Модуль объекта(спр Контрагенты)

Процедура ПриЗаписи(Отказ)
    
    ЗаписатьПереченьСопровождаемыхПрограмм(мПереченьСопровождаемыхПрограмм, Ссылка, Отказ);
    
КонецПроцедуры

Процедура  ЗаписатьПереченьСопровождаемыхПрограмм(ПереченьСопровождаемыхПрограмм, Ссылка, Отказ)
    Если НЕ Отказ Тогда
    
        // Сравним наборы записей
        ЭталонныйНабор = РегистрыСведений.СопровождаемыеПрограммыКонтрагентов.СоздатьНаборЗаписей();
        Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Контрагенты") Тогда
            ЭталонныйНабор.Отбор.Контрагент.Значение = Ссылка;
            ЭталонныйНабор.Отбор.Контрагент.Использование = Истина;
        КонецЕсли;
        ЭталонныйНабор.Прочитать();
        
        Для каждого ЗаписьНабора Из ПереченьСопровождаемыхПрограмм Цикл
            ЗаписьНабора.Контрагент = Ссылка;
        КонецЦикла;
            
        //Если НЕ КонтрагентыОбщегоНазначенияСервер.СравнитьТаблицыНаборовЗаписей(ЭталонныйНабор.Выгрузить(), ПереченьСопровождаемыхПрограмм.Выгрузить()) Тогда
        
            ПереченьСопровождаемыхПрограмм.Отбор.Контрагент.Значение = Ссылка;
                        
            //Попытка
                ПереченьСопровождаемыхПрограмм.Записать();
            //Исключение
            //    Сообщить("Элемент """ + СокрЛП(Ссылка) + """ не записан. Ошибка в списке сопровождаемых программ.");
            //    Отказ = Истина;
            //    Возврат;
            //КонецПопытки;
            
            ПрочитатьПереченьСопровождаемыхПрограмм(ПереченьСопровождаемыхПрограмм, Ссылка);

        //КонецЕсли;
    
    КонецЕсли;
КонецПроцедуры
    
Процедура ПрочитатьПереченьСопровождаемыхПрограмм(ПереченьСопровождаемыхПрограмм, Ссылка) Экспорт

    // Снимем все отборы
    Для каждого Отбор Из ПереченьСопровождаемыхПрограмм.Отбор Цикл
        Отбор.Использование = Ложь;
    КонецЦикла;
    
    Если НЕ ЗначениеЗаполнено(Ссылка) Тогда
        Возврат;
    КонецЕсли;
    
    Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Контрагенты") Тогда
        ПереченьСопровождаемыхПрограмм.Отбор.Контрагент.Значение = Ссылка;
        ПереченьСопровождаемыхПрограмм.Отбор.Контрагент.Использование = Истина;
    КонецЕсли;
    ПереченьСопровождаемыхПрограмм.Прочитать();
    
КонецПроцедуры

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

Модуль формы

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
    
    ПараметрыЗаписи.Вставить("Партнер", Объект.Партнер);
    Оповестить("Запись_Контрагенты", ПараметрыЗаписи, Объект.Ссылка);

    СопровождаемыеПрограммы.Отбор.Контрагент.Значение       = Объект.Ссылка;
    СопровождаемыеПрограммы.Отбор.Контрагент.Использование  = Истина;

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

Процедура СопровождаемыеПрограммыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    
    ОбновитьДатуИзменения = Истина;
    
КонецПроцедуры

//СопровождаемыеПрограммы   = мПереченьСопровождаемыхПрограмм; (не видит почему то мПереченьСопровождаемыхПрограмм

подскажите идеи пожалуйста, очень нужно
1 Адский плющ
 
06.08.15
08:38
Как связаны модуль объекта и какой-то левый набор записей на морде?
2 Адский плющ
 
06.08.15
08:40
Нужно разместить на форме не ТЗ, а набор записей. В процедуре "ПриИзмененииДанных" - читать, "ПриЗаписиНаСервере" - записывать. Это для обычных форм.
3 Адский плющ
 
06.08.15
08:40
*"ПриЗаписи"
4 art93
 
06.08.15
08:48
Извиняюсь, не очень понял.
Можете пожалуйста прямо в коде моём показать.
Выделив части, что не так.
Буду очень благодарен
5 art93
 
06.08.15
09:01
Подскажет кто нибудь пожалуйста?
6 art93
 
06.08.15
09:16
Гляньте пожалуйста
7 hhhh
 
06.08.15
09:31
ПереченьСопровождаемыхПрограмм.Отбор.Контрагент.Установить(Ссылка);
                        
                ПереченьСопровождаемыхПрограмм.Записать();
8 art93
 
06.08.15
09:48
(7) Спасибо, поменял, но не помогает. Всё равно не записывается. Закрываю форму потом открываю всё пусто. И в регистр сведений запись не добавляется.
Что ещё можно попробовать? подскажите
9 hhhh
 
06.08.15
09:51
а где у вас тут пишутся записи в регистр? В каком месте?
10 art93
 
06.08.15
10:02
Я запутался просто. как это реализовать. Да, похоже не где.
А подскажите пожалуйста как мне реализовать всё же эту логику.
Я открываю форму, туда подгружаются сопровождаемые продукты контрагента. Если я её изменяю и закрываю, то при изменении этой табличной части производятся запись в регистр сведений.

Вот я код как то частично написал, частично из старой ут 10.2 взял и не могу собрать общую картину, не складывается это УТ11+CRM
Помогите разобраться пожалуйста
11 art93
 
06.08.15
10:11
Вот так в 10.2 было реализовано

///////////////////////Модуль объекта///////////////////

Перем мПереченьСопровождаемыхПрограмм Экспорт;

Процедура ПриЗаписи(Отказ)
    
    ЗаписатьПереченьСопровождаемыхПрограмм(мПереченьСопровождаемыхПрограмм, Ссылка, Отказ);
    
КонецПроцедуры

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

        КонецЕсли;
    
    КонецЕсли;
КонецПроцедуры
    
Процедура ПрочитатьПереченьСопровождаемыхПрограмм(ПереченьСопровождаемыхПрограмм, Ссылка) Экспорт

    // Снимем все отборы
    Для каждого Отбор Из ПереченьСопровождаемыхПрограмм.Отбор Цикл
        Отбор.Использование = Ложь;
    КонецЦикла;
    
    Если ЗначениеНеЗаполнено(Ссылка) Тогда
        Возврат;
    КонецЕсли;
    
    Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.Контрагенты") Тогда
        ПереченьСопровождаемыхПрограмм.Отбор.Контрагент.Значение = Ссылка;
        ПереченьСопровождаемыхПрограмм.Отбор.Контрагент.Использование = Истина;
    КонецЕсли;
    ПереченьСопровождаемыхПрограмм.Прочитать();
    
КонецПроцедуры


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

///////////////////////Модуль формы элемента///////////////////

Процедура ПослеЗаписи()

    СопровождаемыеПрограммы.Отбор.Контрагент.Значение       = Ссылка;
    СопровождаемыеПрограммы.Отбор.Контрагент.Использование  = Истина;
КонецПроцедуры

Процедура СопровождаемыеПрограммыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    
    ОбновитьДатуИзменения = Истина;
    
КонецПроцедуры

СопровождаемыеПрограммы   = мПереченьСопровождаемыхПрограмм;
12 ЛисИзЛеса
 
06.08.15
12:05
СопровождамыеПрограммы это что?
Какого типа эти данные? Таблица значений? Динамический список?
13 art93
 
06.08.15
12:24
Вопрос снят, да не тот тип был выбран.
В итоге все с чем мучался на УФ реализуется 6 строками кода в модуле формы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    КонтрагентыОбщегоНазначенияСервер.ПриСозданииНаСервере(ЭтаФорма,Отказ,СтандартнаяОбработка);
    
    СопровождаемыеПрограммы.Отбор.Элементы.Очистить();
    ЭлементОтбора = СопровождаемыеПрограммы.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = Объект.Ссылка;
.....
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн