Добавляем колонку с закупочной ценой в печатную форму документа "Реализация" - 2

Мы уже добавляли во внешнюю печатную форму документа "Реализация" колонку с закупочной ценой, которая бралась из справочника цен - посмотреть можно тут: Добавляем колонку с закупочной ценой.

Сейчас нам нужно изменить эту закупочную цену : вместо закупочной цены из справочника мы хотим видеть среднюю закупочную цену товаров, имеющихся на складе. Это задача уже посложнее - нам нужно получить остатки из регистра. Самое простое, что мы можем сделать - это получить остатки из регистра партий, т.к. именно туда и записывается и количество и закупочная сумма товаров. В этом регистре нет четкого разделения по складам, поэтому получать остатки мы будем по всем имеющимся складам. Если необходимо разделение по складам - это уже более сложная схема и мы ее тут рассматривать не будем, дабы вы никак не напортачили в своих базах :)

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

Открываем нашу базу в режиме "Конфигуратор" и через "Файл" - "Открыть" находим и открываем нужную нам форму.
Читать полностью --->


На вкладке "Модуль" нажимаем внизу кнопочку с биноклем и в открывшемся окне нажимаем "Печать" и кнопочку "Перейти" (или дважды щелкаем мышкой по сорву "Печать") - мы переходим к процедуре "Печать"
Спускаемся чуть ниже и находим текст, который писали ранее для нахождения закупочной цены:  
ТипЦеныЗакуп=глЗначениеПоУмолчанию("ОсновнойТипЦенПокупки");
ЦенаЗ="";
Если глВернутьЦену(Докум.Номенклатура, ТипЦеныЗакуп,Докум.ДатаДок, ЦенаЗ, Докум.Единица, Докум.Валюта) = 1 Тогда
 ЦенаЗакуп=ЦенаЗ;  
 Если ЦенаЗакуп<>0  Тогда
 Процент=((Докум.Сумма/Докум.Количество)*100)/ЦенаЗакуп-100;
 Иначе
         Процент="";
 КонецЕсли;
Иначе
         ЦенаЗакуп="";
 Процент="";
КонецЕсли;   
 Удаляем весь этот текст и вместо него пишем вот это:
               Рег=СоздатьОбъект("Регистр.ПартииНаличие");
Если Докум.ДатаДок<ПолучитьДатуТА() Тогда
Рег.ВременныйРасчет();
РассчитатьРегистрыНа(Докум.ДатаДок);
КонецЕсли;
Рег.СводныеОстатки(Докум.Фирма,,Докум.Номенклатура);
Кол=Рег.Количество;
Стоимость=Рег.СуммаРуб;
Если Кол<>0  Тогда
ЦенаЗакуп=Стоимость/Кол;
Иначе
ЦенаЗакуп="";
КонецЕсли;
Если ЦенаЗакуп<>0 Тогда
Процент=((Докум.Сумма/Докум.Количество)*100)/ЦенаЗакуп-100;
Иначе
       Процент="";
КонецЕсли;
Выглядит это вот так:
Здесь мы обращаемся к регистру партий на дату документа, т.е. если мы будем распечатывать накладную, которая была создана, скажем, три месяца назад, то и средняя цена будет рассчитываться исходя из остатков, которые были на складе три месяца назад.

Сохраняем нашу печатную форму (Файл - Сохранить), в режиме "Предприятие" регистрируем нашу форму для документа (если не помните, как это делается - смотрим тут: Добавляем колонку с закупочной ценой

При печати форма выглядит так:
Для того, что бы проверить правильно ли у нас считается закупочная цена, мы можем сформировать вот такой отчет "Остатки ТМЦ" , указав для цен "усредненная себестоимость с НДС"
Если что-то не получается - пишите ниже в комментариях и будем разбираться :)

2 коммент.:

Андрей Бабакин комментирует...

Марина большое спасибо! Все получилоссссссь!!!

Marina Shulakova комментирует...

Андрей, я очень рада, что все у Вас получилось :))

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...