Имя: Пароль:
1C
1C 7.7
v7: 1cpp ПоставщикДанных.Журнал
0 botman4
 
11.07.17
17:22
Пытаюсь изучить данные класса:
//#include ПоставщикДанных\Defcls.prm
//#include Объекты_v8\Defcls.prm
//#include ПрямыеЗапросы\Defcls.prm
//#include ЭлементыФормы\Defcls.prm

Создал один документ "МойДокумент", создал обычный Журнал "МойЖурнал"
На форму кинул две кнопки для "Контейнеров"
В модуле добавил следующее:

//*************************************************
Перем ПоставщикДанных;
Перем ТабличноеПоле;
Перем Данные;

Процедура УстановитьПоставщикаДанныхЖурнал()
    
    ПоставщикДанных = СоздатьОбъект("ПоставщикДанных");
    ПоставщикДанных.КонтейнерТабличногоПоля = "кнСписокТест";
    ПоставщикДанных.КонтейнерКоманднойПанели = "кнКоманднаяПанель";
    ПоставщикДанных.ТипЗначений = "Журнал.МойЖурнал";

    ТабличноеПоле = ПоставщикДанных.ТабличноеПоле;
    ТабличноеПоле.СтильРамки = 1;
    ТабличноеПоле.СтильЗаголовков = 1;

    Данные = ПоставщикДанных.Данные;
    Данные.СоздатьКнопкиПоУмолчанию();
    //Данные.РеквизитСортировки = "ДатаДокумента";
    //Данные.КолонкаПиктограмм = "НомерДокумента";
    Данные.РежимВыбора = 0;
    Данные.РежимОтладки = -1;
    Данные.АвтоОбновление = 1;
    Данные.ПериодАвтоОбновления = 10;

    Данные.РазрешитьОтборПоГрафам = 1;
    Данные.СоздатьКнопкиПоУмолчанию();             
    ТабличноеПоле.ВосстановитьПозициюКолонок();
    ПоставщикДанных.Обновить();
    
КонецПроцедуры

Процедура ПриОткрытии()      
    мОбКомпонентаРаботыСФормойРасширениеФормы = СоздатьОбъект("РасширениеФормы");      
    мОбКомпонентаРаботыСФормойРасширениеФормы.УстановитьФорму(Форма);
    мАтрибутМногострочнаяЧасть = мОбКомпонентаРаботыСФормойРасширениеФормы.ПолучитьАтрибут("МногострочнаяЧасть");                  
    мАтрибутМногострочнаяЧасть.Видимость = 0;  
    Форма.ИспользоватьСлой("Основной",2);
КонецПроцедуры

Процедура ПослеОткрытия()
    Форма.кнКоманднаяПанель.Видимость(0);
    Форма.кнКоманднаяПанель.Видимость(1);
КонецПроцедуры

Процедура ПослеСозданияФормы()
    УстановитьПоставщикаДанныхЖурнал();
КонецПроцедуры

Вылетает с ошибкой :

ПоставщикДанных.ТипЗначений = "Журнал.МойЖурнал";
{Журнал.МойЖурнал.Форма.ФормаСписка.Модуль(10)}: ПоставщикДанных::ПриЗаписи_ТипЗначений(Строка Параметр=Журнал.МойЖурнал) : ПоставщикДанных.Журнал::ПриЗаписи_ВидЖурнала(Строка Параметр=МойЖурнал) : ПоставщикДанных.ТабличноеПоле::Обновить() : ПоставщикДанных.Журнал::УстановитьПоставщикаДанных() : no such table: Документ.МойДокумент
ПоставщикДанных.УстановитьТекстЗапроса(ТекстЗапроса,"[КлючПорядка]","[ТекущийДокумент :Документ]");
{D:\База1C\ПоставщикДанныхПример\ПоставщикДанных\ПоставщикДанных.Журнал.ert(1071) }

вирт().Обновить();
{D:\База1C\ПоставщикДанныхПример\ПоставщикДанных\ПоставщикДанных.ТабличноеПоле.ert(670) }

ТабличноеПоле.Обновить();
{D:\База1C\ПоставщикДанныхПример\ПоставщикДанных\ПоставщикДанных.Журнал.ert(1193) }

ПоставщикДанных.ВидЖурнала = Сред(ТипЗначений,8);
{D:\База1C\ПоставщикДанныхПример\ПоставщикДанных\ПоставщикДанных.ert(128) }


может кто подкинет код как правильно запустить Поставщика журнала ?
спасибо.
1 Ёпрст
 
гуру
11.07.17
17:25
(0) может того, заместо МойДокумент всё же поставишь правильный Вид документа ?
Ну там, реализация, ПоступлениеТМЦ..
2 botman4
 
11.07.17
18:41
в документе не было ни одного реквизита, только ТЧ, добавил реквизит - перестал валиться...
3 botman4
 
11.07.17
19:04
Подскажите пожалуйста со следующим вопросом.

Допустим в документе есть Реквизит "Клиент" (Справочник)
я размещу на форме журнала Реквизит диалога для выбора этого клиента, как мне фильтрануть после выбора?
4 Djelf
 
гуру
11.07.17
23:43
(3) Поставщики то разные бывают...
Для 1sqlite использую конструкцию вида
WHERE CASE WHEN @НомерДок='*' THEN 1 ELSE Журнал.DOCNO LIKE @НомерДок END
И потом ОбновитьСтроки()
В этом случае запрос не надо заново устанавливать. Быстрее и удобнее.
По аналогии что-то подобное может сработать и в Классе ПоставщикДанных.
Закон Брукера: Даже маленькая практика стоит большой теории.