Имя: Пароль:
1C
1С v8
Внешняя обработка, УФ не заполняет табличную часть
0 alekowks
 
11.08.16
12:30
Бухгалтерия предприятия, редакция 3.0 (3.0.43.247)
Имеется: внешняя обработка с ТЗ и полями: Инвентарный номер, Номенклатура

Задача: сделать возможность заполнения таблицы из документа поступления

что сделано: на форму добавлен флажок и поле ввода(выбор документа), так же добавлена кнопка заполнения ТЧ.

Понимаю, что задача простая, но что-то пошло не так(

Написала для кнопки команду
&НаКлиенте
Процедура ЗаполнитьОтбор1(Команда)
                 Перем Номенклатура, ИнвентарныйНомер, Адрес;
         Если ФлажокОтборПокупок Тогда

    ЗаполнитьОтбор1НаСервере(Номенклатура, ИнвентарныйНомер);      
    
КонецПроцедуры

И на сервере создала соответственную процедуру с запросом
&НаСервере
Процедура ЗаполнитьОтбор1НаСервере(Номенклатура, ИнвентарныйНомер)
    
    //Перем Покупка;
    ТаблицаОС.Очистить();
    
             
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПоступлениеТоваровУслуг.Оборудование.(
        |        Номенклатура.Код КАК ИнвентарныйНомер,
        |        Номенклатура.Наименование КАК Номенклатура
        |    )
        |ИЗ
        |    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |    ПоступлениеТоваровУслуг.Ссылка = &Покупка
        |    И ПоступлениеТоваровУслуг.Оборудование.Номенклатура.Ссылка = &Номенклатура
        |    И ПоступлениеТоваровУслуг.Оборудование.Номенклатура.Код = &ИнвентарныйНомер";
    
    Запрос.УстановитьПараметр("ИнвентарныйНомер", ИнвентарныйНомер);
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("Покупка", Покупка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    ВыборкаДетальныеЗаписи.Следующий();
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
НоваяСтрока = ТаблицаОС.Добавить();
НоваяСтрока.Код = ИнвентарныйНомер;
НоваяСтрока.ИнвентарныйНомер = ИнвентарныйНомер;
НоваяСтрока.Наименование = Номенклатура;
НоваяСтрока.Номенклатура = Номенклатура;

    

    
КонецПроцедуры
1 alekowks
 
11.08.16
13:16
Уточнение: возможно не выбирает данные, т.к не видит откуда выбирать, но как это описать я не поняла.
второй момент, что .Записать () нет

уже не знаю что не так, отладка пролетает мимо точек и таблица ничем не заполняется.
2 lubitelxml
 
11.08.16
13:27
написать нормальный запрос, с алиасами совпадающими с полями тч, и через ЗаполнитьЗначенияСвойств выгрузить туда данные запроса.
3 RomanYS
 
11.08.16
13:34
(0) всё переписать!

Начать с запроса.
Кстати ты не используешь данные своей выборки...наверное, потому что в ней только одно поле и оно типа РезультатЗапроса :)
4 alekowks
 
11.08.16
13:34
(2) Спасибо.
Запрос составлен с помощью конструктора.
Вот тут как раз и присваиваются(я так думаю) алиасы

ПоступлениеТоваровУслуг.Оборудование.(
        |        Номенклатура.Код КАК ИнвентарныйНомер,
        |        Номенклатура.Наименование КАК Номенклатура
да, я чайник. и гугл тоже читаю, но понимание пока не пришло(
Разъясните, пожалуйста, где в запросе что-то не так?
5 alekowks
 
11.08.16
13:36
(3) данные выборки использовать пыталась и опять по заполнению пустая табличная часть
6 vicof
 
11.08.16
13:36
Без фото задача нерешаема
7 alekowks
 
11.08.16
13:39
(6) добавлено в профиль)
8 RomanYS
 
11.08.16
13:40
"ВЫБРАТЬ
|    ТЧ.Номенклатура.Код КАК ИнвентарныйНомер,
|    ТЧ.Номенклатура.Наименование КАК Номенклатура
|ИЗ
|    Документ.ПоступлениеТоваровУслуг.Оборудование КАК ТЧ
|ГДЕ
|    ТЧ.Ссылка = &Покупка
|    И ТЧ.Номенклатура = &Номенклатура"
9 lubitelxml
 
11.08.16
13:40
(7) с днем рождения )))
10 alekowks
 
11.08.16
13:41
(8) О! а вот до этого я и не додумалась... спасибо)
11 alekowks
 
11.08.16
13:42
(9) спасибо, изменила)
12 vicof
 
11.08.16
13:46
Всю процедуру в (0) Можно было заменить на
НоваяСтрока = ТаблицаОС.Добавить();
НоваяСтрока.Код = ИнвентарныйНомер;
НоваяСтрока.ИнвентарныйНомер = ИнвентарныйНомер;
НоваяСтрока.Наименование = Номенклатура;
НоваяСтрока.Номенклатура = Номенклатура;
13 vicof
 
11.08.16
13:48
(11) + ссылка и наименование в таблице ос нафиг не нужны.
14 vicof
 
11.08.16
13:48
оставь только ссылку
15 vicof
 
11.08.16
13:48
+ задачу ты своим запросом не решаешь
16 vicof
 
11.08.16
13:50
ТаблицаОС.Загрузить(Покупка.Товары.Выгрузить());
17 vicof
 
11.08.16
13:50
а всю остальную фигню можно на форме настроить
18 alekowks
 
11.08.16
13:58
(12) если я оставлю только этот код, то откуда он будет брать данные для заполнения полей?
19 vicof
 
11.08.16
14:04
(18) Ну сейчас же знает) Это г-код, сотри его. Используй (16)
20 vicof
 
11.08.16
14:05
(19) Ну сейчас же берет из параметров *
21 alekowks
 
11.08.16
14:21
(20)  увы, но все так же не заполняет. Точки тоже пролетает(
22 alekowks
 
11.08.16
14:30
(20) извините, это я неправильно написала.
Все работает. Спасибо
23 alekowks
 
11.08.16
18:47
внезапно возник вопрос: если я добавляю новую строку, то она заполняется частично?
при выполнении команды заполняется только номенклатура, остальные столбцы не заполняются.
24 vicof
 
11.08.16
18:50
(23) надо в остальные столбцы добавить колонки, где путь к данным - номенклатура.код и др
25 alekowks
 
11.08.16
18:57
(24) т.е написать
что-то типа
ТаблицаОС.ДобавитьКолонки();
Колонка.Код итд?
26 alekowks
 
11.08.16
19:47
из-за данной команды ТаблицаОС.Загрузить(Покупка.Товары.Выгрузить());
игнорируются все другие действия
ЗначениеВРеквизитФормы и ЗаполнитьЗначения тоже не работают
совсем не понимаю как мне полученный результат задействовать, а то так получается из запроса только параметр покупка отрабатывает...
27 alekowks
 
12.08.16
11:24
Добавила такой код, но пишет, что поле объекта данных не обнаружен. Это по второй строке ругается

МассивДобавляемыхРеквизитов = Новый Массив;
    МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Код", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,3)),ТаблицаОС.Код , "Код"));
    МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ИнвентарныйНомер", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,3)),"ЭтотОбъект.ТаблицаОС" , "ИнвентарныйНомер, т."));
    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

НоваяКолонка = Элементы.Добавить("ИнвентарныйНомер", Тип("ПолеФормы"), Элементы.ТаблицаОСИнвентарныйНомер);
    НоваяКолонка.Заголовок = "ИнвентарныйНомер";
    НоваяКолонка.ПутьКДанным = "Номенклатура.Код";
    НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
28 vicof
 
12.08.16
11:25
Да просто колонки в реквизит формы добавь
29 alekowks
 
12.08.16
11:44
(28) через элемент.таб.добавить(новыйреквизит(....)?
перепробовала уже и так и так , но не работает
30 vicof
 
12.08.16
11:47
(29) руками. На форме
31 alekowks
 
12.08.16
12:00
(30) если руками добавлять, то вообще перестает заполнять
32 vicof
 
12.08.16
12:17
Вечером часов в 20 по Москве напиши на почту, смогу посмотреть
33 alekowks
 
12.08.16
13:17
Ребят может кто-нибудь еще может помочь в данном вопросе?
34 alekowks
 
15.08.16
10:49
в продолжении темы по текущему вопросу написала следующее, но опять же не выгружает данные(
ТЗО = Новый ТаблицаЗначений;
    ТЗО.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    ТЗО.Колонки.Добавить("ИнвентарныйНомер",Новый ОписаниеТипов("Число",
    Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Любой)));
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        НоваяСтрока = ТЗО.Добавить();
        НоваяСтрока.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        НоваяСтрока.ИнвентарныйНомер = ВыборкаДетальныеЗаписи.ИнвентарныйНомер;
    КонецЦикла;
35 Горогуля
 
15.08.16
10:51
а взять и Выгрузить() не кошерно?
36 alekowks
 
15.08.16
11:09
(35) Делала.
Загружаются данные только в одну колонку
37 Горогуля
 
15.08.16
11:20
(36) первое, что должно было прийти в голову: "а почему?". а ты зачем-то гкоды рисовать стала
38 alekowks
 
15.08.16
11:51
(37) пришло.
Группа колонок на самой форме создана, но эти колонки не заполняются.
Второй момент, что колонки код в поступлении товаров услуг нет. Хотя в запросе код должен браться из номенклатуры.
Далее пробовала загружать результат запроса в колонку, опять ничего не получилось. После чтения форумов и гугла пришла к выводу, что надо добавлять колонки и как-то их заполнять, вот поэтому и появилась туча кода, который в итоге не работает совсем...
Еще пробовала код вытаскивать отдельным запросом и как-то запихивать в ТЧ существующую, но опять не то(
39 Горогуля
 
15.08.16
11:52
(38) постучись в почту минут через 100-150. сама долго страдать будешь
40 Горогуля
 
15.08.16
11:53
ну или сейчас..
41 vicof
 
15.08.16
11:57
(38) Ну я ж говорил: колонки с кодом, инв номером, номенклатурой и наименованием создаешь руками на форме. В трех из них прописываешь пути к объекту как Номенклатура.Код. А номенклатуру загружаешь. В итоге у тебя при загрузке номенклатуры в Код, Наименование и ИнвНомер загрузятся данные из реквизитов загруженной номенклатуры.
42 alekowks
 
15.08.16
11:59
(41) они изначально на форме были созданы
43 Горогуля
 
15.08.16
12:00
(42) тогда переходи к следующему шагу
44 alekowks
 
15.08.16
12:00
(42) уточнение: там есть только путь к данным. И туда только Справочники.Номенклатура можно прописать
45 vicof
 
15.08.16
12:11
(44) Скринов кинь
46 alekowks
 
15.08.16
12:20
(45) извините, но как добавить сюда скрин?
47 vicof
 
15.08.16
12:21
на файлопомойку, сюда ссылку
48 alekowks
 
15.08.16
12:23
49 Горогуля
 
15.08.16
12:58
тут проще сделать, чем говорить. какой тип у кода? какой тип у наименования? (я в вижу, не надо повторять) зачем?
50 alekowks
 
15.08.16
13:01
(49) СправочникССылка.Номенклатура
А далее в свойствах поля ввода в графе путь к данным ставлю ТаблицаОС.Код.Код
51 alekowks
 
15.08.16
13:03
(41) Так сделала по вот этой подсказке, но когда ранее советовали
напрямую Номенклатура.Код не поставить
52 Горогуля
 
15.08.16
13:04
пиши почту, сделаю. не буду ничего объяснять
53 alekowks
 
15.08.16
13:07
(52) отправила вопрос на почту вам.
И все же хотелось бы достичь понимания спасибо
54 vicof
 
15.08.16
13:26
(53) Наименование - тип строка. Путь к данным - номенклатура.Наименование. Для остальных реквизитов также.
55 vicof
 
15.08.16
13:27
(54)
Книжки читай, профразработку.
Примеры в типовых смотри.
Понимание придет с опытом.
56 alekowks
 
15.08.16
13:40
(54) (55) спасибо, смотрю и читаю...

Не дает он в графу путь к данным добавить Номенклатура.Наименование или тоже самое с кодом. Там можно выбрать справочники, обработки, т.е метаданные
57 alekowks
 
15.08.16
13:53
(55) спасибо, частично понимание пришло)) но с кодом так и не договорилась((
58 alekowks
 
15.08.16
13:58
всем огромное спасибо за помощь и объяснения) я таки поняла и разобралась с этим вопросом)
59 vicof
 
15.08.16
14:14
Слава те хоспади