|
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 Цикл -- ничего нет, сразу переходит на конец цикла... ( и как с этим боротся?)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |