|   |   | 
| 
 | v7: тис 9.2 правильность указания базовой и основной единицы | ☑ | ||
|---|---|---|---|---|
| 0
    
        Gavrinev 02.02.12✎ 15:23 | 
        ТИС 9.2 (7.70.954) Пишу загрузку эл. накл. из тхт файла.
  Загружается нормально, в спр номенклатура при просмотре не указана единица??? Далее при формировании документа продажа, при подборе выскакивает сообщение: В подборе выбрана единица другого элемента справочника Номенклатура. Проверьте правильность указания базовой и основной единицы для элемента "Деталь № 1", а также правильность указания единиц измерения в справочниках единиц и цен для данной позиции номенклатуры. [code] Для Инд = 1 По Тхт.КоличествоСтрок()-1 цикл Состояние(Инд); СЗ.УдалитьВсе(); СТ=Тхт.ПолучитьСтроку(Инд); СЗ.ИзСтрокиСРазделителями(Ст); Тов=ПроверитьАналог(СЗ.ПолучитьЗначение(1),СЗ.ПолучитьЗначение(2),СЗ.ПолучитьЗначение(10)); Если Спн.НайтиПоКоду(Тов.Код)=1 Тогда // установка новых цен **************************************************** СпЦены.ИспользоватьВладельца(Спн.ТекущийЭлемент()); СпЦены.ВыбратьЭлементы(); СпЦены.Новый(); Если СпВал.НайтиПоКоду("810")=1 Тогда спЦены.Валюта = СпВал.ТекущийЭлемент(); КонецЕсли; СпЦены.Записать(); СпЕд.ИспользоватьВладельца(Спн.ТекущийЭлемент()); СпЕд.ВыбратьЭлементы(); СпЕд.Новый(); Если СпОКЕИ.НайтиПоКоду("778")=1 Тогда СпЕд.ОКЕИ = СпОКЕИ.ТекущийЭлемент(); КонецЕсли; СпЕд.Коэффициент = 1; СпЕд.ШтрихКод = СЗ.ПолучитьЗначение(10); СпЕд.Записать(); Спн.БазоваяЕдиница = СпЕд.ТекущийЭлемент(); Спн.ОсновнаяЕдиница = СпЕд.ТекущийЭлемент(); спЦены.Процент = 0; Если СпТипыЦен.НайтиПоКоду("00004")=1 Тогда спЦены.ТипЦен = СпТипыЦен.ТекущийЭлемент(); СпЦены.Записать(); СпЦены.Цена.Установить(ТекущаяДата(),СЗ.ПолучитьЗначение(9)); КонецЕсли; Спн.Артикул = СЗ.ПолучитьЗначение(10); Спн.Весовой = 0; //Если ПустоеЗначение(Спн.ВидНоменклатуры)=1 Тогда Спн.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Прочее; //КонецЕсли; Спн.ПолнНаименование = СЗ.ПолучитьЗначение(1); //Спн.СтавкаНДС = ПолучитьСтавкуНДС(); Спн.Записать(); // данные по партии ******************************************************* СпПарт.ИспользоватьВладельца(Спн.ТекущийЭлемент()); СпПарт.ВыбратьЭлементы(); СпПарт.Новый(); СпПарт.ПриходныйДокумент = Док.ТекущийДокумент(); СпПарт.Поставщик = ВыбКлиент; СпПарт.ЗакупочнаяЦена = СЗ.ПолучитьЗначение(6); СпПарт.РозничнаяЦена = СЗ.ПолучитьЗначение(9); СпПарт.Записать(); док.НоваяСтрока(); док.ВидТМЦ = Перечисление.ВидыТМЦ.Товар; док.номенклатура = Спн.ТекущийЭлемент(); док.Партия = спПарт.ТекущийЭлемент(); док.Единица = СпЕд.ТекущийЭлемент(); док.Коэффициент = 1; док.Количество = СЗ.ПолучитьЗначение(5); док.Цена = СЗ.ПолучитьЗначение(9); глПересчетТаблЧасти(док,"Номенклатура"); глПересчетТаблЧасти(док,"Количество"); КонецЕсли; КонецЦикла; СуммаВзаиморасчетов = Док.Итог("Сумма") +?(Док.СуммаВклНП =1,0,Док.Итог("СуммаНП" )) +?(Док.СуммаВклНДС=1,0,Док.Итог("СуммаНДС")); Док.СуммаВзаиморасчетов = глПересчет (СуммаВзаиморасчетов,Док.Валюта,Док.Курс,глРубли,Док.ДатаДок,Док.Кратность); Док.Записать(); [code] В инете на эту тему сказано - несоответствие товара с единицой и патрией, но в отладчике проверял все норм... Просьба подсказать в чем может быть причина... | |||
| 1
    
        Gavrinev 02.02.12✎ 16:10 | 
        Люди пажалуста, помогите... HELP !!!     | |||
| 2
    
        Дядя Васька 02.02.12✎ 16:20 | 
        Вместо:     | |||
| 3
    
        Дядя Васька 02.02.12✎ 16:20 | 
        СпЕд.ИспользоватьВладельца(Спн.ТекущийЭлемент());
  СпЕд.ВыбратьЭлементы(); СпЕд.Новый(); | |||
| 4
    
        Дядя Васька 02.02.12✎ 16:20 | 
        Пиши 
  СпЕд.Новый(); СпЕд.Владелец = Спн.ТекущийЭлемент(); | |||
| 5
    
        Дядя Васька 02.02.12✎ 16:24 | 
        СпЕд.ВыбратьЭлементы(); нафик не нужно, так же с ценами и партиями.     | |||
| 6
    
        Gavrinev 02.02.12✎ 16:26 | 
        Понял, щас буду пробовать... Спасибо.     | |||
| 7
    
        miki 02.02.12✎ 16:30 | 
        (4)Есть разница?     | |||
| 8
    
        Gavrinev 02.02.12✎ 16:30 | 
        (2,3,4,5) выдает ошибку 
  СпЕд.Записать(); {D:\ЗАГРУЗКАНАКЛДАНЫХ.ERT(85)}: Не выбран элемент справочника-хозяина! Элемент не может быть записан! Я вообщето думал что сначала нада использовать владельца а потом новый() ??? | |||
| 9
    
        Ёпрст гуру 02.02.12✎ 16:36 | 
        (0) Это че за бред ?
  СпЕд.ВыбратьЭлементы(); СпЕд.Новый(); Нужно всего лишь Использовать владельца, потом проверить, нет ли же созданной единицы в спраочнике, выбрав её по рекизиту ОКЕИ, ...и ежели не найдена - только тогда создавать новый элемент | |||
| 10
    
        aka AMIGO 02.02.12✎ 16:37 | 
        (0)ты своим вот этим:
  СпЕд.ИспользоватьВладельца(Спн.ТекущийЭлемент()); СпЕд.ВыбратьЭлементы(); СпЕд.Новый(); //?????? .... СпЕд.Записать(); загрузишь много-много ненужных элементов, после чего на мисте будет тема: кака избавиться от лишних? ИМХО, конечно.. я-б лучше применил Если СпЕд.ВыбратьЭлементы()=0 Тогда //тогда уж СпЕд.Новый(); Иначе Если СпЕд.Найти....=0 Тогда //условие поиска подобного элемента в спр СпЕд.Новый(); ... КонецЕсли; ведь у тебя только 2 типа единиц должно быть для элемента номенклатуры? ЗЫ. дел хозяйское.. возможно, ошибаюсь.. тогда прошу простить покорно.. | |||
| 11
    
        Gavrinev 02.02.12✎ 16:39 | 
        (10) Огромное спасибо буду пробовать..     | |||
| 12
    
        Дядя Васька 02.02.12✎ 17:58 | 
        (7) Сначала задает владельца, потом нового создает. Хз выбран он там или нет. Наоборот как-то логичнее все же.     | |||
| 13
    
        Gavrinev 03.02.12✎ 09:18 | 
        (12) Странно что логика не работает ???
  (10) Создал цикл, посмотреть есть-ли вообще элементы, так вообще ничего нет... [code] СпЕд.ИспользоватьВладельца(Спн.ТекущийЭлемент()); СпЕд.ВыбратьЭлементы()=1 Тогда //тогда уж Пока СпЕд.ПолучитьЭлемент()=1 Цикл Если СпЕд.Владелец = Спн.ТекущийЭлемент() Тогда СпЕд.ТекущийЭлемент(); КонецЕсли; КонецЦикла; [code] Может в чем другом дело? | |||
| 14
    
        aka AMIGO 04.02.12✎ 12:35 | 
        (13) дело всё в том-же..
  Для справочника Спн твой справочник СпЕд - подчиненный. оператором: СпЕд.ИспользоватьВладельца(Спн.ТекущийЭлемент()); ты устанавливаешь фильтр по подчинению записей СпЕд одной записи Владельца-номенклатуры. Если после этого СпЕд.ВыбратьЭлементы()=0, то в СпЕд выбранному владельцу не подчинено НИЧЕГО, единиц измерения для Владельца-номенклатуры в БД нет! Иначе было-бы: СпЕд.ВыбратьЭлементы()=1 вот в (10) я и написал 2 проверки в условиях "Если" 1. первое "Если": проверка подчиненных элементов, если их нет - создается СпЕд.Новый() 2. второе "Если": - поскольку ВыбратьЭлементы вернула "1", то элементы есть, надо проверить среди них наличие нужного, т.е. поискать по условию (9) - по ОКЕИ, или перебрать в цикле Пока СпЕи.ПолучитьЭлемент()=1, проверяя условием равенство искомому ОКЕИ Если по ОКЕИ элемент (единицаИзм) не найден - создается СпЕд.Новый() вот примерно это и написано в (10). если внимательно разберешь - должно помочь обращайся, если чё.. | |||
| 15
    
        Gavrinev 07.02.12✎ 13:20 | 
        (14) Как раз у меня проблема в том что при проверке СпЕд.ВыбратьЭлементы()=1, а при переборе Пока СпЕд.ПолучитьЭлемент()=1 Цикл -- ничего нет, сразу переходит на конец цикла... ( и как с этим боротся?)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |