Доброй ночи!
В ОСВ у контрагента по договорам Сн - 0, ДтОб - 480р. (отгрузка еще не проведена), СкДт - 480р. Получение бух.итогов выпоняется из печ.формы отгрузки.
делаю выборку и СКД показывает 4800 (откуда???).
мне нужна помощь в исправлении ошибок.
// получаем остатки по БухгалтерскиеИтоги
Список1 = СоздатьОбъект("СписокЗначений");
Список1.ДобавитьЗначение(Докум.Контрагент.ТекущийЭлемент(), "");
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Список1, 1);
БИ.ИспользоватьСубконто(ВидыСубконто.Договоры, , 1);
БИ.ВключатьСубсчета(-1);
БИ.ВыполнитьЗапрос(Докум.ДатаДок,Докум.ДатаДок,62,,,1,"День","С");
БИ.ВыбратьСчета();
Пока БИ.ПолучитьСчет() = 1 Цикл
ТЗ.НоваяСтрока();
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто(1) = 1 Цикл
ТЗ.Контр = БИ.Субконто(ВидыСубконто.Контрагенты);
БИ.ВыбратьСубконто(2);
Пока БИ.ПолучитьСубконто(2) = 1 Цикл
ТЗ.Догов = БИ.Субконто(ВидыСубконто.Договоры);
ТЗ.СК = БИ.СКД(1)-БИ.СКК(1);
Если ТЗ.СК > 0 Тогда
ТЗ.СКД = БИ.СКД();
Иначе
ТЗ.СКК = БИ.СКК();
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
<Счет> - необязательный параметр. Счета, для которых будут отбираться итоги в запросе. Задается значением типа ''Счет'' или объектом типа ''СписокЗначений'', содержащим значения типа ''Счет'', либо строкой содержащей список кодов счетов, разделенных символом '','' или '';''. Если параметр не указан, отбор будет выполняться по всем счетам.
Вы счет 62 каким из выделенных способов задали, а?
(2) по поводу счета: счет 62 надо было написать в кавычках?
поставила в кавычки, возвращает СКД 0, вроде все правильно, только я так и не поняла, если кавычек нет, то как 1с видит цифру 62?
по поводу списка значений: нашла в нете такое решение, т.к. иначе у меня вообще бух.итоги не формировались.
полностью согласна с Вами, есть такой косяк, пытаюсь понять, но к сожалению, часто нахожу решение далекое от хотя бы просто хорошего, но если хотя бы работает и не косячит, то уже неплохо (а вообще, да, руки мне порой надо оторвать).
Или, например, так: "62.1,62.2", что автору его "способом" вообще не сделать.
будьте добры, объясните, пожалуйста, подробнее, что не так с моим "способом", в каком направлении корректнее реализовывать получение бух.итогов
и не уродливо,
но как-то не очень-то получается, а несоблюдение типов это у меня как на постой, т.е. прога с завидной регулярностью мне об этом сообщает)))
//******************************************************************************
Процедура БухгалтерскиеИтоги(Докум, ТЗ)
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("СН","Число",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" (из бух итогов передаю в ТЗ)
БухгалтерскиеИтоги(..)
почему ТЗ.НоваяСтрока() - в самом верхнем цикле? перебор контрагентов выполняется, какой контрагент будет записан В ЭТУ СТРОКУ? и почему он будет записан один..?
.
ну а про 020 - это же очевидно...
https://www.screencast.com/t/lalcBrHQ
я из типовой осв-шки взяла, но скорее всего что-то не учла,
напр. определение типов или еще что.
почему ТЗ.НоваяСтрока() - в самом верхнем цикле?
это что, изначально она у меня вообще сразу после каждого цикла шла,
и получала я пустые значения, соответственно, и не понимала, откуда пустые значения,
но если серъезно: т.е. эту строку и Контр правильнее перенести в тело 2-го цикла?