Имя: Пароль:
1C
1С v8
документ поступление товаров и справочник номенклатура
,
0 GENN
 
02.07.14
18:10
Процедура ШтрихКодПриИзменении(Элемент)
    
    //Добавление строки в табличную часть по штрихкоду
    Строка = Справочники.Номенклатура.НайтиПоРеквизиту("ШтрихКод",ШтрихКод);
        
    Поиск = Новый Структура("Номенклатура",Строка);
    Массив = Товары.НайтиСтроки(Поиск);
    Если Массив.Количество()>0 Тогда
        НоваяСтрока = Массив[0];    
    Иначе
        НоваяСтрока = ДокументОбъект.Товары.Добавить();
        НоваяСтрока.Код = Строка.Код;
        НоваяСтрока.Артикул = Строка.Артикул;
        НоваяСтрока.КодНаш = Строка.КодНаш;
        НоваяСтрока.ШтрихКод = Строка.ШтрихКод;
        НоваяСтрока.Номенклатура = Строка;
        НоваяСтрока.ЦенаЗакупки = Строка.ЦенаЗакупки;
        НоваяСтрока.ЦенаПродажи = Строка.ЦенаРозница;            
    КонецЕсли;
    //Выделяем строку
    ЭлементыФормы.Товары.ТекущаяСтрока = НоваяСтрока;    
    ЭлементыФормы.Товары.РежимВыделенияСтроки = РежимВыделенияСтрокиТабличногоПоля.Строка;
    
    //открываем карточку товара    
    Если НЕ ПустаяСтрока(Строка) Тогда                        
        ПараметрыФормы = Новый Структура("Ключ", Строка);
        //ПолучитьФорму(  
        ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта",ПараметрыФормы,ЭлементыФормы.Товары);                
    Иначе           
        ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта",);        
    КонецЕсли;
    
    //ТоварыОбработкаВыбора(Элемент, Строка, );
    
    //НоваяСтрока.Количество = НоваяСтрока.Количество + 1;    
    НовоеКоличество = 0;
    ВвестиЧисло(НовоеКоличество,"Введите количество");
    НоваяСтрока.Количество = НоваяСтрока.Количество + НовоеКоличество;
    
    НоваяСтрока.СуммаЗакупки = НоваяСтрока.Количество * Строка.ЦенаЗакупки;
    НоваяСтрока.СуммаПродажи = НоваяСтрока.Количество * Строка.ЦенаРозница;
    Количество = Товары.Итог("Количество");
    СуммаЗакупки = Товары.Итог("СуммаЗакупки");
    СуммаПродажи = Товары.Итог("СуммаПродажи");
    
    ШтрихКод = "";
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ШтрихКод;    
КонецПроцедуры


как сделать так чтобы при заполнении пустой карточки и сохранении её в табличну часть документа попадали кроме количества и остальные реквизиты? сейчас при открытии и заполнении пустой карточки добавляется только количество
1 GENN
 
02.07.14
18:14
1С 8,2 обычное приложение (обычные формы)
2 GENN
 
03.07.14
14:26
Помогите пожалуйста разобраться
3 catena
 
03.07.14
14:40
Может проверять Строка на пустоту до заполнения реквизитов?
4 GENN
 
03.07.14
16:42
Переделал так

ШтрихКодПриИзменении(Элемент)
    
    //Добавление строки в табличную часть по штрихкоду
    Строка = Справочники.Номенклатура.НайтиПоРеквизиту("ШтрихКод",ШтрихКод);
    
    //открываем карточку товара    
    Если НЕ ПустаяСтрока(Строка) Тогда                        
        ПараметрыФормы = Новый Структура("Ключ", Строка);           
        ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта",ПараметрыФормы,ЭлементыФормы.Товары);                
    Иначе           
        ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта",ПараметрыФормы,ЭлементыФормы.Товары);                
    КонецЕсли;
    
    Поиск = Новый Структура("Номенклатура",Строка);
    Массив = Товары.НайтиСтроки(Поиск);
    Если Массив.Количество()>0 Тогда
        НоваяСтрока = Массив[0];    
    Иначе
        НоваяСтрока = ДокументОбъект.Товары.Добавить();
        НоваяСтрока.Код = Строка.Код;
        НоваяСтрока.Артикул = Строка.Артикул;
        НоваяСтрока.КодНаш = Строка.КодНаш;
        НоваяСтрока.ШтрихКод = Строка.ШтрихКод;
        НоваяСтрока.Номенклатура = Строка;
        НоваяСтрока.ЦенаЗакупки = Строка.ЦенаЗакупки;
        НоваяСтрока.ЦенаПродажи = Строка.ЦенаРозница;            
    КонецЕсли;
    //Выделяем строку
    ЭлементыФормы.Товары.ТекущаяСтрока = НоваяСтрока;    
    ЭлементыФормы.Товары.РежимВыделенияСтроки = РежимВыделенияСтрокиТабличногоПоля.Строка;
            
    НовоеКоличество = 0;
    ВвестиЧисло(НовоеКоличество,"Введите количество");
    НоваяСтрока.Количество = НоваяСтрока.Количество + НовоеКоличество;
    
    НоваяСтрока.СуммаЗакупки = НоваяСтрока.Количество * Строка.ЦенаЗакупки;
    НоваяСтрока.СуммаПродажи = НоваяСтрока.Количество * Строка.ЦенаРозница;
    Количество = Товары.Итог("Количество");
    СуммаЗакупки = Товары.Итог("СуммаЗакупки");
    СуммаПродажи = Товары.Итог("СуммаПродажи");
    
    ШтрихКод = "";
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ШтрихКод;    
КонецПроцедуры
5 GENN
 
