|
Обработка "Загрузка данных из табличного документа" | ☑ | ||
|---|---|---|---|---|
|
0
CrazyProg
30.01.11
✎
11:32
|
Добрый день.
Начал осваивать обработка "Загрузка данных из табличного документа" Сталкнулся с проблемой: Загружаю данные из экселя в спр.Номенклатура Заполняються все реквизиты кроме Единицы хранения остатков. Я понимаю что при ее заполнении нужно использовать выражанение, вопрос: что в этом выражение должно быть написано |
|||
|
1
1cnik2
30.01.11
✎
11:46
|
что за конфа? в модуле объекта в при записи разве нет кода, который создает единицу и заполняет поле?
|
|||
|
2
DimG
30.01.11
✎
11:48
|
Автоматом не получится, надо там в событиях понаписАть еще руками создание этой единицы.
|
|||
|
3
CrazyProg
30.01.11
✎
11:48
|
Торговля 10.3
платформа 8.2 |
|||
|
4
CrazyProg
30.01.11
✎
11:49
|
(2) вот я про то и говорю что нужно дописать, вот только что?
|
|||
|
5
DimG
30.01.11
✎
11:51
|
(4) Что вы как первый год замужем. Элементарного сообразить не можете. Смотрим как создается эта единица при записи номенклатуры, копируем и адаптируем код для обработки. Там есть события, туда практически один в один вставляем этот код.
|
|||
|
6
1cnik2
30.01.11
✎
11:55
|
(5) ну так-то она сама должна создаваться в УТ, при записи, если ее нет, на основании заполненой базовой единицы
конфы нет, поэтому посмотреть, создается она, или нет, не могу попробуй ничего не писать и не ставить галку загрузки реквизита |
|||
|
7
DimG
30.01.11
✎
11:57
|
(6) Она создается при записи из формы. А из формы не обрабатывает при программной записи.
|
|||
|
8
CrazyProg
30.01.11
✎
11:59
|
СпрКлассЕдОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
СпрКлассЕдОбъект.Наименование = СокрЛП(ТекстыЯчеек[2]); СпрКлассЕдОбъект.Записать(); СпрКлассЕд = СпрКлассЕдОбъект.Ссылка; Во как... |
|||
|
9
CrazyProg
30.01.11
✎
11:59
|
Единственное просит указать владельца
|
|||
|
10
КнОпка
30.01.11
✎
12:02
|
(8) а поискать? вдруг уже такой элемент есть в справочнике?
|
|||
|
11
CrazyProg
30.01.11
✎
12:03
|
(10) элемент та есть, только там нужно чтоб родител другой был?
|
|||
|
12
КнОпка
30.01.11
✎
12:03
|
(11) не помню, этот справочник не подчиненный разве?
|
|||
|
13
DimG
30.01.11
✎
12:04
|
(8) Записывать нужно в СОБЫТИЯ, а не в формулу вычислить. Там в обработке этой, есть события. Там есть Объект который и будет владелец. Внимательней смотрим, внимательней блин.
|
|||
|
14
1cnik2
30.01.11
✎
12:05
|
(7) ну если в форме, то придется писать самому :)
а вообще, конечно, вопрос на двоечку |
|||
|
15
CrazyProg
30.01.11
✎
12:06
|
(13) хорошо буду внимательнее
|
|||
|
16
CrazyProg
30.01.11
✎
12:10
|
СпрКлассЕдОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
// на счет этой строки сомневаюсь СпрКлассЕдОбъект.Владелец = Объект.Ссылка; С ней или без нее выдает сообщение: Значение поля "Владелец" не заполнено или заполнено неверно СпрКлассЕдОбъект.Наименование = СокрЛП(ТекстыЯчеек[2]); СпрКлассЕдОбъект.Записать(); Результат = СпрКлассЕдОбъект.Ссылка; Весь код вставил в событие обработки |
|||
|
17
DimG
30.01.11
✎
12:12
|
(16) Просто объект
|
|||
|
18
1cnik2
30.01.11
✎
12:13
|
(16) правильно говорит, потому что в тот момент, когда СпрКлассЕдОбъект.Владелец = Объект.Ссылка;
Объект еще не записан.. |
|||
|
19
CrazyProg
30.01.11
✎
12:13
|
(17)остовляю просто объект выдает туже ошибку
|
|||
|
20
DimG
30.01.11
✎
12:13
|
(18) Так ведь там разные события есть :), и после записи тоже :).
|
|||
|
21
CrazyProg
30.01.11
✎
12:15
|
(20) у меня только "перед" и "при"
|
|||
|
22
1cnik2
30.01.11
✎
12:15
|
запиши Объект перед заполнением владельца единицы, это проще всего
еще есть ПолучитьСсылкуНового(), как то так называется |
|||
|
23
CrazyProg
30.01.11
✎
12:17
|
(22) ок все получилось
|
|||
|
24
CrazyProg
30.01.11
✎
12:17
|
Объект.Записать();
СпрКлассЕдОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); СпрКлассЕдОбъект.Владелец = Объект.Ссылка; СпрКлассЕдОбъект.Наименование = СокрЛП(ТекстыЯчеек[2]); СпрКлассЕдОбъект.Записать(); Результат = СпрКлассЕдОбъект.Ссылка; |
|||
|
25
CrazyProg
30.01.11
✎
12:18
|
Всем спасибо что помогли!!!
|
|||
|
26
DimG
30.01.11
✎
12:18
|
(21) Да? Странна, как же у меня получалось то. Не помню за давностью. Лан, щас гляну что там у меня написано, так и быть.
|
|||
|
27
DimG
30.01.11
✎
12:20
|
Событие ПослеДобавленияСтроки
|
|||
|
28
1cnik2
30.01.11
✎
12:21
|
(25) сомневаюсь, что ты таки все правильно сделал..
где заполнение поля коэффициента? классификатора единицы? и правильно говорили, делать надо было в обработчике, а не в формуле вычисления поля! |
|||
|
29
1cnik2
30.01.11
✎
12:22
|
посмотри, как форме записывается единица, и скопируй 1 в 1
|
|||
|
30
DimG
30.01.11
✎
12:25
|
Так и быть, дарю свой хлеб :). Событие ПриЗаписиОбъекта
Если НЕ ЗначениеЗаполнено(Объект.ЕдиницаХраненияОстатков) Тогда ВыборкаЕдиниц = Справочники.ЕдиницыИзмерения.Выбрать(, Объект.Ссылка); Если ВыборкаЕдиниц.Следующий() Тогда НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка; Иначе НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); НайденнаяЕдиницаОбъект.Наименование = СокрЛП(Объект.БазоваяЕдиницаИзмерения); НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = Объект.БазоваяЕдиницаИзмерения; НайденнаяЕдиницаОбъект.Коэффициент = 1; НайденнаяЕдиницаОбъект.Владелец = Объект.Ссылка; Попытка НайденнаяЕдиницаОбъект.Записать(); Исключение Сообщить("Не удалось записать единицу хранения остатков: " + ОписаниеОшибки(), СтатусСообщения.Важное); Отказ = Истина; КонецПопытки; НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка; КонецЕсли; Объект.ЕдиницаХраненияОстатков = НайденнаяЕдиница; Объект.ЕдиницаДляОтчетов = НайденнаяЕдиница; КонецЕсли; |
|||
|
31
1cnik2
30.01.11
✎
12:28
|
(30) а если он уже насоздавал там единиц с пустым классификатором и коэффициентом?
|
|||
|
32
DimG
30.01.11
✎
12:29
|
(31) Ну что могу сказать, его база :). Пусть набивает шишки.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |