В начало

Программное изменение реквизита справочника

 

            Есть два справочника, один из которых Владелец, а другой соответственно подчиненный. Нужно в справочнике-владельце установить реквизит «ДоговорТОВКГО».

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

 

Рис. Форма обработки

 

            Добавляем функции и процедуры. Во первых нужно перебрать элементы справочника-владельца, потом получить ссылку на договор по ссылке на владельца (в запросе), и наконец, присвоить реквизиту «ДоговорВКГО» значение, полученное запросом, а именно ссылку на договор в подчиненном справочнике. После чего записать элемент справочника-владельца.

 

Листинг. Содержимое модуля формы обработки

&НаСервереБезКонтекста              

Функция ПолучитьСсылкуНаДоговор(СсылкаНаВладельца)

Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |          МКД_ДоговорыНаТОВКГО.Ссылка КАК Ссылка

                        |ИЗ

                        |          Справочник.МКД_ДоговорыНаТОВКГО КАК МКД_ДоговорыНаТОВКГО

                        |ГДЕ

                        |          МКД_ДоговорыНаТОВКГО.Владелец = &СсылкаНаВладельца";

           

            Запрос.УстановитьПараметр("СсылкаНаВладельца", СсылкаНаВладельца);          

            Результат = Запрос.Выполнить();

            Выборка = Результат.Выбрать();

           

            Если Выборка.Следующий() И

                        Выборка.Количество() = 1 Тогда

                         Возврат Выборка.Ссылка;

            КонецЕсли;    

           

            Возврат Неопределено;       

КонецФункции

       

&НаСервере

Процедура ПускНаСервере()

Выборка = Справочники.МКД_ОбщаяБазаПоКвартирам.Выбрать();     

Пока Выборка.Следующий() Цикл

            СсылкаНаДоговор =ПолучитьСсылкуНаДоговор(Выборка.Ссылка);

            Если СсылкаНаДоговор <> Неопределено Тогда   

                        ТекОбъект = Выборка.ПолучитьОбъект();

                        ТекОбъект.ДоговорВКГО = СсылкаНаДоговор;

                        ТекОбъект.Записать();

            КонецЕсли;    

КонецЦикла;

КонецПроцедуры

 

&НаКлиенте

Процедура Пуск(Команда)

            ПускНаСервере();

КонецПроцедуры

 

            Запускаем режим отладки, тестируем обработку.

Рис. Форма справочника-владельца (до внесения изменений)

 

Рис. Форма справочника-владельца (до внесения изменений)

 

            Конечно, запрос в цикле это ой, как нехорошо, но что поделаешь, как вариант вполне подойдет.