Операция.ВыбратьОперацииСПроводками (...) в виде запроса
31.03.2006
10:20
#1
"Есть такой простенький код:
Опер=СоздатьОбъект("Операция");
СпрК=СоздатьОбъект("Справочник.Контрагенты");
СпрД=СоздатьОбъект("Справочник.Договоры");
...
Опер.ИспользоватьСубконто(ВидыСубконто.Контрагенты,СпрК.ТекущийЭлемент());
Опер.ИспользоватьСубконто(ВидыСубконто.Договоры,СпрД.ТекущийЭлемент());
//*****************************************************************************
Опер.ВыбратьОперацииСПроводками('01.01.03',,"50,76.1");
Пока Опер.Получитьпроводку()=1 Цикл
ТабЗн.НоваяСтрока();
ТабЗн.НомерДок=Опер.НомерПроводки();
ТабЗн.НомерДокумента=Опер.Документ.НомерДок;
ТабЗн.ДатаПров=Опер.ДатаОперации;
ТабЗн.СчетДебета=Опер.Дебет.Счет;
ТабЗн.СчетКредита=Опер.Кредит.Счет;
КонецЦикла;
.....
Все хорошо, но возникла большая проблема по быстродействию - ну очень медленно работает, если еще давать
выборку по всей базе, то вообще усе встает. Может запрос будет побыстрее шевелиться, я пробовал сочинить такой запрос:
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с дата1 по дата2;
|ОбрабатыватьОперации Все;
|ДатаОперации = Операция.ДатаОперации;
|СуммаОперации = Операция.СуммаОперации;
|СчетД = Операция.Дебет.Счет;
|СчетК = Операция.Кредит.Счет;
|ТекущийДокумент = Операция.ТекущийДокумент;
|Контрагенты = Операция.Дебет.Контрагенты, Операция.Кредит.Контрагенты;
|Договоры = Операция.Дебет.Договоры, Операция.Кредит.Договоры;
|Условие(СчетД=""""50"""");
|Условие(СчетК=""""76.1"""");
|Условие(Контрагенты=СпрК.ТекущийЭлемент());
|Условие(Договоры =СпрД.ТекущийЭлемент());
|"//}}ЗАПРОС
Но он не работает - одна из заковык (определил методом тыка) в строках СчетД, СчетК - чтобы по
ним шла выборка (по моему скромному мнению) должна быть группировка по проводке в операции - а как ее дать?
Вставляю в запрос строки: < Пров=Операция.Проводка и далее Группировка(Пров) > идет ругательство на Операция.Проводка.
Может кто подскажет-поделиться своим опытом???? =C уважением Л.Владимир
Что бы было понятнее:
Исходная задача - перенос платежей из 1с в другую учетную систему. Для этого мне необходимо
идентифицировать платеж по счету дебета-кредита, контрагенту и какому-то уникальному номеру (я беру - номер проводки+номер документа, до внутренних номеров записей 1с я не смог добраться), чтобы в последующем выгруженный платеж не обрабатывать повторно. Платеж может быть в выписке, операции, введенной вручную и т.д... А БИ, (как я понял) все это делают (я смотрел документы Анализ субконто, Анализ счета по субконото), но вот уникальный номер документа-проводки они мне не дадут, - а если бы дали, то усе было бы ОК - задача решена. Я, кстати, нашел на еще одном 1с форуме обсуждение этой же задачи (происходило год назад) - как заменить ВыбратьОперацииСПроводками запросом с той же целью (что бы было быстрее), но увы, на 7 страницах рассуждений все остались при своих мнениях...
"
Опер=СоздатьОбъект("Операция");
СпрК=СоздатьОбъект("Справочник.Контрагенты");
СпрД=СоздатьОбъект("Справочник.Договоры");
...
Опер.ИспользоватьСубконто(ВидыСубконто.Контрагенты,СпрК.ТекущийЭлемент());
Опер.ИспользоватьСубконто(ВидыСубконто.Договоры,СпрД.ТекущийЭлемент());
//*****************************************************************************
Опер.ВыбратьОперацииСПроводками('01.01.03',,"50,76.1");
Пока Опер.Получитьпроводку()=1 Цикл
ТабЗн.НоваяСтрока();
ТабЗн.НомерДок=Опер.НомерПроводки();
ТабЗн.НомерДокумента=Опер.Документ.НомерДок;
ТабЗн.ДатаПров=Опер.ДатаОперации;
ТабЗн.СчетДебета=Опер.Дебет.Счет;
ТабЗн.СчетКредита=Опер.Кредит.Счет;
КонецЦикла;
.....
Все хорошо, но возникла большая проблема по быстродействию - ну очень медленно работает, если еще давать
выборку по всей базе, то вообще усе встает. Может запрос будет побыстрее шевелиться, я пробовал сочинить такой запрос:
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с дата1 по дата2;
|ОбрабатыватьОперации Все;
|ДатаОперации = Операция.ДатаОперации;
|СуммаОперации = Операция.СуммаОперации;
|СчетД = Операция.Дебет.Счет;
|СчетК = Операция.Кредит.Счет;
|ТекущийДокумент = Операция.ТекущийДокумент;
|Контрагенты = Операция.Дебет.Контрагенты, Операция.Кредит.Контрагенты;
|Договоры = Операция.Дебет.Договоры, Операция.Кредит.Договоры;
|Условие(СчетД=""""50"""");
|Условие(СчетК=""""76.1"""");
|Условие(Контрагенты=СпрК.ТекущийЭлемент());
|Условие(Договоры =СпрД.ТекущийЭлемент());
|"//}}ЗАПРОС
Но он не работает - одна из заковык (определил методом тыка) в строках СчетД, СчетК - чтобы по
ним шла выборка (по моему скромному мнению) должна быть группировка по проводке в операции - а как ее дать?
Вставляю в запрос строки: < Пров=Операция.Проводка и далее Группировка(Пров) > идет ругательство на Операция.Проводка.
Может кто подскажет-поделиться своим опытом???? =C уважением Л.Владимир
Что бы было понятнее:
Исходная задача - перенос платежей из 1с в другую учетную систему. Для этого мне необходимо
идентифицировать платеж по счету дебета-кредита, контрагенту и какому-то уникальному номеру (я беру - номер проводки+номер документа, до внутренних номеров записей 1с я не смог добраться), чтобы в последующем выгруженный платеж не обрабатывать повторно. Платеж может быть в выписке, операции, введенной вручную и т.д... А БИ, (как я понял) все это делают (я смотрел документы Анализ субконто, Анализ счета по субконото), но вот уникальный номер документа-проводки они мне не дадут, - а если бы дали, то усе было бы ОК - задача решена. Я, кстати, нашел на еще одном 1с форуме обсуждение этой же задачи (происходило год назад) - как заменить ВыбратьОперацииСПроводками запросом с той же целью (что бы было быстрее), но увы, на 7 страницах рассуждений все остались при своих мнениях...
"
Читают тему
(гостей: 1)