Содержание:
1. Доработка динамического списка с помощью кода в операционной системе 1С
2. Использование в 1С схемы запроса при доработке динамического списка
Иногда у пользователей имеется код для объектов из другой программы, который хотелось бы видеть в текущей, но добавлять лишний реквизит и редактировать списки не хочется. Это случай, например, когда осуществляется переход с SAP или другой конфигурации на 1С, например, для основных средств или номенклатуры и нужно сохранить уникальный цифровой код.
Как вариант, можно предложить добавление регистра сведений 1С и программную модификацию текста запроса динамического списка.
1. Доработка динамического списка с помощью кода в операционной системе 1С
Для того, чтобы меньше менять формы списков (любые справочники, регистр сведений) предлагается дописать немного кода и в «При создании» добавить процедуру:
клСтарыйКод.ДобавитьСтарыйКод(ЭтаФорма, Список, Элементы.Список, "СтарыйКодСклада");
В общем модуле клСтарыйКод будет всего процедура
Процедура ДобавитьСтарыйКод(Форма, Список, ЭлементСписок, ИмяРегистра) Экспорт
Если Список.ПроизвольныйЗапрос Тогда
ТекстЗапроса = Список.ТекстЗапроса;
Иначе
СхемаКомпоновкиДанных = ЭлементСписок.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
ТекстЗапроса = СхемаКомпоновкиДанных.НаборыДанных[0].Запрос;
Список.ПроизвольныйЗапрос = Истина;
КонецЕсли;
ТекстЗапросаСоСтарымКодом = ТекстЗапросаСоСтарымКодом(ТекстЗапроса, ИмяРегистра);
Список.ТекстЗапроса = ТекстЗапросаСоСтарымКодом;
НовыйЭлемент = Форма.Элементы.Добавить("клСтарыйКод", Тип("ПолеФормы"), ЭлементСписок);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Список.СтарыйКод";
НовыйЭлемент.ТолькоПросмотр = Истина;
2. Использование в 1С схемы запроса при доработке динамического списка
И функция:
Функция ТекстЗапросаСоСтарымКодом(ТекстЗапроса, ИмяРегистра)
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
КоличествоПакетов = СхемаЗапроса.ПакетЗапросов.Количество();
ЛокальныйЗапрос = СхемаЗапроса.ПакетЗапросов[КоличествоПакетов - 1];
ОператорыЗапроса = ЛокальныйЗапрос.Операторы[0];
ОсновнойИсточник = ОператорыЗапроса.Источники[0];
ДополнительныйИсточник = ОператорыЗапроса.Источники.Добавить("РегистрСведений." + ИмяРегистра, ИмяРегистра);
ДополнительныйИсточник.Соединения.Очистить();
ТекстУсловия = ОсновнойИсточник.Источник.Псевдоним + ".Ссылка = " + ДополнительныйИсточник.Источник.Псевдоним + ".Источник";
ОсновнойИсточник.Соединения.Добавить(ДополнительныйИсточник.Источник.Псевдоним, ТекстУсловия);
ОператорыЗапроса.ВыбираемыеПоля.Добавить(ИмяРегистра + ".СтарыйКод");
ТекстЗапросаСоСтарымКодом = СхемаЗапроса.ПолучитьТекстЗапроса();
Возврат ТекстЗапросаСоСтарымКодом;
КонецФункции
Специалист компании ООО "Кодерлайн"
Алексей Новоточинов