Имя: Пароль:
1C
1С v8
Обработка заполнения табличной части 1С 8 (Создание)
,
0 ElidaDV
 
18.05.15
16:33
Товарищи добрый день.
Задумал сделать обработку заполнения табличной части[ИнвентарьИХозяйственныеПринадлежности] документа Передача материалов в эксплуатацию на основании документа перемещения товаров

Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) Экспорт
    
ФормаВыбораПеремещения = ПолучитьФорму("ФормаДокумента");

ФормаВыбораПеремещения.ОткрытьМодально();

ТабличнаяЧасть = Объект[Документы.ПередачаМатериаловВЭксплуатацию.ИнвентарьИХозяйственныеПринадлежности];
    


Если НЕ ЗначениеЗаполнено(ДокументПеремещения) Тогда
    Сообщить("Не выбран документ перемещения");
Возврат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументПеремещения",ДокументПеремещения);

Запрос.Текст = "ВЫБРАТЬ
               |    ПеремещениеТоваровТовары.Номенклатура,
               |    ПеремещениеТоваровТовары.Количество
               |ИЗ
               |    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
               |ГДЕ
               |    ПеремещениеТоваровТовары.Ссылка = &ДокументПеремещения";
                          
Результат = Запрос.Выполнить().Выгрузить();

ТабличнаяЧасть.Очистить();

Для Каждого ЭлементРезультата из Результат Цикл
    
    НоваяСтрокаТЧ = ТабличнаяЧасть.Добавить();

    ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ,ЭлементРезультата);

    Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НоваяСтрокаТЧ, ИмяТабличнойЧасти, Истина);
    
КонецЦикла;

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


*****************

После подключения выдает:

Заполнение ТЧ не произведено!
Метод объекта не обнаружен (Инициализировать)
*****************
где косяк подскажите?

Пробовал писать так:

Процедура Инициализировать(Объект, ИмяТабличнойЧасти = Неопределено, ТабличноеПолеОбъекта = Неопределено) Экспорт
КонецПроцедуры

Разницы не какой
1 asady
 
18.05.15
16:36
(0) платформа? конфа? релиз?
2 Garykom
 
гуру
18.05.15
16:40
(1) тут! все! телепаты!
3 ElidaDV
 
18.05.15
16:41
упс, у нас просто уже 23.40....

БП 2.0 (последний релиз)
Платформа: 8.3.5
4 Garykom
 
гуру
18.05.15
16:45
95% что с правами косяки
5 ElidaDV
 
18.05.15
16:49
(4) Запускаю под админом, собственно я создал читстую базу с одним пользователем!
6 Garykom
 
гуру
18.05.15
16:49
(4) сорри был не прав, хотя... есть ли права на правку конфы?

http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=616705&threadtype=0
7 ElidaDV
 
18.05.15
16:55
(6) конфа дописывается походу необходимости.
8 Garykom
 
гуру
18.05.15
17:00
(7) тогда проверить если ли эта механизма для "документа Передача материалов в эксплуатацию"
если нет добавить
9 ElidaDV
 
18.05.15
17:04
(8) Что проверить???
Обработку подключаю как внешнюю обработку заполнения табличных частей.
10 ВРедная
 
18.05.15
17:05
(9) Процедура Инициализировать в модуле объекта или формы?
11 Garykom
 
гуру
18.05.15
17:07
(9) как бы код конфы то должен вызвать по кнопочке вашу экпортную процедуру в вашей внешней обработке

а если для объекта этого вызова нету? ну не сделали...
12 ElidaDV
 
18.05.15
17:08
(10) Процедура
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПоле) Экспорт;
в модуле формы
13 ElidaDV
 
18.05.15
17:15
Перенес процедуру в модуль объекта. Заработало.

Новый косяк!!!!

Нажимаем кнопку заполнить, открывается список документов перемещения, выбираем любой, он закрывается. 1с выдает сообщение: не выбран документ перемещения.
14 ElidaDV
 
