Вход | Регистрация

1С:Предприятие ::

Метки:

Вопрос по справочнику

Я
   Relis
 
15.03.04 - 15:38
Что за фигня такая? Программно создаю элемент справочника "Номенклатура", заполняю все реквизиты тоже программно, потом создаю документ например продажи и заполняю его только что созданными номенклатурами тоже прораммно, но только документ не проводится, так как не видит в номеклатуре тип товара. Открываю справочник, тип товара есть, жму окей, и потом документ всё видит и проводится. Я в замешательстве, что делать помогите!
 
 
   shura
 
1 - 15.03.04 - 15:42
Где-то Спр.Записать не в том месте стоит. Код давай, глянем.
   Vol71
 
2 - 15.03.04 - 15:43
какую ошибку пишет?
   Vol71
 
3 - 15.03.04 - 15:43
+(1)давай код
   Relis
 
4 - 15.03.04 - 15:56
ИмпортируемыеПоля.ВыбратьСтроки();
    Пока ИмпортируемыеПоля.ПолучитьСтроку() = 1 Цикл 
        
        Если ИмпортируемыеПоля.Идентификатор = "СтавкаНДС" Тогда  
            
           //Ставку НДС считаем в отдельную переменную, обработаем позже

            СтавкаНДС = ПолучитьЗначениеИзТекущейСтроки(ЗначенияПолей);
            Если ПустоеЗначение(СтавкаНДС) = 1 Тогда
                СтавкаНДС = глЗначениеПоУмолчанию("ОсновнаяСтавкаНДС");
            Иначе 
                Если ПреобразоватьКтипу(СтавкаНДС, ИмпортируемыеПоля.Тип, ИмпортируемыеПоля.Вид) = 0 Тогда
                    Сообщить("Неверное значение поля """+ СокрЛП(ИмпортируемыеПоля.ПолноеНазвание) + """.","!");
                    Возврат -1;
                КонецЕсли;
                
            КонецЕсли; 
            
            Объект.СтавкаНДС.Установить(РабочаяДата(),СтавкаНДС);
                
        ИначеЕсли ИмпортируемыеПоля.Идентификатор = "СтавкаНП" Тогда  
            
           //Ставку НП считаем в отдельную переменную, обработаем позже

            СтавкаНП = ПолучитьЗначениеИзТекущейСтроки(ЗначенияПолей);
            Если ПустоеЗначение(СтавкаНП) = 1 Тогда
                СтавкаНП = глЗначениеПоУмолчанию("ОсновнаяСтавкаНП");
            Иначе 
                Если ПреобразоватьКтипу(СтавкаНП, ИмпортируемыеПоля.Тип, ИмпортируемыеПоля.Вид) = 0 Тогда
                    Сообщить("Неверное значение поля """+ СокрЛП(ИмпортируемыеПоля.ПолноеНазвание) + """.","!");
                    Возврат -1;
                КонецЕсли;
                
            КонецЕсли; 
              
            Объект.СтавкаНП.Установить(РабочаяДата(),СтавкаНП);  
                
        ИначеЕсли ИмпортируемыеПоля.Идентификатор = "ЕдиницаИзмерения" Тогда  
            
            ЕдиницаИзмерения = ПолучитьЗначениеИзТекущейСтроки(ЗначенияПолей);
            Если ПустоеЗначение(ЕдиницаИзмерения) = 1 Тогда
                ЕдиницаИзмерения = Константа.ОсновнаяЕдиницаИзмерения;
            Иначе 
                Если ПреобразоватьКтипу(ЕдиницаИзмерения, ИмпортируемыеПоля.Тип, ИмпортируемыеПоля.Вид) = 0 Тогда
                    Сообщить("Неверное значение поля """+ СокрЛП(ИмпортируемыеПоля.ПолноеНазвание) + """.","!");
                    Возврат -1;
                КонецЕсли;
                
            КонецЕсли; 
            
            Объект.УстановитьАтрибут(ИмпортируемыеПоля.Идентификатор, ЕдиницаИзмерения);
            
        ИначеЕсли ИмпортируемыеПоля.Идентификатор = "ГТД" Тогда  
            
            СтрГТД = ПолучитьЗначениеИзТекущейСтроки(ЗначенияПолей);
            Если ПустоеЗначение(СтрГТД) = 1 Тогда
                Продолжить;
            ИначеЕсли ПреобразоватьКтипу(СтрГТД, ИмпортируемыеПоля.Тип, ИмпортируемыеПоля.Вид) = 0 Тогда 
                ГТД.Новый();
                ГТД.Наименование = СтрГТД;
                ГТД.Записать();
            КонецЕсли;    
            Объект.ГТД.Установить(РабочаяДата(),СтрГТД); 
            
        ИначеЕсли ИмпортируемыеПоля.Идентификатор = "ТипТовара" Тогда 
            
            ТипТовара = ПолучитьЗначениеИзТекущейСтроки(ЗначенияПолей); 
            Если ПустоеЗначение(ТипТовара) = 1 Тогда  
                Продолжить;
            ИначеЕсли ПреобразоватьКтипу(ТипТовара, ИмпортируемыеПоля.Тип, ИмпортируемыеПоля.Вид) = 1 Тогда
                Объект.УстановитьАтрибут(ИмпортируемыеПоля.Идентификатор, ТипТовара);
            КонецЕсли;  
            
        ИначеЕсли ИмпортируемыеПоля.Идентификатор = "ВидНоменклатуры" Тогда 
            
            ВидНоменклатуры = ПолучитьЗначениеИзТекущейСтроки(ЗначенияПолей); 
            Если ПустоеЗначение(ВидНоменклатуры) = 1 Тогда  
                Продолжить;
            ИначеЕсли ПреобразоватьКтипу(ВидНоменклатуры, ИмпортируемыеПоля.Тип, ИмпортируемыеПоля.Вид) = 1 Тогда
                Объект.УстановитьАтрибут(ИмпортируемыеПоля.Идентификатор, ВидНоменклатуры);
            КонецЕсли;     
        Иначе
            Если Найти(СтрокаИсключений, ИмпортируемыеПоля.Идентификатор) > 0 Тогда// Исключения пропускаем   

                Если ИмпортируемыеПоля.Идентификатор = "Товар" Тогда
                Иначе    
                    Продолжить; 
                КонецЕсли;    
            КонецЕсли; 
            ОсновноеСвойство = ПолучитьЗначениеИзТекущейСтроки(ЗначенияПолей);  
            Если ПреобразоватьКтипу(ОсновноеСвойство, ИмпортируемыеПоля.Тип, ИмпортируемыеПоля.Вид) = 1 Тогда 
                ВДок.УстановитьАтрибут(ИмпортируемыеПоля.Идентификатор,ОсновноеСвойство);
                Продолжить;            
            КонецЕсли;    
        КонецЕсли;    
    КонецЦикла; 
    
   //    

    Попытка   
        Объект.Записать();
    Исключение
        Сообщить(ОписаниеОшибки(),"!");
        Возврат -1;
    КонецПопытки; 
   //    

    Возврат Результат;
   Relis
 
5 - 15.03.04 - 15:57
Если Вопрос("Зафиксировать изменения?",
        "Да+Нет", 60)="Да" Тогда 
            ТаблЗнач = СоздатьОбъект("ТаблицаЗначений"); 
            ВДок.ВыгрузитьТабличнуюЧасть(ТаблЗнач);
            Если ВДок.Вид() = "ПоступлениеМатериалов" Тогда
                ТаблЗнач.Свернуть("Материал","Количество,Цена,Сумма");
            Иначе    
                ТаблЗнач.Свернуть("Товар,Цена,ГТД","Количество");
            КонецЕсли; 
            ВДок.ЗагрузитьТабличнуюЧасть(ТаблЗнач);
            ВДок.ВыбратьСтроки();
            Пока ВДок.ПолучитьСтроку() = 1 Цикл 
                ВДок.Сумма = ВДок.Количество * ВДок.Цена; 
                ВДок.ГТД = ВДок.Товар.ГТД.Получить(РабочаяДата());
            КонецЦикла;    
            ВДок.Записать();             
            ЗафиксироватьТранзакцию();  
            Параметр = СоздатьОбъект("СписокЗначений");
            Параметр.Установить("ВидОтгрузки", 1);
            ОткрытьФорму(ВДок.ТекущийДокумент(),Параметр,0)
        Иначе
            ОтменитьТранзакцию();
        КонецЕсли;
   Relis
 
6 - 15.03.04 - 15:58
И при проведении документа пишет что тип товара не определен
   Кое-кто@где-то.там
7 - 15.03.04 - 17:09
Проверь, как работает ПолучитьЗначениеИзТекущейСтроки и ПреобразоватьКТипу для Перечислений ...
И на будущее - не надо вываливать весь код - только относящийся к делу - уважай людей, которые будут это читать ...


Список тем форума
Рекламное место пустует   Рекламное место пустует
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует