Имя: Пароль:
1C
1C 7.7
v7: Подскажите по методу ИспользоватьКорСубконто() БУХ Учет 4.5
0 CepeLLlka
 
22.11.16
15:35
В общем нужно вытащить корреспонденцию по счету 10.3, чтобы знать сколько с основного склада ГСМ за месяц переместили на другие.


Для этого пишу следующий код:


Процедура Сформировать()
       Склад = ЗначениеИзСтроки("{""Справочник"",""МестаХранения"",""00001""}");
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
    Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
    //Ит.ИспользоватьКорСубконто(ВидыСубконто.МестаХранения,, 1);
    Ит.ВыполнитьЗапрос(НачДата, КонДата, "10.3",,,3,, "К");    
    
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
        Ит.ВыбратьСубконто(2,,,,,"Наименование");
        Пока Ит.ПолучитьСубконто(2) = 1 Цикл
            Сообщить(""+Ит.Субконто(2)+" СНД - "+Ит.СНД(3)+" ДО - "+Ит.ДО(3)+" КО - "+Ит.КО(3)+" СКД - "+Ит.СКД(3));
        КонецЦикла;
    КонецЦикла;
    
КонецПроцедуры

Мне выдаёт всё четко, как по оборотке, по каждой номенклатуре.

Если же добавляю метод - "ИспользоватьКорСубконто", мне сразу же выдаёт совсем другие цифры, оборота по дебету, вообще нет, есть только по кредиту и конечный остаток причём в сумме, по всем субконто сразу.

Может я что-то не так пытаюсь сделать, подскажите пожалуйста, как правильно нужно использовать метод ИспользоватьКорСубконто()?
1 CepeLLlka
 
22.11.16
15:54
Стариков уже не осталось? :)
2 CepeLLlka
 
22.11.16
16:33
Делаю всё как по учебнику карочи, не работает :(
http://www.mista.ru/tutor_1c/buh_zapros.htm
3 CepeLLlka
 
22.11.16
19:54
Нууу? Кто ещё не спит? :)
4 asady
 
22.11.16
20:18
Юзай метод КорДО() и КорКО() вместо До() и КО()
5 CepeLLlka
 
22.11.16
21:03
(4)Это ничего не меняет, цифры теже
6 Хряк
 
22.11.16
21:11
поищи в конфе по корсубконто, поизучай код
ты фсё поймёшь
7 RoRu
 
22.11.16
21:12
может дело в том, что по местам хранения вообще только количественный учёт ?
8 Pahomich
 
22.11.16
21:12
(5) Конструктором попробуй...костяк
9 Pahomich
 
22.11.16
21:15
Может попробовать убрать "только по количеству" в запросе
10 RoRu
 
22.11.16
21:26
мне вообще непонятно, что ты хочешь получить в таком коде ?
зачем добавлено использовать корр субконто
11 CepeLLlka
 
22.11.16
21:38
(10)Я получаю данные по 10.3 счету, с отбором по Субконто - "МестаХранения", по элементу - "Основной склад".

Затем делаю выборку по субконто - Номенклатура, то есть хочу понять, сколько той или иной номенклатуры было на начало, пришло, ушло и какое сальдо на конец.

И перебирая номенклатуру я хочу получить всё вышеперечисленное в разрезе КоррСубконто - МестаХранения.

Другими словами хочу узнать, какое количество товара и на какой склад было перемещено со склада "ОсновнойСклад".
12 zak555
 
22.11.16
21:44
(11)



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

Ит.ВыполнитьЗапрос(НачДата, КонДата, "10.3","10.3",,3,, "К");
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
//получаем номенклатуру и остатки

Ит.ВыбратьКорСубконто(1);
Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл
//получаем корАналитику МХ и корДО
КонецЦикла;
КонецЦикла;
13 CepeLLlka
 
22.11.16
21:48
(12)Да, но меня это не устраивает, я хочу после
Пока Ит.ПолучитьСубконто(1) = 1 Цикл

