Имя: Пароль:
1C
1С v8
Конвертация
,
0 Диля_Вин
 
02.03.14
10:20
Всем привет и всех  с Масленицей! Правила обмена УАТ ПРОФ документ путевой лист, в БП корп документ требование накладная .После долгих разборов с КД2 всё получилось,но ГБ через месяц отправила на переделку, аргументировав слишком большим потоком документов после обмена , получается каждый документ путевой лист грузится из Рарус УАТ  в  Бп в новый документ Требование накладная в месяц выходит от 500 до 800 документов.
Я так поняла , что нужна сортировка всех Путевых листов за месяц по Транспортному средству, Номенклатуре и маршрутам , и уже что получится загрузить в БП в Один Документ Требование накладная. Кто нибудь делал подобное(сортировку, группировку )в КД2? Подскажите пожалуйста если не затруднит!
1 Диля_Вин
 
02.03.14
10:25
ПослеЗагрузки:
Если Объект.Материалы.Количество() = 0 тогда
    Отказ = Истина;
Иначе
    Для Каждого СтрокаТабличнойЧасти Из Объект.Материалы Цикл
        Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТабличнойЧасти, "Материалы", Истина);
        Если Найти(СтрокаТабличнойЧасти.НоменклатурнаяГруппа.Наименование, "Инкассация") > 0 Тогда
            СтрокаТабличнойЧасти.СчетЗатрат = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство;
        ИначеЕсли Найти(СтрокаТабличнойЧасти.НоменклатурнаяГруппа.Наименование, "Резервные фонды") > 0 Тогда
            СтрокаТабличнойЧасти.СчетЗатрат = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы;    //25 счет
        ИначеЕсли Найти(СтрокаТабличнойЧасти.НоменклатурнаяГруппа.Наименование, "Другие виды деятельности") > 0 Тогда
            СтрокаТабличнойЧасти.СчетЗатрат = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы;      //26 счет
        КонецЕсли;
        
        Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.НоменклатурнаяГруппа) И
             Найти(СтрокаТабличнойЧасти.НоменклатурнаяГруппа.Наименование,
                    "Перевозка ценностей РФ ЦБ") > 0 Тогда
            СтрокаТабличнойЧасти.ПодразделениеЗатрат =
                Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию("Резервные Фонды");
        Иначе
            СтрокаТабличнойЧасти.ПодразделениеЗатрат = Объект.ПодразделениеОрганизации;
        КонецЕсли;
    КонецЦикла;
    
    Запрос = Новый Запрос;

    Запрос.Текст =
    "ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка ИЗ Справочник.Склады ГДЕ ПодразделениеОрганизации = &Подразделение";

    Запрос.УстановитьПараметр("Подразделение", Объект.ПодразделениеОрганизации);

    Выборка = Запрос.Выполнить().Выбрать();

    Если Выборка.Следующий() Тогда
        Объект.Склад = Выборка.Ссылка;
    КонецЕсли;        
КонецЕсли;
2 Мимохожий Однако
 
02.03.14
10:33
Сделай обработку, которая кучу документов объединяет в один.
3 Генератор
 
02.03.14
11:16
я бы в правиле выгрузки поставил произвольный алгоритм и в обработчике написал бы запросом сбор данных за месяц в целом, выгружал бы с помощью ВыгрузитьПоПравилу сводные документы
4 Диля_Вин
 
02.03.14
11:17
Можно поподробнее, возможно эту обработку сделать в правилах или нет?
5 Диля_Вин
 
02.03.14
11:22
Генератор-спасибо, примерно поняла Алгоритм запроса попадался в КД..
6 Диля_Вин
 
02.03.14
11:25
Генератор,-это немного не поняла "выгружал бы с помощью ВыгрузитьПоПравилу сводные документы"
7 Генератор
 
02.03.14
11:29
для каждого документа делаешь структуру с заполненными полями и табличной частью. Выгружаешь уже структуру с помощью ВыгрузитьПоПравилу
8 Диля_Вин
 
02.03.14
17:47
Генератор : Оопс, ну вообщем  поняла- примерно предполагала подобное ....   , начала  реализовывать это в КД  ну  попала в тупик , в любом случае спасибо! Буду дальше инфу о КД изучать.
9 zak555
 
02.03.14
17:57
(2) только нужно не забыть, что уже выгружено
10 zak555
 
02.03.14
18:03
(8) какой тупик ?

откройте книгу по КД там как раз есть Ваш пример
11 Диля_Вин
 
02.03.14
18:23
zak555(10) Я поняла , у нас сейчас 23.20 , семья , дети ...Я то, что получилось почти неделю делала-без книг  , все советы дельные -доберусь до работы начну ,  нет инета на рабочем месте -только с телефона , жалко, приходится только в вечернее  по нашему  время, дома   спрашивать.
12 zak555
 
02.03.14
18:43
(11) например, есть в обмене из тис 9.2 в ут 10.3 пвд РезервыТоваров


Товары = СоздатьОбъект("ТаблицаЗначений");
Товары.НоваяКолонка("Номенклатура");
Товары.НоваяКолонка("Количество");
Товары.НоваяКолонка("ЕдиницаИзмерения");
Товары.НоваяКолонка("Коэффициент");
Товары.НоваяКолонка("НовоеРазмещение");

ДатаТА = ПолучитьДатуТА();     
ДатаНач = ?((ПустоеЗначение(ДатаНачала) = 0) И (ДатаНачала < ДатаТА), ДатаНачала,ДатаТА);        

Организация = Параметры.ОрганизацияПоУмолчанию;

Запрос = СоздатьОбъект("Запрос");    
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНач по ДатаНач;    
|ЮрЛицо = Регистр.РезервыТМЦ.Фирма.ЮрЛицо;
|Номенклатура = Регистр.РезервыТМЦ.Номенклатура;
|Склад = Регистр.РезервыТМЦ.Склад;
|ДоговорПокупателя = Регистр.РезервыТМЦ.ДоговорПокупателя;
|ЗаявкаПокупателя = Регистр.РезервыТМЦ.ЗаявкаПокупателя;
|Количество = Регистр.РезервыТМЦ.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка ЮрЛицо;
|Группировка ДоговорПокупателя без групп;
|Группировка ЗаявкаПокупателя;
|Группировка Склад без групп;
|Группировка Номенклатура без групп;
|" + ?(Параметры.ВыгружатьВБазовую = 1,"Условие (ЮрЛицо = Организация);","") + "
|";

Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда
    Пока Запрос.Группировка(1) = 1 Цикл
        Пока Запрос.Группировка(2) = 1 Цикл
            Пока Запрос.Группировка(3) = 1 Цикл                
                Пока Запрос.Группировка(4) = 1 Цикл                
                    Если ПустоеЗначение(Запрос.Склад)=1 Тогда
                        Продолжить;
                    КонецЕсли;
                    Товары.УдалитьСтроки();
                    Пока Запрос.Группировка(5) = 1 Цикл    
                        Если Запрос.КоличествоКонОст > 0 Тогда
                            Товары.НоваяСтрока();
                            Товары.Номенклатура = Запрос.Номенклатура;
                            Товары.Количество = Запрос.КоличествоКонОст;
                            Товары.ЕдиницаИзмерения = Запрос.Номенклатура.БазоваяЕдиница;
                            Товары.Коэффициент = Запрос.Номенклатура.БазоваяЕдиница.Коэффициент;
                            Товары.НовоеРазмещение = Запрос.Склад;
                        КонецЕсли;
                    КонецЦикла;
                    
                    Если Товары.КоличествоСтрок()>0 Тогда
                        ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
                        ИсходящиеДанные.Установить("Организация", Запрос.ЮрЛицо);
                        ИсходящиеДанные.Установить("Дата", ДатаНач);
                        ИсходящиеДанные.Установить("Контрагент", Запрос.ДоговорПокупателя.Владелец);                                    
                        Ключ = "Заказ покупателя № " + СокрЛП(Запрос.ЗаявкаПокупателя.НомерДок) + " от " + Запрос.ЗаявкаПокупателя.ДатаДок;
                        ИсходящиеДанные.Установить("Комментарий", Ключ);
                        ИсходящиеДанные.Установить("Товары", Товары);
                        ВыгрузитьПоПравилу(,, ИсходящиеДанные,, "РезервированиеТоваров");
                КонецЕсли;
            КонецЦикла;                                
        КонецЦикла;
    КонецЦикла;
  КонецЦикла;
КонецЕсли;



если отрыть пко РезервированиеТоваров, то можно увидеть, что у всех пкс стоит галка получать из входящих данных