Имя: Пароль:
1C
1С v8
Подбор в Таблицу Документов различных типов
0 BlackMor
 
02.10.12
12:54
Задача организовать подбор во внешней обработке в таблицу отбора Документов трех разных типов. Если нужно подобрать один тип Документа
делаю так:

Процедура кпВыбрать(Подбор)
  ФормаПодбора = Документы.ЗарплатаКВыплатеОрганизаций.ПолучитьФормуВыбора(,ЭтаФОрма,);
  ФормаПодбора = ПланыВидовХарактеристик.ПланВидовХарактеристик1.ПолучитьФормуВыбора(,ЭтаФОрма,);
  ФормаПодбора.ЗакрыватьПриВыборе = Ложь;
  ФормаПодбора.Открыть();
КонецПроцедуры

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
   Если ТипЗнч(ЗначениеВыбора) = Тип("ДокументСсылка.ЗарплатаКВыплатеОрганизаций") Тогда
       Строчка = табзнач.Найти(ЗначениеВыбора,"Ведом");
       Если Строчка = Неопределено Тогда
           Строчка = табзнач.Добавить();
           Строчка.номе = ЗначениеВыбора.Номер;
           Строчка.ведом = ЗначениеВыбора.ссылка;
       Иначе
           Предупреждение("Ведомость уже выбрана!");                
       конецесли;
   конецЕсли;    
КонецПроцедуры

Еще нужно подобрать Документы
2. НачислениеЗарплатыРаботникамОрганизаций
3. РасчетСтраховыхВзносов

А с тремя разными типами не получается.
Подскажите, пожалуйста, кто хорошо знает методы 1С: 82 как
организовать такой подбор.
1 mikecool
 
02.10.12
12:56
ФормаПодбора = Документы.ЗарплатаКВыплатеОрганизаций.ПолучитьФормуВыбора(,ЭтаФОрма,);
  ФормаПодбора = ПланыВидовХарактеристик.ПланВидовХарактеристик1.ПолучитьФормуВыбора(,ЭтаФОрма,);

точто-точно документы подбираешь?
2 BlackMor
 
02.10.12
12:58
Прошу прощения. Это я экспериментировал.

Строка:

ФормаПодбора = ПланыВидовХарактеристик.ПланВидовХарактеристик1.ПолучитьФормуВыбора(,ЭтаФОрма,);

лишняя.
3 Cube
 
02.10.12
12:58
Выгрузку из ЗиУП делаешь?))
Я делал так: Форма делится на две части верхнюю и нижнюю.
В нижней части список отобранных документов.
В верхней части панель с закладками. На каждой закладке список документов одного вида.
Пользователь бегает по закладкам, ищет нужный документ и двойным щелчком добавляет его в список отобранных.
4 BlackMor
 
02.10.12
13:00
(3) Хорошее решение. А какой тип данных нужно указать у списка?
5 Cube
 
02.10.12
13:01
6 Cube
 
02.10.12
13:02
(4) Там ТЗ. У колонки "Документ ЗиУП" составной тип данных - те документы, которые туда подставлять будем.
7 Cube
 
02.10.12
13:03
+(5) Цветом выделены документы, которые уже отобраны в нижний список.
8 kn
 
02.10.12
13:05
(0)Как пример
Процедура ОбъектСогласованияНачалоВыбора(Элемент, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   
   СписокТипов = Новый СписокЗначений;
   
   СписокТипов.Добавить(Метаданные.Документы["АктСверкиВзаиморасчетов"].Имя, Метаданные.Документы["АктСверкиВзаиморасчетов"].Представление());
   СписокТипов.Добавить(Метаданные.Документы["АктСверкиПоКомиссионерам"].Имя, Метаданные.Документы["АктСверкиПоКомиссионерам"].Представление());
       
   СписокТипов.СортироватьПоПредставлению();
       
   Если ЗначениеЗаполнено(Элемент.Значение) Тогда
           ИмяНачальногоТипа = Элемент.Значение.Метаданные().Имя;
           НачальноеЗначение = СписокТипов.НайтиПоЗначению(ИмяНачальногоТипа);
   Иначе
           НачальноеЗначение = Неопределено;
   КонецЕсли;
       
   ВыбранныйЭлемент = ЭтаФорма.ВыбратьИзСписка(СписокТипов, Элемент, НачальноеЗначение);
   Если ВыбранныйЭлемент = Неопределено Тогда
       Возврат;
   КонецЕсли;

   ТипДокумента = ВыбранныйЭлемент.Значение;
   ФормаВыбора = Документы[ТипДокумента].ПолучитьФормуВыбора(,Элемент,);
   
   ФормаВыбора.Открыть();
   
КонецПроцедуры
9 BlackMor
 
02.10.12
13:06
(7) Спасибо огромное! Попробую написать подобное.
Это типовая обработка или специализированная.
Можно ознакомиться с текстом модуля??
10 shuhard
 
02.10.12
13:10
(0) есть и очевидное решение - использовать журнал документов в режиме выбора:
Формочка=ЖурналыДокументов.ДокументыПоНачислениюЗарплатыОрганизаций.ПолучитьФорму(,ЭтаФорма);
   Формочка.РежимВыбора=Истина;
   Формочка.ЗакрыватьПриВыборе=Ложь;
   Формочка.Открыть();
11 Cube
 
02.10.12
13:15
(9) Не, это не типовая, это я сам писал. Выгружает в УПП по COM-соединению. Мы уже ей не пользуемся, у нас теперь вот чо: http://storage7.static.itmages.ru/i/12/1002/h_1349169278_6240758_51de1f01b6.jpeg - работает на лпанах обмена. По сути, развитие обмена из (5).
12 Cube
 
02.10.12
13:16
+(11) Эта новая обработка вообще показывает какие реквизиты изменены были.
13 Cube
 
02.10.12
13:20
(9) Модуль большой. Если касательно сабжа, то вот всего две процедуры:

Процедура СписокДокументовВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   НайденныеСтроки = ДокументыДляВыгрузки.НайтиСтроки(Новый Структура("ДокументЗиУП", ВыбраннаяСтрока));
   Если НайденныеСтроки.Количество() = 0 Тогда
       Строка = ДокументыДляВыгрузки.Добавить();
       Строка.ДокументЗиУП = ВыбраннаяСтрока;
   Иначе
       Сообщить("Этот документ уже добавлен в список документов для выгрузки.");
   КонецЕсли;
   
КонецПроцедуры //СписокДокументовВыбор()

Процедура СписокДокументовПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   
   Если ДокументыДляВыгрузки.НайтиСтроки(Новый Структура("ДокументЗиУП", ДанныеСтроки.Ссылка)).Количество() > 0 Тогда
       ОформлениеСтроки.ЦветФона = Новый Цвет(225, 230, 185);
   Иначе
       ОформлениеСтроки.ЦветФона = ЦветаСтиля.ЦветФонаПоля;
   КонецЕсли;
   
КонецПроцедуры //СписокДокументовПриВыводеСтроки()
14 BlackMor
 
02.10.12
13:25
(8), (10), (13) Еще раз всем огромное СПАСИБО !!!
Сажусь писать.
Основная теорема систематики: Новые системы плодят новые проблемы.