Чтобы можно было получить ДО и КО в общем по этому Субконто, без разреза по КорСубконто, а это не работает почему-то :(
14 zak555
 
22.11.16
21:49
(13) тебе общая сумма нужна по всем МХ ?
15 CepeLLlka
 
22.11.16
22:16
(14)Мне не нужны суммы, мне нужно количество. Общее количество ДО и КО по всей Номенклатуре, а не по МХ.
16 CepeLLlka
 
22.11.16
22:32
Мне нужно при переборке Субконто, получать СНД, ДО, КО, и СКД суммой по всем КорСубконто, а когда я уже перебираю КорСубконто получать КорКО по этому КорСубконто. Как в 8ке группировки типа. А тут это не работает. Если я использую - ИспользоватьКорСубконто, то ДО и КО по Субконто уже не работают.
17 zak555
 
22.11.16
22:43
(15) т.е. на какие склады тебе информация не нужна ?
18 CepeLLlka
 
22.11.16
22:48
(16)Нужна тоже
19 CepeLLlka
 
22.11.16
22:48
(17)Зак, ты снова шутишь, или я непонятно объясняю?
20 zak555
 
22.11.16
22:51
(18) так чем тебя мой код не устраивает ?

на первой выборке получаешь инфу о номенклатуре и начальных остатках и сколько итого ушло на все МХ

на второй группировке смотришь на какие склады скинулось и сколько
21 CepeLLlka
 
22.11.16
22:55
(20)Не получает сколько итого ушло не показывает, возвращает 0, что КО, что ДО. А мне ещё нужно сколько всего на Склад = ЗначениеИзСтроки("{""Справочник"",""МестаХранения"",""00001""}");

Вот это то и неустраивает.
22 CepeLLlka
 
22.11.16
22:56
(21)+ .... А мне ещё надо сколько всего ПРИШЛО на Склад = ЗначениеИзСтроки("{""Справочник"",""МестаХранения"",""00001""}");...

Недописал..
23 zak555
 
22.11.16
22:59
ты похоже сам не понимаешь, что хочешь

с 12 ты можешь получить для выбранного склада

1. остатки позиции начало и конец

2. на какие склады делалось перемещение по данному счету и в каком объёме
24 CepeLLlka
 
22.11.16
23:00
(23)Да, а мне надо ещё в 1. получать сколько всего пришло на этот склад. А этого нет.
25 zak555
 
22.11.16
23:01
(24) сколько поступило от поставщика ?
26 CepeLLlka
 
22.11.16
23:03
(25)Да, именно. Потому что то что ты пишешь не работает, Остаток на конец показывает неверный, без учёта приходов, даже с обороткой не сходится.
27 CepeLLlka
 
22.11.16
23:03
(25)Вот так мне надо. Если конечно код нормально отразится.


Процедура Сформировать()
       Склад = ЗначениеИзСтроки("{""Справочник"",""МестаХранения"",""00001""}");
    
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
    Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
    Ит.ИспользоватьКорСубконто(ВидыСубконто.МестаХранения,, 1);

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

        КонецЦикла;
    КонецЦикла;
    
КонецПроцедуры
28 zak555
 
22.11.16
23:08
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
Ит.ИспользоватьКорСубконто(,, 1);

Ит.ВыполнитьЗапрос(НачДата, КонДата, "10.3",СЗ_из_10_6_и_60,,3,, "К");
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
//получаем номенклатуру и остатки

ит.ВыбратьКорСчета()
Пока Ит.ПолучитьКорСчет()=1 Цикл

Если Ит.Счет = СчетПоКоду("10.6") Тогда
//получаем как раньше по МХ

Ит.ВыбратьКорСубконто(1);
Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл
//получаем корАналитику МХ и корДО

КонецЦикла;

Иначе
//получаем сколько пришло от поставщика --

//Ит.КорДо()
КонецЦикла;
29 CepeLLlka
 
22.11.16
23:14
(28)Спс, Зак. Завтра попробую. Только не буду перебирать счета. Там вроде жёстко можно указать после Ит.ВыбратьКорСчета(), Ит.ПолучитьСчет("60"), а потом другой счёт и перебирать корсубконто.


Огромное тебе спасибо, надеюсь всё получится. Не люблю когда не получается, грустно становится сразу очень :(
30 zak555
 
22.11.16
23:16
(29) так у тебя в сз будет только два счёта
31 CepeLLlka
 
23.11.16
11:20
(30)Без указания вида КорСубконто, у когда идёт перебор КорСубконто, то он идёт по номенклатуре, а не по контрагентам.. Такие дела..
32 zak555
 
23.11.16
11:23
(31) ааа
итспользуй два раза ИспользоватьКорСубонто
и иди по второй группировке, т.к. на счёте 10.6 аналитика номенклатура и мх, а на 60 -- контрагент договор
33 CepeLLlka
 
23.11.16
11:26
(32)Тоже пробовал, 2 раза использую метод - "ИспользоватьКорСубонто" один раз по Контрагентам, другой раз по МестамХранения. Тогда вообще ничего не возвращает. Даже Ит.ВыбратьКорСчета() возвращает 0, при условии что в выполнить запрос у меня указано "10.1,60.1"..

В общем 1С 77 это такое себе развлечение, танцы с бубнами тут присутствуют :) Сижу вот методом проб и ошибок пытаюсь получить что-нибудь..
34 zak555
 
23.11.16
11:30
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
Ит.ИспользоватьКорСубконто(,, );
Ит.ИспользоватьКорСубконто(,, );

// СЗ_из_10_6_и_60 --- список значений из двух значений счетПоКоду

Ит.ВыполнитьЗапрос(НачДата, КонДата, "10.3",СЗ_из_10_6_и_60,,3,, "К");
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1) = 1 Цикл
//получаем номенклатуру и остатки


ит.ВыбратьКорСчета()
Пока Ит.ПолучитьКорСчет()=1 Цикл

Если Ит.КорСчет = СчетПоКоду("10.6") Тогда
//получаем как раньше по МХ


Ит.ВыбратьКорСубконто(2);
Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл
//получаем корАналитику МХ и корКО


КонецЦикла;

Иначе
//получаем сколько пришло от поставщика --


//Ит.КорДо()

КонецЦикла;
35 CepeLLlka
 
23.11.16
13:39
Ит.ВыбратьКорСубконто(2);
Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл
//получаем корАналитику МХ и корКО

Второй раз не вызывается метод - Ит.ВыбратьКорСубконто(2), возвращает 0. Так это работает видимо только с явным указанием вида субконто.
36 CepeLLlka
 
23.11.16
13:57
(35)+А если явно указать два раза, разные КорСубконто, БухИтоги не выберут из базы ничего видимо, так как нет таких счетов корреспондирующих у которых будет такие два субконто как МестоХранения и Контрагент сразу.
37 CepeLLlka
 
23.11.16
15:07
Вот так только получилось...


Процедура Сформировать()
       Склад = ЗначениеИзСтроки("{""Справочник"",""МестаХранения"",""00001""}");
       СкладБелянцевИВ = ЗначениеИзСтроки("{""Справочник"",""МестаХранения"",""00265""}");
    
       Ит1 = СоздатьОбъект("БухгалтерскиеИтоги");
       Ит1.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
       Ит1.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
       Ит1.ВыполнитьЗапрос(НачДата, КонДата,"10.3",,,3,, "К");
    Ит1.ВыбратьСчета();
       
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения, Склад, 2);
    Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1);
    Ит.ИспользоватьКорСубконто(ВидыСубконто.МестаХранения,, 1);
    Ит.ВыполнитьЗапрос(НачДата, КонДата,"10.3",,,2,, "К");
    
    
    Ит.ВыбратьСчета();
    Пока Ит.ПолучитьСчет() = 1 Цикл
        Ит1.ПолучитьСчет(Ит.Счет);
        Ит1.ВыбратьСубконто(2);
        Ит.ВыбратьСубконто(2,,,,,"Наименование");
        Пока Ит.ПолучитьСубконто(2) = 1 Цикл
            Ит1.ПолучитьСубконто(2,,Ит.Субконто(2));
            Сообщить(""+Ит1.Субконто(2)+"  Остаток на начало - "+Ит1.СНД(3)+" Приход - "+Ит1.ДО(3)+" Конечный остаток - "+Ит1.СКД(3));
            Ит.ВыбратьКорСубконто(1);
            Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл
                Сообщить(""+Ит.Субконто(2)+" ДО - "+Ит.КорДО(3)+" КО - "+Ит.КорКО(3)+"     "+Ит.КорСубконто(1));
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
КонецПроцедуры
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс