БухЗапрос. ВыбратьВалюты()

Тема в разделе "1C и всё что с ней связано", создана пользователем Mister-X, 3 апр 2007.

Статус темы:
Закрыта.
  1. Mister-X

    Mister-X Гость

    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьПланСчетов(ВыбранныйПланСчетов());
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ВыбКонтрагент, 1);

    Если ВидВзаим = 1 Тогда
    Если Константа.ВыделятьАвансы = Перечисление.ДаНет.Да Тогда
    СтрРах= "681,371,36,377,63";
    Иначе
    СтрРах = "36,377,63";
    КонецЕсли;
    ИначеЕсли ВидВзаим = 2 Тогда
    Если Константа.ВыделятьАвансы = Перечисление.ДаНет.Да Тогда
    СтрРах= "681,63";
    Иначе
    СтрРах = "63";
    КонецЕсли;
    ИначеЕсли ВидВзаим = 3 Тогда
    СтрРах= "371,36,377";
    КонецЕсли;



    Если Ит.ВыполнитьЗапрос(Дата1,Дата2,СтрРах, , ,3,"Проводка","СВ")=1 Тогда
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    Рах = Ит.Счет;
    Пока Ит.ПолучитьСубконто() = 1 Цикл
    Ит.ВыбратьПериоды();
    Пока Ит.ПолучитьПериод() = 1 Цикл
    Ит.ВыбратьВалюты();
    Пока Ит.ПолучитьВалюту() = 1 Цикл
    Табл.НоваяСтрока();
    Табл.Документ = Ит.Операция.Документ;
    Если Рах.Валютный = 0 Тогда
    Табл.СальдоПоч = Ит.СНД() - Ит.СНК();
    Табл.ЗбільшГрн = Ит.ДО();
    Табл.ЗменшГрн = Ит.КО();
    Иначе
    Табл.ЗбільшВал = Ит.ДО(2);
    Табл.ЗменшВал = Ит.КО(2);
    Табл.КінВал = Ит.ДО(2) - Ит.КО(2);
    КонецЕсли;
    Табл.Валюта = Ит.Валюта;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    КонецЕсли;

    Не делает выборку по валютам ВыбратьВалюты()=0, хотя в выборке счетов есть счте "681"-валютный. Почему?
    1С 7.7 релиз 7.70.025, БухУчет для Украины 7.70.265
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Вы выложили сюда слишком маленький кусок кода...
    А если серьезно, выборка валют возможна только у валютных счетов (вам не кажется это логичным?), а если в выборке счетов есть не валютные... Думаю, дальше продолжать не стоИт?
     
  3. Mister-X

    Mister-X Гость

    Спасибо понял. А тепер ситуация з Таблицей Значений:
    Табл=СоздатьОбъект("ТаблицаЗначений");
    Табл.НоваяКолонка("Документ");
    Табл.НоваяКолонка("Валюта");
    Табл.НоваяКолонка("СальдоПоч");
    Табл.НоваяКолонка("СальдоКін");
    Табл.НоваяКолонка("Збільш");
    Табл.НоваяКолонка("Зменш");
    Табл.НоваяКолонка("ЗбільшВал");
    Табл.НоваяКолонка("ЗменшВал");
    Табл.НоваяКолонка("СальдоКінВал");

    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьПланСчетов(ВыбранныйПланСчетов());
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ВыбКонтрагент, 1);

    Если ВидВзаим = 1 Тогда
    Если Константа.ВыделятьАвансы = Перечисление.ДаНет.Да Тогда
    СтрРах= "681,371,36,377,63";
    Иначе
    СтрРах = "36,377,63";
    КонецЕсли;
    ИначеЕсли ВидВзаим = 2 Тогда
    Если Константа.ВыделятьАвансы = Перечисление.ДаНет.Да Тогда
    СтрРах= "681,63";
    Иначе
    СтрРах = "63";
    КонецЕсли;
    ИначеЕсли ВидВзаим = 3 Тогда
    СтрРах= "371,36,377";
    КонецЕсли;

    Ит.ВключатьСубсчета(1);
    Если Ит.ВыполнитьЗапрос(Дата1,Дата2,СтрРах, , ,3,"Проводка","СВ")=1 Тогда
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
    Ит.ВыбратьПериоды();
    Пока Ит.ПолучитьПериод() = 1 Цикл
    Рах = Ит.Счет;
    Табл.НоваяСтрока();
    Табл.Документ = Ит.Операция.Документ;
    Если Рах.Валютный = 1 Тогда
    Ит.ВыбратьВалюты();
    Пока Ит.ПолучитьВалюту() = 1 Цикл
    Табл.ЗбільшВал = Ит.ДО(2);
    Табл.ЗменшВал = Ит.КО(2);
    Табл.СальдоКінВал = Ит.СКД(2) - Ит.СКК(2);
    Табл.Валюта = Ит.Валюта;
    КонецЦикла;
    Иначе
    Табл.СальдоПоч = Ит.СНД() - Ит.СНК();
    Табл.Збільш = Ит.ДО();
    Табл.Зменш = Ит.КО();
    Табл.СальдоКін = Ит.СКД() - Ит.СКК();
    КонецЕсли;
    сообщить(Рах);
    Табл.ВыбратьСтроку();
    КонецЦикла;
    КонецЦикла;
    КонецЕсли;

    При формировании таблицы "Табл" при выборе нового счета из выборки (в выборке есть счета 3771,681,6812) 681 т.е. переход из 3771 в 681 счет, в колонке "Документ" вдруг меняется значения, хотя остальные значения в других колонках остаются теми самыми.

    Сначала заполнилась эта таблица по счету 3771. Колонка "Документ" заполнилась значением "Операция 1..." (другие колонки заполнились итогами по счету 3771). В колонке "Документ" прописано значение "Операция 1..." 10 раз, так и должно быть.
    Тепер когда счет=681, вдруг в колонке "Документ" все значения из "Операция 1..." поменялись на "Операция 2... ", хотя в других колонках значения не изменились + добавились итоги по счету 681 и его субсчету 6812 ("6812" - фигурирует в Операции 2 - 1 проводка в ним, 3771 в операции 1 - 10 проводок с ним).
    Какая причина ??
    Если разбить все группы счетов на их субсчета:

    Если ВидВзаим = 1 Тогда
    Если Константа.ВыделятьАвансы = Перечисление.ДаНет.Да Тогда
    СтрРах= "6811,6812,3711,3712,361,362,363,3771,3772,3773,3774,3775, 631,632,633";
    Иначе
    СтрРах = "361,362,363,3771,3772,3773,3774,3775, 631,632,633";
    КонецЕсли;
    ИначеЕсли ВидВзаим = 2 Тогда
    Если Константа.ВыделятьАвансы = Перечисление.ДаНет.Да Тогда
    СтрРах= "6811,6812,631,632,633";
    Иначе
    СтрРах = "631,632,633";
    КонецЕсли;
    ИначеЕсли ВидВзаим = 3 Тогда
    СтрРах= "3711,3712,361,362,363,3771,3772,3773,3774,3775";
    КонецЕсли;

    без метода Ит.ВключатьСубсчета(1) проблема остается в силе!!!
     
  4. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Даже читать ваш огромный кусок кода не стану. Думается мне, что и другие не будут этого делать...
     
  5. Mister-X

    Mister-X Гость

    "Даже читать ваш огромный кусок кода не стану. Думается мне, что и другие не будут этого делать..."

    Ну не надо, никто никого не заставляет. А за других не говорите.
     
  6. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Для: Mister-X
    В качестве "китайского предупреждения": почитайте правила форума.
    В качестве рекомендации: почитайте уроки на www.mista.ru а также ЖКК.
    Форум предназначен для обмена опытом и решения вопросов. Вы даже не удосужились более или менее осмыслить вопрос и четко его сформулировать. Вместо этого выложили кусок слабочитаемого кода, считая, что кто-то будет в нем разбираться?
    Совет (можно ему и не следовать): для начала сформулируйте проблему четко и кратко и после этого задавайте свой вопрос на форуме. В этом случае буду рад оказать помощь.
     
Статус темы:
Закрыта.

Поделиться этой страницей