Добавление дополнительного поля в печатной форме счета (Торговля и Склад)
04.07.2008
14:29
#1
Здравствуйте.
Возникли трудности с данным вопросом.
1С:Предприятие, Торговля+Склад 9.2
Цель:
Во внешней печатной форме (форма Счета) необходимо добавить еще одну колонку цен к имеющимся,
- этот счет исключительно для внутренней работы в офисе, и не предназначен для отсылки покупателю.
В нем должно быть две цены - продажная и себестоимость.
И та и другая в справочниках цен номенклатуры есть.
Т.е. так (упрощенно):
Счет №ххх
Поставщик ххх
Покупатель ххх
далее табличная часть:
№ Товар Кол-во Ед Цена Цена2 Сумма
Цена2 - это себестоимость продукции. Необходимо, чтобы она бралась из напрямую справочника цен.
Цена - это цена товара, в соответствии с установленным типом цен при наборе счета (в 1С по умолчанию), например "оптовая"
Т.е. Базовой ценой для номенклатуры как раз она (Цена2)и является.
В типах цен номенклатуры есть: Себестоимость (базовый тип цены, или "Цена2")), Оптовая, Розничная.
Как дополнить внешнюю печатную форму счета таким полем?
Перепробывал кучу вариантов, и к сожалению у меня ничего не получилось.
С уважением,
Рустам
Возникли трудности с данным вопросом.
1С:Предприятие, Торговля+Склад 9.2
Цель:
Во внешней печатной форме (форма Счета) необходимо добавить еще одну колонку цен к имеющимся,
- этот счет исключительно для внутренней работы в офисе, и не предназначен для отсылки покупателю.
В нем должно быть две цены - продажная и себестоимость.
И та и другая в справочниках цен номенклатуры есть.
Т.е. так (упрощенно):
Счет №ххх
Поставщик ххх
Покупатель ххх
далее табличная часть:
№ Товар Кол-во Ед Цена Цена2 Сумма
Цена2 - это себестоимость продукции. Необходимо, чтобы она бралась из напрямую справочника цен.
Цена - это цена товара, в соответствии с установленным типом цен при наборе счета (в 1С по умолчанию), например "оптовая"
Т.е. Базовой ценой для номенклатуры как раз она (Цена2)и является.
В типах цен номенклатуры есть: Себестоимость (базовый тип цены, или "Цена2")), Оптовая, Розничная.
Как дополнить внешнюю печатную форму счета таким полем?
Перепробывал кучу вариантов, и к сожалению у меня ничего не получилось.
С уважением,
Рустам
04.07.2008
14:39
#3
написать не смогу.
пробовал прямо во внешней форме написать в поле ссылку на справочник цен. не получилось.
Посмотрел как делается в модуле счета в основной программе но там не нашел.
единственное место где видел зацепку это в обработке "ИнформацияОценах", но так и не смог написать аналогию.
Санкт-Петербург,
Рустам
пробовал прямо во внешней форме написать в поле ссылку на справочник цен. не получилось.
Посмотрел как делается в модуле счета в основной программе но там не нашел.
единственное место где видел зацепку это в обработке "ИнформацияОценах", но так и не смог написать аналогию.
Санкт-Петербург,
Рустам
06.07.2008
09:27
#4
"Проблема в получении данных или добавлении колонки в печатную форму?
Если тип цен Себестоимость, является базовым для типа цен "оптовая" и у вас есть ссылка на тип цен оптовая, то
получить тип цен Себестоимость, можно, через Оптовую, цену
ТипЦенСебестоимость = ТипЦенОптовая.БазовыйТипЦен.ТекущийЭлемент();
Получаем цену по типу цен "Себестоимость"
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
"
Если тип цен Себестоимость, является базовым для типа цен "оптовая" и у вас есть ссылка на тип цен оптовая, то
получить тип цен Себестоимость, можно, через Оптовую, цену
ТипЦенСебестоимость = ТипЦенОптовая.БазовыйТипЦен.ТекущийЭлемент();
Получаем цену по типу цен "Себестоимость"
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
"
07.07.2008
08:23
#5
"Данные строки я добавил в раздел "модуль" (в его конец) печатной формы счета (внешней):
ТипЦенСебестоимость = ТипЦенОптовая.БазовыйТипЦен.ТекущийЭлемент();
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
а в табличную часть добавил поле (выражение) Спр.Цена
но форма не работает.
PS
Цена Себестоимость является базовой, (задается вручную),
Цена Оптовая тоже задается вручную
Т.е. цены я загружаю из внешнего файла.
"
ТипЦенСебестоимость = ТипЦенОптовая.БазовыйТипЦен.ТекущийЭлемент();
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
а в табличную часть добавил поле (выражение) Спр.Цена
но форма не работает.
PS
Цена Себестоимость является базовой, (задается вручную),
Цена Оптовая тоже задается вручную
Т.е. цены я загружаю из внешнего файла.
"
07.07.2008
13:23
#6
"1. Что значит в вашем понимании Базовой?
Базовой для типа цен "Оптовая" или просто базовой?
Если просто базовой, тогда
ТипЦенСебестоимость= СоздатьОбъект("Справочник.ТипыЦен");
ТипЦенСебестоимость.НайтиПоКоду(СроковыйКодЦеныСебестоимости);
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
2. Этот кусок кода должен выполняться в цикле до того как вы выводите секцию с номенклатурой, то есть на момент, когда вы выводите секцию значение цены должно быть определено.
Для отладки можете вставить строку, что бы видеть проблема в определении цены или в выводе на печать
Сообщить("Цена"+Строка(Спр.Цена));
3. Вы загружаете из внешнего файла, но пишете-то в справочник "Цены"?
"
Базовой для типа цен "Оптовая" или просто базовой?
Если просто базовой, тогда
ТипЦенСебестоимость= СоздатьОбъект("Справочник.ТипыЦен");
ТипЦенСебестоимость.НайтиПоКоду(СроковыйКодЦеныСебестоимости);
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(ДатаСчета);
Спр.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
2. Этот кусок кода должен выполняться в цикле до того как вы выводите секцию с номенклатурой, то есть на момент, когда вы выводите секцию значение цены должно быть определено.
Для отладки можете вставить строку, что бы видеть проблема в определении цены или в выводе на печать
Сообщить("Цена"+Строка(Спр.Цена));
3. Вы загружаете из внешнего файла, но пишете-то в справочник "Цены"?
"
07.07.2008
13:35
#7
1)Базовой в моем понимании - это то что в справочнике цен выставляется, т.е. там написано:
Способ формирования цены:
- Цена задается только вручную (базовый тип цен) - этот тип задан и для "себестоимости" и для "оптовой" цены, так как и та и другая цена импортируются из внешнего файла.
- Расчитывается и хранится
- Расчитывается динамически (не хранится)
2)Здесь если можно поподробнее, в какое место его вставить? в модуль внешней формы? или в тело основной программы - в "обработки" - "информация о ценах", или в в модуль формы "ЗаявкаПокупателя" раздела "Докуиенты"?
3) верно. загружаю в справочник "цены", и они там хранятся.
Способ формирования цены:
- Цена задается только вручную (базовый тип цен) - этот тип задан и для "себестоимости" и для "оптовой" цены, так как и та и другая цена импортируются из внешнего файла.
- Расчитывается и хранится
- Расчитывается динамически (не хранится)
2)Здесь если можно поподробнее, в какое место его вставить? в модуль внешней формы? или в тело основной программы - в "обработки" - "информация о ценах", или в в модуль формы "ЗаявкаПокупателя" раздела "Докуиенты"?
3) верно. загружаю в справочник "цены", и они там хранятся.
07.07.2008
14:01
#8
"1. Значит вариант второй с поиском по коду или можно создать константу для однозначного определения типа цен именно для себестоимости
2. Если вы используете для формирования печатной формы внешний отчет - значит во внешний отчет
где-то в теле цикла должно быть что-то подобное
Таб.ВывестиСекцию("НазваниеСекцииНаМакетеВКоторуюВыводитсяСтрокаСНоменклатурой ИЦеной");
Так вот перед этим определяются параметры, которые выводятся, то есть вы в таблице задали параметр Спр.Цена, значит до вывода секции этот параметр должен быть определен
То есть вся работа с талицами примерно выглядит так, если не усложнять
ИсхТабл = СоздатьОбъект("Таблица");
ИсхТабл.ИсходнаяТалица(ИмяТаблицы);
ИсхТабл.ВывестиСекцию("Заголовок");
ТипЦенСебестоимость= СоздатьОбъект("Справочник.ТипыЦен");
Если ТипЦенСебестоимость.НайтиПоКоду(СроковыйКодЦеныСебестоимости) = 0 Тогда
Сообщить("Не найден тип цен с кодом "+СроковыйКодЦеныСебестоимости);
Конецесли;
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(Док.ДатаДок);
Спр.ИспользоватьВладельца(Док.Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
ИсхТабл.ВывестиСекцию("НазваниеСекцииНаМакетеВКоторуюВыводитсяСтрокаСНоменклатурой ИЦеной");
КонецЦикла;
ИсхТабл.ВывестиСекцию("Подвал");
ИсхТабл.Показать("Название формы","""");
Проще было бы если бы Вы выложили модуль, где описан вывод на печать
"
2. Если вы используете для формирования печатной формы внешний отчет - значит во внешний отчет
где-то в теле цикла должно быть что-то подобное
Таб.ВывестиСекцию("НазваниеСекцииНаМакетеВКоторуюВыводитсяСтрокаСНоменклатурой
Так вот перед этим определяются параметры, которые выводятся, то есть вы в таблице задали параметр Спр.Цена, значит до вывода секции этот параметр должен быть определен
То есть вся работа с талицами примерно выглядит так, если не усложнять
ИсхТабл = СоздатьОбъект("Таблица");
ИсхТабл.ИсходнаяТалица(ИмяТаблицы);
ИсхТабл.ВывестиСекцию("Заголовок");
ТипЦенСебестоимость= СоздатьОбъект("Справочник.ТипыЦен");
Если ТипЦенСебестоимость.НайтиПоКоду(СроковыйКодЦеныСебестоимости) = 0 Тогда
Сообщить("Не найден тип цен с кодом "+СроковыйКодЦеныСебестоимости);
Конецесли;
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Спр = СоздатьОбъект("Справочник.Цены");
Спр.ИспользоватьДату(Док.ДатаДок);
Спр.ИспользоватьВладельца(Док.Номенклатура.ТекущийЭлемент());
Спр.НайтиПоРеквизиту("ТипЦен",ТипЦенСебестоимость,0);
ЦенаСебестоимость = Спр.Цена; //то есть ваша Цена2
ИсхТабл.ВывестиСекцию("НазваниеСекцииНаМакетеВКоторуюВыводитсяСтрокаСНоменклатурой
КонецЦикла;
ИсхТабл.ВывестиСекцию("Подвал");
ИсхТабл.Показать("Название формы","""");
Проще было бы если бы Вы выложили модуль, где описан вывод на печать
"
При формировании остатков наименование товаров выводятся не полностью как этого избежать?Обмен данными УТ 10.2.11.3 - БП 1.6.7.3
Читают тему
(гостей: 1)