Имя: Пароль:
1C
1С v8
КД: несколько документов из одного набора записей регистра сведений
,
0 trancer
 
27.06.13
19:38
Всем привет.

Есть две разные конфы. Из одной нужно перегонять регистр сведений в табличную часть дока в другой конфе. Это понятно как сделать.

Задача усложняется тем, что из набора записей должно получаться несколько документов в зависимости от того, что в этом наборе есть. Конкретнее: записи, относящиеся к разным месяцам должны попасть в разные документы. Короче разбивка такая по месяцам.

Поделитесь, если у вас такой опыт есть.

Спасибо.
1 trancer
 
28.06.13
11:11
Ап с утра
2 Aleksey
 
28.06.13
11:11
А в чем затык?
3 Aleksey
 
28.06.13
11:12
в ПВД формируешь виртуальный документ и выгрузить по правилу
4 trancer
 
28.06.13
11:17
(3) Хмхмхм. Идея хорошая. А в ПВД несколько раз в цикле можно будет ВыгрузитьПоПравилу?
5 Aleksey
 
28.06.13
11:22
(4) да пофиг
6 trancer
 
29.06.13
23:29
В общем так и сделал. В ПВД для набора записей прописал ВыгрузитьПоПравилу для разных записей. Че-то сначала затупил, вечер тогда был)
7 Cyberhawk
 
29.06.13
23:31
(6) покажи код из ПВД и скриншот ПКО, пожалуйста (интересно)
8 Лефмихалыч
 
29.06.13
23:35
(0) >Задача усложняется тем, что из набора записей должно получаться несколько документов

отличный способ прострелить себе коленку и нажить кучу врагов. Не делай так. Переноси объекты один-в-один, иначе хренову гору глупых проблем огребешь. И это, кстати, справедливо не только для 1С
9 trancer
 
02.07.13
10:57
(6) весь код обработчика Перед выгрузкой из ПВД выкладывать не буду, он большой и неинтересный. Суть такова, что там все записи разбираются на группы по месяцам. Потом для каждого месяца заполняются ИсходящиеДанные и выгружаются по правилу. Вот так:


КоллекцияОбъектов = Новый ТаблицаЗначений();
КоллекцияОбъектов.Колонки.Добавить("ПервыйВидВремени1", Новый ОписаниеТипов("СправочникСсылка.ВидыДнейВГрафикеСотрудника"));
// ... и так далее
КоллекцияОбъектов.Колонки.Добавить("ПервыйЧасов1", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(5, 2, ДопустимыйЗнак.Любой)));
// ... так далее
КоллекцияОбъектов.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
КоллекцияОбъектов.Колонки.Добавить("ФизЛицо", Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));

ИсходящиеДанные = Новый Структура("Сотрудник, ПериодРегистрации, ОтработанноеВремя", СтрокаТЗ1.Сотрудник, СтрокаТЗ.Месяцы1, КоллекцияОбъектов);

// тут нужным образом заполняется КоллекцияОбъектов

ВыгрузитьПоПравилу(Объект,, ИсходящиеДанные,, "ТабельУчетаРабочегоВремениОрганизации");

       
В ПКО обработчик Поля поиска вот такой:


Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.Ссылка
   |ИЗ
   |    Документ.ТабельУчетаРабочегоВремениОрганизации.ОтработанноеВремя КАК ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя
   |ГДЕ
   |    ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.Сотрудник = &Сотрудник
   |    И НАЧАЛОПЕРИОДА(ТабельУчетаРабочегоВремениОрганизацииОтработанноеВремя.Ссылка.ПериодРегистрации, МЕСЯЦ) = &ПериодРегистрации");
Запрос.УстановитьПараметр("ПериодРегистрации", СвойстваПоиска["ПериодРегистрации"]);
Запрос.УстановитьПараметр("Сотрудник", ПараметрыОбъекта["Сотрудник"]);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
   СсылкаНаОбъект = Выборка.Ссылка;
Иначе
   СсылкаНаОбъект = Неопределено;
КонецЕсли;
ПрекратитьПоиск = Истина;


В ПКО весь приемник заполняется из входящих данных. Вот так https://dl.dropboxusercontent.com/u/8057759/screens/2013-07-02%2010_56_23.png

Примерно на эту же тему у меня был вопрос тут v8: КД: Добавление табличных частей в документ из других документов (того же типа). Разрешился примерно по этому же способу.
10 trancer
 
02.07.13
10:58
Едрит-мадрид. Вот скока пишу сюда до сих пор не могу понять этот парсер. Ну как правильно код, то выделять, чтобы красиво было в посте?
11 trancer
 
02.07.13
11:00
Нормальная ссылка на скрин http://goo.gl/mBqUT
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.