Задача состояла в следующем. В конфигурации 1С Бухгалтерия пользователю понадобился отчет по продажам с показателем валовой прибыли. Валовую прибыль, как известно, можно получить только зная себестоимость реализованной продукции. В большинстве конфигураций отчет "Валовая прибыль (продажи)" существует в стандартном виде, нужно только уметь им пользоваться. Но в конфигурации 1С Бухгалтерия такого отчета нет, потому что нет регистров, по которым можно формировать отчет. Поэтому, для того, чтобы в 1С Бухгаллтерия можно было сформировать требующийся отчет пришлось доработать конфигурацию. Что именно пришлось доработать: в документе Реализация товаров пришлось добавить код, который суммирует проводки по регистру бухгалтерии Хозрасчетный по счету 902 (Себестоимость реализованных товаров) и записывает результат суммы в каждый документ.

В модуль объекта документа Реализация товара после процедуры ПередЗаписью помещена новая функция:

ШАБЛОН КОДА:

Функция ЗаписатьССТВДокумент(СчетДт, Ссылка)

Запрос = Новый Запрос;
Запрос.УстановитьПараметр ("СчетДт", ПланыСчетов.Хозрасчетный.СебестоимостьРеализованныхТоваров);
Запрос.УстановитьПараметр ("Ссылка", ЭтотОбъект.Ссылка);
Запрос.Текст =

"ВЫБРАТЬ
| Хозрасчетный.Период,
| Хозрасчетный.Регистратор,
| Хозрасчетный.СчетДт,
| Хозрасчетный.СчетКт,
| Хозрасчетный.Сумма,
| Хозрасчетный.КоличествоДт,
| Хозрасчетный.КоличествоКт,
| Хозрасчетный.Содержание
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.СчетДт = &СчетДт
| И Хозрасчетный.Регистратор.Ссылка = &Ссылка";


РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СуммаССТПоДокументу = Число(0);
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СчетДТ902 = ВыборкаДетальныеЗаписи.СчетДт;
СуммаССТПоДокументу = СуммаССТПоДокументу + ВыборкаДетальныеЗаписи.Сумма;
КонецЦикла;

Возврат СуммаССТПоДокументу;

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

СКРИНШОТ КОДА

Как видите, функция с параметрами (счет, документ) отбирает суммы из текущего документа и только по определенному счету. Результат запроса обрабатывается с помощью цикла и в нем же происходит получение суммы всех строк проводок по дебету 902 счета.

Сама же запись суммы происходит при перепроведении документа групповой обработкой или вручную.

ШАБЛОН КОДА 

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

... 

ЭтотОбъект.ССТДляОтчета = ЗаписатьССТВДокумент (902,ЭтотОбъект.Ссылка) ;

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

СКРИНШОТ КОДА

Реквизит добавленный нами в документ РеализацияТоваров назывался "ССТДляОтчета" - число (длина -10, точнность - 2).  

 

В результате в 1С бухгалтерия можно сформировать вот такой вот отчет по продажам:

Наши проекты | Купить 1С | Услуги по 1С | ПрограммированиеАренда сервера | FAQ 1C

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

© 2021 1С ПРОЕКТЫ И РЕШЕНИЯ /1С СЕРВИС 24/7