Имя: Пароль:
1C
1С v8
Hello, world: заполнение табличной части из справочника
0 pickpok
 
19.01.15
01:20
Здравствуйте, подскажите, пожалуйста, что делаю не так:
Есть справочник Номенклатура, есть документ Заказа, хочу, чтобы при создание документа в табличную часть подгружаласть вся номенклатура из справочника. 1С 8.3

&НаКлиенте
Процедура ТабличнаяЧасть1ПриИзменении(Элемент)
    ТабличнаяЧасть1ПриИзмененииНаСервере();
КонецПроцедуры


&НаСервере
Процедура ТабличнаяЧасть1ПриИзмененииНаСервере()
    
    Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
    |    Наименование.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номеклатура

    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    Для Каждого ТекСтрока из РезультатЗапроса Цикл
        НС = Наименование.Добавить();
        
    КонецЦикла;  
КонецПроцедуры
1 ВРедная
 
19.01.15
01:26
Почему используешь процедуру "ТабличнаяЧасть1ПриИзменении"?

Если ты пишешь "Заказа, хочу, чтобы при создание документа", то где твои действия при создании документа?

Ищи, какая процедура вызывается именно при создании документа.
2 pickpok
 
19.01.15
01:29
(1) Вопрос не сколько в в самой процедуре, сколько в корректности запроса. Он верен? Или есть ошибки?
3 hhhh
 
19.01.15
01:34
Наименование.Ссылка что за бред? Откуда могло появиться?
4 pickpok
 
19.01.15
01:35
(3) Спасибо. Рискну предположить: Наименование.Номенклатура?
5 hhhh
 
19.01.15
01:39
Наименование - как раз в этом бред.
6 pickpok
 
19.01.15
01:40
(5) Поясните, пожалуйста.
7 pickpok
 
19.01.15
01:41
(5)
{Документ.БланкЗаказаФиксированнаяНоменклатура.Форма.ФормаДокумента.Форма(18)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
по причине:
{(2, 18)}: Поле не найдено "Наименование.Номенклатура"
Наименование.<<?>>Номенклатура
8 Escander
 
19.01.15
01:47
вообще конечно забавный запрос, что-бы не делать запрос средствами конструктора запросов?

если форма малонагруженная можно вашу задачу решить например так:

&НаСервере
Процедура ТабличнаяЧасть1ПриИзмененииНаСервере()
    
    Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
    |    Номенклатура.Ссылка
    |ИЗ
    |    Справочник.Номенклатура КАК Номеклатура

    <Ваша Т.Ч.>.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры

PS и самое главное что-бы не прочитать умную книжку/посмотреть бесплатное чего-нибудь (есть и от Е.Гилева и от П.Чистова  др.)?
9 pickpok
 
19.01.15
01:50
(8) Благодарю Вас, сейчас попробую. Стопка желтых книжек уже штудируется. Позвольте еще вопрос: а если форма сильно нагружена, как меняется запрос?
10 pickpok
 
19.01.15
01:53
(8)
{Документ.БланкЗаказаФиксированнаяНоменклатура.Форма.ФормаДокумента.Форма(10,5)}: Переменная не определена (ТабличнаяЧасть1)
    <<?>>ТабличнаяЧасть1.Загрузить(Запрос.Выполнить().Выгрузить()); (Проверка: Сервер)
11 Escander
 
19.01.15
01:54
(9) а если форма нагруженная нужно писать безконтекстовую процедуру (&НаСервереБезКонтекста)
12 Escander
 
19.01.15
01:55
(10) значит твоя табличная часть куда тебе загружать называется не ТабличнаяЧасть1.

Только не спрашивай на форуме как она должна называться - телепатов тут нет.
13 pickpok
 
19.01.15
01:57
(10) Нет, прошу прощения, пропустил Объект.
14 Худой
 
19.01.15
06:56
Представляю, как будет вываливаться в табличную часть весь справочник, например, из 10 тыс. записей.
15 Godofsin
 
19.01.15
07:55
(14) 10 это хня еще =))))
16 DrZombi
 
гуру
19.01.15
08:12
(14) Представляю, когда будет валиться 99 999 (+1 и более) элементов :)
17 DrZombi
 
гуру
19.01.15
08:13
(0)Опиши лучше нам постановку задачи, ну так - "Чисто поржать" :)
18 Escander
 
19.01.15
08:19
(16) ну чё ржать, напишет чел свою нетленку на базе типовой - до кучи и прогать на 1С научится
19 shpioleg
 
19.01.15
08:27
(17) А что, не может быть таких задач? Я, например, так финансистам делаю. Табличная часть дока представлена в виде дерева с сохранением иерархии справочника.
20 igoza
 
19.01.15
08:40
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ  
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НовСтрока = ТабличнаяЧасть.Добавить();
        НовСтрока.Номенклатура = ВыборкаДетальныеЗаписи.Ссылка;
    КонецЦикла;