18.05.15
17:16
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) Экспорт
    
ФормаВыбораПеремещения = Документы.ПеремещениеТоваров.ПолучитьФормуВыбора();
ФормаВыбораПеремещения.Заголовок = "Выберите документ перемещения для заполнения документа";
ФормаВыбораПеремещения.РежимВыбора = Истина;
//ФормаВыбораПеремещения.Отбор.Организация.Использование = Истина;

ФормаВыбораПеремещения.ОткрытьМодально();

ТабличнаяЧасть = Объект[ИмяТабличнойЧасти];
    


Если НЕ ЗначениеЗаполнено(ДокументПеремещения) Тогда
    Сообщить("Не выбран документ перемещения");
Возврат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументПеремещения",ДокументПеремещения);

Запрос.Текст = "ВЫБРАТЬ
               |    ПеремещениеТоваровТовары.Номенклатура,
               |    ПеремещениеТоваровТовары.Количество
               |ИЗ
               |    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
               |ГДЕ
               |    ПеремещениеТоваровТовары.Ссылка = &ДокументПеремещения";
                          
Результат = Запрос.Выполнить().Выгрузить();

ТабличнаяЧасть.Очистить();

Для Каждого ЭлементРезультата из Результат Цикл
    
    НоваяСтрокаТЧ = ТабличнаяЧасть.Добавить();

    ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ,ЭлементРезультата);

    Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НоваяСтрокаТЧ, ИмяТабличнойЧасти, Истина);
    
КонецЦикла;

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



Щас то чего не так?
15 Garykom
 
гуру
18.05.15
17:28
(14) мда...
16 ElidaDV
 
18.05.15
17:29
ВСЕ ЗАРАБОТАЛО!!!!!!
    ФормаВыбораПеремещения = ПолучитьФорму("Форма");    
//ФормаВыбораПеремещения = Документы.ПеремещениеТоваров.ПолучитьФормуВыбора();
//ФормаВыбораПеремещения.Заголовок = "Выберите документ перемещения для заполнения документа";
//ФормаВыбораПеремещения.РежимВыбора = Истина;
//ФормаВыбораПеремещения.Отбор.Организация.Использование = Истина;

ФормаВыбораПеремещения.ОткрытьМодально();

ТабличнаяЧасть = Объект[ИмяТабличнойЧасти];
    


Если НЕ ЗначениеЗаполнено(ДокументПеремещения) Тогда
    Сообщить("Не выбран документ перемещения");
Возврат;
КонецЕсли;
17 ElidaDV
 
18.05.15
17:31
Дельный совет был (9) Спасибо Вредной))
18 Garykom
 
гуру
18.05.15
17:36
(16) не подскажете что это?

ФормаВыбораПеремещения = ПолучитьФорму("Форма");

и

ФормаВыбораПеремещения.ОткрытьМодально();

?
19 ElidaDV
 
18.05.15
17:53
(18)
1. используя модальное открытие(пока форма открыта все остальные окна 1С недоступны), потому что при таком способе открытия дальнейший наш код в процедуре Инициализировать выполняться не будет, пока пользователь не закроет форму.
это к ФормаВыбораПеремещения.ОткрытьМодально();

2. Нам необходимо что бы пользователь выбрал документ Перемещение товаров, поэтому напишем код открытия формы выбора документа. Для начала получим эту форму в переменную, используя метод внешней обработки ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>). Нам достаточно заполнить только первый параметр этого метода, передав туда строку с именем нашей формы.
Под нашей формой подразумевается форма добавленая мной во внешнюю обработку, в этой форме поле с реквизитом
Данные: ДокументПеремещения.
ТипЗначения (СправочникСсылка.ДокументПеремещения)

Про это вопрос был?
20 Garykom
 
гуру
18.05.15
17:57
(19) да терь понял, я то думал используется форма выбора доков перемещения из конфы, а не из обработки своя добавленная
Программист всегда исправляет последнюю ошибку.