Добавление дополнительного поля в печатной форме счета (Торговля и Склад)

Новая тема
Здравствуйте.
Возникли трудности с данным вопросом.
1С:Предприятие, Торговля+Склад 9.2

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

Счет №ххх
Поставщик ххх
Покупатель ххх
далее табличная часть:
№      Товар       Кол-во    Ед     Цена   Цена2    Сумма

Цена2 - это себестоимость продукции. Необходимо, чтобы она бралась из напрямую справочника цен.
Цена - это цена товара, в соответствии с установленным типом цен при наборе счета (в 1С по умолчанию), например "оптовая"
Т.е. Базовой ценой для номенклатуры как раз она (Цена2)и является.
В типах цен номенклатуры есть: Себестоимость (базовый тип цены, или "Цена2")), Оптовая, Розничная.
Как дополнить внешнюю печатную форму счета таким полем?
Перепробывал кучу вариантов, и к сожалению у меня ничего не получилось.


С уважением,
Рустам
напиши, что пробовал делать.... (текст программы)
написать не смогу.
пробовал прямо во внешней форме написать в поле ссылку на справочник цен. не получилось.
Посмотрел как делается в модуле счета в основной программе но там не нашел.
единственное место где видел зацепку это в обработке "ИнформацияОценах", но так и не смог написать аналогию.

Санкт-Петербург,
Рустам
"Проблема в получении данных или добавлении колонки в печатную форму?
Если тип цен Себестоимость, является базовым для типа цен "оптовая" и у вас есть ссылка на тип цен оптовая, то
получить тип цен Себестоимость, можно, через Оптовую, цену

ТипЦенСебестоимость = ТипЦенОптовая.БазовыйТипЦен.ТекущийЭлемент();
Получаем цену по типу цен "Себестоимость"
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2


"
"Данные строки я добавил в раздел "модуль" (в его конец) печатной формы счета (внешней):

ТипЦенСебестоимость = ТипЦенОптовая.БазовыйТипЦен.ТекущийЭлемент();
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2

а в табличную часть добавил поле (выражение) Спр.Цена
но форма не работает.

PS
Цена Себестоимость является базовой, (задается вручную),
Цена Оптовая тоже задается вручную
Т.е. цены я загружаю из внешнего файла.
"
"1. Что значит в вашем понимании Базовой?
  Базовой для типа цен "Оптовая" или просто базовой?
Если просто базовой, тогда
ТипЦенСебестоимость= СоздатьОбъект("Справочник.ТипыЦен");
ТипЦенСебестоимость.НайтиПоКоду(СроковыйКодЦеныСебестоимости);
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2

2. Этот кусок кода должен выполняться в цикле до того как вы выводите секцию с номенклатурой, то есть на момент, когда вы выводите секцию значение цены должно быть определено.
Для отладки можете вставить строку, что бы видеть проблема в определении цены или в выводе на печать
Сообщить("Цена"+Строка(Спр.Цена));

3. Вы загружаете из внешнего файла, но пишете-то в справочник "Цены"?
"
1)Базовой в моем понимании - это то что в справочнике цен выставляется, т.е. там написано:
Способ формирования цены:
- Цена задается только вручную (базовый тип цен) - этот тип задан и для "себестоимости" и для "оптовой" цены, так как и та и другая цена импортируются из внешнего файла.
- Расчитывается и хранится
- Расчитывается динамически (не хранится)
2)Здесь если можно поподробнее, в какое место его вставить? в модуль внешней формы? или в тело основной программы - в "обработки" - "информация о ценах", или в в модуль формы "ЗаявкаПокупателя" раздела "Докуиенты"?
3) верно. загружаю в справочник "цены", и они там хранятся.
"1. Значит вариант второй с поиском по коду или можно создать константу для однозначного определения типа цен именно для себестоимости
2. Если вы используете для формирования печатной формы внешний отчет - значит во внешний отчет
где-то в теле цикла должно быть что-то подобное



Таб.ВывестиСекцию("НазваниеСекцииНаМакетеВКоторуюВыводитсяСтрокаСНоменклатурой­ИЦеной");
Так вот перед этим определяются параметры, которые выводятся, то есть вы в таблице задали параметр Спр.Цена, значит до вывода секции этот параметр должен быть определен

То есть вся работа с талицами примерно выглядит так, если не усложнять

ИсхТабл = СоздатьОбъект("Таблица");
ИсхТабл.ИсходнаяТалица(ИмяТаблицы);
ИсхТабл.ВывестиСекцию("Заголовок");
ТипЦенСебестоимость= СоздатьОбъект("Справочник.ТипыЦен");
Если ТипЦенСебестоимость.НайтиПоКоду(СроковыйКодЦеныСебестоимости) = 0 Тогда
 Сообщить("Не найден тип цен с кодом "+СроковыйКодЦеныСебестоимости);
Конецесли;

Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
 Спр = СоздатьОбъект("Справочник.Цены");
 Спр.ИспользоватьДату(Док.ДатаДок);
 Спр.ИспользоватьВладельца(Док.Номенклатура.ТекущийЭлемент());
 Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
 ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
 
 ИсхТабл.ВывестиСекцию("НазваниеСекцииНаМакетеВКоторуюВыводитсяСтрокаСНоменклатурой­ИЦеной");
КонецЦикла;
ИсхТабл.ВывестиСекцию("Подвал");
ИсхТабл.Показать("Название формы","""");  

Проще было бы если бы Вы выложили модуль, где описан вывод на печать
"
Спасибо огромное. Разобрался.
Не так сложно оказалось.

С благодарностью,
Рустам Волков
Когда разберешься оно всегда не сложно. :)
Читают тему
(гостей: 1)

Быстрый переход