Имя: Пароль:
1C
1С v8
Форма документа
0 LoneWolf134
 
16.11.13
15:01
Здраствуйте, мне на учёбе задали создать программу в 1с:8.2 "Электронная библиотека" . Я только начинающий программист в данной среде, поэтому прошу вас помощи в моей проблеме. У меня есть Документ "ВыдачаКниги", в котором я выбираю Читателя,книгу,которую он взял,количество,ДатаВзял и ДатаВозврата, провожу движение по данному документу в РегистрНакопления (остатки) "ДолжникиКниг" по реквизитам: Читатель,Книга,Автор. Также у меня есть документ "ВозвратКниги", в котором мне нужно сделать так, чтобы когда я выбирал Читателя (реквизит), у меня во всплывающем списке "Наименование" должны выходить именно те книги, которые числятся за данным Читателем. Мне дали подсказку, чтобы я сделал всё через ТаблицуЗначений, но я незнаю как мне сделать этот самый всплывающий список. В общем вот мой код:

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

    
    Пока Выборка.Следующий() Цикл
        
    Читатель=Объект.Читатель;
    Читатель1=Выборка.Читатель;
    Книга=Выборка.Книга;
    Автор=Выборка.Автор;
        
        Отбор = Новый Структура();
        Отбор.Вставить("Читатель",Читатель);
        
    Строки=ТабЗнач.НайтиСтроки(Отбор);
    Если Строки.Количество()>0 тогда
        
        Стр=ТабЗнач.Добавить();
        Стр.Читатель=Читатель1;
        Стр.Книга=Книга;
        Стр.Автор=Автор;

    КонецЕсли;

    КонецЦикла;

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

&НаКлиенте
Процедура ЧитательПриИзменении(Элемент)

    ВыводДанных();

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

&НаКлиенте
Процедура Возврат1НаименованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
КонецПроцедуры


Вот я так понимаю, что мне надо именно в Процедуру "Возврат1НаименованиеНачалоВыбора" записать какой-то код по выгрузке данной таблицы значений. Помогите пожалуйста.
1 Поросенок Петр
 
16.11.13
15:35
Блин, чувак, я тебе завидую.
2 Поросенок Петр
 
16.11.13
15:42
Даже хер знает чем тебе помочь. Единственно что толковым советом.

Тебе нужно редактировать информацию документа (а именно возращаемые книги) каким-то другим способом. Т.е. у тебя на форме будет нечто имитирующее часть документа. Когда такая херня происходит, это дело что у тебя на форме, надо читать в ПриЧтенииНаСервере или ПРиСОзданиии если объект новый. Перед записью, записывать.
ХЗ толи я крепко пьян, толи на самом деле 3/4 форума не знает и таких истин.
3 Поросенок Петр
 
16.11.13
15:46
И да, чувак, ник LoneWolf это гейство какое-то.
4 LoneWolf134
 
16.11.13
15:56
Помог :)
5 av_x86
 
16.11.13
16:14
Если я правильно понял то для всплывающего списка тебе нужна функция - ВыбратьИзСписка.
После того как ты выбрал читателя, переходишь в табличную часть документа и там выбираешь книги.
Т.е функцию ВыбратьИзСписка привязываешь к столбцу наименование в ТЧ.
6 LoneWolf134
 
16.11.13
16:57
(5) Я не могу привязать функцию к данному столбцу, т.к. таблица значений у меня находится на сервере. Можете подсказать как выгрузить её данные НаКлиент ?
7 Поросенок Петр
 
16.11.13
17:38
На клиенте бывает массив, у таблицы значений есть список методов описанный в СП, чо те не ясно?