Как получить список документов по контрагенту (1С 7.7, Бухгалтерия)
Показывать по
10
20
40
сообщений
- 1
- 2
07.10.2009
16:24
#1
"Собственно сабж.
Сам я в типовой бухгалтерии разбираюсь плохо, пока сделал через бухгалтерские итоги, но думаю может есть способ по проще...
Точнее в сабже интересует дата последнего документа по контрагенту, но и список самих документов тоже не помешает.
Вот, что сделал:
Процедура ПолучитьДату()
ВСчет=Счет;
ВСубконто=ВыбСубконто1;
НДата=НачДата;
КДата=КонДата;
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьРазделительУчета(Метаданные.РазделительУчета);
Ит.ИспользоватьСубконто(ВСубконто.Вид(), ВСубконто, 2);
Ит.ВыполнитьЗапрос(НДата, КДата, ВСчет,,,, "Проводка");
Ит.ВыбратьПериоды();
Пока Ит.ПолучитьПериод() = 1 Цикл
ДДата=Ит.НачДата;
КонецЦикла;
Сообщить(ДДата);
КонецПроцедуры
Это пока просто набросок так, что прошу сильно не пинать :)"
Сам я в типовой бухгалтерии разбираюсь плохо, пока сделал через бухгалтерские итоги, но думаю может есть способ по проще...
Точнее в сабже интересует дата последнего документа по контрагенту, но и список самих документов тоже не помешает.
Вот, что сделал:
Процедура ПолучитьДату()
ВСчет=Счет;
ВСубконто=ВыбСубконто1;
НДата=НачДата;
КДата=КонДата;
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьРазделительУчета(Метаданные.РазделительУчета);
Ит.ИспользоватьСубконто(ВСубконто.Вид(), ВСубконто, 2);
Ит.ВыполнитьЗапрос(НДата, КДата, ВСчет,,,, "Проводка");
Ит.ВыбратьПериоды();
Пока Ит.ПолучитьПериод() = 1 Цикл
ДДата=Ит.НачДата;
КонецЦикла;
Сообщить(ДДата);
КонецПроцедуры
Это пока просто набросок так, что прошу сильно не пинать :)"
07.10.2009
16:34
#2
сделай проще!
создай список СЗ с видами доков, которых есть реквизит Контрагент
далее
ОбратныйПорядок()
ПолучитьДокумент()
создай список СЗ с видами доков, которых есть реквизит Контрагент
далее
ОбратныйПорядок()
ПолучитьДокумент()
07.10.2009
17:12
#3
> создай список СЗ с видами доков, которых есть реквизит Контрагент
Дааа... тут придется по потеть... например Выписка не имеет реквизита Контрагент, а сам контрагент в табличной части как субконто...
Дааа... тут придется по потеть... например Выписка не имеет реквизита Контрагент, а сам контрагент в табличной части как субконто...
07.10.2009
17:22
#4
> > создай список СЗ с видами доков, которых есть реквизит Контрагент
> Дааа... тут придется по потеть... например Выписка не имеет реквизита Контрагент, а сам контрагент в табличной части как субконто...
ну и какие проблемы?
в сз понятно, что ещё засовываются реквизиты/доки, у которых общий тип или вообще неопределённы
> Дааа... тут придется по потеть... например Выписка не имеет реквизита Контрагент, а сам контрагент в табличной части как субконто...
ну и какие проблемы?
в сз понятно, что ещё засовываются реквизиты/доки, у которых общий тип или вообще неопределённы
07.10.2009
20:35
#6
"Функция НайтиПоследнийДокументПоКонтрагенту(НужныйКонтрагент)
Доки=СоздатьОбъект("Документ");
Доки.ОбратныйПорядок(1);
Доки.ВыбратьПоЗначению(,,"Контрагент",НужныйКонтрагент);
Если Доки.ПолучитьДокумент()=1 Тогда
Возврат(Доки.ТекущийДокумент());
Иначе
Возврат("""");
КонецЕсли;
КонецФункции
P.S. Такое возможно потому что в конфигурации имеется графа отбора "Контрагент". Если список документов тоже нужен, надо дальше цикл перебирать"
Доки=СоздатьОбъект("Документ");
Доки.ОбратныйПорядок(1);
Доки.ВыбратьПоЗначению(,,"Контрагент",НужныйКонтрагент);
Если Доки.ПолучитьДокумент()=1 Тогда
Возврат(Доки.ТекущийДокумент());
Иначе
Возврат("""");
КонецЕсли;
КонецФункции
P.S. Такое возможно потому что в конфигурации имеется графа отбора "Контрагент". Если список документов тоже нужен, надо дальше цикл перебирать"
08.10.2009
10:16
#7
Thorvardr, спасибо! Вот я втупил вчера... Куда мои глаза глядели про графы отбора...
Пошел в бухгалтерию пробовать.
Пошел в бухгалтерию пробовать.
08.10.2009
16:11
#8
Thorvardr, еще раз спасибо, все получилось, бухгалтерия тестирует.
//Реализовал еще проверку на проведенность документа.
//Реализовал еще проверку на проведенность документа.
08.10.2009
17:02
#9
"> Функция НайтиПоследнийДокументПоКонтрагенту(НужныйКонтрагент)
> Доки=СоздатьОбъект("Документ");
> Доки.ОбратныйПорядок(1);
> Доки.ВыбратьПоЗначению(,,"Контрагент",НужныйКонтрагент);
> Если Доки.ПолучитьДокумент()=1 Тогда
> Возврат(Доки.ТекущийДокумент());
> Иначе
> Возврат("""");
> КонецЕсли;
> КонецФункции
>
> P.S. Такое возможно потому что в конфигурации имеется графа отбора "Контрагент". Если список документов тоже нужен, надо дальше цикл перебирать
ха-ха...
про графу-то я и забыл ;-)"
> Доки=СоздатьОбъект("Документ");
> Доки.ОбратныйПорядок(1);
> Доки.ВыбратьПоЗначению(,,"Контрагент",НужныйКонтрагент);
> Если Доки.ПолучитьДокумент()=1 Тогда
> Возврат(Доки.ТекущийДокумент());
> Иначе
> Возврат("""");
> КонецЕсли;
> КонецФункции
>
> P.S. Такое возможно потому что в конфигурации имеется графа отбора "Контрагент". Если список документов тоже нужен, надо дальше цикл перебирать
ха-ха...
про графу-то я и забыл ;-)"
- 1
- 2
Читают тему
(гостей: 1)