|
Записать Элемент Справочника | ☑ | ||
---|---|---|---|---|
0
myr4ik07
04.01.15
✎
00:11
|
Использую обработку Загрузка данных из табличного документа для загрузки Элементов Справочника.
Данные загружаются но что бы заполнилась информация Единица измерения нужно открывать и нажимать Ок на каждом объекте Справочника (открыв форму справочника, нажал ок, закрылась форма в итоге единица измерения заполнилось "шт"). так вот есть много объектов справочника , решил "открыть, закрыть" выполнить с помощью данного кода Процедура КнопкаВыполнитьНажатие(Кнопка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель", Группа); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбСпр = ВыборкаДетальныеЗаписи.Ссылка; Форма = ОбСпр.ПолучитьОбъект(); Форма.Записать(); КонецЦикла; КонецПроцедуры но "шт." так и не заполняются Пробовал ... Форма = ОбСпр.ПолучитьФорму(); Форма.Закрыть(); ... тоже нет результата |
|||
1
Dmitry1c
04.01.15
✎
00:19
|
Единица измерения вроде как подчиненный справочник для справочника номенклатуры.
Там надо скорее всего написать код, который будет создавать на каждый элемент справочника единицу измерения и уже заполнять её. Так будет правильнее. |
|||
2
Фокусник
04.01.15
✎
00:19
|
(0) включи замер производительности, выполни интерактивно действие, выключи замер, анализируй выполнившийся код
|
|||
3
myr4ik07
04.01.15
✎
00:21
|
(1) у меня в обработке Загрузка данных из табличного документа ед. измерения заполняются таким кодом
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ТекущиеДанные["Номенклатура"]); Результат=СсылкаНоменклатуры.ЕдиницаХраненияОстатков; и он выполняется удачно и работает, но только после того когда я открою и закрою каждый обьект номенклатуры |
|||
4
Фокусник
04.01.15
✎
00:26
|
(3) при интерактивном открытии/записи единица измерения заполняется другим (типовым) кодом, а не твоим. Вычислить этот код можно, например, выполнив действия в (2)
|
|||
5
myr4ik07
04.01.15
✎
00:34
|
(4) попробую разобраться, да, типовый механизм лезет куда то в другие процедуры для записи, наверное там загвоздка, а может проще отключить стандартные обработки в это коде?
|
|||
6
13_Mult
04.01.15
✎
08:03
|
(0) Надо было свой код в обработке "Загрузка данных из табличного документа " вставить по созданию ед. изм.
Теперь ищи с пустыми и пиши отдельно. |
|||
7
iceman2112
04.01.15
✎
08:57
|
(5) Нет не проще, там 5 строк
|
|||
8
Мимохожий Однако
04.01.15
✎
10:27
|
В разных конфигурациях по-разному хранятся единицы измерения. А какая конфигурация так никто и не догадался.
|
|||
9
myr4ik07
04.01.15
✎
15:39
|
УТП для Украины 1.2
|
|||
10
myr4ik07
04.01.15
✎
16:08
|
(2) а чем отличается включение замера производительности от Отладки? Точнее Точке останова?
|
|||
11
myr4ik07
04.01.15
✎
16:21
|
(6) ну так кодом
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ТекущиеДанные["Номенклатура"]); Результат=СсылкаНоменклатуры.ЕдиницаХраненияОстатков; и создается ед. измерения но они только тогда показываются на форме когда вручную открываю и закрываю форму |
|||
12
Фокусник
04.01.15
✎
16:51
|
(10) Точку останова ставят когда уже известно какой код нужно "остановить".
Замер производительности (кроме прямого назначения - измерить производительность) еще имеет второе назначение: определить код, который выполняется (ведь он может быть разбросан по разным обработчикам событий, по разным подпискам на события). |
|||
13
myr4ik07
04.01.15
✎
16:55
|
в итоге нашел код в гинтернетах
Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.БазоваяЕдиницаИзмерения, | ЕдиницыИзмерения.Ссылка КАК ЕдиницаИзмерения |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения | ПО Номенклатура.Ссылка = ЕдиницыИзмерения.Владелец | И Номенклатура.БазоваяЕдиницаИзмерения = ЕдиницыИзмерения.ЕдиницаПоКлассификатору |ГДЕ | Номенклатура.ЭтоГруппа = ЛОЖЬ | И Номенклатура.ЕдиницаХраненияОстатков = &ПустаяЕдиница | И НЕ Номенклатура.БазоваяЕдиницаИзмерения = &ПустаяЕдиницаКл"; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ПустаяЕдиница",Справочники.ЕдиницыИзмерения.ПустаяСсылка()); Запрос.УстановитьПараметр("ПустаяЕдиницаКл",Справочники.КлассификаторЕдиницИзмерения.ПустаяСсылка()); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); КоличествоСтрок = Выборка.Количество(); НачатьТранзакцию(); КоличествоОбработанных = 0; Пока Выборка.Следующий() Цикл ОбработкаПрерыванияПользователя(); КоличествоОбработанных = КоличествоОбработанных + 1; Если ЗначениеЗаполнено(Выборка.ЕдиницаИзмерения) Тогда НайденнаяЕдиница = Выборка.ЕдиницаИзмерения.Ссылка; Иначе НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); НайденнаяЕдиницаОбъект.Наименование = Выборка.БазоваяЕдиницаИзмерения.Наименование; НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Выборка.БазоваяЕдиницаИзмерения; НайденнаяЕдиницаОбъект.Коэффициент = 1; НайденнаяЕдиницаОбъект.Владелец = Выборка.Ссылка; НайденнаяЕдиницаОбъект.Записать(); НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка; КонецЕсли; Объект = Выборка.Ссылка.ПолучитьОбъект(); Объект.ЕдиницаХраненияОстатков = НайденнаяЕдиница; Объект.ЕдиницаДляОтчетов = НайденнаяЕдиница; Объект.Записать(); Если КоличествоОбработанных = 200 Тогда // промежуточную транзакцию закрываем и открываем новую ЗафиксироватьТранзакцию(); НачатьТранзакцию(); КоличествоОбработанных = 0; КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); код работоспособный |
|||
14
myr4ik07
04.01.15
✎
16:56
|
(12) вот спасибо, да, такое тоже мне было нужно, попробую и "замер производительности"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |