Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 апр 2025, 08:14

Проблема в конфигурировании 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

Поиск