berezdetsky писал(а) 11. Марта 2012 :: 15:45:Здравствуйте! Помогите разобраться, где допустил ошибку
RS = СоздатьОбъект("AccountsRecordset");
RS.УстБД1С();
ТекстЗапроса = "
|SELECT ОсновнойОборотыДтКт.Документ
| , ОсновнойОборотыДтКт.СчетДт [СчетДт $Счет.Основной]
| , ОсновнойОборотыДтКт.СчетКт [СчетКт $Счет.Основной]
| , ОсновнойОборотыДтКт.СубконтоДт1 [СубконтоДт1 $Субконто]
| , ОсновнойОборотыДтКт.СубконтоДт1_вид
| , ОсновнойОборотыДтКт.СубконтоДт2 [СубконтоДт2 $Субконто]
| , ОсновнойОборотыДтКт.СубконтоДт2_вид
| , ОсновнойОборотыДтКт.СуммаОборотДт
| , ОсновнойОборотыДтКт.СуммаОборотКт
| , ОсновнойОборотыДтКт.КоличествоОборотДт
| , ОсновнойОборотыДтКт.КоличествоОборотКт
|FROM $БИОборотыДтКт.Основной(:НачДата, :КонДата ~, Документ,
| INNER JOIN $Справочник.Номенклатура AS СпрНом (NOLOCK) ON СубконтоДт1 = СпрНом.ID,
| (СчетДт = :ВыбСчетДТ),
| (ТМЦ, МестаХранения), (СчетКт = :ВыбСчетКТ1) OR (СчетКт = :ВыбСчетКТ2) OR (СчетКт = :ВыбСчетКТ3) OR (СчетКт = :ВыбСчетКТ4) OR (СчетКт = :ВыбСчетКТ5) OR (СчетКт = :ВыбСчетКТ6) OR (СчетКт = :ВыбСчетКТ7), ,
| (РазделительУчета = :ВыбФирма)
| " + ?( ВыбТМЦ.Выбран()=1, "AND (СубконтоДт1 IN (SELECT Val FROM #ГруппаТМЦ))", ?( СписокТМЦ.РазмерСписка()>0, "AND (СубконтоДт1 IN (SELECT Val FROM #ГруппаТМЦ))", "")) + "
| " + ?( ВыбСклад.Выбран()=1, "AND (СубконтоДт2 IN (SELECT Val FROM #ГруппаМестаХранения))", "") + "
| ) AS ОсновнойОборотыДтКт
| LEFT OUTER JOIN _1SACCS AS ПланСчетовДт (NOLOCK) ON ОсновнойОборотыДтКт.СчетДт = ПланСчетовДт.ID
| LEFT OUTER JOIN _1SACCS AS ПланСчетовКт (NOLOCK) ON ОсновнойОборотыДтКт.СчетКт = ПланСчетовКт.ID
|ORDER BY ОсновнойОборотыДтКт.Документ
| , СпрНом.ID";
Если ПропускатьТМЦ = 1 Тогда
СписокТМЦ1 = СоздатьОбъект("СписокЗначений");
КонецЕсли;
RS.УстановитьТекстовыйПараметр("НачДата", Дата1);
RS.УстановитьТекстовыйПараметр("КонДата", Дата2);
//RS.УстановитьТекстовыйПараметр("Товар", ВыбНоменклатура);
RS.УложитьСписокОбъектов(ВыбСклад, "#ГруппаМестаХранения", "МестаХранения");
RS.УстановитьТекстовыйПараметр("ВыбФирма", РазделительУчета);
RS.УстановитьТекстовыйПараметр("ВыбСчетДТ", СчетПоКоду("133"));
RS.УстановитьТекстовыйПараметр("ВыбСчетКТ1", СчетПоКоду("33"));
RS.УстановитьТекстовыйПараметр("ВыбСчетКТ2", СчетПоКоду("628"));
RS.УстановитьТекстовыйПараметр("ВыбСчетКТ3", СчетПоКоду("602"));
RS.УстановитьТекстовыйПараметр("ВыбСчетКТ4", СчетПоКоду("701"));
RS.УстановитьТекстовыйПараметр("ВыбСчетКТ5", СчетПоКоду("К0"));
RS.УстановитьТекстовыйПараметр("ВыбСчетКТ6", СчетПоКоду("К1"));
RS.УстановитьТекстовыйПараметр("ВыбСчетКТ7", СчетПоКоду("135"));
Если (ВыбТМЦ.Выбран() <> 1) Тогда
RS.УложитьСписокОбъектов(СписокТМЦ, "#ГруппаТМЦ", "Номенклатура");
Иначе
RS.УложитьСписокОбъектов(ВыбТМЦ, "#ГруппаТМЦ", "Номенклатура");
КонецЕсли;
ТЗ111 = RS.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ111.ВыбратьСтроки();
Пока ТЗ111.ПолучитьСтроку() = 1 Цикл
ТМЦ = ТЗ111.СубконтоДт1;
Поставщик = ТМЦ.Поставщик;
ФлагПропускаСтроки = ОтборПоставщик(Поставщик);
Если ФлагПропускаСтроки = 1 Тогда
Продолжить;
КонецЕсли;
Если ПропускатьТМЦ = 1 Тогда
Если ТЗ111.КоличествоОборотДт = 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ТаблицаПриход.НоваяСтрока();
ТаблицаПриход.КолвоПоступление = 0;
ТаблицаПриход.СуммаПоступление = 0;
ТаблицаПриход.КолвоИнвентаризация = 0;
ТаблицаПриход.СуммаИнвентаризация = 0;
ТаблицаПриход.КолвоВозвратОтПокупателя = 0;
ТаблицаПриход.СуммаВозвратОтПокупателя = 0;
ТаблицаПриход.КолвоПриходПрочие = 0;
ТаблицаПриход.СуммаПриходПрочие = 0;
ТаблицаПриход.Поставщик = Поставщик;
ТаблицаПриход.ТМЦ = ТМЦ;
Если (ТЗ111.Документ.Вид() = "ПоступлениеТоваров") или (ТЗ111.Документ.Вид() = "ПоступлениеТМЦИмпорт") Тогда
ТаблицаПриход.КолвоПоступление = ТЗ111.КоличествоОборотДт;
ТаблицаПриход.СуммаПоступление = ТЗ111.СуммаОборотДт;
Если ПропускатьТМЦ = 1 Тогда
Если ТМЦ.ЭтоГруппа() = 0 Тогда
СписокТМЦ1.ДобавитьЗначение(ТМЦ,"ТМЦ");
КонецЕсли;
КонецЕсли;
ИначеЕсли ТЗ111.Документ.Вид() = "Инвентаризация" Тогда
ТЗ111.КолвоИнвентаризация = ТЗ111.КоличествоОборотДт;
ТЗ111.СуммаИнвентаризация = ТЗ111.СуммаОборотДт;
Если ПропускатьТМЦ = 1 Тогда
Если ТМЦ.ЭтоГруппа() = 0 Тогда
СписокТМЦ1.ДобавитьЗначение(ТМЦ,"ТМЦ");
КонецЕсли;
КонецЕсли;
ИначеЕсли ТЗ111.Документ.Вид() = "ВозвратОтПокупателя" Тогда
ТЗ111.КолвоВозвратОтПокупателя = ТЗ111.КоличествоОборотДт;
ТЗ111.СуммаВозвратОтПокупателя = ТЗ111.СуммаОборотДт;
Если ПропускатьТМЦ = 1 Тогда
Если ТМЦ.ЭтоГруппа() = 0 Тогда
СписокТМЦ1.ДобавитьЗначение(ТМЦ,"ТМЦ");
КонецЕсли;
КонецЕсли;
Иначе
ТЗ111.КолвоПриходПрочие = ТЗ111.КоличествоОборотДт;
ТЗ111.СуммаПриходПрочие = ТЗ111.СуммаОборотДт;
Если ПропускатьТМЦ = 1 Тогда
Если ТМЦ.ЭтоГруппа() = 0 Тогда
СписокТМЦ1.ДобавитьЗначение(ТМЦ,"ТМЦ");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;