Как получить сальдо дебетовое или кредитовое? Примеры универсальных функций 1С для
получения Конечных Сальдо Дк и Дт :
Код 1C v 8.х //Перед использованием укажите значения переменных:
знОрганизация = Организация;
КонПериода = ТекущаяДата();
// СКД - Сальдо Конечное Дебетовое
Функция СКД(Счет, ДатаО = Неопределено)
Если ДатаО = Неопределено Тогда ДатаО = КонецДня(КонПериода) КонецЕсли;
СчетПЛ = ПланыСчетов.Хозрасчетный.НайтиПоКоду(Счет);
Если СчетПЛ = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда
Возврат "Нет счета!";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.СуммаОстатокДт,
| ХозрасчетныйОстатки.СуммаОстатокКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&DatO, Счет В ИЕРАРХИИ(&Scet), , Организация = &Organ) КАК ХозрасчетныйОстатки
|";
Запрос.УстановитьПараметр("DatO", Новый Граница(ДатаО, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Scet", СчетПЛ);
Запрос.УстановитьПараметр("Organ", знОрганизация);
Результат = Запрос.Выполнить();
Результат = Результат.Выбрать();
Если Результат.Следующий() Тогда
Возврат Результат.СуммаОстатокДт;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
// СКК - Сальдо Конечное Кредитовое
Функция СКК(Счет, ДатаО = Неопределено)
Если ДатаО = Неопределено Тогда ДатаО = КонецДня(КонПериода) КонецЕсли;
СчетПЛ = ПланыСчетов.Хозрасчетный.НайтиПоКоду(Счет);
Если СчетПЛ = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда
Возврат "Нет счета!";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.СуммаОстатокДт,
| ХозрасчетныйОстатки.СуммаОстатокКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&DatO, Счет В ИЕРАРХИИ (&Scet), , Организация = &Organ) КАК ХозрасчетныйОстатки";
Запрос.УстановитьПараметр("DatO", Новый Граница(ДатаО, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Scet", СчетПЛ);
Запрос.УстановитьПараметр("Organ", знОрганизация);
Результат = Запрос.Выполнить();
Результат = Результат.Выбрать();
Если Результат.Следующий() Тогда
Возврат Результат.СуммаОстатокКт;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Пример использования:
Код 1C v 8.х ТекЗнач = СКД("04.01")-СКК("05")+СКД("08.05");
Категория:
Регистры бухгалтерии Как сделать чтобы в колонке табличного поля выводились текущие остатки? На форме в табличное поле добавим Колонку (Имя - НачальноеСальдо, Данные - Пусто и все остальное тоже) и колонку КонечноеСальдо
Зайдем в свойства Табличного поля и в событиях определим процедуру при выводе строки: ДействиеПриВыводеСтроки
А в модуле напишем:
Код 1C v 8.х
Процедура ЗарплатаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
//Укажем фильтр получения остатков
Фильтр = Новый Структура;
Фильтр.Вставить("ФизЛицо",ДанныеСтроки.ФизЛицо);
// по подразделению не надо
//Фильтр.Вставить("Подразделение", ДанныеСтроки.Подразделение);
//Остаток до документа
Попытка
НачСальдо = РегистрыНакопления.Взаиморасчеты.Остатки(Новый Граница(Дата, ВидГраницы.Исключая),Фильтр,"ФизЛицо","ВзаимРасчет")[0].ВзаимРасчет;
Исключение // остатка нет
НачСальдо = 0;
КонецПопытки;
//Остаток после документа
Попытка
КонСальдо = РегистрыНакопления.Взаиморасчеты.Остатки(Новый Граница(Дата, ВидГраницы.Включая),Фильтр,"ФизЛицо","ВзаимРасчет")[0].ВзаимРасчет;
Исключение // остатка нет
КонСальдо = 0;
КонецПопытки;
ОформлениеСтроки.Ячейки.НачальноеСальдо.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.НачальноеСальдо.Текст = ?(НачСальдо=0,"",НачСальдо);
ОформлениеСтроки.Ячейки.КонечноеСальдо.ОтображатьТекст = Истина;
ОформлениеСтроки.Ячейки.КонечноеСальдо.Текст = ?(КонСальдо=0,"",КонСальдо);
//Добавим цветовое оформление, чтобы выделить минусовые остатки
Если НачСальдо < 0 Тогда
ОформлениеСтроки.Ячейки.НачальноеСальдо.ЦветФона = Новый Цвет(255, 131, 131);
Иначе
ОформлениеСтроки.Ячейки.НачальноеСальдо.ЦветФона = Новый Цвет(255, 255, 231);
КонецЕсли;
Если КонСальдо < 0 Тогда
ОформлениеСтроки.Ячейки.КонечноеСальдо.ЦветФона = Новый Цвет(255, 131, 131);
Иначе
ОформлениеСтроки.Ячейки.КонечноеСальдо.ЦветФона = Новый Цвет(255, 255, 231);
КонецЕсли;
КонецПроцедуры
Категория:
Документы Как заполнить диаграмму данными? Код 1C v 8.х Диаграмма = ЭлементыФормы.Диаграмма;
// Очистить диаграмму, возможно ранее в нее уже выводились данные.
Диаграмма.КоличествоСерий = 0;
Диаграмма.КоличествоТочек = 0;
// Количество серий будет ограничиваться (не все значения будут показываться).
Диаграмма.МаксимумСерий = МаксимумСерий.Ограничено;
Диаграмма.МаксимумСерийКоличество = 7;
Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Процент;
Диаграмма.ОбластьЗаголовка.Текст = "Обороты номенклатуры";
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ
| ПродажиКомпанииОбороты.Номенклатура,
| СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиКомпанииОбороты
|СГРУППИРОВАТЬ ПО
| ПродажиКомпанииОбороты.Номенклатура";
Результат = Запрос.Выполнить();
// Запретить обновление диаграммы на время вывода данных.
Диаграмма.Обновление = Ложь;
// Установить единственную точку.
Диаграмма.КоличествоТочек = 1;
Диаграмма.Точки[0].Текст = "Количество";
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// Количество серий, если бы не ограничивали зависело бы от результата запроса.
КоличествоСерий = Диаграмма.Серии.Количество();
Диаграмма.КоличествоСерий = КоличествоСерий + 1;
Диаграмма.Серии[КоличествоСерий].Текст = Выборка.Номенклатура;
// Установить значение "на пересечении" точки и серии.
// Первый параметр - 0 , так как в диаграмме только одна точка.
Диаграмма.УстановитьЗначение(0, КоличествоСерий, Выборка.КоличествоОборот);
КонецЦикла;
// Обновить диаграмму.
Диаграмма.Обновление = Истина;
Код 1C v 7.x //Пример 1:
Процедура ПостроитьДиаграмму(Диагр)
КолСерий=0;
//количество серий определяется по количеству элементов в справочнике Материалы Спр=СоздатьОбъект("Справочник.Материалы");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
// группы элементов пропускаются
Если Спр.ЭтоГруппа()=0 Тогда
КолСерий=КолСерий+1;
КонецЕсли;
КонецЦикла;
// установка количества серий и точек
Диагр.КоличествоСерий(КолСерий);
Диагр.КоличествоТочек(1);
//в качестве значений на диаграмме примем количественное сальдо конечное по счету 10 и текущему элементу справочника
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
БИ.Рассчитать(ДатаОтчета, ДатаОтчета);
номер=1;
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ЭтоГруппа()=0 Тогда
Диагр.УстановитьИмяСерии(Номер, Спр.Наименование);
Диагр.УстановитьЗначение(1,номер,БИ.СКД("10","К",,Спр.ТекущийЭлемент()));
номер=номер+1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Код 1C v 7.x // Пример 2:
Процедура СформироватьДиаграмму(Диаграмма1)
// Блокируем обновление, пока обрабатываются данные
Диаграмма1.Обновление(0);
Диаграмма1.Заголовок = "Поступления от покупателей";
Диаграмма1.УстановитьИмяСерии(1, "Рубли");
Диаграмма1.АвтоУстановкаИменТочек(1);
// Заполним диаграмму значениями
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
Бухит.ВыполнитьЗапрос(НачКвартала(РабочаяДата()),
КонКвартала(РабочаяДата()),"60.1",,,1,"Неделя","С");
БухИт.ВыбратьПериоды();
А = 1;
// дебетовые обороты по счету 60.1 покажут поступления
// денег от покупателей
Пока БухИт.ПолучитьПериод() = 1 Цикл
Диаграмма1.УстановитьЗначение(А, 1, БухИт.ДО());
А = А +1;
КонецЦикла;
// после наполнения данными перерисовываем
Диаграмма1.Обновление(1);
КонецПроцедуры
Категория:
Диаграмма