Имя: Пароль:
1C
1C 7.7
v7: БИ не берут остатки в форме списка справочника.
,
0 lals
 
11.06.20
17:29
есть  фактически только два счета на которых могут храниться ТМЦ, разница в счетах только одна у счета 20.7 два субконто - места хранения и ТМЦ у счета 40.0 только одно ТМЦ
Вот такой код прописан в модуле формы справочника
Функция Остаток()
    Если (ТекущийЭлемент().Выбран()=0) Тогда
        Возврат "";
    КонецЕсли;
        Возврат "остаток " + Строка(Ит.СКД(ТекущийЭлемент().Счет,3,,,ТекущийЭлемент())) + "   на сумму " + Строка(Ит.СКД(ТекущийЭлемент().Счет,1,,,ТекущийЭлемент()));
КонецФункции
//======================================================================
Процедура ПриОткрытии()
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ПериодМ(РабочаяДата());
    Ит.ИспользоватьСубконто(ВидыСубконто.ТМЦ);
    Ит.Рассчитать(РабочаяДата(),РабочаяДата(),"40.0,20.7");
КонецПроцедуры // ПриОткрытии
проблемма в том что по счету 20.7 все остатки выбирает без проблем где бы они не хранились (это и несущественно) а вот по 40.0 вообще из не видит  ни у одной позиции
Использовал бубны со  кодом счета был он и 04 и 4 и 40 затем стал еще и 40.0 результат один и тот же замена местами в строке  "40.0,20.7" или замена запятой на  ; ну тоже никаких сдвигов.  где тут может быть зарыта собацюга?
1 dedmoroz777
 
11.06.20
18:26
А что в реквизите "Счет" в справочнике ТМЦ?
2 HawkEye
 
11.06.20
18:32
(0) анализ счета что показывает?
неужели трудно локализовать проблему?

"бубны со  кодом счета был он и 04 и 4 и 40 затем стал еще и 40.0" - нафига?! пытаешься угадать код??
3 lals
 
11.06.20
19:24
(1)  реквизит типа "счет" справочник то один  просто у разных ТМЦ разные счета хранения
(2) Анализ счета как раз показывает наличие остатков  есть даже "красные" ну там пересортица была
бубны,  просто подумалось что может ему не нравится 04 без субсчетов поэкс перементировал  по разному результат тот же
4 lals
 
11.06.20
19:30
более того  если строка возрата выглядит так
  Возврат "остаток " + Строка(Ит.СКД(ТекущийЭлемент().Счет,3,,,ТекущийЭлемент())) + "   на сумму " + Строка(Ит.СКД(ТекущийЭлемент().Счет,1,,,ТекущийЭлемент()))+" счет -"+ТекущийЭлемент().Счет
то прекрасно сообщает какой у данного элемента счет хранения
5 Birmingem
 
11.06.20
19:31
Правильно говорит HawkEye, надо локализовать проблему.
Если в Ит.Рассчитать(РабочаяДата(),РабочаяДата(),"40.0,20.7") указать только один счет 40.0, остатки дает или нет?
Если написать СчетПоКоду("40.0") что дает?
6 lals
 
11.06.20
19:33
(5) локализовал оставил только  40.0 перестал выводить  по 20.7 но по прежнему не дает  по 40.0
сейчас попробую о счет по коду
7 lals
 
11.06.20
19:37
СчетПоКоду("40.0") результат тот же
с одним сороковым
8 Birmingem
 
11.06.20
19:40
Нет, я не про то. Метод СчетПоКоду("40.0") в отладчике вообще результат дает? Находит такой счет или нет?
Может тупо номер счета неправильно пишешь.
9 Birmingem
 
11.06.20
19:43
И еще, сформируй оборотку по счету 40.0 за один день. Остатки конечные по номенклатуре есть?
10 lals
 
11.06.20
19:44
https://drive.google.com/file/d/1xe0b1Ow5-EueLh-0tcSSNIPBem7jBlgp/view?usp=sharing
Скрин плана счетов в конфигураторе
11 Birmingem
 
11.06.20
19:45
И еще, я бы лучше использовал метод Ит.ВыполнитьЗапрос()

(10)Нет у меня регистрации в гугле
12 dedmoroz777
 
11.06.20
19:47
Кстати, остаток он показывает на конец месяца, если что
13 lals
 
11.06.20
19:50
(9)
оборотка за один день  дает остатки  как входящие так и конечные по дебету и красные и черные  оборотов за день нет
(12) ПериодД()
тоже был
14 dedmoroz777
 
11.06.20
19:53
(13) Зачем период там вообще нужен?
И скрин плана счетов не видно. Доступа нет
15 Birmingem
 
