7.7 Выборка корсчетов для счета

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем xatab_djavdet, 29 сен 2009.

  1. TopicStarter Overlay
    xatab_djavdet
    Offline

    xatab_djavdet

    Регистрация:
    29 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Ситуация такая:
    Нужно для счета 3350 выбрать все корсчета
    вот мой код:
    Код:
    ПланСчетов = ВыбранныйПланСчетов();
    БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИтоги.ИспользоватьПланСчетов(ПланСчетов); 
    БухИтоги.ВключатьСубсчета(1); 
    БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, "3350");
    БухИтоги.ВыбратьСчета();
    БухИтоги.ПолучитьСчет();
    ДоходН = БухИтоги.КО();
    БухИтоги.ВыбратьКорСчета();
    Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл
    ПВН = БухИтоги.КорСчет.КорДО();
    КонецЦикла;
    
    В выборке по корсчетам ничего нету.
    подскажите плиз что делать?
    в 1с работаю 7 дней )
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    ВыполнитьЗапрос(<?>,,,,,,,)
    Синтаксис:
    ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)
    Назначение:
    Выполнить отбор и расчет итогов по параметрам.
    Возвращает число 1 - запрос выполнен; 0 - запрос не выполнен.
    Параметры:
    <НачалоПериода> - дата, документ или позиция начала периода запроса.
    <КонецПериода> - дата, документ или позиция конца периода запроса.
    <Счет> - необязательный параметр. Счета, для которых будут отбираться итоги в запросе. Задается значением типа ''Счет'' или объектом типа ''СписокЗначений'', содержащим значения типа ''Счет'', либо строкой содержащей список кодов счетов, разделенных символом '','' или '';''. Если параметр не указан, отбор будет выполняться по всем счетам.
    <КоррСчет> - необязательный параметр. Значение типа ''Счет'' - корреспондирующий счет, в корреспонденции с которым будут отбираться итоги счета, указанного в параметре <Счет>. Задается значением типа ''Счет'' или объектом типа ''СписокЗначений'', содержащим значения типа ''Счет'', либо строкой содержащей список кодов счетов, разделенных символом '','' или '';''. Если параметр не указан, будут отбираться итоги в корреспонденции со всеми счетами.
    <Валюта> - зачение типа ''Справочник.Валюты''. Если параметр не указан итоги выдаются без учета валюты.
    <ТипИтогов> - число - тип отбираемых итогов. Может принимать следующие значения: 1 - остатки и обороты по счету в целом; 2 - обороты между счетами; 3 - первое и второе вместе. По умолчанию: 1.
    <Периодичность> - число или символьная строка (см. документацию).Позволяет получить дополнительный разрез итогов по периодам. По умолчанию периодичность не задана.
    <ТипСуммы> - число или строка - тип рассчитываемых итогов. Может принимать следующие значения (в скобках указаны строковые синонимы):
    1 (''C'', ''S'') рассчитывать суммы;
    2 (''В'', ''C'') рассчитывать валютные суммы;
    4 (''К'', ''A'') рассчитывать количество.
    Если требуется одновременно рассчитывать разные суммы, значение параметра получается путем сложения допустимых значений, например: 5 (1+4) - рассчитывать суммы и количество.
    При указании параметра строкой в ней указываються все символы, которые обозначают типы сумм, которые нужно рассчитывать. По умолчанию рассчитываются все типы сумм.
    Замечание:
    Подробнее см. в документации в гл. ''Работа с бухгалтерскими итогами''
  3. TopicStarter Overlay
    xatab_djavdet
    Offline

    xatab_djavdet

    Регистрация:
    29 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    спс, уже поставил параметр
    но корсчета он выбирает короткие, а мне надо чтобы выбирал с субсчетами
    я поставил еще один параметр в
    Код:
    БухИтоги.ВключатьСубсчета(1,1);
    
    и теперь при прохождении строки
    Код:
    БухИтоги.ВыбратьСчета();
    
    выдает ошибку
    БухИтоги.ВыбратьСчета();
    {C:\БАЗЫ 1С\ОЦЕНКА_2009\EXTFORMS\РЕГИСТР ПРИЛ 8 ИПН, ПЕН ПОДЛЕЖ ПЕРЕЧИСЛ.ERT(50)}: Не выбран элемент вышестоящей группировки!​
  4. ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Можно и так

    Код:
    БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
    Счет = СоздатьОбъект("Счет");
    БухИтоги.ВключатьСубсчета(1); 
    Счет.НайтиПоКоду("44");
    БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, Счет.ТекущийСчет());
    БухИтоги.ВыбратьСчета();
    Пока БухИтоги.ПолучитьСчет() = 1 Цикл
    Сообщить("" + БухИтоги.Счет);
    Сообщить("БухИтоги.СНК: " + БухИтоги.СНК());
    Сообщить("БухИтоги.СКД: " + БухИтоги.СКД());
    КонецЦикла;                        
    
  5. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Дай полный кусок кода. Так сложно сказать, где не выбран элемент вышестоящей группировки
  6. TopicStarter Overlay
    xatab_djavdet
    Offline

    xatab_djavdet

    Регистрация:
    29 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Код:
    Перем Фирма, РННФирмы, БИН, Руководитель, ГлБух;
    Перем ПланСчетов;
    Перем Квартал;
    Перем ИтогДоходН;
    Процедура Сформировать()	
    Квартал = 0; 
    ИтогДоходН = 0;
    НомерСтроки = 0;	
    // Получение данных из константы ОсновнаяФирма
    Фирма = Константа.ОсновнаяФирма;
    БИН = Константа.ИИНБИН;	
    // Получение данных из справочника Фирмы
    Спр = СоздатьОбъект("Справочник.Фирмы");
    Спр.ВыбратьЭлементы();
    Спр.ПолучитьЭлемент();
    РННФирмы = Спр.РНН; 
    Руководитель = Спр.Руководитель;
    ГлБух = Спр.ГлБухгалтер;	
    Если СтрДлина(Год) < 4 Тогда
    Сообщить("Неправильно введен год");
    Возврат;
    КонецЕсли;	
    Таб = СоздатьОбъект("Таблица");
    Таб.ВывестиСекцию("Шапка");
    // Расчет и вывод данных по месяцам
    Для МесяцГода = 1 По 1 Цикл  		
    ОПВ = 0; ИПН = 0; Выплата = 0; ДоходКВыплате = 0;		
    // Формирование правильного формата даты
    Если МесяцГода < 10 Тогда
    Дата1 = "01.0" + МесяцГода + "." + Год;
    Иначе
    Дата1 = "01." + МесяцГода + "." + Год;
    КонецЕсли;
    Дата2 = КонМесяца(Дата1);	    
    Если Дата2 > КонецРассчитанногоПериодаБИ() Тогда
    Перейти ~qwer;
    КонецЕсли;		
    ПланСчетов = ВыбранныйПланСчетов();
    БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИтоги.ИспользоватьПланСчетов(ПланСчетов); 
    БухИтоги.ВключатьСубсчета(1,1); 
    БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, "3350",,,3);
    БухИтоги.ВыбратьСчета();
    БухИтоги.ПолучитьСчет();
    ДоходН = БухИтоги.КО();		
    БухИтоги.ВыбратьКорСчета();
    Пока БухИтоги.ПолучитьКорСчет() > 0 Цикл
    Если БухИтоги.КорСчет.ЭтоГруппа() = 0 Тогда
    Сообщить("Счет = " + БухИтоги.Счет + " КорСчет = " + БухИтоги.КорСчет);
    Если БухИтоги.КорСчет = "1010" Тогда
    Выплата = Выплата + БухИтоги.КорДО();
    ИначеЕсли БухИтоги.КорСчет = "1030" Тогда
    Выплата = Выплата + БухИтоги.КорДО();
    ИначеЕсли БухИтоги.КорСчет = "3120" Тогда
    ИПН = БухИтоги.КорДО();
    ИначеЕсли БухИтоги.КорСчет = "3220" Тогда
    ОПВ = БухИтоги.КорДО();
    КонецЕсли;
    КонецЕсли;			
    КонецЦикла;		
    ~qwer:
    Месяц = ПериодСтр(Дата1, Дата2); 
    НомерСтроки = НомерСтроки + 1;		
    ДоходКВыплате = ДоходН - ИПН - ОПВ;
    Если Квартал < 3 Тогда
    Таб.ВывестиСекцию("Данные");
    Квартал = Квартал + 1;
    ИтогДоходН = ИтогДоходН + ДоходН;
    Иначе
    Квартал = 0;
    Таб.ВывестиСекцию("КвартальныйИтог");
    Таб.ВывестиСекцию("Данные");
    Квартал = Квартал + 1;
    ИтогДоходН = 0;
    ИтогДоходН = ИтогДоходН + ДоходН;
    КонецЕсли;			
    Дата1 = "01.01.0001";
    Дата2 = "01.01.0001";		
    КонецЦикла;	                      	
    Таб.ВывестиСекцию("КвартальныйИтог");
    Таб.ВывестиСекцию("Подвал");
    Таб.ПараметрыСтраницы(2,,,,,,,,,1);
    Таб.Показать();
    Таб.ТолькоПросмотр(1);	
    КонецПроцедуры
    
    ошибку выдает только в отладчике, когда ставлю точку останова.
    если же пишу строку в цикле
    Код:
        Пока БухИтоги.ПолучитьКорСчет() > 0 Цикл
    Сообщить("Счет = " + БухИтоги.Счет + "КорСчет = " + БухИтоги.КорСчет);
    КонецЦикла;
    
    
    то в табло выдает все корсчета, но при попытке считывания методом
    Код:
    БухИтоги.КорДО();
    
    
    ничего не считает
  7. ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    [/code]
    то в табло выдает все корсчета, но при попытке считывания методом
    Код:
    БухИтоги.КорДО();
    
    
    ничего не считает

    А ты уверен, что есть Дебетовые обороты за этот период????

    Если конфа Бух, то попробуй вывести отчет "Анализ счета" с галками "По субсчетам и субконто" и "По кор. субсчетам и субконто", там увидишь, есть обороты или нет.

    Код:
    ПланСчетов = ВыбранныйПланСчетов();        
    БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");        
    БухИтоги.ИспользоватьПланСчетов(ПланСчетов);         
    БухИтоги.ВключатьСубсчета(1,1);         
    БухИтоги.ВыполнитьЗапрос(НачДата, КонДата, "Н14",,,3);        
    БухИтоги.ВыбратьСчета();        
    БухИтоги.ПолучитьСчет();
    Сообщить("БухИт.Счет: " + БухИтоги.Счет);
    БухИтоги.ВыбратьКорСчета();        
    Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл            
    ПВХ = БухИтоги.КорКО();
    Сообщить("	БухИт.КорСчет: " + БухИтоги.КорСчет);
    Сообщить("	   БухИт.КорДО(): " + БухИтоги.КорДО());
    Сообщить("	   БухИт.КорКО(): " + ПВХ);
    КонецЦикла;
    
    Только что протестировал на ура!
  8. TopicStarter Overlay
    xatab_djavdet
    Offline

    xatab_djavdet

    Регистрация:
    29 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Код:
    Анализ счета: 3350        
    за Январь 2009 г.        
    Счет                  С кред. счетов    В дебет счетов
    
    3350          
    Сальдо на начало периода                            657,102.00
    1010                  219,438.00                59,160.00
    1030                  1,089,514.00     
    3120                  65,706.00     
    3220                  76,000.00     
    7210                                             140,000.00
    8110                                             620,000.00
    Обороты за период
    1,450,658.00                819,160.00
    Сальдо на конец периода                           25,604.00
    
    
    мне надо различным переменным присвоить данные с разных корсчетов
    например:
    Код:
    Если БухИтоги.КорСчет = "1010" Тогда
    Выплата = Выплата + БухИтоги.КорДО();
    ИначеЕсли БухИтоги.КорСчет = "1030" Тогда
    Выплата = Выплата + БухИтоги.КорДО();
    ИначеЕсли БухИтоги.КорСчет = "3120" Тогда
    ИПН = БухИтоги.КорДО();
    ИначеЕсли БухИтоги.КорСчет = "3220" Тогда
    ОПВ = БухИтоги.КорДО();
    КонецЕсли;
    
  9. ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Что у тебя сейчас выводит при отчете "Анализ счета"?
    Переменная выплату обнулил до циклов????
    Выплата = 0;
  10. TopicStarter Overlay
    xatab_djavdet
    Offline

    xatab_djavdet

    Регистрация:
    29 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    АнализСчета в прикрепленном файле
    Выплату обнулил
    я походу понял в чем дело - не срабатывают условия ЕСЛИ. только не знаю почему они не работают
    вот что у меня получилось

    Вложения:

  11. TopicStarter Overlay
    xatab_djavdet
    Offline

    xatab_djavdet

    Регистрация:
    29 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    нашел решение:
    вместо
    Код:
    Если БухИтоги.КорСчет = "1010" Тогда
    
    нужно писать
    Код:
    Если БухИтоги.КорСчет = Сч1010.ТекущийСчет() Тогда
    
    , а перед этим написать
    Код:
    Сч1010 = СоздатьОбъект("Счет");
    Сч1010.НайтиПоКоду("1010");
    
    Тему можно закрывать. Всем откликнувшимся ОГРОМНОЕ СПАСИБО!
  12. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    Если БухИтоги.КорСчет = СчетПоКоду("1010") Тогда

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