Имя: Пароль:
1C
 
Програмное создание справочника ячейки
0 lite578700
 
18.02.26
14:06
Здравствуйте , УТ11, програмно создаю группы в справочнике СкладскиеЯчейки (Владелец спр склады) ,

НовЭл.Владелец = Объект.СкладПриемник ;
            
             НовЭл.ОбменДанными.Загрузка = Истина;
             НовЭл.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
            
             НовЭл.Записать();  Проблема в запросе вижу созданные группы по владельцу , а при открытии ячеек по складу в 1с их нет.
1 Волшебник
 
18.02.26
14:07
Экий казус...
2 lite578700
 
18.02.26
14:12
Если записывать без признака обмена ,то сообщение неправильно указан владелец или владелец не задан, причем группы верхнего уровня создались нормально, а подгруппы нет
3 shuhard
 
18.02.26
14:13
(0)[а при открытии ячеек по складу в 1с их нет.]
что-то мешает сравнить группы созданные вручную и программно  ?
4 lite578700
 
18.02.26
14:14
Если открыть созданный элемент из запроса в списке то сообщение -Обнаружено рассогласование при получении данных.
5 lite578700
 
18.02.26
14:15
(3)
Вроде все сопадает
6 paramedic
 
18.02.26
14:26
(5) Значит не все совпадает. Вы же не думаете, что на форме элемента справочника ВСЕГДА можно увидеть ВСЕ реквизиты?
7 Fedor-1971
 
18.02.26
14:47
(0) Ты создаёшь Группы, а смотришь Элементы
Группы в справочнике связываются по Родителю в пределах Владельца не?
8 Мультук
 
гуру
18.02.26
14:50
(0)

>>Здравствуйте , УТ11, програмно создаю группы в справочнике

>>Если открыть созданный элемент из

1) Покажите весь ваш код создания группы.
2) Так вы группы создаете или элементы ?
9 lite578700
 
18.02.26
15:01
Запрос = Новый Запрос ;
        Запрос.Текст =  "
        |ВЫБРАТЬ
        |    СкладскиеЯчейки.Ссылка КАК Ссылка,
    //    |    СкладскиеЯчейки.Владелец КАК Владелец,
        |    СкладскиеЯчейки.Родитель КАК Родитель,
        |    СкладскиеЯчейки.ЭтоГруппа КАК ЭтоГруппа,
        |    СкладскиеЯчейки.Код КАК Код,
        |    СкладскиеЯчейки.Наименование КАК Наименование,
    //    |    СкладскиеЯчейки.Линия КАК Линия,
    //    |    СкладскиеЯчейки.ОбластьХранения КАК ОбластьХранения,
    //    |    СкладскиеЯчейки.Позиция КАК Позиция,
    //    |    СкладскиеЯчейки.ПорядокОбхода КАК ПорядокОбхода,
    //    |    СкладскиеЯчейки.РабочийУчасток КАК РабочийУчасток,
    //    |    СкладскиеЯчейки.Секция КАК Секция,
    //    |    СкладскиеЯчейки.Помещение КАК Помещение,
    //    |    СкладскиеЯчейки.Стеллаж КАК Стеллаж,
    //    |    СкладскиеЯчейки.Типоразмер КАК Типоразмер,
        //|    СкладскиеЯчейки.ТипСкладскойЯчейки КАК ТипСкладскойЯчейки,
        //|    СкладскиеЯчейки.УровеньДоступности КАК УровеньДоступности,
        //|    СкладскиеЯчейки.Ярус КАК Ярус,
        //|    СкладскиеЯчейки.МаксимальныйКоэффициентНаполненностиПоВесу КАК МаксимальныйКоэффициентНаполненностиПоВесу,
        //|    СкладскиеЯчейки.МаксимальныйКоэффициентНаполненностиПоОбъему КАК МаксимальныйКоэффициентНаполненностиПоОбъему,
        //|    СкладскиеЯчейки.КоличествоДнейМеждуИнвентаризациями КАК КоличествоДнейМеждуИнвентаризациями,
        //|    СкладскиеЯчейки.МаксимальныйОбъем КАК МаксимальныйОбъем,
        //|    СкладскиеЯчейки.ВесМаксимальный КАК ВесМаксимальный,
        //|    СкладскиеЯчейки.Предопределенный КАК Предопределенный,
        //|    СкладскиеЯчейки.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
        |    СкладскиеЯчейки.Представление КАК Представление
        |ИЗ
        |    Справочник.СкладскиеЯчейки КАК СкладскиеЯчейки
        |ГДЕ
        |    СкладскиеЯчейки.Владелец = &Копировать
        |    И СкладскиеЯчейки.ЭтоГруппа
        |";

    Запрос.УстановитьПараметр("Копировать", Объект.СкладИсточник);


    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл  
        
        НовЭл = Справочники.СкладскиеЯчейки.НайтиПоНаименованию(Выборка.Наименование,Истина, ,Объект.СкладПриемник) ;
        
        Если НовЭл = Справочники.СкладскиеЯчейки.ПустаяСсылка() Тогда
            
             НовЭл =Справочники.СкладскиеЯчейки.СоздатьГруппу() ;
            
             Попытка

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

    КонецЦикла;
10 Мультук
 
гуру
18.02.26
15:09
(9)

ЗаполнитьЗначенияСвойств(НовЭл,Выборка) ;



НовЭл =Справочники.СкладскиеЯчейки.СоздатьГруппу() ; 
НовЭл.ссылка =   выборка.Ссылка;


Уважаемые аксакалы, а что при этом происходит ?
Мне стыдно, я никогда так не делал. :-(

Не должна же 1С дать сделать гадость. Или ?
11 АгентБезопасной Нацио
 
18.02.26
15:16
(10) "ему туда можно"©
12 Fedor-1971
 
18.02.26
16:08
(10) Есть 2 варианта:
1. обновятся данные по указанной ссылке если тип совпадает (т.е. скрыто обновили данные незнамо где - встречал такие глюки на некоторых релизах)
2. 1С выдаст ошибку "Не совпадает версия данных" т.к. у ссылки уже есть версия данных объекта (в основном, при несовпадении типов Ссылка и заполняемого объекта)

Не слабая такая подстава для падаванов, обычно при заполнении свойств из выборки не экранируют ссылку, например, так:
ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, "Ссылка")
Независимо от того, куда вы едете — это в гору и против ветра!