[ Бесплатные материалы ] 11 вопросов и ответов по программированию в 1С и работе типовых конфигураций

Доброго дня, коллеги!

Мы сделали подборку самых интересных вопросов, которые разбирались в Мастер-группах наших курсов. Немного их отредактировали, чтобы Вам было комфортнее их читать – и опубликовали в виде статьи.

Забирайте :)

Вопросы из Мастер-группы курса
Доработка и адаптация типовых конфигураций УТ 11.4 (11.3), КА 2.2 (2.0), ERP 2.4 (2.2)

Вопрос № 1 – Как управлять видимостью дополнительных реквизитов в форме?

Нужно, чтобы определенным пользователям не был виден на форме некий дополнительный реквизит.

Вопрос – как убрать видимость именно для дополнительного реквизита? У него есть опции (в настройках через администраторское меню) «Доступ» и «Видимость», но там настройка производится через другие реквизиты документа, например «Менеджер», «Дата» и т.п.

А как можно напрямую управлять видимостью дополнительного реквизита?

Ответ:

Создаете расширение, добавляете роль «ПравоВидетьРеквизит», наследуете форму. После создания на сервере, в зависимости от наличия у пользователя роли, управляете видимостью элемента на форме.

На самом деле дополнительные реквизиты — это тоже элементы формы, только формируются они программно. После их формирования они доступны среди элементов формы, имена имеют подобный формат:

ДополнительныйРеквизитЗначение_A1C9A067x0305x11E7xA704x382C4ABD651A_
54C2808Ex04ACx11E7xA704x382C4ABD651A

Вы можете также управлять их видимостью через свойство «Видимость», например:

Элементы.ДополнительныйРеквизитЗначение_A1C9A067x0305x11E7xA704x382C4ABD651A_54C2808Ex04ACx11E7xA704x382C4ABD651A.Видимость = Ложь;

Формирование элементов формы по дополнительным реквизитам происходит в процедуре ПриСозданииНаСервере():

ПараметрыДополнительныхСвойств = Новый Структура;
ПараметрыДополнительныхСвойств.Вставить("Объект", Объект);
ПараметрыДополнительныхСвойств.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ПараметрыДополнительныхСвойств.Вставить("СкрытьУдаленные", Ложь);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ПараметрыДополнительныхСвойств);

Вопрос № 2 – Как создать внешние печатные формы с помощью расширения конфигурации?

Как можно создать дополнительную печатную форму объекта (например договора), используя механизм расширений?

Ответ:

Добавление дополнительной печатной формы через расширение практически такое же, при добавлении в обычную конфигурацию.

Есть только несколько различий:

  1. Создаем расширение
  2. Создаем в расширении обработку, к примеру, РасширениеПечатнаяФорма с макетом ПФ_MXL_МойМакет. В Менеджер печати этой обработки добавляем процедуру Печать. (Можно посмотреть, к примеру, связку Документ.ЗаказКлиента и Обработка.ПечатьЗаказовНаТоварыУслуги)
  3. Добавляем объект (документ) в расширение и в Менеджере этого объекта добавляем команду печати:
    &После("ДобавитьКомандыПечати") 
    Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати) Экспорт
         КомандаПечати = КомандыПечати.Добавить();
         КомандаПечати.МенеджерПечати = "Обработка.РасширениеПечатнаяФорма";
         КомандаПечати.Идентификатор = "РасширениеПечатнаяФорма";
         КомандаПечати.Представление = НСтр("ru = 'Моя обработка (расширение)'");
         КомандаПечати.ПроверкаПроведенияПередПечатью = Истина; 
    КонецПроцедуры
    
  4. Добавляем в расширение роль и даем права на обработку РасширениеПечатнаяФорма (без этого, даже под полными правами, при попытке обратится к макету ПФ_MXL_МойМакет выпадет ошибка о том, что прав недостаточно)
  5. Запускаем информационную базу с ключом /С ЗапуститьОбновлениеИнформационнойБазы.

Вопрос № 3 – Как посмотреть содержимое временных таблиц при отладке?

Есть ли какой-нибудь способ просмотреть при трассировке типового алгоритма в отладчике содержимое временной таблицы запроса?

Ответ:

Штатный способ просмотра содержимого временных таблиц реализован функцией:

// Служебная. Показать временную таблицу из менеджера временных таблиц. 
// Используется для просмотра временных таблиц в отладчике. 
// Пример вызова функции: 
// ОбщегоНазначенияУТ.ПоказатьВременнуюТаблицу(Запрос, "ТаблицаТоваров") 
// 
Функция ПоказатьВременнуюТаблицу(МенеджерВременныхТаблицИлиЗапрос, ИмяВременнойТаблицы) Экспорт

Вопрос № 4 – Как разместить внешний отчет в командном интерфейсе?

Добавили внешний неконтекстный отчет Список поставщиков в дополнительные отчеты и обработки. Указали размещение варианта в подсистеме CRM, которая подчинена подсистеме CRMИМаркетинг. Но отчет не отражается в указанной подсистеме.

При этом он отображается в общей форме, которая открывается при нажатии на Отчеты по CRM и маркетингу.

Функция СведенияОВнешнейОбработке():

Функция СведенияОВнешнейОбработке() Экспорт 
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(“2.2.5.1”); 
	ПараметрыРегистрации.Информация = НСтр(“ru = ‘Список поставщиков'”); 
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(); 
	ПараметрыРегистрации.Версия = “2.3.3.42”; 
	ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина; 
	Команда = ПараметрыРегистрации.Команды.Добавить(); 
	Команда.Представление = НСтр(“ru = ‘Список поставщиков'); 
	Команда.Идентификатор = “СписокПоставщиков”; 
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); 
	Команда.ПоказыватьОповещение = Ложь; 
	Возврат ПараметрыРегистрации; 
КонецФункции

При добавлении внешнего отчета на закладке Команды возможно выбрать Размещение. Но что это дает?

Выбирали раздел CRM и Маркетинг, но никаких изменений не заметили. Уточню на всякий случай – речь идет не о закладке Варианты отчета.

Так почему отчет не отображается в указанной подсистеме и как его сюда добавить?

Ответ:

Подсистема БСП работает следующим образом:

  1. Отчет (его варианты) размещается на панели отчетов, если у варианта отчета установлена настройка «По умолчанию виден в панелях отчетов». Если настройка не установлена, отчет размещается тоже, просто видимость по умолчанию выключена.
  2. Отчет размещается в форме команды «Дополнительные отчеты», если такая команда предусмотрена типовой настройкой подсистемы. Например, такая команда имеется в подсистеме «Финансовый результат и контроллинг». В CRM такая команда тоже имеется, но по умолчанию скрыта.

Стандартным образом поместить внешний отчет туда, куда Вы хотите, не получится – только через изменение типовой конфигурации. Но я считаю, что это и не имеет смысла, представьте, что отчет имеет десяток вариантов – размещение всех вариантов на панели отчетов более наглядно.

В Вашем случае применяется второй случай функциональности БСП. Описанная Вами настройка размещает отчет в форме команды «Дополнительные отчеты». Необходимо только вывести ее в интерфейс, и Вы все увидите. Настройка интерфейса индивидуальна для каждого пользователя.

Настройка размещения внешнего отчета в командном интерфейсе

Вопросы из Мастер-группы курса
Объемно-календарное планирование в 1С:ERP 2.4 (2.2), КА 2.2 (2.0) и УТ 11.4 (11.3): продажи, производство, закупки и обеспечение потребностей

Вопрос № 1 – Об особенностях источника данных “Заказы клиентов”

При заполнении по источнику Заказы клиентов ожидали, что в план попадет только заказанная, но еще неотгруженная номенклатура, а получили цифры намного больше.

Как настроить источник данных, чтобы в план продаж попадала только не отгруженная номенклатура из заказов клиентов?

Ответ:

Источник данных Заказы клиента извлекает данные по актуальному количеству заказанной номенклатуры – то есть не отмененные строки и не закрытые заказы.

При этом СКД не проверяет наличие отгрузок по этим заказам.

Убрать отгруженное количество в настройках правила не получится. Можно либо вычесть отгруженное количество отдельным источником данных, либо написать свой вариант СКД.

Вопрос №2 – Как заполнить план по дате отгрузки?

Есть два заказа клиента: один с отгрузкой в день заказа, второй – через три месяца.

В плане продаж по источнику Заказы клиента указано На дату, равную дате отгрузки первого заказа. Однако в результат попадают оба заказа.

Как настроить условие, чтобы второй заказ не учитывался?

Ответ:

В настройке На дату используется дата документа, поэтому в план и попадают оба заказа.

Настройка условия по дате отгрузки делается в произвольном отборе в настройках правила заполнения плана.

Вопрос № 3 – Куда делся метод обеспечения “Заказ под заказ”?

В новой версии программы в параметрах поддержания запаса отсутствует метод обеспечения Заказ под заказ. Как это исправить?

Ответ:

В последних релизах 2.2 и в последующих версиях из настроек метода обеспечения вариант Заказ под заказ исключили, так как теперь он по умолчанию применяется всегда для всей номенклатуры.

Таким образом, в настройках метода можно указать, нужно ли дополнительно к стратегии Заказ под заказ использовать также метод поддержания остатка или нет.

Вопросы из Мастер-группы курса
Конвертация данных 3.0 и технология обмена через универсальный формат

Вопрос № 1 – Об использовании планов обмена для различных настроек синхронизации

Если состав отправляемых данных одинаковый, можно ли обойтись одним планом обмена с двумя узлами?

Если это так, то планы обмена нужно создавать, только если состав отправляемых данных разный?

Ответ:

В этой технологии (в отличие от старой) план обмена создается не для пары баз, а под конкретный формат обмена.

То есть если база обменивается с несколькими другими, но использует при этом один и тот же формат (возможно, даже разные его версии), то план обмена создается один, а под каждую базу-корреспондент в него добавляются узлы.

На узлах регистрируются данные для отправки в эти базы.

В составе можно указать все объекты, которыми эта база обменивается. А что будет реально регистрироваться и как – за это отвечают подписки на события и правила регистрации.

Подписки создаются по принципу один «комплект» на план обмена, а не на каждый узел. В составе у них указываются объекты метаданных, для которых нужно выполнять правила регистрации.

Например, можно у плана обмена создать два реквизита (переключателя) – РежимВыгрузкиФизЛиц и РежимВыгрузкиНоменклатуры (типа ПеречислениеСсылка.РежимыВыгрузкиОбъектовОбмена).

Создать правила регистрации, где указать каждому из справочников (ФизическиеЛица и Номенклатура) свой переключатель.

И тогда в каждом узле плана обмена можно будет для ненужного справочника установить режим «Не выгружать», и объекты этого типа на этом узле регистрироваться не будут.

Вопрос № 2 – Как передать объект ссылочного типа, если в конечной базе его нет?

При передаче значения ссылочного типа ОсновнаяВалюта он передается в виде ссылки и кода (тип КлючевыеСвойстваВалюта). Однако в случае, если в конечной базе такого элемента справочника нет, новый элемент не создается.

В КД 2.0 была возможность выгружать объекты как по ссылке, так и по объектам. В последнем случае в конечной базе создавались объекты, на которые были ссылки, но они явно не были зарегистрированы для выгрузки.

Как в случае с КД 3.0 выполнить похожую выгрузку?

Ответ:

В технологии КД 3.0 объекты свойств по ссылкам целиком не выгружаются. Такой подход позволяет оптимизировать регулярные обмены, когда переносятся только измененные и новые объекты.

Для того, чтобы объект выгрузился целиком, он должен быть зарегистрирован к выгрузке. Или в правилах для отправки какого-то другого объекта можно принудительно вызвать выгрузку этого объекта целиком.

Чаще всего такие задачи имеет смысл решать не с помощью принудительной выгрузки, а путем принудительной регистрации объектов.

При определенных условиях на основании ключевых свойств создается частично заполненный объект в конечной базе.

Для этого в ПКО для получения “Валют” нужно установить поиск по полям поиска, и это ПКО должно использоваться только в ПКС других ПКО, а в ПОД не использоваться. Тогда при загрузке другого объекта, у которого в свойствах встречается Валюта, будет сначала выполнена попытка поиска валюты по заданным в ПКО полям. А если такой элемент не найден, то будет создана новая валюта, но в ней будет заполнен только код.

Вопрос № 3 – Что записывается в регистр сведений ПубличныеИдентификаторыСинхронизируемыхОбъектов?

В регистр сведений ПубличныеИдентификаторыСинхронизируемыхОбъектов записываются данные, только если происходит ручное сопоставление объектов? Или данные пишутся в регистр, даже если сопоставление прошло по УИД?

Ответ:

В последних версиях БСП соответствия пишутся в регистр, если в ПКО для получения настроена идентификация только по УИД или по УИД, а потом по полям поиска.

Пишется соответствие и тех объектов, которые были сопоставлены вручную, и тех, которые были найдены по УИД или по полям, и новых созданных в процессе загрузки.

Не пишутся в регистр только соответствия для объектов, загруженных по ПКО, в которых идентификация настроена только по полям поиска.

Вопрос № 4 – Как настроить правила регистрации для различных узлов плана обмена?

Правильно понимаю, что правила регистрации в пределах плана обмена не могут быть различными?

То есть, если исключить из регистрации документ на одном узле, а на другом этот документ включен к регистрации, он все равно регистрироваться не будет? В таком случае следует пользоваться обработчиками?

Ответ:

Правила регистрации настраиваются для одного плана обмена, всех его узлов. В правилах для каждого объекта должно быть описано, на каких узлах должен регистрироваться этот объект. Это может зависеть от значений реквизитов плана обмена у конкретного узла.

С помощью изменений значений реквизитов, можно регулировать, что регистрируется на этом узле, а что нет. В зависимости от задачи, можно использовать интерфейс настройки правила регистрации или написать код в обработчике.

Комментарии / обсуждение (2):

  1. Татьяна

    Добрый день! Не совсем понятен ответ на вопрос по Бюджетированию: “Чем отличаются сценарии “Фактические данные” и “Исполнение бюджета”?”… Сценарий “Исполнение бюджета” используется только по источнику “заявки на расходование ДС”? Для чего он еще может использоваться?

    • Кузьмин Сергей

      Больше ни для чего не используется.
      И нужно подчеркнуть разницу в доступности данных в разрезе сценариев: Фактический сценарий – содержит фактические данные оперативного, регламентированного и международного учета.
      Сценарий исполнение бюджета – собирает данные по заявкам на расходование денежных средств (доступность данных – только оперативный учет. В бухгалтерском учете заявки движений не делают, в контур международного учета – не транслируются).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

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

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.