"Мне в принципе всё равно в справочнике номенклатура сделать печать ценников или в прайс_лист.<br><br>Код ПрайсЛист выше.<br><br>А вот код Номеклатура.<br><br>-------<br>//******************************************************************************<br>// ОПИСАНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ<br>//******************************************************************************<br><br>Перем СтарыйЭлемент;<br>Перем ИнформационнаяСтрока;<br><br>Перем ТипЦены, ИнфЦена;<br><br>Перем ТипРеализОтчета;<br><br>Перем гСписокОбработок;<br><br>Перем гСписПодчСправочников;<br><br>Перем гСписСтатусовКомиссионеров;<br>Перем гСписСтатусовПоставщиков;<br><br>//******************************************************************************<br>// "СЛУЖЕБНЫЕ" ПРОЦЕДУРЫ И ФУНКЦИИ<br>//******************************************************************************<br> <br>Функция ПредставлениеТекущегоЭлемента()<br> <br> Эл = ТекущийЭлемент();<br> <br> Стр = СокрЛП(Эл.ПолнНаименование);<br> Стр = Стр + ?(Эл.ВидТовара <> Перечисление.ВидыТоваров.Товар, " (" + Эл.ВидТовара + ") ", """");<br> <br> Стр = Стр + ?(ПустоеЗначение(Эл.Артикул) = 0, " Артикул: " + СокрЛП(Эл.Артикул), """");<br> Стр = Стр + ?(ПустоеЗначение(Эл.Комментарий) = 0, " Комментарий: " + СокрЛП(Эл.Комментарий), """");<br> <br> Возврат Стр;<br> <br>КонецФункции<br><br>//******************************************************************************<br><br>Процедура ФормТекстИнформации(ВидДопИнформации)<br> <br> Заголовок = "Информация по товару";<br> <br> Если ТекущийЭлемент().ЭтоГруппа() = 0 Тогда<br> <br> Если Найти("Остатки,Резерв,Заказ,Поставщики,Комиссионеры",ВидДопИнформации) > 0 Тогда<br> Заголовок = Заголовок + " (" + ТекущийЭлемент().БазоваяЕдиница + ")";<br> КонецЕсли;<br> <br> Если Найти("Поставщики,Комиссионеры", ВидДопИнформации) > 0 Тогда<br> Заголовок = СтрЗаменить(Заголовок, ")", """") + " / " + ТекущийЭлемент().ВалютаУчета + ")";<br> КонецЕсли;<br> <br> КонецЕсли;<br> <br> Форма.ФормТекстИнформации.Заголовок(Заголовок + ":");<br> <br>КонецПроцедуры<br><br>//******************************************************************************<br><br>Процедура ДобавитьКолонкиВТаблицу(ВидДопИнформации)<br> <br> ФормТабДопИнформации.Очистить();<br> <br> Если ВидДопИнформации = "Цены" Тогда<br> <br> ФормТабДопИнформации.НоваяКолонка("КатегорияЦены", , , , "Тип цены", 18);<br> ФормТабДопИнформации.НоваяКолонка("Цена", , , , "Цена", 8, глФорматСуммы, 2);<br> ФормТабДопИнформации.НоваяКолонка("Валюта", , , , "Вал.", 4);<br> ФормТабДопИнформации.НоваяКолонка("Единица", , , , "Ед.", 4);<br> <br> ИначеЕсли ВидДопИнформации = "СвойстваНоменклатуры" Тогда<br><br> ФормТабДопИнформации.НоваяКолонка("ВидСвойства", , , , "Вид свойства", 15);<br> ФормТабДопИнформации.НоваяКолонка("ЗначениеСвойства", , , , "Значение", 16);<br> <br> ИначеЕсли ВидДопИнформации = "Единицы" Тогда<br><br> ФормТабДопИнформации.НоваяКолонка("ТипЕдиницы", , , , "Единица", 8);<br> ФормТабДопИнформации.НоваяКолонка("Коэффициент", , , , "Коэффициент", 10, , 2);<br> ФормТабДопИнформации.НоваяКолонка("Вес", , , , "Вес", 10, , 2);<br> <br> ИначеЕсли ВидДопИнформации = "Комплектация" Тогда<br><br> ФормТабДопИнформации.НоваяКолонка("Товар", , , , "Товар", 26);<br> ФормТабДопИнформации.НоваяКолонка("Количество", , , , "Количество", 10, , 2);<br> <br> ИначеЕсли ВидДопИнформации = "Аналоги" Тогда<br> <br> ФормТабДопИнформации.НоваяКолонка("Наименование", , , , "Наименование", 26);<br> ФормТабДопИнформации.НоваяКолонка("Каталог", , , , "Каталог", 10);<br> <br> ИначеЕсли ВидДопИнформации = "Остатки" Тогда<br> <br> ФормТабДопИнформации.НоваяКолонка("Склад", , , , "Склад", 28);<br> ФормТабДопИнформации.НоваяКолонка("Остаток", , , , "Остаток", 8, , 2);<br><br> ИначеЕсли ВидДопИнформации = "Поставщики" Тогда<br><br> ФормТабДопИнформации.НоваяКолонка("Поставщик", , , , "Поставщик", 26);<br> ФормТабДопИнформации.НоваяКолонка("Остаток", , , , "Ост.", 8, , 2);<br> ФормТабДопИнформации.НоваяКолонка("Цена", , , , "Цена", 10, глФорматСуммы, 2);<br> <br> ИначеЕсли ВидДопИнформации = "Комиссионеры" Тогда<br><br> ФормТабДопИнформации.НоваяКолонка("Комиссионер", , , , "Комиссионер", 26);<br> ФормТабДопИнформации.НоваяКолонка("Остаток", , , , "Ост.", 8, , 2);<br> ФормТабДопИнформации.НоваяКолонка("Цена", , , , "Цена", 10, глФорматСуммы, 2);<br><br> ИначеЕсли ВидДопИнформации = "Резерв" Тогда<br><br> ФормТабДопИнформации.НоваяКолонка("ПоСчету", , , , "По счету", 26);<br> ФормТабДопИнформации.НоваяКолонка("Резерв", , , , "Резерв", 8, , 2);<br> <br> ИначеЕсли ВидДопИнформации = "Заказ" Тогда<br><br> ФормТабДопИнформации.НоваяКолонка("Остаток", , , , "Остаток", 10, , 2);<br> ФормТабДопИнформации.НоваяКолонка("Резерв", , , , "Резерв", 10, , 2);<br> ФормТабДопИнформации.НоваяКолонка("Заказ", , , , "Заказано", 10, , 2);<br> <br> <br> ИначеЕсли ВидДопИнформации = "ГТД" Тогда<br> <br> <br> КонецЕсли;<br> <br> ФормТабДопИнформации.НоваяКолонка("Объект");<br> ФормТабДопИнформации.ВидимостьКолонки("Объект", 0);<br> <br>КонецПроцедуры<br><br>//******************************************************************************<br><br>Функция ПредставлениеПодчЭлемента(Эл)<br> Стр = """";<br> <br> Если Эл.Вид() = "Цены" Тогда<br> <br> Эл.ИспользоватьДату(РабочаяДата());<br> <br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Объект = Эл;<br> ФормТабДопИнформации.КатегорияЦены = СокрЛП(Эл.КатегорияЦены.Наименование);<br> ФормТабДопИнформации.Цена = Эл.Цена;<br> ФормТабДопИнформации.Валюта = Эл.Валюта;<br> ФормТабДопИнформации.Единица = Эл.Единица.ТипЕдиницы;<br> <br> ИначеЕсли Эл.Вид() = "СвойстваНоменклатуры" Тогда<br><br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Объект = Эл;<br> ФормТабДопИнформации.ВидСвойства = Эл.ВидСвойства;<br> ФормТабДопИнформации.ЗначениеСвойства = СокрЛП(Эл.ЗначениеСвойства.Наименование);<br> <br> ИначеЕсли Эл.Вид() = "Единицы" Тогда<br><br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Объект = Эл;<br> ФормТабДопИнформации.ТипЕдиницы = СокрЛП(Эл.ТипЕдиницы.Наименование);<br> ФормТабДопИнформации.Коэффициент = Эл.Коэффициент;<br> ФормТабДопИнформации.Вес = ?(ПустоеЗначение(Эл.Вес) = 0, Эл.Вес, """");<br> <br> ИначеЕсли Эл.Вид() = "Комплектация" Тогда<br> <br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Объект = Эл;<br> ФормТабДопИнформации.Товар = Эл.Товар.Наименование;<br> ФормТабДопИнформации.Количество = Эл.Количество;<br> <br> ИначеЕсли Эл.Вид() = "Аналоги" Тогда<br> <br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Объект = Эл;<br> ФормТабДопИнформации.Наименование = Эл.Наименование;<br> ФормТабДопИнформации.Каталог = Эл.Каталог;<br> <br> КонецЕсли;<br> <br> ФормТабДопИнформации.Сортировать("Объект+");<br> <br> Возврат Стр;<br>КонецФункции<br><br>//******************************************************************************<br><br>Функция СформироватьИнформационнуюСтроку()<br> <br> Если ТекущийЭлемент().ЭтоГруппа() = 1 Тогда<br> СтарыйЭлемент = ТекущийЭлемент();<br> ФормТабДопИнформации.УдалитьСтроки();<br> Возврат ТекущийЭлемент().ПолноеНаименование();<br> ИначеЕсли ПустоеЗначение(ТекущийЭлемент()) = 1 Тогда<br> СтарыйЭлемент = """";<br> ФормТабДопИнформации.УдалитьСтроки();<br> Возврат """";<br> КонецЕсли;<br> <br> Если ТекущийЭлемент() <> СтарыйЭлемент Тогда<br> <br> ВидДопИнформации = ФормВидДопИнформации.ПолучитьЗначение(ФормВидДопИнформации.ТекущаяСтрока());<br> <br> ФормТекстИнформации(ВидДопИнформации);<br> <br> ФормТабДопИнформации.УдалитьСтроки();<br> <br> СтарыйЭлемент = ТекущийЭлемент();<br> <br> Если ВидДопИнформации = "Остатки" Тогда<br> <br> СпрСклады = СоздатьОбъект("Справочник.МестаХранения");<br> СпрСклады.ВыбратьЭлементы();<br> Пока СпрСклады.ПолучитьЭлемент() = 1 Цикл<br> Фирма = ПолучитьПустоеЗначение("Справочник.Фирмы");<br> Склад = СпрСклады.ТекущийЭлемент();<br> <br> Ост = Регистр.ОстаткиТоваров.СводныйОстаток(Фирма, ТекущийЭлемент(), Склад, "ОстатокТовара");<br> <br> Если ПустоеЗначение(Ост) = 0 Тогда<br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Склад = Склад;<br> ФормТабДопИнформации.Остаток = Ост;<br> КонецЕсли;<br><br> КонецЦикла;<br> <br> ИначеЕсли ВидДопИнформации = "Поставщики" Тогда<br> <br> Фирма = ПолучитьПустоеЗначение("Справочник.Фирмы");<br> <br> Рег = СоздатьОбъект("Регистр.ПартииТоваров");<br> Рег.УстановитьЗначениеФильтра("Фирма", Фирма, 1);<br> Рег.УстановитьЗначениеФильтра("Товар", ТекущийЭлемент(), 1);<br> Рег.УстановитьЗначениеФильтра("Статус", гСписСтатусовПоставщиков, 2);<br> <br> Рег.ВыбратьИтоги();<br> Пока Рег.ПолучитьИтог() = 1 Цикл<br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Поставщик = Рег.Поставщик;<br> ФормТабДопИнформации.Остаток = Рег.ОстатокТовара;<br> Если ФормТабДопИнформации.Остаток <> 0 Тогда<br> ФормТабДопИнформации.Цена = (Рег.Стоимость + Рег.НДС + Рег.СтоимостьНП) / ФормТабДопИнформации.Остаток;<br> Иначе<br> ФормТабДопИнформации.Цена = Рег.Стоимость + Рег.НДС + Рег.СтоимостьНП;<br> КонецЕсли;<br> ФормТабДопИнформации.Объект = Рег.ПрихДокумент;<br> КонецЦикла;<br> <br> ИначеЕсли ВидДопИнформации = "Комиссионеры" Тогда<br> <br> Фирма = ПолучитьПустоеЗначение("Справочник.Фирмы");<br> <br> Рег = СоздатьОбъект("Регистр.ПартииТоваров");<br> Рег.УстановитьЗначениеФильтра("Фирма", Фирма, 1);<br> Рег.УстановитьЗначениеФильтра("Товар", ТекущийЭлемент(), 1);<br> Рег.УстановитьЗначениеФильтра("Статус", гСписСтатусовКомиссионеров, 2);<br> <br> Рег.ВыбратьИтоги();<br> Пока Рег.ПолучитьИтог() = 1 Цикл<br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Комиссионер = Рег.Контрагент;<br> ФормТабДопИнформации.Остаток = Рег.ОстатокТовара;<br> Если ФормТабДопИнформации.Остаток <> 0 Тогда<br> ФормТабДопИнформации.Цена = Рег.ПродСтоимость / ФормТабДопИнформации.Остаток;<br> Иначе<br> ФормТабДопИнформации.Цена = Рег.ПродСтоимость;<br> КонецЕсли;<br> ФормТабДопИнформации.Объект = Рег.ПрихДокумент;<br> КонецЦикла;<br> <br> ИначеЕсли ВидДопИнформации = "Резерв" Тогда<br><br> Рег = СоздатьОбъект("Регистр.РезервыТоваров");<br> Рег.УстановитьЗначениеФильтра("Товар", ТекущийЭлемент(), 1);<br> <br> Рег.ВыбратьИтоги();<br> Пока Рег.ПолучитьИтог() = 1 Цикл<br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.ПоСчету = Рег.ПоСчету;<br> ФормТабДопИнформации.Резерв = Рег.РезервТовара;<br> ФормТабДопИнформации.Объект = Рег.ПоСчету;<br> КонецЦикла;<br> <br> ИначеЕсли ВидДопИнформации = "Заказ" Тогда<br><br> Фирма = ПолучитьПустоеЗначение("Справочник.Фирмы");<br> <br> ФормТабДопИнформации.НоваяСтрока();<br> ФормТабДопИнформации.Остаток = Регистр.ОстаткиТоваров.СводныйОстаток(Фирма, ТекущийЭлемент(), , "ОстатокТовара");<br> ФормТабДопИнформации.Резерв = Регистр.РезервыТоваров.СводныйОстаток(ТекущийЭлемент(), , "РезервТовара");<br> ФормТабДопИнформации.Заказ = Регистр.ОжидаемыеТовары.СводныйОстаток(ТекущийЭлемент(), , "ОжидаемыйТовар");<br> <br> ИначеЕсли ВидДопИнформации = "ГТД" Тогда<br> <br> <br> Иначе<br> <br> ЭлПодчСправочника = СоздатьОбъект("Справочник." + ВидДопИнформации);<br> ЭлПодчСправочника.ИспользоватьВладельца(ТекущийЭлемент());<br> ЭлПодчСправочника.ВыбратьЭлементы();<br> Пока ЭлПодчСправочника.ПолучитьЭлемент() = 1 Цикл<br> Если ЭлПодчСправочника.ПометкаУдаления() = 1 Тогда Продолжить КонецЕсли;<br> ПредставлениеПодчЭлемента(ЭлПодчСправочника.ТекущийЭлемент());<br> КонецЦикла;<br> <br> // Это альтернативный вариант получения элементов подчиненных справочников<br> // возможно на сетевой базе SQL будет работать эффективнее<br> <br> //ТекЭл = ТекущийЭлемент();<br> //ТекстЗапроса = "<br> //|Обрабатывать НеПомеченныеНаУдаление;<br> //|Эл = Справочник.*.ТекущийЭлемент;<br> //|Влад = Справочник.*.Владелец;<br> //|Группировка Эл;<br> //|Условие (Влад = ТекЭл);";<br> //ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "*", ВидДопИнформации);<br> //Запрос = СоздатьОбъект("Запрос");<br> //Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат ПредставлениеТекущегоЭлемента() КонецЕсли;<br> //Пока Запрос.Группировка(1) = 1 Цикл ПредставлениеПодчЭлемента(Запрос.Эл) КонецЦикла;<br> <br> КонецЕсли;<br> <br> КонецЕсли;<br> <br> Возврат ПредставлениеТекущегоЭлемента();<br> <br>КонецФункции<br><br>//******************************************************************************<br><br>Процедура ПриВыбореВидаДопИнформации()<br> ВидДопИнформации = ФормВидДопИнформации.ПолучитьЗначение(ФормВидДопИнформации.ТекущаяСтрока());<br> ФормТекстИнформации(ВидДопИнформации);<br> ДобавитьКолонкиВТаблицу(ВидДопИнформации);<br> <br> Если гСписПодчСправочников.Принадлежит(ВидДопИнформации) = 1 Тогда<br> Форма.ИспользоватьСлой("ДляРедактированияПодчЭлементов", 1)<br> Иначе<br> Форма.ИспользоватьСлой("ДляРедактированияПодчЭлементов", 0)<br> КонецЕсли;<br><br> СтарыйЭлемент = """";<br> СформироватьИнформационнуюСтроку();<br>КонецПроцедуры <br><br>//******************************************************************************<br> <br>//******************************************************************************<br>// ПРОЦЕДУРЫ И ФУНКЦИИ, ВЫЗЫВАЕМЫЕ ИЗ ФОРМУЛ ЭЛЕМЕНТОВ ДИАЛОГА<br>//******************************************************************************<br><br>//******************************************************************************<br><br>Процедура ПриВыбореЯчейкиТаблицы(Таб)<br> Поз = Таб.ТекущаяСтрока();<br> Если Поз = 0 Тогда Возврат КонецЕсли;<br> <br> Попытка<br> Зн = Таб.ПолучитьЗначение(Поз, "Объект");<br> Исключение КонецПопытки;<br><br> ОткрытьФормуМодально(Зн);<br> <br> Таб.УдалитьСтроку(Поз);<br> <br> СтарыйЭлемент = """";<br> СформироватьИнформационнуюСтроку();<br> <br> Таб.ТекущаяСтрока(Поз);<br>КонецПроцедуры<br><br>//******************************************************************************<br><br>Процедура ДобавитьЗначениеВТаблицу(Таб, Режим)<br> <br> ВидДопИнформации = ФормВидДопИнформации.ПолучитьЗначение(ФормВидДопИнформации.ТекущаяСтрока());<br> <br> Если ПравоДоступа("ВводНового", "Справочник." + ВидДопИнформации) = 0 Тогда<br> Предупреждение("Недостаточно прав доступа!");<br> Возврат;<br> КонецЕсли;<br> <br> Если (ТекущийЭлемент().ЭтоГруппа() = 1) Или (ПустоеЗначение(ТекущийЭлемент()) = 1) Тогда<br> Таб.УдалитьСтроки();<br> Возврат;<br> КонецЕсли;<br> <br> РазмерТабДоДобавленияНового = Таб.КоличествоСтрок();<br> <br> ОткрытьФормуМодально("Элемент." + ВидДопИнформации, , , , ТекущийЭлемент());<br> <br> СтарыйЭлемент = """";<br> СформироватьИнформационнуюСтроку();<br> <br> Если (Режим = 1) И (Таб.КоличествоСтрок() > РазмерТабДоДобавленияНового) Тогда<br> ДобавитьЗначениеВТаблицу(Таб, Режим);<br> КонецЕсли;<br>КонецПроцедуры<br> <br>//******************************************************************************<br><br>Процедура УдалитьЗначениеИзТаблицы(Таб, Режим="""")<br><br> ВидДопИнформации = ФормВидДопИнформации.ПолучитьЗначение(ФормВидДопИнформации.ТекущаяСтрока());<br> <br> Если ПравоДоступа("ПометкаНаУдаление", "Справочник." + ВидДопИнформации) = 0 Тогда<br> Предупреждение("Недостаточно прав доступа!");<br> Возврат;<br> КонецЕсли;<br> <br> Если (ТекущийЭлемент().ЭтоГруппа() = 1) Или (ПустоеЗначение(ТекущийЭлемент()) = 1) Тогда<br> Таб.УдалитьСтроки();<br> Возврат;<br> КонецЕсли;<br> <br> ЭлПодчСправочника = СоздатьОбъект("Справочник." + ВидДопИнформации);<br> ЭлПодчСправочника.ИспользоватьВладельца(ТекущийЭлемент());<br> <br> Если Режим = "Все" Тогда<br> <br> Если Вопрос("Пометить на удаление все подчиненные элементы?", 4) <> 6 Тогда Возврат КонецЕсли;<br><br> ЭлПодчСправочника.ВыбратьЭлементы();<br> Пока ЭлПодчСправочника.ПолучитьЭлемент() = 1 Цикл<br> ЭлПодчСправочника.Удалить(0);<br> КонецЦикла;<br> <br> Таб.УдалитьСтроки();<br> Возврат;<br> КонецЕсли;<br> <br> Поз = Таб.ТекущаяСтрока();<br> Если Поз = 0 Тогда Возврат КонецЕсли;<br> <br> Зн = Таб.ПолучитьЗначение(Поз, "Объект");<br> <br> Если ЭлПодчСправочника.НайтиЭлемент(Зн) = 0 Тогда Возврат КонецЕсли;<br> <br> ЭлПодчСправочника.Удалить(0);<br> <br> Таб.УдалитьСтроку(Поз);<br> Если Таб.КоличествоСтрок() < Поз Тогда <br> Таб.ТекущаяСтрока(Поз - 1);<br> Иначе <br> Таб.ТекущаяСтрока(Поз);<br> КонецЕсли;<br>КонецПроцедуры<br><br>//******************************************************************************<br><br>Процедура ВыборОбработки()<br> <br> Зн = """"; Поз = """"; <br> Если гСписокОбработок.ВыбратьЗначение(Зн, , Поз, , 1) = 1 Тогда<br> ОткрытьФорму("Обработка." + Зн);<br> Иначе<br> Возврат;<br> КонецЕсли;<br><br>КонецПроцедуры<br><br>//******************************************************************************<br>// Название: ПоказатьПодч()<br>// Параметры: <br>// ВидСправочника - вид справочника, форму списка которого нужно открыть.<br>// Возвращаемое значение:<br>// НЕТ<br>// Вызывается из формул элементов диалога:<br>// Кнопка "Цены", "Аналоги" и "Значения свойств".<br>// Описание:<br>// Открывается форма списка подчиненного справочника, заданного параметром<br>// ВидСправочника<br>Процедура ПоказатьПодч(ВидСправочника)<br> Перем ФормаСпискаЦен;<br> <br> Если ПустоеЗначение(ТекущийЭлемент()) = 0 Тогда<br> Если ЭтоГруппа() = 0 Тогда<br> ТекТовар = ТекущийЭлемент();<br> ОткрытьФорму("Справочник." + ВидСправочника, ТекТовар);<br> <br> Иначе<br> Синоним = Метаданные.Справочник(ВидСправочника).Представление();<br> Предупреждение(Синоним + " для группы не показываются. Выберите товар.");<br> <br> КонецЕсли;<br> Иначе<br> Предупреждение("Выберите товар.");<br><br> КонецЕсли;<br><br>КонецПроцедуры // ПоказатьПодч<br><br>//******************************************************************************<br>// Название: ПоказатьИсторию()<br>// Параметры: <br>// НЕТ<br>// Возвращаемое значение:<br>// НЕТ<br>// Вызывается из формул элементов диалога:<br>// Кнопка "История",.<br>// Описание:<br>// Открывается форма обработки для редактирования периодических реквизитов<br>Процедура ПоказатьИсторию()<br> Если ПустоеЗначение(ТекущийЭлемент()) = 1 Тогда<br> Предупреждение("Не выбран товар");<br> Возврат;<br> КонецЕсли;<br><br> Если ТекущийЭлемент().ЭтоГруппа() = 1 Тогда<br> Предупреждение("Выберите товар, а не группу");<br> Возврат;<br> КонецЕсли;<br><br> глРедактироватьИсториюЗначений(Контекст,<br> "СтавкаНДС,СтавкаНП",<br> "История периодических реквизитов ("+ТекущийЭлемент()+")");<br>КонецПроцедуры // ПоказатьИсторию<br><br>// *****************************************************************************<br>Функция ПолучитьЦенуТовара(пТовар, пКатегорияЦены, пЦена, пЕдиница, пВалюта)<br> <br> Если ПустоеЗначение(пКатегорияЦены) = 0 Тогда<br> ЦенаТовара = глВернутьЦену(пТовар, пКатегорияЦены);<br> <br> Если ПустоеЗначение(ЦенаТовара) = 0 Тогда<br> пЦена = ЦенаТовара.Цена.Получить(РабочаяДата());<br> пВалюта = ЦенаТовара.Валюта.Получить(РабочаяДата());<br> пЕдиница = ЦенаТовара.Единица.Получить(РабочаяДата());<br> <br> Если пКатегорияЦены.СуммаВключаетНП = 0 Тогда<br> // цена не включает НП.<br> ПроцНП = глПолучитьСтавкуНП(пТовар, РабочаяДата());<br> пЦена = пЦена * (100 + ПроцНП) / 100;<br> КонецЕсли;<br> <br> Иначе<br> Возврат 0;<br> КонецЕсли;<br> <br> Иначе<br> Возврат 0;<br> КонецЕсли;<br> <br> Возврат 1;<br>КонецФункции<br><br>//******************************************************************************<br>// Название: ПечатьЭтикетки()<br>// Параметры: <br>// НЕТ<br>// Возвращаемое значение:<br>// НЕТ<br>// Вызывается из формул элемента диалога:<br>// кнопка "Этикетка"<br>// НЕТ<br>// Описание:<br>// создание печатной формы этикетки со штрихкодом<br>// Если текущий элемент группа, то выдается предупреждение <br>Процедура ПечатьЭтикетки()<br> Перем КомпонентABC;<br> Перем Цена, Единица, Валюта;<br> <br> ВыбТовар = ТекущийЭлемент();<br> <br> Если ВыбТовар.ЭтоГруппа() = 1 Тогда<br> Предупреждение("Выберите товар, а не группу.");<br> Возврат;<br> КонецЕсли;<br> <br> ТипЦены = СоздатьОбъект("Справочник.КатегорииЦен");<br> Если ТипЦены.Выбрать("Выберите тип цены", "ФормаСписка") = 0 Тогда Возврат КонецЕсли;<br> ТипЦены = ТипЦены.ТекущийЭлемент();<br> <br> ПечНаименование = СокрП(ВыбТовар.Наименование);<br> ПечАртикул = СокрП(ВыбТовар.Артикул);<br> <br> Если ПолучитьЦенуТовара(ВыбТовар, ТипЦены, Цена, Единица, Валюта) = 1 Тогда<br> ПечЕдиница = СокрЛП(Единица.ТипЕдиницы);<br> ПечШтрихкод = Строка(Единица.ШтрихКод);<br> ПечЦена = СокрЛП(Формат(Цена, "Ч15.2")) + " " + Валюта;<br> Иначе<br> // печатаем этикетку с базовой единицей без цены<br> ПечЕдиница = СокрП(ВыбТовар.БазоваяЕдиница);<br> ПечШтрихКод = Строка(ВыбТовар.ШтрихКод);<br> ПечЦена = """";<br> КонецЕсли;<br> <br> Если ПустоеЗначение(ПечШтрихкод) = 1 Тогда<br> Предупреждение("Штрих код товара не задан.");<br> Возврат;<br> КонецЕсли;<br> <br> Если РаботаСПринтеромЭтикеток = 1 Тогда<br> // печатаем этикетку на специализированном принтере<br> глКомандаПринтеруЭтикеток(<br> "Печатать",<br> ПечШтрихКод + ";" + ПечНаименование + ", " + ПечЕдиница + ";" + ПечАртикул + ";" + ПечЦена);<br> Иначе<br> <br> Попытка<br> КомпонентABC=СоздатьОбъект("BARCODE.BarcodeCtrl.1");<br> Исключение<br> Предупреждение(ОписаниеОшибки() + РазделительСтрок<br> + "Компонент ActiveBarcode не установлен на данном компьютере!" + РазделительСтрок<br> + "Порядок установки компоненты ActiveBarcode описан в документации.");<br> Возврат;<br> КонецПопытки;<br> <br> // Создание Таблицы для выходного отчета<br> Таб = СоздатьОбъект("Таблица");<br> Таб.ИсходнаяТаблица("Этикетка");<br> <br> Таб.ВывестиСекцию("Товар|Этикетка");<br> <br> //Вызов выходного отчета в окно просмотра и редактирования.<br> Таб.Опции(0, 0, 0, 0, ПарСтрСпр);<br> Таб.Защита(Константа.ФлагЗащитыТаблиц);<br> Таб.ТолькоПросмотр(1);<br> Таб.Показать("Этикетка", """");<br> КонецЕсли;<br> <br>КонецПроцедуры // ПечатьЭтикетки<br><br>//******************************************************************************<br>Процедура ПечатьЦенника()<br> Перем ПечЕдиница, ПечНаименование,ПечРозн;<br> Перем ЦенаТовара;<br> Перем Таб;<br> Перем ЧислоСтрок;<br> Перем Столбик;<br> Перем Ряд;<br> <br> ТипЦены = СоздатьОбъект("Справочник.КатегорииЦен");<br> Если ТипЦены.Выбрать("Выберите тип цены", "ФормаСписка") = 0 Тогда Возврат КонецЕсли;<br> ТипЦены = ТипЦены.ТекущийЭлемент();<br> <br> // Создание Таблицы для выходного отчета<br> Таб=СоздатьОбъект("Таблица");<br> Таб.ИсходнаяТаблица("Ценник");<br> ЧислоСтрок=0;<br> Столбик=1;<br> Ряд=0;<br><br> ВыбТовар=ТекущийЭлемент();<br> <br> Если ПустоеЗначение(ВыбТовар) = 1 Тогда<br> Предупреждение("Выберите товар или группу товаров!");<br> Возврат;<br> КонецЕсли;<br> <br> Если ВыбТовар.ЭтоГруппа()=1 Тогда<br> Тов = СоздатьОбъект("Справочник.Номенклатура");<br> Тов.ВключатьПодчиненные(1);<br> Тов.ИспользоватьРодителя(ВыбТовар);<br> Тов.ВыбратьЭлементы();<br> Пока Тов.ПолучитьЭлемент()>0 Цикл<br> Если Тов.ПометкаУдаления()=1 Тогда<br> Продолжить;<br> КонецЕсли;<br> Если Тов.ЭтоГруппа()=1 Тогда<br> Продолжить;<br> КонецЕсли;<br><br> ПечНаименование = Тов.ПолнНаименование;<br> ЦенаТовара = глВернутьЦену(Тов,ТипЦены);<br> Если ПустоеЗначение(ЦенаТовара) = 1 Тогда Продолжить КонецЕсли;<br> <br> ПечЕдиница = ЦенаТовара.Единица.Получить(РабочаяДата());<br> ВремЦена = ЦенаТовара.Цена.Получить(РабочаяДата());<br> <br> Если ТипЦены.СуммаВключаетНП = 0 Тогда // добавим НП<br> СтавкаНПпроц = глПолучитьСтавкуНП(Тов,РабочаяДата());<br> ВремЦена = ВремЦена * (100 + СтавкаНПпроц) / 100;<br> КонецЕсли;<br> <br> ПечРозн = СокрЛ(Формат(ВремЦена,"Ч15.2"))+" "+ЦенаТовара.Валюта.Получить(РабочаяДата());<br> <br> Столбик=?(Столбик=0,1,0);<br> Ряд=?(Столбик=0,Ряд+1,Ряд);<br> Если Ряд>3 Тогда<br> Таб.НоваяСтраница();<br> Ряд=1;<br> КонецЕсли;<br> Если Столбик=0 Тогда<br> Таб.ВывестиСекцию("Товар|Ценник");<br> Иначе<br> Таб.ПрисоединитьСекцию("Товар|Ценник");<br> КонецЕсли;<br> глОживить(1);<br> КонецЦикла;<br> Иначе<br> ПечНаименование = ВыбТовар.ПолнНаименование;<br> ЦенаТовара = глВернутьЦену(ВыбТовар, ТипЦены);<br> Если ПустоеЗначение(ЦенаТовара) = 1 Тогда<br> Предупреждение("У товара - " + ВыбТовар + " не задана цена по категории: " + ТипЦены);<br> Возврат;<br> КонецЕсли;<br> <br> ПечЕдиница = ЦенаТовара.Единица.Получить(РабочаяДата());<br> ВремЦена = ЦенаТовара.Цена.Получить(РабочаяДата());<br> <br> Если ТипЦены.СуммаВключаетНП = 0 Тогда // добавим НП<br> СтавкаНПпроц = глПолучитьСтавкуНП(ВыбТовар,РабочаяДата());<br> ВремЦена = ВремЦена * (100 + СтавкаНПпроц) / 100;<br> КонецЕсли;<br> <br> ПечРозн = СокрЛ(Формат(ВремЦена,"Ч15.2"))+" "+ЦенаТовара.Валюта.Получить(РабочаяДата());<br> <br> Таб.ВывестиСекцию("Товар");<br> КонецЕсли;<br> //Вызов выходного отчета в окно просмотра и редактирования.<br> Таб.Опции(0,0,0,0,ПарСтрСпр);<br> Таб.Защита(Константа.ФлагЗащитыТаблиц);<br> Таб.ТолькоПросмотр(1);<br> Таб.Показать("Ценник товаров","""");<br> ВыбТовар=0;<br>КонецПроцедуры<br><br>//********************************************************************************<br>// НАЗНАЧЕНИЕ: выбор из выпадающего меню способа печати<br>Процедура ВыборПечати()<br> <br> Перем СписокПечати, ВидПечати;<br> <br> СписокПечати = СоздатьОбъект("СписокЗначений");<br> СписокПечати.ДобавитьЗначение(1, "Каталог товаров");<br> СписокПечати.ДобавитьЗначение(2, "Ценник");<br> СписокПечати.ДобавитьЗначение(3, "Этикетка");<br> <br> Если СписокПечати.ВыбратьЗначение(ВидПечати, , , , 1) = 1 Тогда<br> <br> Если ВидПечати = 1 Тогда<br> // каталог товаров<br> ОткрытьФорму("Обработка.ПечатьПрайсЛиста"+"#", "Номенклатура");<br> <br> ИначеЕсли ВидПечати = 2 Тогда<br> // ценник<br> ПечатьЦенника();<br><br> ИначеЕсли ВидПечати = 3 Тогда<br> // этикетка<br> ПечатьЭтикетки();<br><br> КонецЕсли;<br><br> КонецЕсли;<br><br>КонецПроцедуры<br><br>//******************************************************************************<br>// Название: СформироватьОтчет()<br>// Параметры: <br>// НЕТ<br>// Возвращаемое значение:<br>// НЕТ<br>// Вызывается из формул элемента диалога:<br>// кнопки "Остатки товаров" и "Учет реализации"<br>// НЕТ<br>// Описание:<br>// печать отчета "УпрОстаткиТоваров"<br>Процедура СформироватьОтчет()<br> Перем ДопУточнение, ТипОтчета;<br> <br> СписокОтчетов = СоздатьОбъект("СписокЗначений");<br> СписокОтчетов.ДобавитьЗначение(2, "Остатки");<br> СписокОтчетов.ДобавитьЗначение(1, "Учет реализации");<br> <br> Если СписокОтчетов.ВыбратьЗначение(ТипОтчета, , , , 1) = 0 Тогда<br> // отказ от выбора<br> Возврат;<br> КонецЕсли;<br> <br> Если ПустоеЗначение(ТекущийЭлемент()) = 1 Тогда<br> Предупреждение("Не выбран товар или группа!");<br> Возврат;<br> КонецЕсли;<br> <br> Расшифровка = СоздатьОбъект("СписокЗначений");<br> Расшифровка.Установить("Обновить",1);<br> ПустойСписок = СоздатьОбъект("СписокЗначений");<br> <br> Если ТипОтчета = 1 Тогда<br> // Отчет Упр.реализация<br> Если ТипРеализОтчета.ВыбратьЗначение(ДопУточнение,,,,1) = 1 Тогда <br> <br> // все настройки помещаем в список<br> Расшифровка.Установить("Отчет", "УпрРеализация");<br> Расшифровка.Установить("ДатаНачала", Мин(РабочаяДата(),ПолучитьДатуТА(),Константа.ОсновнаяДатаНачалаОтчета));<br> Расшифровка.Установить("ДатаКонца", Мин(РабочаяДата(),ПолучитьДатуТА()));<br> <br> Расшифровка.Установить("ВыбТовар", ТекущийЭлемент());<br> Расшифровка.Установить("ВыбКлиент", ПолучитьПустоеЗначение("Справочник.Контрагенты"));<br> <br> Расшифровка.Установить("ВыбВалюта", ?(ТекущийЭлемент().ЭтоГруппа()=0,ТекущийЭлемент().ВалютаУчета,Рубли));<br> <br> Расшифровка.Установить("РежимПоказа", 1); // по стоимости<br> <br> Расшифровка.Установить("ДеталПоНакладным", 1); <br> Расшифровка.Установить("ДеталПоВсемДокументам", 1);<br> <br> Если ДопУточнение = "Прием товара" Тогда<br> // печатаем отчет Упр. реализация в разрезе приема<br> Расшифровка.Установить("ВидОтчета", 1); // по принятым на реализацию товарам <br> Иначе<br> // печатаем отчет Упр. реализация в разрезе передачи<br> Расшифровка.Установить("ВидОтчета", 2); // по отданным на реализацию товарам <br> КонецЕсли;<br> Иначе<br> Возврат;<br> КонецЕсли;<br> <br> ИначеЕсли ТипОтчета = 2 Тогда<br> // выводим отчет УпрОстаткиТоваров<br> // по текущему в списке товару или группе товараов<br> // на всех складах<br> <br> Расшифровка.Установить("Отчет", "УпрОстаткиТоваров");<br> Расшифровка.Установить("ДатаНачала", ПолучитьДатуТА());<br> Расшифровка.Установить("ДатаКонца", ПолучитьДатуТА());<br> <br> // все настройки помещаем в список<br> Расшифровка.Установить("ВидОтчета", 3); // остатки с себестоимостью<br> Расшифровка.Установить("ВалютаИтогов", ?(ТекущийЭлемент().ЭтоГруппа()=0,ТекущийЭлемент().ВалютаУчета,Рубли)); <br> Расшифровка.Установить("ПоказатьОстатки", 1); // все ненулевые остатки<br> Расшифровка.Установить("ВыбТовар", ТекущийЭлемент());<br> Расшифровка.Установить("ВыбСклад", ПолучитьПустоеЗначение("Справочник.МестаХранения")); <br> Расшифровка.Установить("ДеталПоСкладам", 0); <br> Расшифровка.Установить("ДеталПоДокументам", 0);<br> <br> КонецЕсли; <br> <br> глРасшифровка = Расшифровка;<br> глФлагРасшифровки = 1;<br> глОбновить = Число(Расшифровка.Получить("Обновить"));<br> глТаблица = 0;<br> <br> ОткрытьФорму("Отчет."+Расшифровка.Получить("Отчет")+"#");<br> <br> глФлагРасшифровки = 0;<br> глРасшифровка = 0;<br> глОбновить = 0;<br> <br> <br>КонецПроцедуры // СформироватьОтчет<br><br>//******************************************************************************<br>// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ<br>//******************************************************************************<br><br>Процедура ПриОткрытии()<br> <br> Форма.ИспользоватьСлой("Основной", 2);<br> Форма.ИспользоватьСлой("ДляРедактированияПодчЭлементов", 1);<br> <br> ВидДопИнформации = ФормВидДопИнформации.ПолучитьЗначение(ФормВидДопИнформации.ТекущаяСтрока());<br> ФормТекстИнформации(ВидДопИнформации);<br> ДобавитьКолонкиВТаблицу(ВидДопИнформации);<br> <br>КонецПроцедуры<br><br>//******************************************************************************<br><br>Процедура ПриЗакрытии()<br>КонецПроцедуры<br><br>//******************************************************************************<br>// ТЕЛО МОДУЛЯ<br><br>ИнформационнаяСтрока = """";<br><br>гСписСтатусовПоставщиков = СоздатьОбъект("СписокЗначений");<br>гСписСтатусовКомиссионеров = СоздатьОбъект("СписокЗначений");<br><br>гСписПодчСправочников = СоздатьОбъект("СписокЗначений");<br><br>гСписСтатусовПоставщиков.ДобавитьЗначение(Купленный);<br>гСписСтатусовПоставщиков.ДобавитьЗначение(Принятый);<br><br>гСписСтатусовКомиссионеров.ДобавитьЗначение(ОтданныйКупленный);<br>гСписСтатусовКомиссионеров.ДобавитьЗначение(ОтданныйПринятый);<br><br><br>гСписПодчСправочников.ДобавитьЗначение("Цены", "Цены");<br>гСписПодчСправочников.ДобавитьЗначение("Единицы", "Единицы измерения");<br>гСписПодчСправочников.ДобавитьЗначение("Комплектация", "Состав набора");<br><br>гСписПодчСправочников.ДобавитьЗначение("СвойстваНоменклатуры", "Значения свойств");<br>гСписПодчСправочников.ДобавитьЗначение("Аналоги", "Аналоги в других классификаторах");<br> <br>гСписПодчСправочников.Выгрузить(ФормВидДопИнформации);<br><br>ФормВидДопИнформации.ДобавитьЗначение("Остатки", "Остатки по складам");<br>ФормВидДопИнформации.ДобавитьЗначение("Поставщики", "Партии по поставщикам");<br>ФормВидДопИнформации.ДобавитьЗначение("Комиссионеры", "Партии отданные на реализацию");<br><br>ФормВидДопИнформации.ДобавитьЗначение("Резерв", "Зарезервировано по счетам");<br>ФормВидДопИнформации.ДобавитьЗначение("Заказ", "Осталось, зарезервировано, заказано");<br><br>ФормВидДопИнформации.ТекущаяСтрока(1);<br><br>ТипРеализОтчета = СоздатьОбъект("СписокЗначений");<br>ТипРеализОтчета.ДобавитьЗначение("Прием товара");<br>ТипРеализОтчета.ДобавитьЗначение("Передача товара");<br><br>гСписокОбработок = СоздатьОбъект("СписокЗначений");<br>гСписокОбработок.ДобавитьЗначение("ПодборНоменклатурыДляГрупповойОбработки", "Групповая обработка элементов");<br>гСписокОбработок.ДобавитьЗначение("СвойстваОбъектов", "Установка и просмотр значений свойств");<br><br><br>//******************************************************************************<br>-------"