|
v7: Не находит заявку в регистре | ☑ | ||
---|---|---|---|---|
0
Роспатнюк Сергей Сер
10.10.19
✎
10:08
|
подскажите в чем может быть проблема, заявка есть строка в регистре тоже есть лично проверил, значения в фильтрах правильные, но после РегЗаявки.ВременныйРасчет(1);
ОбщРег.РассчитатьРегистрыНа(_Док.ТекущийДокумент()); РегЗаявки.ВыгрузитьИтоги(ТаблИтогов,1,1);, таблица пустая а должна быть строка заявки из регистра. Функция гсРегистрЗаявкиСклада(_Док,_Модуль = 0) Экспорт Перем ТаблИтогов, _ТЗ, ОбщРег, РегЗаявки; _ТЗ = СоздатьОбъект("ТаблицаЗначений"); _Док.ВыгрузитьТабличнуюЧасть(_ТЗ); _ТЗ.Свернуть("СубГУИД",""); _СЗ = СоздатьОбъект("СписокЗначений"); _ТЗ.ВыбратьСтроки(); Пока _ТЗ.ПолучитьСтроку() = 1 Цикл Если _ТЗ.СубГУИД.Выбран() = 1 Тогда _СЗ.ДобавитьЗначение(СокрЛП(_ТЗ.СубГУИД)); КонецЕсли; КонецЦикла; ТаблИтогов = СоздатьОбъект("ТаблицаЗначений"); ОбщРег = СоздатьОбъект("Регистры"); РегЗаявки = ОбщРег.Заявки; РегЗаявки.УстановитьЗначениеФильтра("СтрокаЗаявки",_СЗ,2); РегЗаявки.УстановитьЗначениеФильтра("МестоХранения",_Док.Склад,2); РегЗаявки.УстановитьЗначениеФильтра("Заказчик",_Док.Заказчик,2); // Если _Модуль = 0 Тогда Если _Док.Выбран() = 0 Тогда // Новый документ Если _Док.ДатаДок < ПолучитьДатуТА() Тогда РегЗаявки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ДатаДок); КонецЕсли; ИначеЕсли _Док.ДатаДок < _Док.ТекущийДокумент().ДатаДок Тогда // Поменяли дату документа. Если _Док.ДатаДок < ПолучитьДатуТА() Тогда // выписываемый задним числом РегЗаявки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ДатаДок); КонецЕсли; ИначеЕсли _Док.СравнитьТА() < 1 Тогда //Позиция не больше ТА. РегЗаявки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ТекущийДокумент()); КонецЕсли; Иначе Если _Док.ИтогиАктуальны()=0 Тогда РегЗаявки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ТекущийДокумент()); КонецЕсли; КонецЕсли; РегЗаявки.ВыгрузитьИтоги(ТаблИтогов,1,1); Возврат ТаблИтогов; КонецФункции |
|||
1
Роспатнюк Сергей Сер
10.10.19
✎
10:50
|
up
|
|||
2
Builder
10.10.19
✎
10:51
|
Начните с отключения фильтров. А дальше отладчик в руки и искать ошибку.
|
|||
3
Kigo_Kigo
10.10.19
✎
10:58
|
_Док.Заказчик = контрагент или юрфизлицо контрагента?
отключай фильтры и смотри и апрверь что в _сз |
|||
4
dk
10.10.19
✎
10:58
|
(2) +1
скорее всего типы переданные в фильтры не совпадают с типом указанным в самом регистре |
|||
5
Роспатнюк Сергей Сер
10.10.19
✎
11:18
|
Оставляя фильтры на склад и заказчика получаю 32 строки а когда смотрю свой регистр с таким же отбором выходит 33 и не хватает той самой нужной строки 0_0 рег. смотрю собработкой и там вот такой код и все работает
НазваниеРегистра = Рег.ПолучитьЗначение(Рег.ТекущаяСтрока(),); ОбщРег = СоздатьОбъект("Регистр."+НазваниеРегистра); Для К=1 по 4 Цикл Если Число(Шаблон("[Сп"+к+".РазмерСписка()]"))=0 Тогда Если ПустоеЗначение(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(зн"+к+")]")))=0 Тогда ОбщРег.УстановитьЗначениеФильтра(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(пв"+к+")]")),ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(зн"+к+")]"))); КонецЕсли; Иначе ОбщРег.УстановитьЗначениеФильтра(ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(пв"+к+")]")),ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Сп"+к+")]")),2); КонецЕсли; КонецЦикла; Если ДатаОтчета<ПолучитьДатуТА() Тогда ОбщРег.ВременныйРасчет(1); РассчитатьРегистрыПо(ДатаОтчета); //РассчитатьРегистрыНа(ДатаОтчета); КонецЕсли; ОбщРег.ВыгрузитьИтоги(Тост,1); |
|||
6
Роспатнюк Сергей Сер
10.10.19
✎
11:20
|
(5) если к этим двум добавить ГУИД то результат нулевой тоже самое если просто по ГУИДу фильтровать.
|
|||
7
Роспатнюк Сергей Сер
10.10.19
✎
11:21
|
(3) ТипЗначения(_Док.Заказчик) = 11
|
|||
8
Злопчинский
10.10.19
✎
11:43
|
тупо смотрю код не вникая пока
огорчу _Док.ДатаДок < ПолучитьДатуТА() типа это заднее число если датаДок = ДатаТА то это вообщем тоже заднее число |
|||
9
Роспатнюк Сергей Сер
10.10.19
✎
11:48
|
(8) в условие _Модуль = 0 не попадаем так что это можно не рассматривать только код после иначе
|
|||
10
Злопчинский
10.10.19
✎
11:49
|
хотя может в этом алгоритме это некритично
|
|||
11
HawkEye
10.10.19
✎
11:53
|
(0) я не понял, ты хочешь в документе увидеть его движение что-ли, тогда почему рассчитать НА?
|
|||
12
Злопчинский
10.10.19
✎
11:55
|
вроде код простой но написан имхо как-то мутно
в модуль=0 Если _Док.Выбран() = 0 Тогда // Новый документ Если _Док.ДатаДок < ПолучитьДатуТА() Тогда РегЗаявки.ВременныйРасчет(1); ОбщРег.РассчитатьРегистрыНа(_Док.ДатаДок); КонецЕсли; для нового документа в прошлом дне он обычно записывается в конец дня рассчитатьНА вызывает вопросы, я бы РасчитатьПО |
|||
13
Роспатнюк Сергей Сер
10.10.19
✎
11:56
|
(11) Функция в глобальном модуле и попадаю я туда из документа накладная перемещение этот документ хочет увидеть заявку которую предварительно создает документ Заявка на склад.
|
|||
14
Ёпрст
10.10.19
✎
11:59
|
(0) делать строковые измерения регистра - моветон
|
|||
15
Ёпрст
10.10.19
✎
11:59
|
эта шляпа у вас поди не закрывается, никогда
|
|||
16
Ёпрст
10.10.19
✎
12:00
|
СтрокаЗаявки - тип строка какой длины хоть в регистре?
|
|||
17
Злопчинский
10.10.19
✎
12:02
|
если модуль != 0
то если задним числом то считаем до документа если в ТА - то с учетом документа (?) и тут будет иметь значение это проведение или перепроведение так как в этом случае зачищены сущестовавашие движения документа . хотя особо не втыкал. не нравится мне код |
|||
18
Роспатнюк Сергей Сер
10.10.19
✎
12:02
|
(15) Тип справочник СтрокиЗаявок
|
|||
19
Salimbek
10.10.19
✎
12:02
|
(0) Вполне может быть, что Индекс побился. Попробовать выкинуть всех из базы, потом запустить принудительную Переиндексацию.
|
|||
20
Salimbek
10.10.19
✎
12:04
|
А вообще - (5) хорошо бы подтвердить скриншотами. И еще - проверить, может у тебя есть дубли в Складах/Заказчиках с таким же Наименованием.
|
|||
21
Ёпрст
10.10.19
✎
12:05
|
(18) какого хрена тогда ты сроку пихаешь в фильтр ? И удивляешься что ничего нет ?
|
|||
22
Ёпрст
10.10.19
✎
12:06
|
+21
_СЗ.ДобавитьЗначение(СокрЛП(_ТЗ.СубГУИД)); .... РегЗаявки.УстановитьЗначениеФильтра("СтрокаЗаявки",_СЗ,2); |
|||
23
Роспатнюк Сергей Сер
10.10.19
✎
12:07
|
(22) уже не пихаю но проблема в том что и с 2мя фильтрами заказчик и МестоХранения не получает нужную строку )
|
|||
24
Ёпрст
10.10.19
✎
12:08
|
пихай туда ссылку на элемент справочника, т.е выкини СокрЛП из кода
|
|||
25
Ёпрст
10.10.19
✎
12:10
|
(23) 3 параметр в методе не верный
|
|||
26
Роспатнюк Сергей Сер
10.10.19
✎
12:11
|
(20) минутку щя все будет
|
|||
27
Роспатнюк Сергей Сер
10.10.19
✎
12:23
|
(24) выкинул результат не изменился нулевой если фильтр только по ГУИДу
|
|||
28
Роспатнюк Сергей Сер
10.10.19
✎
12:24
|
(20) дублей нет проверил в заказчиках ни в складах
|
|||
29
Ёпрст
10.10.19
✎
12:24
|
И еще, в _Док - это контекст документа из модуля проведения ? Если да, то весь код надо сократить до
ВремРегистры= СоздатьОбъект("Регистры"); РегЗаявки = ВремРегистры.Заявки; РегЗаявки.УстановитьЗначениеФильтра("СтрокаЗаявки",_СЗ,2); РегЗаявки.УстановитьЗначениеФильтра("МестоХранения",_Док.Склад,2); РегЗаявки.УстановитьЗначениеФильтра("Заказчик",_Док.Заказчик,2); Если ИтогиАктуальны()=0 Тогда ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(_Док.ТекущийДокумент()); КонецЕсли; РегЗаявки.ВыгрузитьИтоги(..... |
|||
30
Роспатнюк Сергей Сер
10.10.19
✎
12:24
|
||||
31
Ёпрст
10.10.19
✎
12:24
|
Никаких сравнений с ТА не надо от слова совсем
|
|||
32
Роспатнюк Сергей Сер
10.10.19
✎
12:27
|
(29) да это контекст из модуля проведения _Остатки= гсРегистрЗаявкиСклада(КонТекст, 1);
|
|||
33
Роспатнюк Сергей Сер
10.10.19
✎
12:33
|
(31) а почему не надо сравнений с ТА не могли бы объяснить, просто так как это Гл модуль вообще страшно делать какието изменения а тут еще и такие сокращения.
|
|||
34
Злопчинский
10.10.19
✎
12:33
|
(29) вот про это я и говорил что код мутный.
чел видимо типовой ТИС не смотрел |
|||
35
Злопчинский
10.10.19
✎
12:34
|
(33) посмотри в любой проведение типовой ТИС по регистру остаткиТМЦ, например, там код будет как Епрст написал.
|
|||
36
Роспатнюк Сергей Сер
10.10.19
✎
12:35
|
(34) не где посмотреть типовой ТИС к сожалению
|
|||
37
Злопчинский
10.10.19
✎
12:35
|
перепиши с учетом (29) и замечаний от Епрста по типам и пр.
если не получится - будем смотреть |
|||
38
Роспатнюк Сергей Сер
10.10.19
✎
12:37
|
(37) буду пробовать.
|
|||
39
Роспатнюк Сергей Сер
10.10.19
✎
12:40
|
Функция не обнаружена (ИтогиАктуальны) это может быть функция регистра ?
|
|||
40
dedmoroz777
10.10.19
✎
12:56
|
(39) Это должно быть в модуле проведения. Актуальность итогов передавай в функцию в глобальнике параметром
|
|||
41
Злопчинский
10.10.19
✎
13:11
|
(39) к контексту проведения примени
в твоем случае Док.ИтгиАктуалны |
|||
42
Злопчинский
10.10.19
✎
13:11
|
(39) подсказка на развитие: если в СП найти эту функцию, то там написано
|
|||
43
Роспатнюк Сергей Сер
10.10.19
✎
14:14
|
(42) первым делом туда и полез потом передал параметром в функцию ну а вот _Док.ИтогиАктуальны(1) = Ошибка в выражении
|
|||
44
Роспатнюк Сергей Сер
10.10.19
✎
14:25
|
вот так взлетело
Функция гсРегистрЗаявкиСклада(_Док, ИтогиАктуальны) Экспорт Перем ТаблИтогов, _ТЗ, ОбщРег, РегЗаявки; _ТЗ = СоздатьОбъект("ТаблицаЗначений"); _Док.ВыгрузитьТабличнуюЧасть(_ТЗ); _ТЗ.Свернуть("СубГУИД",""); _СЗ = СоздатьОбъект("СписокЗначений"); _ТЗ.ВыбратьСтроки(); Пока _ТЗ.ПолучитьСтроку() = 1 Цикл Если _ТЗ.СубГУИД.Выбран() = 1 Тогда _СЗ.ДобавитьЗначение(_ТЗ.СубГУИД); ВрГУИД = _ТЗ.СубГУИД; КонецЕсли; КонецЦикла; ТаблИтогов = СоздатьОбъект("ТаблицаЗначений"); ОбщРег = СоздатьОбъект("Регистры"); РегЗаявки = ОбщРег.Заявки; РегЗаявки.УстановитьЗначениеФильтра("СтрокаЗаявки",_СЗ,2); РегЗаявки.УстановитьЗначениеФильтра("МестоХранения",_Док.Склад,2); РегЗаявки.УстановитьЗначениеФильтра("Заказчик",_Док.Заказчик,2); Если ИтогиАктуальны = 0 Тогда ОбщРег.Актуальность(1); ОбщРег.РассчитатьРегистрыНа(_Док.ТекущийДокумент()); КонецЕсли; РегЗаявки.ВыгрузитьИтоги(..... |
|||
45
Злопчинский
10.10.19
✎
14:47
|
Пока _ТЗ.ПолучитьСтроку() = 1 Цикл
Если _ТЗ.СубГУИД.Выбран() = 1 Тогда _СЗ.ДобавитьЗначение(_ТЗ.СубГУИД); ВрГУИД = _ТЗ.СубГУИД; КонецЕсли; КонецЦикла; вот это треш какойто имхо. я бы сделал проще. _ТЗ.Выгрузить(_СЗ); и нати в СЗ пустое значение (одним оператором) и удалит его если оно есть |
|||
46
Роспатнюк Сергей Сер
10.10.19
✎
15:10
|
(45) да а мне она не показалась странной наверно просто у меня мало опыта с v7, а каким таким одним оператором можно и найти и удалить сразу не подскажете ?
|
|||
47
Chum
10.10.19
✎
15:16
|
||||
48
Роспатнюк Сергей Сер
10.10.19
✎
15:25
|
функция приведена в человеческий вид всем спасибо.
|
|||
49
Злопчинский
10.10.19
✎
21:07
|
(48) опубликуй уже...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |