Имя: Пароль:
1C
1С v8
ПолучитьОбъект
,
0 starV
 
21.07.14
08:45
Всем привет
как заполнит табличную част справочника с этого же реквизитов справочника как не до гоняю
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТМЗ_НоменклатураКодыБуф.Ссылка КАК КодыБуф,
                   |    ТМЗ_Номенклатура.Ссылка КАК Ссылка,
                   |    ТМЗ_НоменклатураКодыБуф.Наименование КАК Наименование,
                   |    ТМЗ_НоменклатураКодыБуф.Код КАК Код
                   |ИЗ
                   |    Справочник.ТМЗ_Номенклатура КАК ТМЗ_Номенклатура
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТМЗ_Номенклатура.КодыБуф КАК ТМЗ_НоменклатураКодыБуф
                   |        ПО ТМЗ_НоменклатураКодыБуф.Ссылка = ТМЗ_Номенклатура.Ссылка
                   |ГДЕ
                   |    НЕ ТМЗ_Номенклатура.КодБуф = """"";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
                Объект= Выборка.Ссылка.ПолучитьОбъект();
        Элемент = Объект.КодыБуф.СоздатьЭлемент();
        Элемент.Наименование = Объект.Наименование;
        Элемент.Код = Объект.КодБуф;
        Попытка
               Элемент.Записать();
               Сообщить((Выборка.Код));

           Исключение
               Сообщить(";)")
        
        
        КонецПопытки;


{Форма.Форма.Форма(28)}: Ошибка при установке значения атрибута контекста (Объект)
                Объект= Выборка.Ссылка.ПолучитьОбъект();
по причине:
Нельзя изменять поле, содержащее объект данных формы
1 Любопытная
 
21.07.14
08:48
У тебя переменная Объект содержит объект того, в форме чего ты работаешь. Переименую переменную, в которую получаешь объект
2 starV
 
21.07.14
08:57
Объект= Выборка.Ссылка.ПолучитьОбъект();
оно из запроса берется
3 Любопытная
 
21.07.14
08:58
(2) до этой строки в переменной Объект что хранится?
4 Kamas
 
21.07.14
09:00
ЭЭэ формы какие??))
5 starV
 
21.07.14
09:01
ну можете подскажите как мне заполнит таб част справочника с его же реквизита
6 Любопытная
 
21.07.14
09:03
Ну может ты уже посмотришь, что там в переменной Объект до того, как ты в нее выборку пытаешься засунуть?
7 starV
 
21.07.14
09:04
у меня внешняя обработка  и в нем одна кнопка
8 Kamas
 
21.07.14
09:04
(7) (4) ??
9 Любопытная
 
21.07.14
09:06
(7) ну напиши там не
Объект= Выборка.Ссылка.ПолучитьОбъект();
а
обНоменклатура = Выборка.Ссылка.ПолучитьОбъект();

Вдруг получится
10 WF72
 
21.07.14
09:06
(0) кто писал процедуру обхода результатов запроса? конструктор такую хрень не напишет.
11 Kurbash
 
21.07.14
09:16
не насилй объект. РеквизитФОрмыВзначение хороший вариант
12 Kurbash
 
21.07.14
09:17
а блин, внешняя обработка...
13 Kurbash
 
21.07.14
09:18
стоп а Добавить() в ТЧ где?
14 Любопытная
 
21.07.14
09:27
(13) он до этого вообще еще не добрался, у него там СоздатьЭлемент() какое-то
15 zak555
 
21.07.14
09:29
Объект2= Выборка.Ссылка.ПолучитьОбъект();
        Элемент = Объект2.КодыБуф.СоздатьЭлемент();
16 Kurbash
 
21.07.14
09:30
Пока Выборка.Следующий() Цикл
                Объект= Выборка.Ссылка.ПолучитьОбъект();
        Элемент = Объект.КодыБуф.Добавить();
        Элемент.Наименование = Объект.Наименование;
        Элемент.Код = Объект.КодБуф;
        Попытка
               Объект.Записать();
               Сообщить((Выборка.Код));
           Исключение
               Сообщить(";)")
    
        
        КонецПопытки;

как то так если я правильно понял задачу
17 Kurbash
 
21.07.14
09:31
а, ну да, в текущий объект другой записать не получится, тогда

Пока Выборка.Следующий() Цикл
                ИзменяемыйОбъект= Выборка.Ссылка.ПолучитьОбъект();
        Элемент = ИзменяемыйОбъект.КодыБуф.Добавить();
        Элемент.Наименование = Объект.Наименование;
        Элемент.Код = Объект.КодБуф;
        Попытка
               Объект.Записать();
               Сообщить((Выборка.Код));
           Исключение
               Сообщить(";)")
    
        
        КонецПопытки;
18 starV
 
21.07.14
09:32
{Форма.Форма.Форма(29)}: Ошибка при установке значения атрибута контекста (Объект)
            Объект= Выборка.Ссылка.ПолучитьОбъект();
по причине:
Нельзя изменять поле, содержащее объект данных формы
19 Kurbash
 
21.07.14
09:33
Повторюсь если читать лень:)

Пока Выборка.Следующий() Цикл
                ИзменяемыйОбъект= Выборка.Ссылка.ПолучитьОбъект();
        Элемент = ИзменяемыйОбъект.КодыБуф.Добавить();
        Элемент.Наименование = Объект.Наименование;
        Элемент.Код = Объект.КодБуф;
        Попытка
               ИзменяемыйОбъект.Записать();
               Сообщить((Выборка.Код));
           Исключение
               Сообщить(";)")
    
        
        КонецПопытки;
20 starV
 
21.07.14
09:38
{Форма.Форма.Форма(34,17)}: Переменная не определена (ИзменяемыйОбъект)
                <<?>>ИзменяемыйОбъект.Записать(); (Проверка: Сервер)
21 Любопытная
 
21.07.14
09:46
(20) дай обработку пощупать
22 zak555
 
21.07.14
09:48
(20)
где ИзменяемыйОбъект= Выборка.Ссылка.ПолучитьОбъект(); ?
23 starV
 
21.07.14
10:00
есть ли смысаль просто переименовать объект на ИзменяемыйОбъект
24 Kurbash
 
21.07.14
10:02
ты когда пишешь Объект воспринимается как текущий объект, получается ты в текущий объект пишешь ссылку на объект из выборки
25 Kurbash
 
21.07.14
10:03
кинь обработку
26 Kurbash
 
21.07.14
10:03
&НаСЕрвереБезКОнтекста?
27 hhhh
 
21.07.14
10:04
(23) слово "Объект" просто занято другим, неужели не понимаешь? Нельзя писать Объект, поэтому пиши другое название.
28 starV
 
21.07.14
10:07
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТМЗ_НоменклатураКодыБуф.Ссылка КАК КодыБуф,
                   |    ТМЗ_Номенклатура.Ссылка КАК Ссылка,
                   |    ТМЗ_НоменклатураКодыБуф.Наименование КАК Наименование,
                   |    ТМЗ_НоменклатураКодыБуф.Код КАК Код,
                   |    ТМЗ_НоменклатураКодыБуф.Ссылка КАК СсылкаТЧ
                   |ИЗ
                   |    Справочник.ТМЗ_Номенклатура КАК ТМЗ_Номенклатура
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТМЗ_Номенклатура.КодыБуф КАК ТМЗ_НоменклатураКодыБуф
                   |        ПО (ТМЗ_НоменклатураКодыБуф.Ссылка = ТМЗ_Номенклатура.Ссылка)
                   |ГДЕ
                   |    НЕ ТМЗ_Номенклатура.КодБуф = """"";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        ИзменяемыйОбъект= Выборка.Ссылка.ПолучитьОбъект();
        Элемент = Выборка.СсылкаТЧ.Добавить();
        Элемент.Наименование = ИзменяемыйОбъект.Наименование;
        Элемент.Код = ИзменяемыйОбъект.КодБуф;
        Попытка
                 Элемент.Записать();
               Сообщить((Выборка.Код));
           Исключение
               Сообщить(";)")
    
;
29 starV
 
21.07.14
10:08
{Форма.Форма.Форма(30)}: Значение не является значением объектного типа (Добавить)
        Элемент = Выборка.СсылкаТЧ.Добавить();
30 1Сергей
 
21.07.14
10:09
//Элемент = Выборка.СсылкаТЧ.Добавить();
Элемент = ИзменяемыйОбъект.СсылкаТЧ.Добавить();
31 starV
 
21.07.14
10:10
если место добавить заменить создатьЭлемент()
то  
{Форма.Форма.Форма(30)}: Значение не является значением объектного типа (СоздатьЭлемент)
        Элемент = Выборка.СсылкаТЧ.СоздатьЭлемент();
32 Любопытная
 
21.07.14
10:11
На этом форуме страшно не хватает смайла про стену.
(29) Нельзя ничего добавить в выборку. В ссылку тоже нельзя ничего добавить. Добавить можно в ТЧ объекта, который ты получаешь.
33 Любопытная
 
21.07.14
10:11
Это такой новый метод программирования - тычем все подряд, авось что-нибудь и сработает
34 1Сергей
 
21.07.14
10:11
Элемент = ИзменяемыйОбъект.КодыБуф.Добавить();
35 zva
 
21.07.14
10:12
Что вообще за хрень в (0) написана?
Зачем получать объект только ради наименования, которое можно выбрать в запросе?
Если ТМЗ_Номенклатура.КодыБуф - это табличная часть, как видно из запроса, то что за условие НЕ ТМЗ_Номенклатура.КодБуф = """""?
потом Элемент = Объект.КодыБуф.СоздатьЭлемент();
Лучше все это разувидеть...
36 Kurbash
 
21.07.14
10:17
(35)-да можно вообще обработку заполнения ТЧ написать, но автор хоче так как в (0)
37 1Сергей
 
21.07.14
10:17
(35) ему надо ТЧ заполнить значениями из самого объекта.

С уважением, КЭП
38 Kurbash
 
21.07.14
10:21
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                     |    ТМЗ_Номенклатура.Ссылка КАК Ссылка,
                   |ИЗ
                   |    Справочник.ТМЗ_Номенклатура КАК ТМЗ_Номенклатура
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТМЗ_Номенклатура.КодыБуф КАК ТМЗ_НоменклатураКодыБуф
                   |        ПО ТМЗ_НоменклатураКодыБуф.Ссылка = ТМЗ_Номенклатура.Ссылка
                   |ГДЕ
                   |    НЕ ТМЗ_Номенклатура.КодБуф = """"";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
                ИзменяемыйОбъект= Выборка.Ссылка.ПолучитьОбъект();
        Элемент =ИзменяемыйОбъект.КодыБуф.Добавить();
        Элемент.Наименование = Выборка.Ссылка.Наименование;
        Элемент.Код = Выборка.Ссылка.КодБуф;
        Попытка
               ИзменяемыйОбъект.Записать();
               Сообщить((Выборка.Код));

           Исключение
               Сообщить(";)")
        
        
        КонецПопытки;
39 Kurbash
 
21.07.14
10:22
даже запрос можно упростить

ВЫБРАТЬ
                     |    ТМЗ_Номенклатура.Ссылка КАК Ссылка
                   |ИЗ
                   |    Справочник.ТМЗ_Номенклатура КАК ТМЗ_Номенклатура
                   |ГДЕ
                   |    ТМЗ_Номенклатура.КодБуф <> """"";
40 starV
 
21.07.14
10:24
Kurbash тебе ооооогромное спасибо :)
41 Kurbash
 
21.07.14
10:25
(волк из мультика "Жил был пес") Ты пиши, если че....
42 1Сергей
 
21.07.14
10:26
(39) ага. Но, лучше запрос выкинуть нафиг :)
43 Kurbash
 
21.07.14
10:27
а как ты без запроса переберешь элементы справочника?
44 Любопытная
 
21.07.14
10:28
Вот так всегда.
45 Kamas
 
21.07.14
10:30
прошу выразить благодарность Любопытная
46 an-korot
 
21.07.14
10:35
давать имена переменным равные командам - это конечно апогей.
47 Kurbash
 
21.07.14
10:40
прошу выразить благодарность Любопытная с занесением в личную карточку
48 starV
 
21.07.14
10:51
Любопытная спасибо :)
49 starV
 
21.07.14
12:40
Процедура заполнять ()
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ТМЗ_Номенклатура.Ссылка КАК Ссылка,
    |    ТМЗ_Номенклатура.Наименование КАК Наименование,
    |    ТМЗ_Номенклатура.КодБуф
    |ИЗ
    |    Справочник.ТМЗ_Номенклатура КАК ТМЗ_Номенклатура
    |ГДЕ
    |    НЕ ТМЗ_Номенклатура.КодБуф = """"";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        ИскОбъект= Выборка.Ссылка.ПолучитьОбъект();
        Элемент = ИскОбъект.КодыБуф.Добавить();
        Элемент.Наименование = Выборка.Наименование;
        Элемент.Код = Выборка.КодБуф;
        Попытка
            ИскОбъект.Записать();
        Исключение
            Сообщить(";)")
            
            
        КонецПопытки;
    КонецЦикла;
КонецПроцедуры
50 Любопытная
 
21.07.14
12:42
(49) МОлодец. Теперь классический глупый вопрос: зачем все это?
Закон Брукера: Даже маленькая практика стоит большой теории.