|
v7: проблема с "полное наполнение" | ☑ | ||
---|---|---|---|---|
0
Fanat26
22.08.11
✎
08:46
|
Здравствуйте, в 1с v7 Торговля и склад, в справочнике цен делаю полное наполнение по группе товаров, проходит расчет остатков--и останавливается на такой ошибке
[code]Документ = ДвижениеРегистраОстатков № 105 от 31.12.09 Если Запрос.Товар=Док1.Товар {Справочник.Цены3.ФормаСписка.ФормаСписка.Модуль(1190)}: Поле агрегатного объекта не обнаружено (Товар)[/code] Подскажите в чем проблема пожалуйста?! |
|||
1
povar
22.08.11
✎
08:48
|
кода запроса
|
|||
2
ДенисЧ
22.08.11
✎
08:48
|
1. что такое "полное наполнение"?
2. строки документа кто будет перебирать? |
|||
3
Godofsin
22.08.11
✎
08:49
|
в том,что у Док1 нет реквизита "Товар"?
|
|||
4
andrewks
22.08.11
✎
08:55
|
Документ = ДвижениеРегистраОстатков № 105 от 31.12.09
это чьи-до дописки. откель нам знать, чё там? код давай |
|||
5
Fanat26
22.08.11
✎
09:08
|
как правильно скинуть код?? просто он большой!
|
|||
6
andrewks
22.08.11
✎
09:10
|
можешь уже не скидывать. я тут протелепатировал, и диагноз таков: в ДвижениеРегистраОстатков нет реквизита Товар.
|
|||
7
Злопчинский
22.08.11
✎
09:12
|
ищи корявенькие ручки, бо в типовой ТиС в документах нет реквизита "Товар", фигурирует в типовом составе "Номенклатура"... пистаели, блин...
|
|||
8
Godofsin
22.08.11
✎
09:28
|
Справочник.Цены3
По ходу, есть еще 2 справочника с ценами =) |
|||
9
povar
22.08.11
✎
09:30
|
(8) на каждый вид цен - свой справочник, суровые челябинские 1Сники
|
|||
10
Fanat26
22.08.11
✎
11:26
|
че то не сильно понятно, пока новичек..((
|
|||
11
Fanat26
22.08.11
✎
11:26
|
Перем КвоГруппировок, КвоРесурсов;
Перем Запрос, ИмяРегистра; Процедура СвернутьВзаиморасчеты() ТЗ = СоздатьОБъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(Тз); ТЗ.Свернуть("Измерение1,Измерение2,Измерение3","Ресурс1"); УдалитьСТроки(); ЗагрузитьТабличнуюЧасть(ТЗ); ВыбратьСТроки(); Пока ПОлучитьСтроку()=1 Цикл Если Ресурс1 = 0 Тогда УдалитьСтроку(); ВыбратьСтроки(); КонецЕсли; КонецЦикла;; ВыбратьСТроки(); Пока ПОлучитьСтроку()=1 Цикл НазначитьТип("Измерение6","Документ"); Измерение6 = ТекущийДокумент(); КонецЦикла;; КонецПроцедуры // =============================== Процедура ПрочитатьСтруктуруРегистра() Если СокрЛП(ИдентификаторРегистра)="" Тогда Возврат; КонецЕсли; ИмяРегистра=СокрЛП(ИдентификаторРегистра); Для Инд=1 По 10 Цикл Измерение=Метаданные.Регистр(ИмяРегистра).Измерение(Инд); Колонка=Форма.ПолучитьАтрибут("Измерение"+Инд); Если Измерение.Выбран()=1 Тогда Колонка.Заголовок(Измерение.Идентификатор); Иначе Колонка.Видимость(0); КонецЕсли; КонецЦикла; Для Инд=1 По 5 Цикл Ресурс=Метаданные.Регистр(ИмяРегистра).Ресурс(Инд); Колонка=Форма.ПолучитьАтрибут("Ресурс"+Инд); Если Ресурс.Выбран()=1 Тогда Колонка.Заголовок(Ресурс.Идентификатор); Иначе Колонка.Видимость(0); КонецЕсли; КонецЦикла; КонецПроцедуры //ПрочитатьСтруктуруРегистра // ====================================== Процедура ПолучитьАтрибуты(Инд,Идентификатор,ИмяТипа,Длина,Точность,Ресурс=0) Если Ресурс=0 Тогда Идентификатор = Метаданные.Регистр(ИмяРегистра).Измерение(Инд).Идентификатор; Тип = Метаданные.Регистр(ИмяРегистра).Измерение(Инд).Тип; Вид = Метаданные.Регистр(ИмяРегистра).Измерение(Инд).Вид; Длина = Метаданные.Регистр(ИмяРегистра).Измерение(Инд).Длина; Точность = Метаданные.Регистр(ИмяРегистра).Измерение(Инд).Точность; Иначе Идентификатор = Метаданные.Регистр(ИмяРегистра).Ресурс(Инд).Идентификатор; Тип = Метаданные.Регистр(ИмяРегистра).Ресурс(Инд).Тип; Вид = Метаданные.Регистр(ИмяРегистра).Ресурс(Инд).Вид; Длина = Метаданные.Регистр(ИмяРегистра).Ресурс(Инд).Длина; Точность = Метаданные.Регистр(ИмяРегистра).Ресурс(Инд).Точность; КонецЕсли; Если СокрЛП(Вид)="" Тогда ИмяТипа=Тип; Иначе ИмяТипа=""+Тип+"."+Вид; КонецЕсли; КонецПроцедуры // ====================================== Процедура ОткрытьГруппировку(Ном) Перем ИмяТипа,Длина,Точность,Идентификатор; Пока Запрос.Группировка(Ном)=1 Цикл Если Ном<КвоГруппировок Тогда НомерГруппировки=Ном+1; ОткрытьГруппировку(НомерГруппировки); Иначе НоваяСтрока(); Состояние("Обработано движений: "+НомерСтроки); Для Инд=1 По КвоГруппировок Цикл ПолучитьАтрибуты(Инд,Идентификатор,ИмяТипа,Длина,Точность,0); НазначитьТип("Измерение"+Инд,ИмяТипа,Длина,Точность); УстановитьАтрибут("Измерение"+Инд,Запрос.ПолучитьАтрибут(Идентификатор)); КонецЦикла; Для Инд=1 По КвоРесурсов Цикл ПолучитьАтрибуты(Инд,Идентификатор,ИмяТипа,Длина,Точность,1); УстановитьАтрибут("Ресурс"+Инд,Запрос.ПолучитьАтрибут("Ост"+Идентификатор)); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры // =============================== Процедура Заполнить(Параметр="") Если КоличествоСтрок()>0 Тогда Если (Вопрос("Удалить строки?","Да+Нет")="Да") или (Параметр<>"") Тогда УдалитьСтроки(); Иначе Возврат; КонецЕсли; КонецЕсли; Если Параметр="" Тогда спРегистры=СоздатьОбъект("СписокЗначений"); _К=Метаданные.Регистр(); Для Инд=1 по _К Цикл ТипРегистра=Метаданные.Регистр(Инд).ТипРегистра; Если ТипРегистра="Остатки" Тогда Синоним=Метаданные.Регистр(Инд).Синоним; Идентификатор=Метаданные.Регистр(Инд).Идентификатор; Представление=?(СокрЛП(Синоним)="",Идентификатор,Синоним); спРегистры.ДобавитьЗначение(Идентификатор,Представление); КонецЕсли; КонецЦикла; Если спРегистры.РазмерСписка()=0 Тогда Предупреждение("В конфигурации не определены регистры остатков",5); Возврат; КонецЕсли; ИмяРегистра=""; Рез=спРегистры.ВыбратьЗначение(ИмяРегистра,"Выбор регистра",,30); Если Рез<>1 Тогда Возврат; КонецЕсли; Иначе ИмяРегистра=Параметр; КонецЕсли; Если Метаданные.Регистр(ИмяРегистра).Выбран()=0 Тогда Сообщить("Неверное имя регистра """+ИмяРегистра+"""","!"); Возврат; КонецЕсли; ИдентификаторРегистра=ИмяРегистра; Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса="Период с ДатаДок по ДатаДок; |"; _К=Метаданные.Регистр(ИмяРегистра).Измерение(); Для Инд=1 По _К Цикл Идентификатор=Метаданные.Регистр(ИмяРегистра).Измерение(Инд).Идентификатор; ТекстЗапроса=""+ТекстЗапроса+Идентификатор+" = Регистр."+ИмяРегистра+"."+Идентификатор+"; |"; КонецЦикла; _К=Метаданные.Регистр(ИмяРегистра).Ресурс(); Для Инд=1 По _К Цикл Идентификатор=Метаданные.Регистр(ИмяРегистра).Ресурс(Инд).Идентификатор; ТекстЗапроса=""+ТекстЗапроса+Идентификатор+" = Регистр."+ИмяРегистра+"."+Идентификатор+"; |"; КонецЦикла; _К=Метаданные.Регистр(ИмяРегистра).Ресурс(); КвоРесурсов=_К; Для Инд=1 По _К Цикл Идентификатор=Метаданные.Регистр(ИмяРегистра).Ресурс(Инд).Идентификатор; ТекстЗапроса=""+ТекстЗапроса+"Функция Ост"+Идентификатор+" = КонОст("+Идентификатор+"); |"; КонецЦикла; _К=Метаданные.Регистр(ИмяРегистра).Измерение(); КвоГруппировок=_К; Для Инд=1 По _К Цикл Идентификатор=Метаданные.Регистр(ИмяРегистра).Измерение(Инд).Идентификатор; ТекстЗапроса=""+ТекстЗапроса+"Группировка "+Идентификатор+" без групп; |"; КонецЦикла; ДатаДок=Мин(ДатаДок,ПолучитьДатуТА()); Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Сообщить("Не выполнился запрос по регистру","!"); Возврат; КонецЕсли; ОткрытьГруппировку(1); ПрочитатьСтруктуруРегистра(); КонецПроцедуры //Заполнить // ====================================== Процедура ПриОткрытии() ПриЗаписиПерепроводить(1); Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда АвтоВремяКонецДня(); Расшифровка=Форма.Параметр; ИмяРегистра=Расшифровка.Получить("ИмяРегистра"); ДатаДок=Расшифровка.Получить("ДатаДок"); Заполнить(ИмяРегистра); Если КоличествоСтрок()>0 Тогда Записать(); КонецЕсли; СтатусВозврата(0); КонецЕсли; ПрочитатьСтруктуруРегистра(); КонецПроцедуры // ====================================== Процедура ВводНового() ДатаДок=Мин(ДатаДок,ПолучитьДатуТА()); КонецПроцедуры Процедура ЗатянутьДокумент() //Перейти ~НеНадоИмпорта; Сообщить("Запущена обработка импорта чеков с касс № 4,5,6"); ИсхБаза=СоздатьОбъект("V77.Application"); ТовИсх=СоздатьОбъект("Справочник"); СпрЦенИсх=СоздатьОбъект("Справочник"); ДокИсх=СоздатьОбъект("Документ"); ИсхБаза.Initialize(ИсхБаза.rmTrade,,"NO_SPLASH_SHOW"); ТовИсх=ИсхБаза.EvalExpr("GetTov()"); СпрЕдИсх=ИсхБаза.EvalExpr("GetEd()"); СпрВалИсх=ИсхБаза.EvalExpr("GetVal()"); СпрСклИсх=ИсхБаза.EvalExpr("GetSkl()"); СпрКлИсх=ИсхБаза.EvalExpr("GetKl()"); СпрФИсх=ИсхБаза.EvalExpr("GetF()"); ДокИсх=ИсхБаза.EvalExpr("GetDoc()"); ДокИсхЧек=ИсхБаза.EvalExpr("GetDocCheck()"); Тов=СоздатьОбъект("Справочник.Номенклатура"); СпрЕд=СоздатьОбъект("Справочник.Единицы"); СпрВал=СоздатьОбъект("Справочник.Валюты"); СпрСкл=СоздатьОбъект("Справочник.МестаХранения"); СпрКл=СоздатьОбъект("Справочник.Контрагенты"); СпрФ=СоздатьОбъект("Справочник.Фирмы"); ДокИсх.ВыбратьДокументы('31/12/2007','31/12/2007'); Пока ДОкисх.ПОлучитьДокумент()=1 Цикл Сообщить(глДОкПОдробно(докИсх)); //Если ДОкИсх.Вид()<>"ДвижениеРегистраОстатков" //ТОгда // Продолжить; //КОнецЕСли; // Если Число(ДОкисх.номерДок) = 100 Тогда Прервать; КонецЕСли; // КонецЦИкла; Сообщить(глДОкПОдробно(докИсх)); А = 1; Б = ДокИсх.КоличествоСТрок(); ДокИсх.ВыбратьСТроки(); Пока ДОкИсх.ПолучитьСтроку()=1 Цикл А = А+1; Состояние(Строка(Б-А)); Тов.НайтиПОКоду(ДокИсх.Измерение2.Код); НоваяСТрока(); НазначитьТип("Измерение2","Справочник.НОменклатура"); Измерение2 = Тов.ТекущийЭлемент(); НазначитьТип("Измерение3","Справочник.КОнтрагенты"); Измерение3 = КОнстанта.ОсновнойПоставщик; НазначитьТип("Измерение4","Документ"); Измерение4=ТекущийДокумент(); Ресурс1 = ДокИсх.Ресурс1; Ресурс2 = ДокИсх.Ресурс2; Ресурс3 = ДокИсх.Ресурс3; КонецЦикла; КонецПроцедуры |
|||
12
Fanat26
22.08.11
✎
11:32
|
вот код ДвижениеРегистраОстатков
|
|||
13
Godofsin
22.08.11
✎
11:39
|
(11)(12)Этот код без надобности, ошибка то не в нем.
Справочник.Цены3.ФормаСписка.ФормаСписка.Модуль(1190)}: Поле агрегатного объекта не обнаружено (Товар). Вот где ошибка, этот код выкладывай, при чем весь не надо, только блок, где ошибка. И что такое "полное наполнение"??? |
|||
14
Fanat26
22.08.11
✎
11:45
|
При нажатии кнопки наполнить, в таблицу попадает цена закупа по последней дате и
вычисляется базовая цена (базовая цена=цена закупа*курс валюты). Показываются товары только имеющиеся на складе. |
|||
15
Fanat26
22.08.11
✎
11:46
|
Модуль(1190)
//РегПарт.ВременныйРасчет(1); Док1.ВыбратьСтроки(); НужнаяСтрока=0; Пока Док1.ПолучитьСтроку()=1 Цикл Если Запрос.Товар=Док1.Товар Тогда НужнаяСтрока=Док1.НомерСтроки; КонецЕсли; КонецЦикла; |
|||
16
povar
22.08.11
✎
11:47
|
(15) зовите специалиста
|
|||
17
Godofsin
22.08.11
✎
11:52
|
(15) Вобщем, диагноз был выше озвучен. ВИдно, что конфа переписанная. Зовите специалиста, без вариантов.
|
|||
18
andrewks
22.08.11
✎
11:53
|
(17) обычно после этого следует фраза ТС: "я и есть приглашённый специалист!" :)
|
|||
19
Злопчинский
22.08.11
✎
12:02
|
ТС могу предложить более приемлемый вариант - зовите специалиста по хотя бы ОБУЧЕНИЮ/КОНСУЛЬТИРОВАНИЮ что и как в ТиС (я и есть специалист! ;-)
. по тем немногим обрывкам что тут есть - представляю, какая веселуха в конфе, а уж в учете... |
|||
20
Fanat26
22.08.11
✎
12:28
|
хочется самому разобраться, спасибо за советы.
|
|||
21
Fanat26
22.08.11
✎
12:32
|
я не специалист, просто только начал разбираться в 1С.
|
|||
22
vladko
22.08.11
✎
12:36
|
причём тут код документа ДвижениеРегистраОстатков?
у тебя в обработке явно написано, что в этом документе компьютер не находит реквизит "товар"! |
|||
23
__Se24
22.08.11
✎
13:01
|
Учиться не так нужно ...
сначала изучаешь базис , потом от него идешь к более сложному а так , незная таблицы умножения , пытаешься решить интеграл ... |
|||
24
Fanat26
22.08.11
✎
13:07
|
сам уже это понял =((
читаю литературу, пробую на примерах! |
|||
25
Fanat26
22.08.11
✎
13:14
|
нашел в 1с этот документ - ДвижениеРегистраОстатков № 105 от 31.12.09 там просто 969 товаров, не доганяю где он не находит реквизит "товар" ? =[
|
|||
26
Godofsin
22.08.11
✎
13:16
|
(25) Во-первых, смотри реквизит в конфигураторе.
Во-вторых, с чего ты взял, что он не находит именно вэтом доке? Не находит в Док1, а что он представляет - рой в конфигураторе. |
|||
27
Шапокляк
22.08.11
✎
13:28
|
(25) Что-то мне подсказывает, что в документе ДвиженияРегистраОстатков реквизита Товар нету, судя по вашему коду - там все сплошь Измерение1 и т.д.
|
|||
28
__Se24
22.08.11
✎
13:41
|
(25) Отладчик нам всем стоить и жить помогает !
|
|||
29
Fanat26
22.08.11
✎
13:43
|
почему то такая ошибка только когда выбираешь один(торговый) склад из 4.
|
|||
30
Fanat26
22.08.11
✎
13:43
|
РегПарт.УстановитьФильтр(Запрос.Фирма,Запрос.Товар,,,);
РегПарт.ОбратныйПорядок(1); РегПарт.ВыбратьДвижения(Константа.ДатаНачало,Константа.ДатаКонец); ДокНайден=0; Пока (РегПарт.ПолучитьДвижение()=1) И (ДокНайден=0) Цикл Если (Найти(РегПарт.ПрихДокумент.Вид(),"Приходная")>0) Тогда Если РегПарт.ПрихДокумент.ПризнакНакладной<>Перечисление.ПризнПрихНакл.ВозвратОтПокупателя Тогда Док1=РегПарт.ПрихДокумент; ДокНайден=1; КонецЕсли; Иначе Если (Найти(РегПарт.ПрихДокумент.Вид(),"Расходная")<1) И (Найти(РегПарт.ПрихДокумент.Вид(),"ОтчетРеал")<1) Тогда Док1=РегПарт.ПрихДокумент; ДокНайден=1; КонецЕсли; КонецЕсли; КОнецЦикла; Док1.ВыбратьСтроки(); НужнаяСтрока=0; Пока Док1.ПолучитьСтроку()=1 Цикл Если Запрос.Товар=Док1.Товар Тогда НужнаяСтрока=Док1.НомерСтроки; КонецЕсли; КонецЦикла; ДокНайден=0; КонецЕсли; Док1.ПолучитьСтрокуПоНОмеру(НужнаяСтрока); Спр.ЦенаИсх=Пересчет(Док1.Цена,Док1.Валюта,Док1.ДатаДок,Запрос.Товар.ВалютаУчета,Док1.ДатаДок); Спр.ВалютаИсх=Запрос.Товар.ВалютаУчета; Если Спр.ВалютаИсх=Рубли Тогда Спр.ЦенаРуб=Спр.ЦенаИсх; Иначе Спр.ЦенаРуб=Спр.ЦенаИсх*Курс; КонецЕсли; Состояние(Запрос.Товар.Наименование+" "+Строка(Запрос.КонКол)+" "+Строка(Запрос.КонСтоим)+" "+Строка(Запрос.НачСтоим)); Спр.Записать(); КонецЦикла; Если Константа.ИспользоватьТранзакции=1 тогда ЗафиксироватьТранзакцию(); КонецЕсли;; Форма.Обновить(1); Форма.Обновить(0); |
|||
31
Fanat26
22.08.11
✎
13:44
|
может здесь кроеися ошибка???
|
|||
32
povar
22.08.11
✎
13:49
|
(31) хватит гадать, или вызывай спеца или меняй работу
|
|||
33
Ёпрст
22.08.11
✎
13:49
|
(30) Что это за поток сознания такой ?
И этот код где выполняется ? В модуле проведения или где ? |
|||
34
Godofsin
22.08.11
✎
14:11
|
(30) Уважаемый, как нам тут можно понять, где ошибка? Запусти отладчик, установи точку остановы на срочку, где происходит ошибка и смотри через табло, что у тебя за значение в Док1.
|
|||
35
Mikeware
22.08.11
✎
14:11
|
Ошибка там же, где и всегда...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |