Понимаю, что 1С 7.7 уже ушла в прошлое, но тем не менее очень много еще предприятий в регионах работает именно на ней. Попросили сделать в складской программе (Торговля и Склад) показа аналогов товаров. Выкладываю – мало ли кому пригодится. Порывшись в инете, нашел достаточно простой способ это сделать, не слишком кромсая типовую конфигурацию.
Итак: «ПоказатьУстановитьАналоги.ert» – это внешняя обработка, которую нужно вставить в конфигурацию, в обработки. Она обеспечивает установку и показ аналогов номенклатуры. Алгоритм таков – в справочник Номенклатура добавляем реквизит Число длиной 7 знаков, неотрицательное и без дробной части (можно и больше, но мне хватило семи). Если это число = 0, тогда аналогов нет. Если оно > 0, тогда вся номенклатура, у которой такое же число – это аналоги.
Необходимо будет также добавить кнопку перехода из списка
номенклатуры (для подбора, выбора или во все сразу) с формулой "ОткрытьФорму("Обработка.ПоказатьУстановитьАналоги", ТекущийЭлемент())"
И теперь в форму списка номенклатуры «Для подбора» добавляем
кнопку вызова показа аналогов с идентификатором «КнАналоги» и запуском
процедуры «ПоКнопкеАналоги()»:
И, соответственно, в код формы списка номенклатуры «Для
подбора» добавляем процедуру «ПоКнопкеАналоги()»:
//******************************************************************************
// ПоКнопкеАналоги()
Процедура ПоКнопкеАналоги()
Если ТекущийЭлемент().ИдентАналога = 0 Тогда Возврат КонецЕсли;
ИмяОтбора = "";
ЗначениеОтбора = "";
ПолучитьОтбор(ИмяОтбора, ЗначениеОтбора);
Если (Найти(ИмяОтбора,"ИдентАналога") > 0) и (ЗначениеОтбора <> "0")Тогда //надо отключить отбор
УстановитьОтбор(, );
Форма.КнАналоги.Заголовок("Отобразить аналоги");
Иначе //надо включить отбор
УстановитьОтбор("ИдентАналога", ТекущийЭлемент().ИдентАналога);
Форма.КнАналоги.Заголовок("Выключить аналоги");
КонецЕсли;
КонецПроцедуры //ПоКнопкеАналоги()