11.06.20
19:54
40.0 это группа или субсчет?

Вообще никогда не пользовался Ит.Рассчитать(), но для него вроде есть СКДРС() по субконто.

Советую все таки получать остатки через Ит.ВыполнитьЗапрос(). Тут уже не ошибешься. И есть ВключатьСубсчета().
16 tgu82
 
11.06.20
20:04
(15) Только через ВыполнитьЗапрос, у него очень много возможностей в том числе и установка различных фильтров
17 lals
 
11.06.20
20:29
(11) щас буду пробовать
18 lals
 
11.06.20
20:33
поставл вместо Рассчитаь()  ВыполнитьЗапрос()
стало бвыдавать ошибку  функции
Возврат Строка(Ит.СКД(ТекущийЭлемент().Счет,3,,,ТекущийЭлемент()));
{Справочник.ТМЦ.ФормаСписка.ФормаСписка.Модуль(8)}: Слишком много параметров передано при вызове функции/процедуры объекта
19 lals
 
11.06.20
20:42
даже вот в таком виде дает итоги по 20.7 и еикаких по 40.1
Перем Ит;

Функция Остаток()
    Если (ТекущийЭлемент().Выбран()=0) Тогда
        Возврат "";
    КонецЕсли;
    Возврат Строка(Ит.СКД(ТекущийЭлемент().Счет,3,,,ТекущийЭлемент()));
КонецФункции
//======================================================================
Процедура ПриОткрытии()
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
КонецПроцедуры // ПриОткрытии
20 lals
 
11.06.20
20:43
ИЕкаких = Никаких
21 lals
 
11.06.20
20:48
ссорри 40.0
22 dedmoroz777
 
11.06.20
20:58
Покажи уже оборотку по твоему 40-му счёту. Только не в гуглдрайв её выкладывай
23 lals
 
11.06.20
21:31
куда положить???
24 lals
 
11.06.20
21:37
25 lals
 
11.06.20
21:37
оборотка
26 lals
 
11.06.20
21:38
план счетов
https://mega.dp.ua/ru/v75swCVz
27 lals
 
11.06.20
21:52
Пошли спать наверное, завтра со свежими силами
28 dedmoroz777
 
12.06.20
04:07
Понятно. У вас на 40.0 ТМЦ идёт первым субконто. Одна запятая лишняя: Возврат Строка(Ит.СКД(ТекущийЭлемент().Счет,3,,ТекущийЭлемент()));
введите две переменные в ПриОткрытии(): Сч20 = СчётПоКоду("20.7"); Сч40 = СчётПоКоду("40.0");
В функции проверяйте какой счет в ТМЦ и выводите нужное:
счетУчета = ТекущийЭлемент().Счет;
Возврат ?(счетУчета = 20, Ит.СКД(Сч20,3,,,ТекущийЭлемент()), Ит.СКД(Сч40,3,,ТекущийЭлемент()));
29 dedmoroz777
 
12.06.20
04:09
Вообще, прикольно: "Остаток 4 підготовкi коліс до ремонту"
30 lals
 
12.06.20
04:30
(29)  конечно прикольно.  там в справочнике еще не такоеесть  а по поводу первого и второго субконто  вы точно правы,
сейчас проверю отпишусь
31 lals
 
12.06.20
04:45
dedmoroz777 У Вас зрение оказалось лучше всех (о себе я вообще не говорю протупил однозначно)
В самой первой строке  темы было написано:
" разница в счетах только одна у счета 20.7 два субконто - места хранения и ТМЦ у счета 40.0 только одно ТМЦ"
Всеравно всем спасибо.
32 lals
 
12.06.20
04:49
И поскольку юзеру надо показать не только количество но и сумму а то умудряются оприходовать 8  штук на 800 а в расход пустить 8 штук  на 400  то  окончательный код теперь выглядит так
Если ТекущийЭлемент().Счет = СчетПоКоду("20.7") Тогда
        Возврат "остаток " + Строка(Ит.СКД(ТекущийЭлемент().Счет,3,,,ТекущийЭлемент())) + "   на сумму " + Строка(Ит.СКД(ТекущийЭлемент().Счет,1,,,ТекущийЭлемент()));
    ИначеЕсли ТекущийЭлемент().Счет = СчетПоКоду("40.0") Тогда
        Возврат "остаток " + Строка(Ит.СКД(ТекущийЭлемент().Счет,3,,ТекущийЭлемент())) + "   на сумму " + Строка(Ит.СКД(ТекущийЭлемент().Счет,1,,ТекущийЭлемент()));
    КонецЕсли;
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.