Доброго дня, коллеги!
Мы сделали подборку самых интересных вопросов, которые разбирались в Мастер-группах наших курсов. Немного их отредактировали, чтобы Вам было комфортнее их читать – и опубликовали в виде статьи.
Забирайте :)
Вопросы из Мастер-группы курса
Доработка и адаптация типовых конфигураций УТ 11.4 (11.3), КА 2.2 (2.0), ERP 2.4 (2.2)
Нужно, чтобы определенным пользователям не был виден на форме некий дополнительный реквизит.
Вопрос – как убрать видимость именно для дополнительного реквизита? У него есть опции (в настройках через администраторское меню) «Доступ» и «Видимость», но там настройка производится через другие реквизиты документа, например «Менеджер», «Дата» и т.п.
А как можно напрямую управлять видимостью дополнительного реквизита?
Создаете расширение, добавляете роль «ПравоВидетьРеквизит», наследуете форму. После создания на сервере, в зависимости от наличия у пользователя роли, управляете видимостью элемента на форме.
На самом деле дополнительные реквизиты — это тоже элементы формы, только формируются они программно. После их формирования они доступны среди элементов формы, имена имеют подобный формат:
ДополнительныйРеквизитЗначение_A1C9A067x0305x11E7xA704x382C4ABD651A_ 54C2808Ex04ACx11E7xA704x382C4ABD651A
Вы можете также управлять их видимостью через свойство «Видимость», например:
Элементы.ДополнительныйРеквизитЗначение_A1C9A067x0305x11E7xA704x382C4ABD651A_54C2808Ex04ACx11E7xA704x382C4ABD651A.Видимость = Ложь;
Формирование элементов формы по дополнительным реквизитам происходит в процедуре ПриСозданииНаСервере():
ПараметрыДополнительныхСвойств = Новый Структура; ПараметрыДополнительныхСвойств.Вставить("Объект", Объект); ПараметрыДополнительныхСвойств.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты"); ПараметрыДополнительныхСвойств.Вставить("СкрытьУдаленные", Ложь); УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ПараметрыДополнительныхСвойств);
Как можно создать дополнительную печатную форму объекта (например договора), используя механизм расширений?
Добавление дополнительной печатной формы через расширение практически такое же, при добавлении в обычную конфигурацию.
Есть только несколько различий:
- Создаем расширение
- Создаем в расширении обработку, к примеру, РасширениеПечатнаяФорма с макетом ПФ_MXL_МойМакет. В Менеджер печати этой обработки добавляем процедуру Печать. (Можно посмотреть, к примеру, связку Документ.ЗаказКлиента и Обработка.ПечатьЗаказовНаТоварыУслуги)
- Добавляем объект (документ) в расширение и в Менеджере этого объекта добавляем команду печати:
&После("ДобавитьКомандыПечати") Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати) Экспорт КомандаПечати = КомандыПечати.Добавить(); КомандаПечати.МенеджерПечати = "Обработка.РасширениеПечатнаяФорма"; КомандаПечати.Идентификатор = "РасширениеПечатнаяФорма"; КомандаПечати.Представление = НСтр("ru = 'Моя обработка (расширение)'"); КомандаПечати.ПроверкаПроведенияПередПечатью = Истина; КонецПроцедуры
- Добавляем в расширение роль и даем права на обработку РасширениеПечатнаяФорма (без этого, даже под полными правами, при попытке обратится к макету ПФ_MXL_МойМакет выпадет ошибка о том, что прав недостаточно)
- Запускаем информационную базу с ключом /С ЗапуститьОбновлениеИнформационнойБазы.
Есть ли какой-нибудь способ просмотреть при трассировке типового алгоритма в отладчике содержимое временной таблицы запроса?
Штатный способ просмотра содержимого временных таблиц реализован функцией:
// Служебная. Показать временную таблицу из менеджера временных таблиц. // Используется для просмотра временных таблиц в отладчике. // Пример вызова функции: // ОбщегоНазначенияУТ.ПоказатьВременнуюТаблицу(Запрос, "ТаблицаТоваров") // Функция ПоказатьВременнуюТаблицу(МенеджерВременныхТаблицИлиЗапрос, ИмяВременнойТаблицы) Экспорт
Добавили внешний неконтекстный отчет Список поставщиков в дополнительные отчеты и обработки. Указали размещение варианта в подсистеме CRM, которая подчинена подсистеме CRMИМаркетинг. Но отчет не отражается в указанной подсистеме.
При этом он отображается в общей форме, которая открывается при нажатии на Отчеты по CRM и маркетингу.
Функция СведенияОВнешнейОбработке():
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(“2.2.5.1”); ПараметрыРегистрации.Информация = НСтр(“ru = ‘Список поставщиков'”); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(); ПараметрыРегистрации.Версия = “2.3.3.42”; ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина; Команда = ПараметрыРегистрации.Команды.Добавить(); Команда.Представление = НСтр(“ru = ‘Список поставщиков'”); Команда.Идентификатор = “СписокПоставщиков”; Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); Команда.ПоказыватьОповещение = Ложь; Возврат ПараметрыРегистрации; КонецФункции
При добавлении внешнего отчета на закладке Команды возможно выбрать Размещение. Но что это дает?
Выбирали раздел CRM и Маркетинг, но никаких изменений не заметили. Уточню на всякий случай – речь идет не о закладке Варианты отчета.
Так почему отчет не отображается в указанной подсистеме и как его сюда добавить?
Подсистема БСП работает следующим образом:
- Отчет (его варианты) размещается на панели отчетов, если у варианта отчета установлена настройка «По умолчанию виден в панелях отчетов». Если настройка не установлена, отчет размещается тоже, просто видимость по умолчанию выключена.
- Отчет размещается в форме команды «Дополнительные отчеты», если такая команда предусмотрена типовой настройкой подсистемы. Например, такая команда имеется в подсистеме «Финансовый результат и контроллинг». В CRM такая команда тоже имеется, но по умолчанию скрыта.
Стандартным образом поместить внешний отчет туда, куда Вы хотите, не получится – только через изменение типовой конфигурации. Но я считаю, что это и не имеет смысла, представьте, что отчет имеет десяток вариантов – размещение всех вариантов на панели отчетов более наглядно.
В Вашем случае применяется второй случай функциональности БСП. Описанная Вами настройка размещает отчет в форме команды «Дополнительные отчеты». Необходимо только вывести ее в интерфейс, и Вы все увидите. Настройка интерфейса индивидуальна для каждого пользователя.
Вопросы из Мастер-группы курса
Объемно-календарное планирование в 1С:ERP 2.4 (2.2), КА 2.2 (2.0) и УТ 11.4 (11.3): продажи, производство, закупки и обеспечение потребностей
При заполнении по источнику Заказы клиентов ожидали, что в план попадет только заказанная, но еще неотгруженная номенклатура, а получили цифры намного больше.
Как настроить источник данных, чтобы в план продаж попадала только не отгруженная номенклатура из заказов клиентов?
Источник данных Заказы клиента извлекает данные по актуальному количеству заказанной номенклатуры – то есть не отмененные строки и не закрытые заказы.
При этом СКД не проверяет наличие отгрузок по этим заказам.
Убрать отгруженное количество в настройках правила не получится. Можно либо вычесть отгруженное количество отдельным источником данных, либо написать свой вариант СКД.
Есть два заказа клиента: один с отгрузкой в день заказа, второй – через три месяца.
В плане продаж по источнику Заказы клиента указано На дату, равную дате отгрузки первого заказа. Однако в результат попадают оба заказа.
Как настроить условие, чтобы второй заказ не учитывался?
В настройке На дату используется дата документа, поэтому в план и попадают оба заказа.
Настройка условия по дате отгрузки делается в произвольном отборе в настройках правила заполнения плана.
В новой версии программы в параметрах поддержания запаса отсутствует метод обеспечения Заказ под заказ. Как это исправить?
В последних релизах 2.2 и в последующих версиях из настроек метода обеспечения вариант Заказ под заказ исключили, так как теперь он по умолчанию применяется всегда для всей номенклатуры.
Таким образом, в настройках метода можно указать, нужно ли дополнительно к стратегии Заказ под заказ использовать также метод поддержания остатка или нет.
Вопросы из Мастер-группы курса
Конвертация данных 3.0 и технология обмена через универсальный формат
Если состав отправляемых данных одинаковый, можно ли обойтись одним планом обмена с двумя узлами?
Если это так, то планы обмена нужно создавать, только если состав отправляемых данных разный?
В этой технологии (в отличие от старой) план обмена создается не для пары баз, а под конкретный формат обмена.
То есть если база обменивается с несколькими другими, но использует при этом один и тот же формат (возможно, даже разные его версии), то план обмена создается один, а под каждую базу-корреспондент в него добавляются узлы.
На узлах регистрируются данные для отправки в эти базы.
В составе можно указать все объекты, которыми эта база обменивается. А что будет реально регистрироваться и как – за это отвечают подписки на события и правила регистрации.
Подписки создаются по принципу один «комплект» на план обмена, а не на каждый узел. В составе у них указываются объекты метаданных, для которых нужно выполнять правила регистрации.
Например, можно у плана обмена создать два реквизита (переключателя) – РежимВыгрузкиФизЛиц и РежимВыгрузкиНоменклатуры (типа ПеречислениеСсылка.РежимыВыгрузкиОбъектовОбмена).
Создать правила регистрации, где указать каждому из справочников (ФизическиеЛица и Номенклатура) свой переключатель.
И тогда в каждом узле плана обмена можно будет для ненужного справочника установить режим «Не выгружать», и объекты этого типа на этом узле регистрироваться не будут.
При передаче значения ссылочного типа ОсновнаяВалюта он передается в виде ссылки и кода (тип КлючевыеСвойстваВалюта). Однако в случае, если в конечной базе такого элемента справочника нет, новый элемент не создается.
В КД 2.0 была возможность выгружать объекты как по ссылке, так и по объектам. В последнем случае в конечной базе создавались объекты, на которые были ссылки, но они явно не были зарегистрированы для выгрузки.
Как в случае с КД 3.0 выполнить похожую выгрузку?
В технологии КД 3.0 объекты свойств по ссылкам целиком не выгружаются. Такой подход позволяет оптимизировать регулярные обмены, когда переносятся только измененные и новые объекты.
Для того, чтобы объект выгрузился целиком, он должен быть зарегистрирован к выгрузке. Или в правилах для отправки какого-то другого объекта можно принудительно вызвать выгрузку этого объекта целиком.
Чаще всего такие задачи имеет смысл решать не с помощью принудительной выгрузки, а путем принудительной регистрации объектов.
При определенных условиях на основании ключевых свойств создается частично заполненный объект в конечной базе.
Для этого в ПКО для получения “Валют” нужно установить поиск по полям поиска, и это ПКО должно использоваться только в ПКС других ПКО, а в ПОД не использоваться. Тогда при загрузке другого объекта, у которого в свойствах встречается Валюта, будет сначала выполнена попытка поиска валюты по заданным в ПКО полям. А если такой элемент не найден, то будет создана новая валюта, но в ней будет заполнен только код.
В регистр сведений ПубличныеИдентификаторыСинхронизируемыхОбъектов записываются данные, только если происходит ручное сопоставление объектов? Или данные пишутся в регистр, даже если сопоставление прошло по УИД?
В последних версиях БСП соответствия пишутся в регистр, если в ПКО для получения настроена идентификация только по УИД или по УИД, а потом по полям поиска.
Пишется соответствие и тех объектов, которые были сопоставлены вручную, и тех, которые были найдены по УИД или по полям, и новых созданных в процессе загрузки.
Не пишутся в регистр только соответствия для объектов, загруженных по ПКО, в которых идентификация настроена только по полям поиска.
Правильно понимаю, что правила регистрации в пределах плана обмена не могут быть различными?
То есть, если исключить из регистрации документ на одном узле, а на другом этот документ включен к регистрации, он все равно регистрироваться не будет? В таком случае следует пользоваться обработчиками?
Правила регистрации настраиваются для одного плана обмена, всех его узлов. В правилах для каждого объекта должно быть описано, на каких узлах должен регистрироваться этот объект. Это может зависеть от значений реквизитов плана обмена у конкретного узла.
С помощью изменений значений реквизитов, можно регулировать, что регистрируется на этом узле, а что нет. В зависимости от задачи, можно использовать интерфейс настройки правила регистрации или написать код в обработчике.
Добрый день! Не совсем понятен ответ на вопрос по Бюджетированию: “Чем отличаются сценарии “Фактические данные” и “Исполнение бюджета”?”… Сценарий “Исполнение бюджета” используется только по источнику “заявки на расходование ДС”? Для чего он еще может использоваться?
Больше ни для чего не используется.
И нужно подчеркнуть разницу в доступности данных в разрезе сценариев: Фактический сценарий – содержит фактические данные оперативного, регламентированного и международного учета.
Сценарий исполнение бюджета – собирает данные по заявкам на расходование денежных средств (доступность данных – только оперативный учет. В бухгалтерском учете заявки движений не делают, в контур международного учета – не транслируются).