Имя: Пароль:
1C
1С v8
Изменение группы номенклатуры в ТЧ Документа Поступление Товаров и Услуг
,
0 tabarigen
 
24.07.15
17:05
Конфигурация 1С-Рарус: Управление аптекой (1.50.25.01). Платформа 8.2.
При проведении документа поступление товаров в УА, номенклатура попадает в группу медикаменты. Как мне позволить пользователю самому выбирать в какую группу будет попадать товары из ТЧ документа.

Ясно дело, что нужно повесить обработчик события, пройтись по ТЧ циклом и сменить у строк, Номенклатура.Родитель.Ссылка.

Вопрос в следующем. Может есть какое либо штатное средство предписанное в конфигурации для выбора группы. Если такой возможности нет, то в каком обработчике события править код, ПередЗаписью?
Для выбора группы можно ли обойтись ДопРеквизитами или обязательно добавлять реквизит на форму?
1 Рэйв
 
24.07.15
17:41
У тебя при проведении меняется Родитель???

...
Куда катится мир.
2 kcdnb
 
24.07.15
18:41
Нариман, вы не из Москвы?
3 tabarigen
 
24.07.15
21:15
(1) Простите за терминологию. Наверное не так выразился.

При оприходовании товара, можно ведь сделать так,  чтоб весь товар присваился определенной группе номенклатуры. Именно этоя имел ввиду.

(2) К счастью нет.
4 tabarigen
 
27.07.15
09:58
Подскажите пожалуйста.
На форме создал реквизит Справочник.номеклатура и в свойствах поставил Выборку.Групп.

В модуле документа ПоступлениеТоваров прописал следующий код:

    Если ГруппаНоменклатуры <> Неопределено Тогда
        Для каждого СтрокаТЧ Из ЭтотОбъект.Товары Цикл
        
            СтрокаТЧ.Номенклатура.Родитель = ГруппаНоменклатуры;
        
        КонецЦикла;                                                      
        
    
    КонецЕсли;


При записи выдается ошибка

{Документ.ПоступлениеТоваров.Форма.ФормаДокумента.Форма(675)}: Поле объекта недоступно для записи (Родитель)
            СтрокаТЧ.Номенклатура.Родитель = ГруппаНоменклатуры;


Это типичная ошибка новичка. А как будет правильно изменить строкиТЧ документа?
5 Metman
 
27.07.15
10:06
Чтобы у объекта что-то изменить, нужно его сначала получить.
6 tabarigen
 
27.07.15
10:18
Из Модуля объекта я не могу разве его получить??
7 hhhh
 
27.07.15
10:18
(4) это вы не строку меняете, а саму номенклатуру. Это очень опасно. НАпример это номенклатура у вас была в 1000 документов за предыдущие несколько лет. И эти документы вдруг чудесным образом все сразу поменяются. Да вас прользователи за это живьем без лопаты закопают в асфальт.
8 tabarigen
 
27.07.15
10:38
(5) Попробовал получить ссылку, ошибка та же

Док = ЭтотОбъект.Ссылка;
    Если ГруппаНоменклатуры <> Неопределено Тогда
        Для каждого СтрокаТЧ Из Док.Товары Цикл
        
            СтрокаТЧ.Номенклатура.Родитель = ГруппаНоменклатуры;
        
        КонецЦикла;                                                      
        
    
    КонецЕсли;


(7) Я собственноэто и пытаюсь сделать. Нужно номенклатуру которая приходуется помещать в выбранную юзверем группу.
9 tabarigen
 
27.07.15
11:05
Док = ЭтотОбъект.Ссылка;

По моему ошибка в том что неправильно получил объект.
Метода ПолучитьОбъект() у свойства ЭтотОбъект нету. Как же быть
10 Metman
 
27.07.15
11:08
Вам нужно получить текущий элемент номенклатуры, изменить родителя и записать его.
11 tabarigen
 
27.07.15
11:08
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ЭтотОбъект (ThisObject)
Использование:

Только чтение.
Описание:

Тип: ДокументОбъект.
Содержит сам объект базы данных. Предназначено, в основном, для получения данного объекта встроенного языка в модуле объекта или модуле формы.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).


СП тоже говорит что, ЭтотОбъект только для чтения доступен.
12 tabarigen
 
27.07.15
11:09
(10) Текущий элемент я вроде получаю.
при отладке при наведении он высвечивается при наведении.
13 Tarlich
 
27.07.15
11:12
Док = ЭтотОбъект.Ссылка;
    Если ГруппаНоменклатуры <> Неопределено Тогда
        Для каждого СтрокаТЧ Из Док.Товары Цикл
        спр = СтрокаТЧ.Номенклатура.ПолучитьОбъект();
спр.Родитель =ГруппаНоменклатуры;
спр.Записать()

        
        КонецЦикла;                                                      
        
    
    КонецЕсли;
14 Альбатрос
 
27.07.15
11:13
Для каждого СтрокаТЧ Из Док.Товары Цикл
            ТекОбъект = СтрокаТЧ.Номенклатура.ПолучитьОбъект();
            ТекОбъект.Родитель = ГруппаНоменклатуры;
Попытка
ТекОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;      
        КонецЦикла;
15 tabarigen
 
27.07.15
11:29
(13), (14) Спасибо большое. Получилось.

    Док = ЭтотОбъект.Ссылка;
    Если ГруппаНоменклатуры <> Неопределено Тогда
        Для каждого СтрокаТЧ Из Док.Товары Цикл
            ТекОбъект = СтрокаТЧ.Номенклатура.ПолучитьОбъект();
            ТекОбъект.Родитель = ГруппаНоменклатуры;
            Попытка
                ТекОбъект.Записать();
            Исключение
                Сообщить(ОписаниеОшибки());
            КонецПопытки;
        КонецЦикла;                                                          
    КонецЕсли;
16 tabarigen
 
27.07.15
11:56
Кстати парни ГруппаНоменклатуры <> Неопределено это есть тоже самое что и ГруппаНоменклатуры.Пустая()??
17 Альбатрос
 
27.07.15
12:06
(16) Юзай ЗначениеЗаполнено()
18 Альбатрос
 
27.07.15
12:06
(16) нет
19 tabarigen
 
27.07.15
12:27
Если ГруппаНоменклатуры = ЗначениеЗаполнено(Справочники.Номенклатура.Ссылка) Тогда

Так??
20 tabarigen
 
27.07.15
12:27
ГруппаНоменклатуры.Пустая() вроде норм отрабатывает без ошибок.
21 hhhh
 
27.07.15
12:37
Если ЗначениеЗаполнено(ГруппаНоменклатуры) Тогда
22 tabarigen
 
27.07.15
13:00
(21) спасибо. Так и в самом деле логичнее и читабельнее.