03.07.14
16:43
и так

ШтрихКодПриИзменении(Элемент)
    
    //Добавление строки в табличную часть по штрихкоду
    Строка = Справочники.Номенклатура.НайтиПоРеквизиту("ШтрихКод",ШтрихКод);
            
    Поиск = Новый Структура("Номенклатура",Строка);
    Массив = Товары.НайтиСтроки(Поиск);
    Если Массив.Количество()>0 Тогда
        ПараметрыФормы = Новый Структура("Ключ", Строка);           
        ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта",ПараметрыФормы,ЭлементыФормы.Товары);                
        НоваяСтрока = Массив[0];    
    Иначе
        ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта",ПараметрыФормы,ЭлементыФормы.Товары);                
        НоваяСтрока = ДокументОбъект.Товары.Добавить();
        НоваяСтрока.Код = Строка.Код;
        НоваяСтрока.Артикул = Строка.Артикул;
        НоваяСтрока.КодНаш = Строка.КодНаш;
        НоваяСтрока.ШтрихКод = Строка.ШтрихКод;
        НоваяСтрока.Номенклатура = Строка;
        НоваяСтрока.ЦенаЗакупки = Строка.ЦенаЗакупки;
        НоваяСтрока.ЦенаПродажи = Строка.ЦенаРозница;            
    КонецЕсли;
    //Выделяем строку
    ЭлементыФормы.Товары.ТекущаяСтрока = НоваяСтрока;    
    ЭлементыФормы.Товары.РежимВыделенияСтроки = РежимВыделенияСтрокиТабличногоПоля.Строка;
            
    //ТоварыОбработкаВыбора(Элемент, Строка, );
    
    //НоваяСтрока.Количество = НоваяСтрока.Количество + 1;    
    НовоеКоличество = 0;
    ВвестиЧисло(НовоеКоличество,"Введите количество");
    НоваяСтрока.Количество = НоваяСтрока.Количество + НовоеКоличество;
    
    НоваяСтрока.СуммаЗакупки = НоваяСтрока.Количество * Строка.ЦенаЗакупки;
    НоваяСтрока.СуммаПродажи = НоваяСтрока.Количество * Строка.ЦенаРозница;
    Количество = Товары.Итог("Количество");
    СуммаЗакупки = Товары.Итог("СуммаЗакупки");
    СуммаПродажи = Товары.Итог("СуммаПродажи");
    
    ШтрихКод = "";
    ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.ШтрихКод;    
КонецПроцедуры


но ничего не изменилось
6 GENN
 
03.07.14
17:24
у кого ещё какие варианты есть?
7 catena
 
03.07.14
17:43
Строка = Справочники.Номенклатура.НайтиПоРеквизиту("ШтрихКод",ШтрихКод);
Если НЕ ПустаяСтрока(Строка) Тогда                        

Мне почему-то кажется, что это ЕСЛИ не сработает никогда....
8 GENN
 
03.07.14
18:08
нет это Если как раз работает потому что если штрихкод есть то открывается карточка заполненная а если нет то пустая                      


а варианте(5) уже без этого Если и всё равно поведение не изменилось от начального
9 GENN
 
03.07.14
18:11
Хорошо вопрос по другому

как в документе перехватить событие при нажатии ОК в карточке товара (в Справочник.ФормаЭлемента)?
10 catena
 
03.07.14
19:04
Ня.
Всё заполняется. Только вот где гарантия, что пользователь в эту новую номенклатуру не введет совсем другой штрихкод?

    Строка = Справочники.Номенклатура.НайтиПоРеквизиту("ШтрихКод",ШтрихКод);
        
     Если НЕ ПустаяСтрока(Строка) Тогда                        
        ПараметрыФормы = Новый Структура("Ключ", Строка);
        //ПолучитьФорму(  

        ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта",ПараметрыФормы,ЭлементыФормы.Товары);                
    Иначе          
        Ном = Справочники.Номенклатура.СоздатьЭлемент();
        Ф = Ном.ПолучитьФорму();
        Ф.ОткрытьМодально();
        Строка = Ном.Ссылка;
    КонецЕсли;
    
    Поиск = Новый Структура("Номенклатура",Строка);
    Массив = Товары.НайтиСтроки(Поиск);
    Если Массив.Количество()>0 Тогда
        НоваяСтрока = Массив[0];    
    Иначе
        НоваяСтрока = Товары.Добавить();
        НоваяСтрока.Код = Строка.Код;
        НоваяСтрока.ШтрихКод = Строка.ШтрихКод;
        НоваяСтрока.Номенклатура = Строка;
    КонецЕсли;
11 Мимохожий Однако
 
03.07.14
19:34
(0)Конфигурация самописная? Посмотри как в типовых сделано, например в УТ10
12 GENN
 
03.07.14
20:54
(10) да согласен через ссылку надёжнее СПАСИБО
ТЕМА ЗАКРЫТА