Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 июн 2021, 18:42

Проблема в конфигурировании 1С:Предприятие 8.1.

Автор Eugene Obukhov, 27 сен 2016, 22:17

0 Пользователей и 1 гость просматривают эту тему.

Eugene Obukhov

Добрый день форумчанам. Проблема, перед которой я встал, скорее всего окажется из разряда пустяковых.
1С:Предприятие 8.1.
Есть необходимость изменить обработку "Печать ценников". Обработка нестандартная, взята из интернета, называется "Печать_ценников_две_цены", здесь она должна быть знакома. Так вот, стоит задача сделать возможным выбор макета, идущего на печать.

В Форму добавлено поле выбора выпадающим списком "ВыборМакета", ссылающееся на созданный реквизит этой формы "ВыборМакета" с типом данных "Произвольный".



В процедуру "При открытии" модуля формы добавлен следующий код:

// Обработчик события "ПриОткрытии" формы.
Процедура ПриОткрытии()
...
...
...
ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(0, "ОбычныйДвеЦены");
ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(1, "АкцияДвеЦены");
ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(2, "БольшойДвеЦены");
ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(3, "БольшойАкцияДвеЦены");
ЭлементыФормы.ВыборМакета.Значение=0;


КонецПроцедуры // ПриОткрытии()



Модуль объекта не менялся, в нем есть следующие строки:


Функция ПечатьЦенника() Экспорт
...
...
...
ТабДокумент                     = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник";
Макет                           = ПолучитьМакет("Ценник");
ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");


Я так понимаю, что нужно всего лишь изменить аргумент для ПолучитьМакет("Ценник") на выбранное в поле выбора на форме значение, но как это сделать не знаю.
Помогите в моем затыке.

Всеволод Коваленко

Наверное
ТабДокумент = Новый ТабличныйДокумент;
Если ЭлементыФормы.ВыборМакета.Значение=0 Тогда
    Макет = ПолучитьМакет("Обычный");
КонецЕсли;
Если ЭлементыФормы.ВыборМакета.Значение=1 Тогда
    Макет = ПолучитьМакет("Акция");
КонецЕсли;
Если ЭлементыФормы.ВыборМакета.Значение=2 Тогда
    Макет = ПолучитьМакет("Большой");
КонецЕсли;
Если ЭлементыФормы.ВыборМакета.Значение=3 Тогда
    Макет = ПолучитьМакет("БольшойАкция");
КонецЕсли;
ОбластьЦенника = Макет.ПолучитьОбласть("Строка|Столбец");

Ну и макетов соответственно добавить.

cska-fanat-kz

Всеволод Коваленко,
Цитата: Всеволод Коваленко от 28 сен 2016, 00:47Если ЭлементыФормы.ВыборМакета.Значение=0 Тогда
"ЭлементыФормы" не видно в модуле объекта

Eugene Obukhov,
надо реквизит ВидМакета сделать реквизитом не формы, а самой обработки.
тогда
    Если ВыборМакета = 0 Тогда
        Макет = ПолучитьМакет("Макет0");
    ИначеЕсли ВыборМакета = 1 Тогда
        Макет = ПолучитьМакет("Макет1");
    ......
    КонецЕсли;

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ДенисЧ

а почему
ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(0, "ОбычныйДвеЦены");

а не ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить("ОбычныйДвеЦены");

и потом просто получитьмакет(ЗначениеВыбора) ?

Eugene Obukhov

Проблема решена следующим образом.
Данные выпадающий список на форме ВыборМакета теперь берет данные из реквизита объекта.

Модуль Формы остался без изменений, приведу код на всякий случай еще раз:

// Обработчик события "ПриОткрытии" формы.
Процедура ПриОткрытии()
...
...
...
    ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(0, "ОбычныйДвеЦены");
    ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(1, "АкцияДвеЦены");
    ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(2, "БольшойДвеЦены");
    ЭлементыФормы.ВыборМакета.СписокВыбора.Добавить(3, "БольшойАкцияДвеЦены");
    ЭлементыФормы.ВыборМакета.Значение=0;
   
КонецПроцедуры // ПриОткрытии()


В модуль объекта добавлен следующий код:

ТабДокумент                     = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Ценник";
Если ВыборМакета = 0 Тогда
Макет = ПолучитьМакет("ОбычныйДвеЦены")
КонецЕсли;
Если ВыборМакета = 1 Тогда
Макет = ПолучитьМакет("АкцияДвеЦены")
КонецЕсли;
Если ВыборМакета = 2 Тогда
Макет = ПолучитьМакет("БольшойДвеЦены")
КонецЕсли;
Если ВыборМакета = 3 Тогда
Макет = ПолучитьМакет("БольшойАкцияДвеЦены")
КонецЕсли;
ОбластьЦенника                  = Макет.ПолучитьОбласть("Строка|Столбец");


Созданы макеты. Вот. Все работает.
Всем большое спасибо.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск