Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

ТиС 8.7 Печать ценников

Shtabs
читатель
офлайн
Дата регистрации: 04.10.2004
Сообщений: 29
Пост №1
 
20.03.2006 00:31

Мир всем! Давно не был здесь. Рад снова посетить это ресурс, хоть и по нужде.<br><br>Вопрос 1.<br><br>В документ "Ценник товаров" добавил строку, которая выдаёт при печати производителя. А единицу товара, убрал.<br>Так вот при печати отдельно взятого ценника из справочника "номенклатура" СтранаПроизводитель при печати есть, а когда печатаешь сразу несколько ценников на листе, выделив папку с товаром, в том же справочнике или в любом другом Производитель не выводится на печать.<br><br>2. В справочнике "Прайсы", тоже путаница. Там при выделении папки или отдельно взятого товара при печати просто показывается Выражение СтранаПроисхождения, вместо имени страны - вот так:<br><br>СтранаПроисхождения<<?>><br>Переменная не определена(СтранаПроисхождения)<br>------<br><br>Спасибо всем.

Sergey279
читатель
офлайн
Дата регистрации: 15.08.2005
Сообщений: 41
Пост №2
 
20.03.2006 11:31

Раздайте людям кусочки модуля что правили и что в таблицу дорисовали.

Shtabs
читатель
офлайн
Дата регистрации: 04.10.2004
Сообщений: 29
Пост №3
 
20.03.2006 14:51

"Вот код ПрайсЛиста:<br><br>[c1code]//******************************************************************************<br>// ОПИСАНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ<br><br>Перем СтарыйЭлемент;<br>Перем ИнформационнаяСтрока;<br>Перем КатегорииЦен;<br><br>Перем ТипЦены;<br><br>Перем ТоварВПрайсе;<br>Перем КонтПодб; // контекст подбора<br><br>Перем ФормаСпискаЦен; // контекст формы списка подчиненного справочника "Цены"<br><br>// переменная используется при подборе<br>// может принимать следующие значения<br>// 0 - не добавлять дубль<br>// 1 - спрашивать при нахождении дубля<br>// 2 - добавлять дубль без вопросов<br>// значение по умолчанию 1<br>Перем ДублироватьПриПодборе;<br><br>// используется в обработке подбора вместе с ДублироватьПриПодборе<br>// если значение - ДА, то в процедуре ДобавитьТовар, после вопроса,<br>// значение ДублироватьПриПодборе устанавливется либо в 0, либо в 2<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> Если ПустоеЗначение(Цена) = 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> КонтПодб.РодительДляПрайса.ВыборГруппы(1);<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> Если ПустоеЗначение(ТипЦены) = 1 Тогда<br> Предупреждение("Не задан тип цены!");<br> Возврат;<br> КонецЕсли;<br> <br> // Создание Таблицы для выходного отчета<br> Таб=СоздатьОбъект("Таблица");<br> Таб.ИсходнаяТаблица("Ценник");<br> ЧислоСтрок=0;<br> Столбик=1;<br> Ряд=0;<br><br> ВыбТовар=ТекущийЭлемент();<br> <br> Если ПустоеЗначение(ВыбТовар) = 1 Тогда<br> Предупреждение("Выберите товар или группу товаров!");<br> Возврат;<br> КонецЕсли;<br> <br> Если ВыбТовар.ЭтоГруппа()=1 Тогда<br> Колво=0;<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> Колво=Колво+1;<br> <br> ПечЕдиница = ЦенаТовара.Единица.Получить(РабочаяДата());<br> ВремЦена = ЦенаТовара.Цена.Получить(РабочаяДата());<br> <br> Если ТипЦены.СуммаВключаетНП = 0 Тогда<br> // розничная цена включает налог с продаж<br> СтавкаНПпроц=глПолучитьСтавкуНП(ТоварВПрайсе.Товар,РабочаяДата());<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> Если Колво=0 Тогда<br> Предупреждение("В группе """""+ВыбТовар+""""" нет ни одного товара с типом цены """""+ТипЦены+"""");<br> Возврат;<br> КонецЕсли;<br> Иначе<br><br> ПечНаименование=ВыбТовар.Товар.Наименование;<br> ЦенаТовара = глВернутьЦену(ВыбТовар.Товар,ТипЦены);<br> Если ПустоеЗначение(ЦенаТовара) = 1 Тогда<br> // пропускаем товары без цен<br> Предупреждение("У товара """""+ВыбТовар.Товар.Наименование+<br>              """"" не найден тип цены '"+ТипЦены.Наименование+"""");<br> Возврат;<br> КонецЕсли;<br> <br> ПечЕдиница = ЦенаТовара.Единица.Получить(РабочаяДата());<br> ВремЦена = ЦенаТовара.Цена.Получить(РабочаяДата());<br> <br> Если ТипЦены.СуммаВключаетНП = 0 Тогда<br> // добавим НП<br> СтавкаНПпроц = глПолучитьСтавкуНП(ВыбТовар.Товар, РабочаяДата());<br> ВремЦена = ВремЦена * (100 + СтавкаНПпроц) / 100;<br> КонецЕсли;<br> <br> ПечРозн = СокрЛ(Формат(ВремЦена,"Ч15.2"))+" "+ЦенаТовара.Валюта.Получить(РабочаяДата());<br> Таб.ВывестиСекцию("Товар");<br> КонецЕсли;<br> //Вызов выходного отчета в окно просмотра и редактирования.<br> Таб.Опции(0,0,0,0,ПарСтрСпр);<br> Таб.Защита(Константа.ФлагЗащитыТаблиц);<br> Таб.ТолькоПросмотр(1);<br> Таб.Показать("Ценник товаров","""");<br> ВыбТовар=0;<br>КонецПроцедуры<br><br>//******************************************************************************<br>// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ<br><br>//******************************************************************************<br>Процедура ПриОткрытии()<br> Перем КатегорииЦен,ТекТипЦены;<br> <br> // заполним список ТипыЦен<br> КатегорииЦен = СоздатьОбъект("Справочник.КатегорииЦен");<br> КатегорииЦен.ВыбратьЭлементы();<br> Пока КатегорииЦен.ПолучитьЭлемент() = 1 Цикл<br> Если КатегорииЦен.ПометкаУдаления() = 1 Тогда<br> // пропускаем помеченнные на удаление<br> Продолжить;<br> КонецЕсли;<br> ТипыЦен.ДобавитьЗначение(КатегорииЦен.ТекущийЭлемент());<br> КонецЦикла;<br> <br> // восстановим значение последненго использованного типа цены<br> ТекТипЦены = ВосстановитьЗначение("ТипЦеныПрайса");<br> // первая в списке цена и будет ценой по умолчанию<br> Если ТипыЦен.РазмерСписка() > 0 Тогда<br> // проверим, а вдруг удалили все категории цен<br> Поз = ТипыЦен.НайтиЗначение(ТекТипЦены);<br> Если Поз > 0 Тогда<br> // если тип цены был сохранен, то установим<br> // список в сохраненную позицию<br> ТипыЦен.ТекущаяСтрока(Поз);<br> Иначе<br> ТипыЦен.ТекущаяСтрока(1);<br> КонецЕсли;<br> ПриИзмененииТипаЦены();<br> КонецЕсли;<br>КонецПроцедуры<br><br>//******************************************************************************<br>Процедура ПриЗаписи() // Предопределенная процедура<br> // в процедуре при записи проверятся заполнение обязательных реквизитов<br> Перем Описани;<br> Перем ФлагОшибки;<br> <br> // изначально считаем, что не все обязательные поля заполнены<br> ФлагОшибки = 1;<br> <br> // проверка обязательных полей<br> Если ПустоеЗначение(Товар) = 1 Тогда<br> Описание = "Не заполнено поле 'Товар'";<br> Активизировать("Товар");<br> Иначе<br> // все обязательные поля заполнены<br> ФлагОшибки = 0;<br> КонецЕсли;<br> <br> Если ФлагОшибки=1 Тогда<br> <br> // не заполнено обязательное поле<br> Предупреждение(Описание);<br> СтатусВозврата(0);<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> Если ДублироватьПриПодборе < 2 Тогда<br> <br> // выбор единицы измерения<br> ТоварДляПоиска = СоздатьОбъект("Справочник.Прайс_лист");<br> Если ТоварДляПоиска.НайтиПоРеквизиту("Товар",Товар,1)=1 Тогда<br> // товар уже есть в прайсе<br> Если ТоварДляПоиска.ПометкаУдаления() = 1 Тогда<br> // убираем пометку удаления<br> ТоварДляПоиска.СнятьПометкуУдаления();<br> Возврат;<br> КонецЕсли;<br> <br> Если ДублироватьПриПодборе = 0 Тогда<br> // не добавлять<br> Сообщить("Товар " + СокрЛП(Товар.Наименование) + " уже есть в прайс-листе!");<br> Возврат;<br> Иначе<br> Если ДобавлениеГруппы = ДА Тогда<br> ДопСТрокаВопроса = РазделительСтрок+"Добавить? (использовать для других повторов)";<br> Иначе<br> ДопСТрокаВопроса = РазделительСтрок+"Добавить?";<br> КонецЕсли;<br> <br> // ДублироватьПриПодборе = 1, нужно спросить<br> РезВопроса = Вопрос("Товар " + СокрЛП(Товар.Наименование) + <br>                    " уже есть в прайс-листе! " + ДопСТрокаВопроса, "Да+Нет");<br> <br> Если ДобавлениеГруппы = ДА Тогда<br> Если РезВопроса <> "Да" Тогда<br> ДублироватьПриПодборе = 0;<br> // дубли и дальше не добавлять<br> Возврат;<br> Иначе<br> // добавлять дубли не спрашивая<br> ДублироватьПриПодборе = 2;<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> Если (ГруппаПрайса.Уровень() < 3) И (ПустоеЗначение(ГруппаТоваров) = 0) Тогда<br> // создаем группы в прайсе<br> ГруппаПрайсаДляПоиска = СоздатьОбъект("Справочник.Прайс_лист");<br> ГруппаПрайсаДляПоиска.ИспользоватьРодителя(ГруппаПрайса);<br> Если ГруппаПрайсаДляПоиска.НайтиПоНаименованию(ГруппаТоваров.Наименование, 1, 1) = 0 Тогда<br> // группу с таким именем не нашли. Создадим новую<br> ТекущийРодительДляПрайса = СоздатьОбъект("Справочник.Прайс_лист");<br> ТекущийРодительДляПрайса.ИспользоватьРодителя(ГруппаПрайса);<br> ТекущийРодительДляПрайса.НоваяГруппа();<br> ТекущийРодительДляПрайса.Наименование = ГруппаТоваров.Наименование;<br> ТекущийРодительДляПрайса.Записать();<br> Иначе<br> // группа с таким именем уже есть. будем использовать ее<br> ТекущийРодительДляПрайса = ГруппаПрайсаДляПоиска.ТекущийЭлемент();<br> КонецЕсли;<br> Иначе<br> // в прайсе не может быть группы ниже 3-го уровня<br> // поэтому добавляем товары в текущую группу<br> ТекущийРодительДляПрайса = ГруппаПрайса;<br> КонецЕсли;<br><br> ВыборкаТоваров = СоздатьОбъект("Справочник.Номенклатура");<br> Если ПустоеЗначение(ГруппаТоваров) = 0 Тогда<br> ВыборкаТоваров.ИспользоватьРодителя(ГруппаТоваров);<br> КонецЕсли;<br> ВыборкаТоваров.ВключатьПодчиненные(0);<br> ВыборкаТоваров.ВыбратьЭлементы();<br> Пока ВыборкаТоваров.ПолучитьЭлемент() = 1 Цикл<br> Если ВыборкаТоваров.ПометкаУдаления() = 1 Тогда<br> Продолжить;<br> КонецЕсли;<br> Если ВыборкаТоваров.ЭтоГруппа() = 1 Тогда<br> ДобавитьГруппуТоваров(ВыборкаТоваров.ТекущийЭлемент(),ТекущийРодительДляПрайса.ТекущийЭлемент());<br> Иначе<br> ДобавитьТовар(ВыборкаТоваров.ТекущийЭлемент(), ТекущийРодительДляПрайса.ТекущийЭлемент());<br> КонецЕсли;<br> КонецЦикла;<br>КонецПроцедуры<br><br>//******************************************************************************<br>Процедура ОбработкаПодбора(Выбор) // предопределенная процедура<br> Если Выбор.ЭтоГруппа() = 1 Тогда<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>ДублироватьПриПодборе = 1;<br>ДобавлениеГруппы = НЕТ;[/c1code]<br><br>Помогите подправить код, чтоб высвечивалась страна производитель в ценнике.<br>А с таблицей, я справлюсь :-)<br><br>Спасибо."

Sergey279
читатель
офлайн
Дата регистрации: 15.08.2005
Сообщений: 41
Пост №4
 
20.03.2006 16:02

Еще можно 2 вопроса <br>1) "Справочник.Прайс_лист" - имеет реквизит "СтранаПроисхождения" ? <br>2) на форме "ВыбТовар" какой тип имеет, "Справочник.Номенклатура" или тоже "Справочник.Прайс_лист".<br>

Shtabs
читатель
офлайн
Дата регистрации: 04.10.2004
Сообщений: 29
Пост №5
 
20.03.2006 16:17

1. Нет, такого реквизита в справочнике Прайс_лист нет.<br>2. Свойства реквизита ТОВАР имеет тип значения - Справочник.Номенклатура

Sergey279
читатель
офлайн
Дата регистрации: 15.08.2005
Сообщений: 41
Пост №6
 
20.03.2006 16:34

"попробуй может поможет <br><br>Процедура ПечатьЦенника()<br>Перем ПечЕдиница, ПечНаименование,ПечРозн;<br>Перем ЦенаТовара;<br>спрТовар = СоздатьОбъект("Справочник.Номенклатура"); //добавить<br> <br>И<br><br>спрТовар.НайтиПоНаименованию(ТоварВПрайсе.Товар.Наименование,1,1); //добавить<br>ПечСтрана = спрТовар.СтранаПроисхождения; //добавить<br>//перед<br>ПечНаименование=ТоварВПрайсе.Товар.Наименование;<br>ЦенаТовара = глВернутьЦену(ТоварВПрайсе.Товар,ТипЦены);<br><br>И <br>ПечСтрана в табличку подсунуть"

Shtabs
читатель
офлайн
Дата регистрации: 04.10.2004
Сообщений: 29
Пост №7
 
21.03.2006 02:38

Нет не работает.<br><br>Как сделать, чтобы при выводе на печать группы в ценнике показывало СтранаПроизводитель?<br><br>Показывает, только при отдельном выделении из списка.

Shtabs
читатель
офлайн
Дата регистрации: 04.10.2004
Сообщений: 29
Пост №8
 
21.03.2006 02:44

"Мне в принципе всё равно в справочнике номенклатура сделать печать ценников или в прайс_лист.<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>-------"

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация