Программное использование универсальной обработки Выгрузка Загрузка Данных XML Для работы, необходимо взять
обработку "ВыгрузкаЗагрузкаДанныхXML" , которая находится в шаблоне "Конвертация данных".
Пример обработки(автор Misha Macklaud):
Скачивать файлы может только зарегистрированный пользователь!
а это ее код:
Код 1C v 8.х Процедура КнопкаВыполнитьНажатие(Кнопка)
ОбработкаОбмен = Обработки. ВыгрузкаЗагрузкаДанныхXML. Создать( ) ;
ОбработкаОбмен. Инициализация( ) ;
ОбработкаОбмен. ОбработанныхКонстант = 0 ;
ОбработкаОбмен. ОбработанныхНаборовЗаписей = 0 ;
СписокОбъектовВыгрузки = Новый СписокЗначений;
СписокОбъектовВыгрузки. Добавить( Метаданные. Документы. РеализацияТоваровУслуг) ;
СписокОбъектовВыгрузки. Добавить( Метаданные. Документы. ПоступлениеТоваровУслуг) ;
СписокОбъектовВыгрузки. Добавить( Метаданные. Документы. ТребованиеНакладная) ;
Для й= 0 По СписокОбъектовВыгрузки. Количество( ) - 1 Цикл
СтрокаВыгрузки = ОбработкаОбмен. ДеревоМетаданных. Строки. Найти( СписокОбъектовВыгрузки[й]. Значение, "ОбъектМД" , Истина ) ;
СтрокаВыгрузки. Выгружать= 1 ;
ОбработкаОбмен. ОбработкаИзмененияСостоянияВыгружать( СтрокаВыгрузки) ;
Построитель = ОбработкаОбмен. ПодготовитьПостроительДляВыгрузки( СтрокаВыгрузки) ;
СписокСсылокВыгрузки = Новый СписокЗначений;
Для Каждого СтрокаТабДокументы Из ТабДокументы Цикл
Если ( СтрокаТабДокументы. Документ. Метаданные( ) = СписокОбъектовВыгрузки[й]. Значение) И ( СтрокаТабДокументы. ФлагВыгружать) Тогда
СписокСсылокВыгрузки. Добавить( СтрокаТабДокументы. Документ. Ссылка) ;
КонецЕсли ;
КонецЦикла ;
Отбор = Построитель. Отбор;
Отбор. Добавить( "Ссылка" , "Ссылка" ) ;
Отбор[0 ]. Использование = Истина ;
Отбор[0 ]. ВидСравнения = ВидСравнения. ВСписке;
Отбор[0 ]. Значение = СписокСсылокВыгрузки;
СтрокаВыгрузки. НастройкиПостроителя = Построитель. ПолучитьНастройки( ) ;
СтрокаВыгрузки. ИспользоватьОтбор = Истина ;
КонецЦикла ;
СписокОбъектовВыгрузки. Очистить( ) ;
Для й= 0 По СписокОбъектовВыгрузки. Количество( ) - 1 Цикл
СтрокаВыгрузки = ОбработкаОбмен. ДеревоМетаданных. Строки. Найти( СписокОбъектовВыгрузки[й]. Значение, "ОбъектМД" , Истина ) ;
СтрокаВыгрузки. ВыгружатьПриНеобходимости = 0 ;
ОбработкаОбмен. ОбработкаИзмененияСостоянияВыгружать( СтрокаВыгрузки) ;
КонецЦикла ;
СписокОбъектовВыгрузки. Очистить( ) ;
СписокОбъектовВыгрузки. Добавить( Метаданные. Справочники. Номенклатура) ;
Для й= 0 По СписокОбъектовВыгрузки. Количество( ) - 1 Цикл
СтрокаВыгрузки = ОбработкаОбмен. ДеревоМетаданных. Строки. Найти( СписокОбъектовВыгрузки[й]. Значение, "ОбъектМД" , Истина ) ;
СтрокаВыгрузки. Выгружать= 1 ;
ОбработкаОбмен. ОбработкаИзмененияСостоянияВыгружать( СтрокаВыгрузки) ;
КонецЦикла ;
ИмяФайлаЗагрузки = "D:\А-Б.xml" ;
ОбработкаОбмен. ВыполнитьЗагрузку( ИмяФайлаЗагрузки) ;
ИмяФайлаВыгрузки = "D:\Б-А.xml" ;
ОбработкаОбмен. ВыполнитьВыгрузку( ИмяФайлаВыгрузки) ;
КонецПроцедуры
Процедура ВыбПериодНажатие(Элемент)
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода. РедактироватьКакИнтервал = Истина ;
НастройкаПериода. РедактироватьКакПериод = Истина ;
НастройкаПериода. ВариантНастройки = ВариантНастройкиПериода. Период;
НастройкаПериода. УстановитьПериод( НачПериода, ? ( КонПериода= '0001 - 01 - 01 ', КонПериода, КонецДня( КонПериода) ) ) ;
Если НастройкаПериода. Редактировать( ) Тогда
НачПериода = НастройкаПериода. ПолучитьДатуНачала( ) ;
КонПериода = НастройкаПериода. ПолучитьДатуОкончания( ) ;
КонецЕсли ;
КонецПроцедуры
Процедура ПриОткрытии()
НачПериода = ТекущаяДата( ) ;
КонПериода = ТекущаяДата( ) ;
КонецПроцедуры
Процедура ЗаполнитьТабЧастьОбъектом(Запрос,ОбъектЗапроса,ТЗ)
Запрос. Текст = "ВЫБРАТЬ
| ОбъектЗапроса.Ссылка
|ИЗ
| Документ." + ОбъектЗапроса+ " КАК ОбъектЗапроса
|ГДЕ
| ОбъектЗапроса.ПометкаУдаления = ЛОЖЬ И
| ОбъектЗапроса.Дата МЕЖДУ &ДатаНач И &ДатаКон" ;
Запрос. УстановитьПараметр( "ДатаНач" , НачалоДня( НачПериода) ) ;
Запрос. УстановитьПараметр( "ДатаКон" , КонецДня( КонПериода) ) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
НоваяСтрока = ТЗ. Добавить( ) ;
НоваяСтрока. Дата = Выборка. Ссылка. Дата;
НоваяСтрока. Документ = Выборка. Ссылка;
КонецЦикла ;
КонецПроцедуры
Процедура ЗаполнитьНажатие(Элемент)
ТабДокументы. Очистить( ) ;
ТЗ = Новый ТаблицаЗначений;
ТЗ. Колонки. Добавить( "Дата" ) ;
ТЗ. Колонки. Добавить( "Документ" ) ;
Запрос = Новый Запрос;
Если флРеализация Тогда
ОбъектЗапроса = "РеализацияТоваровУслуг" ;
ЗаполнитьТабЧастьОбъектом( Запрос, ОбъектЗапроса, ТЗ) ;
КонецЕсли ;
Если флПоступление Тогда
ОбъектЗапроса = "ПоступлениеТоваровУслуг" ;
ЗаполнитьТабЧастьОбъектом( Запрос, ОбъектЗапроса, ТЗ) ;
КонецЕсли ;
Если флТребованиеНакладная Тогда
ОбъектЗапроса = "ТребованиеНакладная" ;
ЗаполнитьТабЧастьОбъектом( Запрос, ОбъектЗапроса, ТЗ) ;
КонецЕсли ;
ТЗ. Сортировать( "Дата" ) ;
Для Каждого Стр Из ТЗ Цикл
НоваяСтрока = ТабДокументы. Добавить( ) ;
НоваяСтрока. Документ = Стр. Документ;
НоваяСтрока. ФлагВыгружать = Истина ;
КонецЦикла ;
КонецПроцедуры
Категория:
Конвертация данных, Обмен, Перенос Поиск в базе битых ссылок - "объект не найден" В статье
Битая ссылка, <Объект не найден>, Уникальный Идентификатор, GUID мы обсуждали как востановить битые ссылки!
А вот как найти в базе все битые ссылки, которые имеют вид типа "<Объект не найден> (137:8b270030482898d011daad3cc45fc830)"?
Для поиска этого была написана данная обработка:
Скачивать файлы может только зарегистрированный пользователь!
Для поиска: Выбираем объекты метаданных , которые хотим проверить, жмем кнопочку "Выполнить" и наблюдаем в таблице выходные данные. Откуда можем попасть в объекты-источники.
Для программиста:
Код 1C v 8.х Процедура КнопкаВыполнитьНажатие(Кнопка)
ИспользоватьОграничение = ЗначениеЗаполнено( ОграничениеТипов) ;
РезультатПоиска. Очистить( ) ;
Для Каждого ОбъектыМетаданных Из КоллекцияОбъектов Цикл
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
Состояние( ОбъектМетаданных. ПолноеИмя( ) ) ;
ПроверитьОбъектНаБитыеСсылки( ОбъектМетаданных) ;
КонецЦикла ;
КонецЦикла ;
Для Каждого ОбъектыМетаданных Из КоллекцияРегистров Цикл
Для Каждого ОбъектМетаданных Из ОбъектыМетаданных Цикл
Состояние( ОбъектМетаданных. ПолноеИмя( ) ) ;
ПроверитьРегистрНаБитыеСсылки( ОбъектМетаданных) ;
КонецЦикла ;
КонецЦикла ;
КонецПроцедуры
Процедура ВывестиДанные(ТекстЗапроса)
Запрос = Новый Запрос( ТекстЗапроса) ;
Попытка
РезультатЗапроса = Запрос. Выполнить( ) ;
Если Не РезультатЗапроса. Пустой( ) Тогда
ТЗ = РезультатЗапроса. Выгрузить( ) ;
Для Каждого Стр Из ТЗ Цикл
ОбработкаПрерыванияПользователя( ) ;
Строка = РезультатПоиска. Добавить( ) ;
ЗаполнитьЗначенияСвойств( Строка, Стр) ;
КонецЦикла ;
КонецЕсли ;
Исключение
Сообщить( ИнформацияОбОшибке( ) . Описание + " " + ИнформацияОбОшибке( ) . Причина) ;
КонецПопытки ;
КонецПроцедуры
Процедура ПроверитьРегистрНаБитыеСсылки(ОбъектМетаданных)
ИмяТаблицы = ОбъектМетаданных. ПолноеИмя( ) ;
Если Метаданные. РегистрыСведений. Содержит( ОбъектМетаданных) Тогда
Если ОбъектМетаданных. РежимЗаписи = НезависимыйРежимЗаписи Тогда
Возврат ;
КонецЕсли ;
АнализСвойствРегистра( ОбъектМетаданных, ОбъектМетаданных. Реквизиты, ИмяТаблицы) ;
КонецЕсли ;
АнализСвойствРегистра( ОбъектМетаданных, ОбъектМетаданных. Измерения, ИмяТаблицы) ;
АнализСвойствРегистра( ОбъектМетаданных, ОбъектМетаданных. Реквизиты, ИмяТаблицы) ;
АнализРегистратораРегистра( ОбъектМетаданных, ИмяТаблицы) ;
Если Метаданные. РегистрыБухгалтерии. Содержит( ОбъектМетаданных) Тогда
КонецЕсли ;
Если Метаданные. РегистрыРасчета. Содержит( ОбъектМетаданных) Тогда
КонецЕсли ;
КонецПроцедуры
Процедура ПроверитьОбъектНаБитыеСсылки(ОбъектМетаданных)
ИмяТаблицы = ОбъектМетаданных. ПолноеИмя( ) ;
АнализСвойствОбъекта( ОбъектМетаданных, ОбъектМетаданных. Реквизиты, ИмяТаблицы) ;
Для Каждого ТабЧасть Из ОбъектМетаданных. ТабличныеЧасти Цикл
Если ТабличныеЧастиИсключения. Найти( ТабЧасть. Имя) < > Неопределено Тогда
Продолжить;
КонецЕсли ;
АнализСвойствОбъекта( ОбъектМетаданных, ТабЧасть. Реквизиты, ИмяТаблицы + "." + ТабЧасть. Имя)
КонецЦикла ;
Если Метаданные. Справочники. Содержит( ОбъектМетаданных) И ОбъектМетаданных. Владельцы. Количество( ) > 0 Тогда
МассивВладельцев = Новый Массив;
Для Каждого Элемент Из ОбъектМетаданных. Владельцы Цикл
МассивВладельцев. Добавить( Элемент) ;
КонецЦикла ;
КонецЕсли ;
ОбработкаПрерыванияПользователя( ) ;
КонецПроцедуры
Процедура АнализСвойствОбъекта(ОбъектМетаданных, Свойства, ИмяТаблицы)
Для Каждого Реквизит Из Свойства Цикл
Если РеквизитыИсключения. Найти( Реквизит. Имя) < > Неопределено Тогда
Продолжить;
КонецЕсли ;
Для Каждого моТип Из Реквизит. Тип. Типы( ) Цикл
ТекстЗапроса = "" ;
МетаданныеТипа = Метаданные. НайтиПоТипу( моТип) ;
Если МетаданныеТипа < > Неопределено
И Не Метаданные. Перечисления. Содержит( МетаданныеТипа) Тогда
Если ИспользоватьОграничение Тогда
Если Не ПоискПоТипу( МетаданныеТипа. ПолноеИмя( ) ) Тогда
Продолжить;
КонецЕсли ;
КонецЕсли ;
ДобавитьВЗапросОбъект( ТекстЗапроса, ОбъектМетаданных, ИмяТаблицы, Реквизит. Имя, моТип) ;
КонецЕсли ;
Если Не ПустаяСтрока( ТекстЗапроса) Тогда
ВывестиДанные( ТекстЗапроса) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
КонецПроцедуры
Процедура АнализСвойствРегистра(ОбъектМетаданных, Свойства, ИмяТаблицы)
Для Каждого Реквизит Из Свойства Цикл
Если РеквизитыИсключения. Найти( Реквизит. Имя) < > Неопределено Тогда
Продолжить;
КонецЕсли ;
Для Каждого моТип Из Реквизит. Тип. Типы( ) Цикл
ТекстЗапроса = "" ;
МетаданныеТипа = Метаданные. НайтиПоТипу( моТип) ;
Если МетаданныеТипа < > Неопределено
И Не Метаданные. Перечисления. Содержит( МетаданныеТипа) Тогда
Если ИспользоватьОграничение Тогда
Если Не ПоискПоТипу( МетаданныеТипа. ПолноеИмя( ) ) Тогда
Продолжить;
КонецЕсли ;
КонецЕсли ;
ДобавитьВЗапросРегистр( ТекстЗапроса, ОбъектМетаданных, ИмяТаблицы, Реквизит. Имя, моТип) ;
КонецЕсли ;
Если Не ПустаяСтрока( ТекстЗапроса) Тогда
ВывестиДанные( ТекстЗапроса) ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
КонецПроцедуры
Процедура АнализРегистратораРегистра(ОбъектМетаданных, ИмяТаблицы)
МассивРегистраторов = ПолучитьСписокРегистраторов( ОбъектМетаданных) ;
Для Каждого Регистратор Из МассивРегистраторов Цикл
Если РеквизитыИсключения. Найти( "Регистратор" ) < > Неопределено Тогда
Продолжить;
КонецЕсли ;
моТип = Регистратор;
ТекстЗапроса = "" ;
МетаданныеТипа = Метаданные. НайтиПоТипу( моТип) ;
Если МетаданныеТипа < > Неопределено
И Не Метаданные. Перечисления. Содержит( МетаданныеТипа) Тогда
Если ИспользоватьОграничение Тогда
Если Не ПоискПоТипу( МетаданныеТипа. ПолноеИмя( ) ) Тогда
Продолжить;
КонецЕсли ;
КонецЕсли ;
ДобавитьВЗапросРегистр( ТекстЗапроса, ОбъектМетаданных, ИмяТаблицы, "Регистратор" , моТип) ;
КонецЕсли ;
Если Не ПустаяСтрока( ТекстЗапроса) Тогда
ВывестиДанные( ТекстЗапроса) ;
КонецЕсли ;
КонецЦикла ;
КонецПроцедуры
Функция ПолучитьСписокРегистраторов(ОбъектМетаданных)
МассивРегистраторов = Новый Массив;
МенеджерОбъект = ПолучитьМенеджерОбъекта( ОбъектМетаданных) ;
Если МенеджерОбъект < > Неопределено Тогда
НаборЗаписей = МенеджерОбъект. СоздатьНаборЗаписей( ) ;
ЭлементОтбора = НаборЗаписей. Отбор. Регистратор;
МассивРегистраторов = ЭлементОтбора. ТипЗначения. Типы( ) ;
КонецЕсли ;
Возврат МассивРегистраторов;
КонецФункции
Функция ПолучитьМенеджерОбъекта(ОбъектМетаданных)
Перем МенеджерОбъекта;
Если Метаданные. РегистрыБухгалтерии. Содержит( ОбъектМетаданных) Тогда
МенеджерОбъекта = РегистрыБухгалтерии[ОбъектМетаданных. Имя];
ИначеЕсли Метаданные. РегистрыНакопления. Содержит( ОбъектМетаданных) Тогда
МенеджерОбъекта = РегистрыНакопления[ОбъектМетаданных. Имя];
ИначеЕсли Метаданные. РегистрыСведений. Содержит( ОбъектМетаданных) Тогда
МенеджерОбъекта = РегистрыСведений[ОбъектМетаданных. Имя];
ИначеЕсли Метаданные. РегистрыРасчета. Содержит( ОбъектМетаданных) Тогда
МенеджерОбъекта = РегистрыРасчета[ОбъектМетаданных. Имя];
КонецЕсли ;
Возврат МенеджерОбъекта;
КонецФункции
Функция ПоискПоТипу(ИмяТипа)
Результат = Ложь ;
Если ИспользоватьОграничение Тогда
МассивСтрок = ОграничениеТипов. НайтиСтроки( Новый Структура( "ТипДанных" , ИмяТипа) ) ;
Если ЗначениеЗаполнено( МассивСтрок) Тогда
Результат = Истина ;
КонецЕсли ;
КонецЕсли ;
Возврат Результат;
КонецФункции
Процедура ДобавитьВЗапросРегистр(ТекстЗапроса, ОбъектМетаданных, ИмяТаблицы, ИмяРеквизита, ТипРеквизита)
Текст = "ВЫБРАТЬ Об." + ИмяРеквизита + " КАК Объект,
| "" " + ИмяТаблицы + "." + ИмяРеквизита + """ КАК ТаблицаИсточник,
| Об.Регистратор КАК ОбъектИсточник,
| " + ДобавитьОписаниеТипа( ИмяРеквизита, ТипРеквизита) + "
|ИЗ
| " + ИмяТаблицы + " КАК Об
|ГДЕ " + ДобавитьУсловия( ИмяРеквизита, ТипРеквизита) ;
ТекстЗапроса = ТекстЗапроса + ? ( ПустаяСтрока( ТекстЗапроса) , "" , Символы. ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы. ПС) + Текст;
КонецПроцедуры
Процедура ДобавитьВЗапросОбъект(ТекстЗапроса, ОбъектМетаданных, ИмяТаблицы, ИмяРеквизита, ТипРеквизита)
Текст = "ВЫБРАТЬ Об." + ИмяРеквизита + " КАК Объект,
| "" " + ИмяТаблицы + "." + ИмяРеквизита + """ КАК ТаблицаИсточник,
| Об.Ссылка КАК ОбъектИсточник,
| " + ДобавитьОписаниеТипа( ИмяРеквизита, ТипРеквизита) + "
|ИЗ
| " + ИмяТаблицы + " КАК Об
|ГДЕ " + ДобавитьУсловия( ИмяРеквизита, ТипРеквизита) ;
ТекстЗапроса = ТекстЗапроса + ? ( ПустаяСтрока( ТекстЗапроса) , "" , Символы. ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы. ПС) + Текст;
КонецПроцедуры
Функция ДобавитьУсловия(ИмяРеквизита, ТипРеквизита)
мдОбъекта = Метаданные. НайтиПоТипу( ТипРеквизита) ;
ИмяТаблицы = мдОбъекта. ПолноеИмя( ) ;
ПроверкаНаПустыеЗначения = " Об." + ИмяРеквизита + " ССЫЛКА " + ИмяТаблицы;
ПроверкаНаПустыеЗначения = ПроверкаНаПустыеЗначения + " И ВЫРАЗИТЬ(Об." + ИмяРеквизита + " КАК " + ИмяТаблицы + ").Ссылка есть null" ;
Если Не Метаданные. Перечисления. Содержит( мдОбъекта) Тогда
ПроверкаНаПустыеЗначения = ПроверкаНаПустыеЗначения + " И Об." + ИмяРеквизита + " <> Значение(" + ИмяТаблицы + ".ПустаяСсылка)" ;
КонецЕсли ;
Возврат ПроверкаНаПустыеЗначения;
КонецФункции
Функция ДобавитьОписаниеТипа(ИмяРеквизита, ТипРеквизита)
ОбъектТипа = Метаданные. НайтиПоТипу( ТипРеквизита) ;
ИмяТаблицы = ОбъектТипа. ПолноеИмя( ) ;
ОписаниеТипа = """ " + ИмяТаблицы + """ КАК ТипДанных" ;
Возврат ОписаниеТипа;
КонецФункции
Процедура ОграничениеТиповТипДанныхНачалоВыбора(Элемент, СтандартнаяОбработка)
Перем ЭлементСписка;
СтандартнаяОбработка = Ложь ;
Строка = ЭлементыФормы. ОграничениеТипов. ТекущиеДанные;
Если Не ПустаяСтрока( Строка. ТипДанных) Тогда
ЭлементСписка = СписокТипов. НайтиПоЗначению( Строка. ТипДанных) ;
КонецЕсли ;
ВыбранныйЭлемент = СписокТипов. ВыбратьЭлемент( , ЭлементСписка) ;
Если ВыбранныйЭлемент < > Неопределено Тогда
Строка. ТипДанных = ВыбранныйЭлемент. Значение;
КонецЕсли ;
КонецПроцедуры
РеквизитыИсключения = Новый Массив;
ТабличныеЧастиИсключения = Новый Массив;
СписокТипов = Новый СписокЗначений;
Для Каждого ОбъектМетаданных Из Метаданные. Справочники Цикл
СписокТипов. Добавить( ОбъектМетаданных. ПолноеИмя( ) , ОбъектМетаданных. Имя, , БиблиотекаКартинок. СправочникОбъект) ;
КонецЦикла ;
Для Каждого ОбъектМетаданных Из Метаданные. Документы Цикл
СписокТипов. Добавить( ОбъектМетаданных. ПолноеИмя( ) , ОбъектМетаданных. Имя, , БиблиотекаКартинок. ДокументОбъект) ;
КонецЦикла ;
КоллекцияОбъектов = Новый Массив;
КоллекцияОбъектов. Добавить( Метаданные. ПланыОбмена) ;
КоллекцияОбъектов. Добавить( Метаданные. Справочники) ;
КоллекцияОбъектов. Добавить( Метаданные. Документы) ;
КоллекцияОбъектов. Добавить( Метаданные. ПланыВидовХарактеристик) ;
КоллекцияОбъектов. Добавить( Метаданные. ПланыСчетов) ;
КоллекцияОбъектов. Добавить( Метаданные. ПланыВидовРасчета) ;
КоллекцияОбъектов. Добавить( Метаданные. БизнесПроцессы) ;
КоллекцияОбъектов. Добавить( Метаданные. Задачи) ;
КоллекцияРегистров = Новый Массив;
КоллекцияРегистров. Добавить( Метаданные. РегистрыСведений) ;
КоллекцияРегистров. Добавить( Метаданные. РегистрыНакопления) ;
КоллекцияРегистров. Добавить( Метаданные. РегистрыБухгалтерии) ;
КоллекцияРегистров. Добавить( Метаданные. РегистрыРасчета) ;
Категория:
1С Общие вопросы - Обычные формы Как изменить, присвоить, указать Тип Значения Ячейки табличной части? Создаем табличную часть и в ней реквизит с разными типами значений:
Код 1C v 8.х
НовСтрока = ТабЧасть. Добавить( ) ;
НовСтрока. РеквизитПроизвольный = 12345 ;
НовСтрока = ТабЧасть. Добавить( ) ;
НовСтрока. РеквизитПроизвольный = "Это строка" ;
НовСтрока = ТабЧасть. Добавить( ) ;
НовСтрока. РеквизитПроизвольный = ТекущаяДата( ) ;
НовСтрока = ТабЧасть. Добавить( ) ;
НовСтрока. РеквизитПроизвольный = Истина ;
НайденСтрока = ТабЧасть. Найти( "Это строка" , "РеквизитПроизвольный" ) ;
НайденСтрока. РеквизитПроизвольный = ТекущаяДата( ) ;
Счет = ПланыСчетов. Хозрасчетный. ТоварыНаСкладе;
НайденСтрока = ТабЧасть. Найти( 12345 , "РеквизитПроизвольный" ) ;
Субконото1 = Счет. ВидыСубконто[1 ];
НайденСтрока. РеквизитПроизвольный = Субконото1 . ВидСубконто. ТипЗначения. ПривестиЗначение( ) ;
Категория:
Работа с Типами данных Как при выборе элемента справочника сделать отображение любого реквизита, а не код и наименование? Порой бывают ситуации когда необходимо выбрать в табличном поле элемента справочника, но отобразить его не как код или наименование, а как значение какого-либо реквизита!
НО Представление справочника это либо Код, либо Наименование и другого никак не выбрать - пойдем в обход добавив в ТабЧасть отдельный Реквизит(с типом строка, число, дата и т.д) и при выборе справочника запишем туда значение любого реквизита этого справочника!
Вот примеры реализации этого:
Вариант 1 (Создаем два реквизита Контрагент и ИНН):
И при выборе Контрагента, в колонке ИНН должно появится ИНН этого контрагента!
1. Создаем в Табличной части два Реквизита:
а. Наименование = СправочникСсылка.Контрагенты
б. ИНН = Строка 12 символов
2. После размещения этих реквизитов в табличной части на форме заходим в Свойства колонки Наименование
Добавляем Событие ПриИзменении и пишем в нем:
Код 1C v 8.х
Процедура ТабЧастьНаименованиеПриИзменении(Элемент)
ЭлементыФормы. ТабЧасть. ТекущаяСтрока. ИНН = Элемент. Значение. ИНН;
КонецПроцедуры
3. Сохраняем, проверям, наблюдаем
Вариант 2 (Создаем Один реквизит КПП и при нажатии на кнопку выбор должен открыться справочник контрагентов, далее выбрав контрагента, в поле должно попасть его КПП):
1. Создаем в Табличной части Реквизит:
КПП = Строка 9 символов
2. После размещения реквизита в табличной части на форме заходим в его Свойства
а. В разделе
Использование :
Ставим галочку - Кнопка Выбора
б. В разделе
События :
Добавляем НачалоВыбора и пишем код:
Код 1C v 8.х Процедура ТабЧастьКППНачалоВыбора(Элемент, СтандартнаяОбработка)
СпрКонтрагент = Справочники. Контрагенты. ПолучитьФормуВыбора( , ЭтаФорма) ;
СпрКонтрагент. Заголовок = "Выберите Поставщика:" ;
Выбор = СпрКонтрагент. ОткрытьМодально( ) ;
Элемент. Значение = Выбор. КПП;
КонецПроцедуры
3. Теперь щелкнув в колонке КПП, появится кнопка выбора |...|, нажав которую откроется справочник Контрагентов и выбрав Контрагента в поле появится его КПП.
Автор:
Мигачев Евгений Категория:
Справочники Как сделать чтобы при удалении строки в табличном поле, появлялся вопрос? Необходимо чтобы в табличной части при попытке удалить строку, возникал вопрос "Вы уверены?"
Код 1C v 8.х
Процедура ТабЧастьПередУдалением(Элемент, Отказ)
Режим = РежимДиалогаВопрос. ДаНет;
Ответ = Вопрос( "ВЫ УВЕРЕНЫ???" + Символы. ПС+ "Хотите УДАЛИТЬ строку " + Строка( Элемент. ТекущиеДанные. Физлицо) + "?" , Режим, 0 ) ;
Если НЕ Ответ = КодВозвратаДиалога. Да Тогда
Отказ = Истина ;
КонецЕсли ;
КонецПроцедуры
Категория:
Документы