Проблема с пониманием бухгалтерских итогов

1. kulkrise 3 06.03.17 22:33 Сейчас в теме
Доброй ночи!
В ОСВ у контрагента по договорам Сн - 0, ДтОб - 480р. (отгрузка еще не проведена), СкДт - 480р. Получение бух.итогов выпоняется из печ.формы отгрузки.
делаю выборку и СКД показывает 4800 (откуда???).
мне нужна помощь в исправлении ошибок.
	// получаем остатки по БухгалтерскиеИтоги
	Список1 = СоздатьОбъект("СписокЗначений");
	Список1.ДобавитьЗначение(Докум.Контрагент.ТекущийЭлемент(), "");
	БИ = СоздатьОбъект("БухгалтерскиеИтоги");	
	БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Список1, 1);
	БИ.ИспользоватьСубконто(ВидыСубконто.Договоры, , 1);
	БИ.ВключатьСубсчета(-1);
	БИ.ВыполнитьЗапрос(Докум.ДатаДок,Докум.ДатаДок,62,,,1,"День","С");
	
	БИ.ВыбратьСчета();
	Пока БИ.ПолучитьСчет() = 1 Цикл
		ТЗ.НоваяСтрока();
		БИ.ВыбратьСубконто(1);
		Пока БИ.ПолучитьСубконто(1) = 1 Цикл
			ТЗ.Контр = БИ.Субконто(ВидыСубконто.Контрагенты);
			БИ.ВыбратьСубконто(2);
			Пока БИ.ПолучитьСубконто(2) = 1 Цикл
				ТЗ.Догов = БИ.Субконто(ВидыСубконто.Договоры);
				ТЗ.СК = БИ.СКД(1)-БИ.СКК(1);
				Если ТЗ.СК > 0 Тогда
					ТЗ.СКД = БИ.СКД();
				Иначе
					ТЗ.СКК = БИ.СКК();
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;
Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Cooler 22 07.03.17 00:26 Сейчас в теме
(1)
делаю выборку и СКД показывает 4800 (откуда???)
Может быть, отсюда?
БИ.ВыполнитьЗапрос(Докум.ДатаДок,Докум.ДатаДок,62,,,1,"День","С");


Почитаем Синтакс-Помощник:
<Счет> - необязательный параметр. Счета, для которых будут отбираться итоги в запросе. Задается значением типа ''Счет'' или объектом типа ''СписокЗначений'', содержащим значения типа ''Счет'', либо строкой содержащей список кодов счетов, разделенных символом '','' или '';''. Если параметр не указан, отбор будет выполняться по всем счетам.

Вы счет 62 каким из выделенных способов задали, а?

Да и выше:
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Список1, 1);

Какой смысл в использовании списка значений, содержащего всего одно субконто?
kulkrise; +1
3. kulkrise 3 07.03.17 02:48 Сейчас в теме
(2) по поводу счета: счет 62 надо было написать в кавычках?
поставила в кавычки, возвращает СКД 0, вроде все правильно, только я так и не поняла, если кавычек нет, то как 1с видит цифру 62?

по поводу списка значений: нашла в нете такое решение, т.к. иначе у меня вообще бух.итоги не формировались.
+
5. Cooler 22 07.03.17 10:57 Сейчас в теме
(3)
только я так и не поняла, если кавычек нет, то как 1с видит цифру 62?
Ууу, как все запущено... Да, различие между базовыми типами значений (число, строка, дата) "в нете" так просто не найдешь, тут понимание нужно.
(4)
Поэтому и нужно указывать "62" или "62.1"
Или, например, так: "62.1,62.2", что автору его "способом" вообще не сделать.
+
6. kulkrise 3 07.03.17 11:03 Сейчас в теме
(5)
Ууу, как все запущено...

полностью согласна с Вами, есть такой косяк, пытаюсь понять, но к сожалению, часто нахожу решение далекое от хотя бы просто хорошего, но если хотя бы работает и не косячит, то уже неплохо (а вообще, да, руки мне порой надо оторвать).

Или, например, так: "62.1,62.2", что автору его "способом" вообще не сделать.

будьте добры, объясните, пожалуйста, подробнее, что не так с моим "способом", в каком направлении корректнее реализовывать получение бух.итогов
+
7. Cooler 22 07.03.17 11:06 Сейчас в теме
(6)
будьте добры, объясните, пожалуйста, подробнее, что не так с моим "способом"
Не понимаете?

Попробуйте модифицировать ваш бухзапрос для получения итогов не по счету 62 в целом, а по двум субсчетам - 62.1 и 62.2

Как он будет выглядеть?
+
8. kulkrise 3 07.03.17 11:08 Сейчас в теме
(7) спасибо, надеюсь вечером удастся проверить что это будет
+
9. Cooler 22 07.03.17 11:12 Сейчас в теме
(8) Не надо ничего проверять, вы просто напишите тут одну строчку кода, в которой выполняется БИ.ВыполнитьЗапрос, но для двух субсчетов.
+
4. semyon 07.03.17 06:57 Сейчас в теме
Коды бух.счетов не цифровые, а текстовые. Поэтому и нужно указывать "62" или "62.1"
kulkrise; +1
10. WasiliyMay 8 07.03.17 14:14 Сейчас в теме
Периодичность "День" в запросе можно не указывать. Выборка по периодам ведь не требуется.
+
11. Cooler 22 07.03.17 16:13 Сейчас в теме
(10)
Периодичность "День" в запросе можно не указывать. Выборка по периодам ведь не требуется.
В данном конкретном случае ее даже не нужно указывать: запрос формируется за один день, чего там по дням группировать-то?

Но это уже эффекты "второго порядка", в итоге которых получается то, что называется "г...внокод" - уродливо, но работает.

А вот несоблюдение типов - другое дело.
+
13. kulkrise 3 07.03.17 18:49 Сейчас в теме
(11) я очень хочу научиться писать не
"г...внокод"
и не уродливо,
но как-то не очень-то получается, а несоблюдение типов это у меня как на постой, т.е. прога с завидной регулярностью мне об этом сообщает)))

//******************************************************************************
Процедура БухгалтерскиеИтоги(Докум, ТЗ)

	ТЗ = СоздатьОбъект("ТаблицаЗначений");
	ТЗ.НоваяКолонка("СН","Число",15,2);
	ТЗ.НоваяКолонка("СК","Число",15,2);
	ТЗ.НоваяКолонка("Контр");
	ТЗ.НоваяКолонка("Догов");
	ТЗ.НоваяКолонка("СНД","Число",15,2);
	ТЗ.НоваяКолонка("СНК","Число",15,2);
	ТЗ.НоваяКолонка("СКД","Число",15,2);
	ТЗ.НоваяКолонка("СКК","Число",15,2);

	// получаем остатки по БухгалтерскиеИтоги
	Список1 = СоздатьОбъект("СписокЗначений");
	Список1.ДобавитьЗначение(Докум.Контрагент.ТекущийЭлемент(), "");
	БИ = СоздатьОбъект("БухгалтерскиеИтоги");	
	БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Список1, 1);
	БИ.ИспользоватьСубконто(ВидыСубконто.Договоры, , 1);
	БИ.ВключатьСубсчета(-1);
	БИ.ВыполнитьЗапрос(Докум.ДатаДок,Докум.ДатаДок,"62.1,62.2",,,1,"День","С");
	//БИ.ВыполнитьЗапрос(НачГода(Докум.ДатаДок),Докум.ДатаДок,62,,,1,"День","С");
	
	БИ.ВыбратьСчета();
	Пока БИ.ПолучитьСчет() = 1 Цикл
		ТЗ.НоваяСтрока();
		ТЗ.СН = БИ.СНД(1)-БИ.СНК(1);
		ТЗ.СК = БИ.СКД(1)-БИ.СКК(1);
		БИ.ВыбратьСубконто(1);
		Пока БИ.ПолучитьСубконто(1) = 1 Цикл
			ТЗ.Контр = БИ.Субконто(ВидыСубконто.Контрагенты);
			ТЗ.СН = БИ.СНД(1)-БИ.СНК(1);
			ТЗ.СК = БИ.СКД(1)-БИ.СКК(1);
			БИ.ВыбратьСубконто(2);
			Пока БИ.ПолучитьСубконто(2) = 1 Цикл
				ТЗ.Догов = БИ.Субконто(ВидыСубконто.Договоры); 
				ТЗ.СН = БИ.СНД(1)-БИ.СНК(1);
				ТЗ.СК = БИ.СКД(1)-БИ.СКК(1);
				Если ТЗ.СН > 0 Тогда
					ТЗ.СНД = БИ.СНД();
				Иначе
					ТЗ.СНК = БИ.СНК();
				КонецЕсли;
				Если ТЗ.СК > 0 Тогда
					ТЗ.СКД = БИ.СКД();
				Иначе
					ТЗ.СКК = БИ.СКК();
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;

КонецПроцедуры

//******************************************************************************
Процедура ЗаполнитьРеквизитыПриВводеНового(Докум)

	БухгалтерскиеИтоги(Докум, ТЗ);
	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		СН 		= ТЗ.СН;
		СК 		= ТЗ.СК;
		Контр 	= ТЗ.Контр;
		Догов 	= ТЗ.Догов;
		СНД 	= ТЗ.СНД;
		СНК 	= ТЗ.СНК;
		СКД 	= ТЗ.СКД;
		СКК 	= ТЗ.СКК;
		Сообщить("СН "+СНД+СНК);
		Сообщить("СК "+СКД+СКК);
Показать


на текущий момент опять где-то накосячила, что у меня СК выдает "020" вместо "20" (из бух итогов передаю в ТЗ)
+
12. kulkrise 3 07.03.17 18:38 Сейчас в теме
(10) так а разве это не влияет, если я указываю в БИ.ВыполнитьЗапрос дату нач. и дату кон. равные дате отгрузки?
+
17. WasiliyMay 8 08.03.17 10:43 Сейчас в теме
(12)Периодичность нужно указывать, если далее планируется выборка по периодам, иначе в ней нет смысла
+
14. CheBurator 3119 07.03.17 21:20 Сейчас в теме
БухгалтерскиеИтоги(..)
почему ТЗ.НоваяСтрока() - в самом верхнем цикле? перебор контрагентов выполняется, какой контрагент будет записан В ЭТУ СТРОКУ? и почему он будет записан один..?
.
ну а про 020 - это же очевидно...
https://www.screencast.com/t/lalcBrHQ
kulkrise; +1
15. kulkrise 3 07.03.17 21:49 Сейчас в теме
(14)
ну а про 020 - это же очевидно...
https://www.screencast.com/t/lalcBrHQ
спасибо, не сообразила.

эти строки
ТЗ.СК = БИ.СКД(1)-БИ.СКК(1);
я из типовой осв-шки взяла, но скорее всего что-то не учла,
напр. определение типов или еще что.

почему ТЗ.НоваяСтрока() - в самом верхнем цикле?
это что, изначально она у меня вообще сразу после каждого цикла шла,
и получала я пустые значения, соответственно, и не понимала, откуда пустые значения,
но если серъезно: т.е. эту строку и Контр правильнее перенести в тело 2-го цикла?
+
16. CheBurator 3119 07.03.17 23:08 Сейчас в теме
(15) по идее у тебя для каждой триады счет-контргаент-договор д.б. новая строка.
ну так засунь ее внуть самого глубокого цикла
+
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот