новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Закрытие счета

  • Добавить свою публикацию
  • для этого требуется регистрация

На днях мне пришлось разрабатывать  документ, целью которого, в том числе, было закрытие остатков по счету. Задача известная и много раз решаемая. У меня в дальних архивах лежит процедура, которую я делал еще для 7.7,  называется она очень просто УниверсальнаяСвертка, и в ней я использую рекурсию для обхода остатков по счету в разрезе субконто. Но в подходе, о котором пойдет речь рекурсия не используется. Восьмерка предоставляет пользователю очень удобный  инструмент  в виде построителя запроса, которым мы и воспользуемся.

И так есть счет и  надо получить остатки с детализацией до субконто. Для этого нам понадобится универсальная процедура, которая бы не зависела от количества субконто у выбранного счета. Пишем следующий запрос.

Текст="ВЫБРАТЬ
      |	Остатки.Счет,
      |	Остатки.Организация,
      |	Остатки.Валюта,
      |	Остатки.КоличествоОстаток КАК Количество,
      |	Остатки.ВалютнаяСуммаОстаток КАК ВалютнаяСумма,
      |	Остатки.СуммаОстаток КАК Сумма,
      |	&Переоценка КАК ПрочиеДоходыИРасходы
      |{ВЫБРАТЬ
      |	Остатки.Субконто1.*,
      |	Остатки.Субконто2.*,
      |	Остатки.Субконто3.*}
      |ИЗ
      |	РегистрБухгалтерии.Хозрасчетный.Остатки(&вхДата, Счет = &Счет, , {(Организация)}) КАК Остатки";


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

функция глВернутьСубконтоСчета(вхСчет) Экспорт
	
	мСтруктура=новый структура;
	для каждого знч из вхСчет.ВидыСубконто цикл
	               субк=знч.ВидСубконто;
	               имя=глВернутьИмяСубконто(субк);
	               мСтруктура.Вставить(имя);
	конеццикла;    
	возврат мСтруктура;

КонецФункции               


запрос=новый ПостроительЗапроса;
запрос.Текст=Текст;
мСубкИсточник=глВернутьСубконтоСчета(мСчетИсточник);
н=0;
для каждого запись из мСубкИсточник цикл

    н=н+1;
    запрос.ВыбранныеПоля.Добавить("Субконто"+н,запись.Ключ);

конеццикла; 

Дадим пояснение к приведенному тексту. В данной задаче мы используем вспомогательную функцию глВернутьСубконтоСчета(вхСчет), которая возвращает структуру, каждая запись которой содержит имя субконто счета, переданного в качестве параметра.  Функция глВернутьИмяСубконто приводится в предыдущей статье «Полезные мелочи». Теперь, когда мы знаем количество субконто счета и имя каждого субконто,   добавим в объект запрос, который имеет тип ПостроительЗапроса, дополнительные поля с помощью метода Добавить реквизита ВыбранныеПоля. Теперь дело за малым. Надо обойти все остатки по счету и сформировать движения по регистру бухгалтерского учета. Я применяю процедуру глПроводка, которая построена с помощью методики, изложенной в уже называвшейся  статье «Полезные мелочи».

запрос.Выполнить();
Выборка=запрос.Результат.Выбрать();
пока Выборка.Следующий() цикл
	
	ЗаполнитьЗначенияСвойств(мСубкИсточник,Выборка);
	ЗаполнитьЗначенияСвойств(мСубкПриемник,Выборка);
	глПроводка(вхДокумент,мСчетПриемник,мСубкПриемник,
			мСчетИсточник,мСубкИсточник,
			Выборка.Сумма,Выборка.Количество,
			Выборка.ВалютнаяСумма,Выборка.Валюта,ТекстПроводки);
	
Конеццикла;

В данном коде интересно то, что и Выборка и структура мСубкИсточник содержат поля с именами субконто счета. Поэтому присвоение производится с помощью метода ЗаполнитьЗначенияСвойств. Полученный код является универсальным и применим для счета с любым количеством субконто. К чему мы и стремились.

 
0
Читайте также
Консоль компоновки данных
Обработка для анализа данных , отладки запросов, написания отчетов без конфигуратора - предназанчена для программистов и продвинутых пользователей
1С обработки
Обработки 1С это объекты метаданных, которые служат для получения выходной информации в программе 1С
Восстановление потерянных реквизитов документов v 7.7
В ранее записанных и проведённых документах пропали некоторые реквизиты. В отчётах полный бардак. Как я решил эту проблему.
Разработки
Отчет по СФ
Отчет выводит информацию только о продажах, на которые была выписана счет-фактура
Распаковка защищенных модулей 1С 8
Обработка 1С 8 по распаковке защищенных модулей
Еще от автора
≡ к списку статей