0
Цыпленок
17.07.12
✎
14:17
|
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент);
БИ.ИспользоватьСубконто(ВидыСубконто.Договоры, Договор);
БИ.ВключатьСубсчета(0, 0);
БИ.ВыполнитьЗапрос(НачДата, КонДата, СписокВыбранныхСчетов);
СальдоНач = БИ.СНД() - БИ.СНК();
СальдоКон = БИ.СКД() - БИ.СКК();
Этот запрос показывает суммовое сальдо начальное и конечно. Нужно чтобы показывал сальдо количественное (в указанном на форме обработке счете есть количественный учет, плюс обороты я смог количественные вытянуть). А вот с сальдо проблема. Вот так не получается почему то:
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент);
БИ.ИспользоватьСубконто(ВидыСубконто.Договоры, Договор);
БИ.ВключатьСубсчета(0, 0);
БИ.ВыполнитьЗапрос(НачДата, КонДата, СписокВыбранныхСчетов,,,,,"К");
СальдоНач = БИ.СНД("К") - БИ.СНК("К");
СальдоКон = БИ.СКД("К") - БИ.СКК("К");
|
|
3
Академик_
Келдыш
17.07.12
✎
14:21
|
проверь и попробуй:
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент);
БИ.ИспользоватьСубконто(ВидыСубконто.Договоры, Договор);
БИ.ВключатьСубсчета(0, 0);
БИ.ВыполнитьЗапрос(НачДата, КонДата, СписокВыбранныхСчетов);
СальдоНач = БИ.СНД(3) - БИ.СНК(3);
СальдоКон = БИ.СКД(3) - БИ.СКК(3);
|
|
6
Цыпленок
17.07.12
✎
14:27
|
Тааак. Отчет - обычный акт сверки по договору, попросили сделать чтобы показывал не по сумме а по количеству. Когда считаем обороты, перебираем проводки через,
[1CОпер.ВыбратьОперацииСПроводками(НачДата, КонДата, Фильтр);
Пока Опер.ПолучитьПроводку() = 1 Цикл
количественные обороты показывает.
(3) Нет, так не работает. Могу весь код показать.
|
|
7
Цыпленок
17.07.12
✎
14:28
|
Тааак. Отчет - обычный акт сверки по договору, попросили сделать чтобы показывал не по сумме а по количеству. Когда считаем обороты, перебираем проводки через,
Опер.ВыбратьОперацииСПроводками(НачДата, КонДата, Фильтр);
Пока Опер.ПолучитьПроводку() = 1 Цикл
количественные обороты показывает.
(3) Нет, так не работает. Могу весь код показать.
|
|
8
Цыпленок
17.07.12
✎
14:34
|
// Процедура Заполнить()
//
// Параметры:
// Нет.
//
// Вызывается из формул элементов диалога:
// Кнопка Заполнить
//
// Описание:
// Заполняется таблица значений ТаблицаДвижений. В нее включаются все операции
// по расчетам с контрагентом (если выбран договор - то только в рамках
// этого договора) за период сверки по данным бухгалтерского учета.
// Первая строка таблицы - сальдо расчетов на
// начало периода, последняя - сальдо на конец периода.
// Вначале определяется дата, с которой начато ведение учета в данной
// информационной базе. Начало периода сверки выбирается как наиболее поздняя
// из двух дат - даты, указанной как дата предыдущей сверки + 1 день и даты
// начала ведения учета в информационной базе. Если дата сверки указана более
// ранняя, чем дата начала ведения учета в базе, то автозаполнение таблицы
// не производится и акт сверки не составляется.
//
Процедура Заполнить()
Если КонДата < НачДата Тогда
Предупреждение("Неверно задан период сверки расчетов.", "!");
Возврат;
КонецЕсли;
Если ПустоеЗначение(Контрагент) = 1 Тогда
Предупреждение("Сначала, пожалуйста, выберите контрагента.");
Возврат;
КонецЕсли;
Форма.ИспользоватьСлой("Таблица, Основной", 2);
Форма.Закладки.ТекущаяСтрока(2);
Если ТаблицаДвижений.КоличествоСтрок() > 0 Тогда
Если Вопрос("Перед заполнением таблица движений будет очищена.
|Продолжать?", "Да+Нет") = "Нет" Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ТаблицаДвижений.УдалитьСтроки();
//ищем документы, в т.ч. операции, по расчетам с выбранным контрагентом, по проводкам
СписокВыбранныхСчетов = СоздатьОбъект("СписокЗначений");
Фильтр = "";
Для СчетчикЦикла = 1 По СписокСчетов.РазмерСписка() Цикл
Если СписокСчетов.Пометка(СчетчикЦикла) = 1 Тогда
Сч = СписокСчетов.ПолучитьЗначение(СчетчикЦикла);
СписокВыбранныхСчетов.ДобавитьЗначение(Сч);
КодСчета = СокрЛП(Сч.Код);
Фильтр = Фильтр + КодСчета + ",*;*," + КодСчета + ";";
КонецЕсли;
КонецЦикла;
Если ПустоеЗначение(Фильтр) = 0 Тогда
Фильтр = Лев(Фильтр, СтрДлина(Фильтр)-1);
КонецЕсли;
ЕстьВалютныеОперации = 0;
Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент);
Если ПустоеЗначение(Договор) = 0 Тогда
Опер.ИспользоватьСубконто(ВидыСубконто.Договоры, Договор);
КонецЕсли;
Опер.ВыбратьОперацииСПроводками(НачДата, КонДата, Фильтр);
Пока Опер.ПолучитьПроводку() = 1 Цикл
СчДт = Опер.Дебет.Счет;
СчКт = Опер.Кредит.Счет;
СчетГруппаДт = СчДт.Родитель(1);
СчетГруппаКт = СчКт.Родитель(1);
// Отсекаем коррееспонденции выбранных счетов между собой с одним контрагентом.
Если (СписокВыбранныхСчетов.НайтиЗначение(СчетГруппаДт) > 0) и (СписокВыбранныхСчетов.НайтиЗначение(СчетГруппаКт) > 0) Тогда
Если Опер.Дебет.Субконто(ВидыСубконто.Контрагенты) = Опер.Кредит.Субконто(ВидыСубконто.Контрагенты) Тогда
Продолжить;
ИначеЕсли Опер.Дебет.Субконто(ВидыСубконто.Контрагенты) = Контрагент Тогда
СчКт = ПолучитьПустоеЗначение("Счет");
СчетГруппаКт = ПолучитьПустоеЗначение("Счет");
Иначе // Опер.Кредит.Субконто(ВидыСубконто.Контрагенты) = Контрагент
СчДт = ПолучитьПустоеЗначение("Счет");
СчетГруппаДт = ПолучитьПустоеЗначение("Счет");
КонецЕсли;
КонецЕсли;
Если Опер.Сумма = 0 Тогда
Продолжить;
ИначеЕсли СписокВыбранныхСчетов.НайтиЗначение(СчетГруппаДт) > 0 Тогда
Если (Найти(СчДт.Код, "76.Н") <> 0) или (Найти(СчДт.Код, "76.АВ") <> 0) Тогда
Продолжить;
КонецЕсли;
//[*]Антон, 16.07.2012
//Дебет = Опер.Сумма;
Дебет = Опер.Количество;
//[*]_
Кредит = 0;
Иначе
Если (Найти(СчКт.Код, "76.Н") <> 0) или (Найти(СчКт.Код, "76.АВ") <> 0) Тогда
Продолжить;
КонецЕсли;
Дебет = 0;
//[*]Антон, 16.07.2012
//Кредит = Опер.Сумма;
Кредит = Опер.Количество;
//[*]_
КонецЕсли;
Если (СчДт.Валютный = 1) или (СчКт.Валютный = 1) Тогда
ВалСумма = Опер.ВалСумма;
Валюта = Опер.Валюта;
ЕстьВалютныеОперации = 1;
Иначе
ВалСумма = 0;
Валюта = "";
КонецЕсли;
Операция = "";
Если СчДт = Сч91_2 Тогда
ПрочиеДоходыИРасходы = Опер.Дебет.ПрочиеДоходыИРасходы;
Если ПустоеЗначение(ПрочиеДоходыИРасходы) = 0 Тогда
Если ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = Перечисление.ВидыПрочихДоходовИРасходов.КурсовыеРазницы Тогда
Операция = "Курсовые разницы";
ИначеЕсли ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = Перечисление.ВидыПрочихДоходовИРасходов.ШтрафыПоДоговорам Тогда
Операция = "Санкции";
КонецЕсли;
КонецЕсли;
ИначеЕсли СчКт = Сч91_1 Тогда
ПрочиеДоходыИРасходы = Опер.Кредит.ПрочиеДоходыИРасходы;
Если ПустоеЗначение(ПрочиеДоходыИРасходы) = 0 Тогда
Если ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = Перечисление.ВидыПрочихДоходовИРасходов.КурсовыеРазницы Тогда
Операция = "Курсовые разницы";
ИначеЕсли ПрочиеДоходыИРасходы.ВидПрочихДоходовИРасходов = Перечисление.ВидыПрочихДоходовИРасходов.ШтрафыПоДоговорам Тогда
Операция = "Санкции";
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(Операция) = 1 Тогда
Если (СчКт.ПринадлежитГруппе(Сч66) = 1) или (СчКт.ПринадлежитГруппе(Сч66) = 1) Тогда
Операция = "Займ";
ИначеЕсли (СчДт.ПринадлежитГруппе(Сч66) = 1) или (СчДт.ПринадлежитГруппе(Сч66) = 1) Тогда
Операция = "Возврат займа";
ИначеЕсли (СчДт = Сч76_2) или (СчКт = Сч76_2) Тогда
Операция = "Претензия";
ИначеЕсли (СчДт.ПринадлежитГруппе(Сч50) = 1) или (СчДт = Сч51) или (СчДт = Сч52) или (СчДт.ПринадлежитГруппе(Сч55) = 1) Тогда
Если СчКт.ПринадлежитГруппе(Сч60) = 1 Тогда
Операция = "Возврат средств";
ИначеЕсли СчКт.ПринадлежитГруппе(Сч62) = 1 Тогда
Операция = "Оплата";
Иначе
Операция = "Перевод средств";
КонецЕсли;
ИначеЕсли (СчКт.ПринадлежитГруппе(Сч50) = 1) или (СчКт = Сч51) или (СчКт = Сч52) или (СчКт.ПринадлежитГруппе(Сч55) = 1) Тогда
Если (СчДт.ПринадлежитГруппе(Сч60) = 1) или (СчДт.ПринадлежитГруппе(Сч76) = 1) Тогда
Операция = "Оплата";
ИначеЕсли СчДт.ПринадлежитГруппе(Сч62) = 1 Тогда
Операция = "Возврат средств";
Иначе
Операция = "Перевод средств";
КонецЕсли;
ИначеЕсли (СчДт.ПринадлежитГруппе(Сч60) = 1) или (СчДт.ПринадлежитГруппе(Сч76) = 1) Тогда
Если (СчКт.ПринадлежитГруппе(Сч90) = 0) и (СчКт.ПринадлежитГруппе(Сч91) = 0) Тогда
Операция = "Оплата";
КонецЕсли;
ИначеЕсли СчДт.ПринадлежитГруппе(Сч62) = 1 Тогда
Если (СчКт.ПринадлежитГруппе(Сч90) = 1) или (СчКт.ПринадлежитГруппе(Сч91) = 1) Тогда
Операция = "Продажа";
КонецЕсли;
ИначеЕсли (СчКт.ПринадлежитГруппе(Сч60) = 1) или (СчКт.ПринадлежитГруппе(Сч76) = 1) Тогда
Операция = "Приход";
ИначеЕсли СчКт.ПринадлежитГруппе(Сч62) = 1 Тогда
Операция = "Оплата";
КонецЕсли;
КонецЕсли;
Если ПустоеЗначение(Операция) = 1 Тогда
Если СписокВыбранныхСчетов.НайтиЗначение(СчетГруппаДт) > 0 Тогда
Операция = "Передано";
Иначе
Операция = "Принято";
КонецЕсли;
КонецЕсли;
Документ = Опер.Документ;
Операция=Операция+" "+Опер.ДатаОперации;
ТаблицаДвижений.НоваяСтрока();
ТаблицаДвижений.Операция = Операция;
ТаблицаДвижений.Документ = Документ;
ТаблицаДвижений.Дебет = Дебет;
ТаблицаДвижений.Кредит = Кредит;
ТаблицаДвижений.ВалСумма = ВалСумма;
ТаблицаДвижений.Валюта = Валюта;
КонецЦикла;
ТаблицаДвижений.Свернуть("Документ, Операция, Валюта", "Дебет, Кредит, ВалСумма");
Если ЕстьВалютныеОперации = 1 Тогда
ТаблицаДвижений.ВыбратьСтроки();
Пока ТаблицаДвижений.ПолучитьСтроку() = 1 Цикл
Если ПустоеЗначение(ТаблицаДвижений.ВалСумма) = 0 Тогда
ТаблицаДвижений.Операция = ТаблицаДвижений.Операция + " (" + ТаблицаДвижений.ВалСумма + " " + ТаблицаДвижений.Валюта + ")";
КонецЕсли;
КонецЦикла;
КонецЕсли;
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент);
БИ.ИспользоватьСубконто(ВидыСубконто.Договоры, Договор);
БИ.ВключатьСубсчета(0, 0);
БИ.ВыполнитьЗапрос(НачДата, КонДата, СписокВыбранныхСчетов,,,,,);
СальдоНач = БИ.СНД() - БИ.СНК();
СальдоКон = БИ.СКД() - БИ.СКК();
ТаблицаДвижений.НоваяСтрока(1);
ТаблицаДвижений.Операция = "Сальдо на " + Формат(НачДата, "Д ДДММГГГГ");
ТаблицаДвижений.Дебет = 0;
ТаблицаДвижений.Кредит = 0;
Если СальдоНач > 0 Тогда
ТаблицаДвижений.Дебет = СальдоНач;
Иначе
ТаблицаДвижений.Кредит = - СальдоНач;
КонецЕсли;
ТаблицаДвижений.НоваяСтрока();
ТаблицаДвижений.Операция = "Обороты за период";
ТаблицаДвижений.НоваяСтрока();
ТаблицаДвижений.Операция = "Сальдо на " + Формат(КонДата, "Д ДДММГГГГ");
ТаблицаДвижений.Дебет = 0;
ТаблицаДвижений.Кредит = 0;
Если СальдоКон > 0 Тогда
ТаблицаДвижений.Дебет = СальдоКон;
Иначе
ТаблицаДвижений.Кредит = - СальдоКон;
КонецЕсли;
УстановитьОборотыЗаПериод();
ТаблицаДвижений.ТекущаяСтрока(ТаблицаДвижений.КоличествоСтрок());
КонецПроцедуры // Заполнить ).
|
|