1C:Бухгалтерия
1С:CRM ПРОФ, КОРП
1С:ERP Управление предприятием 2
Платформа 1С v8.3
Корп. решения 1С
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. В УТ 10.3. Надо сделать такой отбор - что если в пользователя есть полные права тогда макета отключился видимость колонках цена и сумма иначе показало нормально. Если изменить присоединить с ввести тогда форма макета уже потеряется. Полный код такой -
Если Имя Шапки = ШапкаТаблицыНТТ тогда надо делать отбор. В данные есть колонки количество, цена и сумма. Надо что только колонка цена и сумма не было видимо.
Функция ПечатьСписаниеТоваров()
ПараметрыПечати = ПолучитьДанныеДляПечатиСписанияТоваров();
Если ПараметрыПечати.ЭтоСкладНТТ Тогда
ИмяШапки = "ШапкаТаблицы";
ИмяСтроки = "Строка";
Иначе
ИмяШапки = "ШапкаТаблицыНТТ";
ИмяСтроки = "СтрокаНТТ";
КонецЕсли;
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписаниеТоваров_Накладная";
Макет = ПолучитьМакет("Накладная");
// Выводим шапку накладной
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("РевизитыОрганизации");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьНомера = Макет.ПолучитьОбласть(ИмяШапки + "|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть(ИмяШапки + "|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть(ИмяШапки + "|Товар");
ОбластьМест = Макет.ПолучитьОбласть(ИмяШапки + "|Мест");
ОбластьДанных = Макет.ПолучитьОбласть(ИмяШапки + "|Данные");
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
ОбластьКолонкаТовар = Макет.Область("Товар");
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
+ ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
Иначе
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
+ Макет.Область("КолонкаКодов").ШиринаКолонки
+ ?(ПараметрыПечати.ФлагПечатиМест, 0, Макет.Область("R14C5").ШиринаКолонки + Макет.Область("R14C6").ШиринаКолонки);
КонецЕсли;
Если ПараметрыПечати.ФлагПечатиМест Тогда
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ОбластьНомера = Макет.ПолучитьОбласть(ИмяСтроки + "|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть(ИмяСтроки + "|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть(ИмяСтроки + "|Товар");
ОбластьМест = Макет.ПолучитьОбласть(ИмяСтроки + "|Мест");
ОбластьДанных = Макет.ПолучитьОбласть(ИмяСтроки + "|Данные");
СуммаИтого = 0;
Ном = 0;
// Товары и тара
Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл
Если НЕ ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
Сообщить("Sətrlərin birində nomenklaturanın mənası doldurulmayıb - çapda sətr buraxılıb.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;
ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьТовар);
Если ПараметрыПечати.ФлагПечатиМест Тогда
ОбластьМест.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;
ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
ТабДокумент.Присоединить(ОбластьДанных);
КонецЦикла;
// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть("Итого|Товар");
ОбластьМест = Макет.ПолучитьОбласть("Итого|Мест");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ТабДокумент.Вывести(ОбластьНомера);
Если ПараметрыПечати.ВыводитьКоды Тогда
ТабДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьТовар);
Если ПараметрыПечати.ФлагПечатиМест Тогда
ТабДокумент.Присоединить(ОбластьМест);
КонецЕсли;
ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Присоединить(ОбластьДанных);
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
ТабДокумент.Вывести(ОбластьМакета);
// Вывести подписи
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции // ПечатьСписаниеТоваров()
ПоказатьЕсли Имя Шапки = ШапкаТаблицыНТТ тогда надо делать отбор. В данные есть колонки количество, цена и сумма. Надо что только колонка цена и сумма не было видимо.
Прикрепленные файлы:

По теме из базы знаний
- Расширение функционала произвольных отчетов (сохранение в настройках ориентации страницы и повтор области строк при выводе на печать)
- Макет нового бланка ТТН (Украина, 2014 г.)
- Универсальная печать документов в Word + визуальный конструктор макета
- Использование механизма редактирования макетов БСП для внешних обработок
- Интеграция 1С и Sentry для мониторинга ошибок и расчета Apdex
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В дополнение к сказанному выше еще можно предложить добавить альтернативные строки таблицы в макет, скопировав исходные и удалив в них ненужные колонки (растянув остальные). И уже в зависимости от прав получать либо первую, либо вторую область.
Разбейте область Данные на две - ДанныеКоличество и ДанныеЦенаСумма.
Далее в зависимости от прав выводит либо ДанныеКоличество или ДанныеЦенаСумма или и тот и тот.
Второй подход. Когда вы заполняете область Данные, вы на уровни прав можете не заполянть значение реквизитов Цена и Сумма, тогда вам макета менять не надо, но у вас либо будет заполнено все либо будет просто заполнено количество (это можно на программном уровне описать)
И еще одни вариант. Когда уже сформирован документ, в самом конце, вы можете просто либо скрыть колонки цена и сумма либо их удалить уже в сформированном документе
Далее в зависимости от прав выводит либо ДанныеКоличество или ДанныеЦенаСумма или и тот и тот.
Второй подход. Когда вы заполняете область Данные, вы на уровни прав можете не заполянть значение реквизитов Цена и Сумма, тогда вам макета менять не надо, но у вас либо будет заполнено все либо будет просто заполнено количество (это можно на программном уровне описать)
И еще одни вариант. Когда уже сформирован документ, в самом конце, вы можете просто либо скрыть колонки цена и сумма либо их удалить уже в сформированном документе
(5) Это конечно самый простой способ решить проблему, но если подходить к задачам с такой стороны, то последующие доработки таких вещей потребует больших сил.
Так как в данном варианте в случае чего уже придется менять не один макет, а два. Завтра еще появятся условия и уже будет не 2, а 3 или 5 макетов, для каждого варианта.
Так как в данном варианте в случае чего уже придется менять не один макет, а два. Завтра еще появятся условия и уже будет не 2, а 3 или 5 макетов, для каждого варианта.
(7) Они может и не часто появляются, но с завидной периодичностью. Сегодня попросили так, через пол года, попросили добавить еще одно условие. А через 2 года сидишь и ломаешь голову, везде ли внесли правки.
Конечно, если в планах нет оставаться на такой работе или разовая задача от заказчика (с которым не будешь больше работать), то можно и по простому, а если нет, то стоит делать правильно изначально.
Конечно, если в планах нет оставаться на такой работе или разовая задача от заказчика (с которым не будешь больше работать), то можно и по простому, а если нет, то стоит делать правильно изначально.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот