|
v7: снова глюки с реквизитами документа | ☑ | ||
---|---|---|---|---|
0
Лалым
12.08.15
✎
21:20
|
Перебираю в цикле реквизиты и получаю их значения
Для Инд = 2 По МойДок.РеквизитТабличнойЧасти() Цикл Имя = Метаданные.Документ("ПайРасчет").РеквизитТабличнойЧасти(Инд).Синоним; Реквизит = Метаданные.Документ("ПайРасчет").РеквизитТабличнойЧасти(Инд).Идентификатор;; Сумма = Число(Док.ПолучитьАтрибут(Реквизит)); Если Сумма <> 0 Тогда Таб.ВывестиСекцию("Строка"); При выполнении выдает Сумма = Число(Док.ПолучитьАтрибут(Реквизит)); {Отчет.КорешкиПайЗемля.Форма.Модуль(20)}: Неверное имя атрибута При этом если задаю цикл не со второго атрибута а с третьего все идет нормально Первый реквизит = "Пайщик" второй реквизит = "Всальдо" при просмотре в отладчике все выдается так как стоит в конфигураторе |
|||
1
HawkEye
12.08.15
✎
21:22
|
(0) итог по реквизиту включен?
|
|||
2
Лалым
12.08.15
✎
21:23
|
щас проверю
по идее должен быть |
|||
3
Лалым
12.08.15
✎
21:24
|
да включен (1)
|
|||
4
HawkEye
12.08.15
✎
21:27
|
(3) что такое МойДок и Док?
|
|||
5
Лалым
12.08.15
✎
21:30
|
(4) Док - это текущий документ они там перебираются
А МойДок это МойДок = Метаданные.Документ("ПайРасчет"); |
|||
6
HawkEye
12.08.15
✎
21:35
|
(3) а вообще пофигу.. флаг не важен..
(5) значит где-то тут и порылась собака... показывай весь код |
|||
7
Лалым
12.08.15
✎
21:39
|
(6) Процедура Сформировать()
Таб = СоздатьОбъект("Таблица"); формРеквизиты = СоздатьОбъект("СписокЗначений"); МойДок = Метаданные.Документ("ПайРасчет"); ДатаНачала = НачДата.Дата1; ДатаКонца = КонДата.Дата2; Док = СоздатьОбъект("Документ.ПайРасчет"); Док.ВыбратьДокументы(ДатаНачала, ДатаКонца); Пока Док.ПолучитьДокумент() = 1 Цикл сообщить("док" + Док + " " + док.ДатаЗарплаты); Если (Док.ДатаЗарплаты.Дата1 >= ДатаНачала) И (Док.ДатаЗарплаты.Дата1 <= ДатаКонца) Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если Док.Пайщик = ВыбСотрудник Тогда Таб.ВывестиСекцию("Шапка"); Для Инд = 1 По МойДок.РеквизитТабличнойЧасти() Цикл Имя = Метаданные.Документ("ПайРасчет").РеквизитТабличнойЧасти(Инд).Синоним; Реквизит = Метаданные.Документ("ПайРасчет").РеквизитТабличнойЧасти(Инд).Идентификатор;; Сумма = Число(Док.ПолучитьАтрибут(Реквизит)); Если Сумма <> 0 Тогда Таб.ВывестиСекцию("Строка"); Если (Реквизит = "Начислено") или (Реквизит = "Удержано") или (Реквизит = "Квыдаче") Тогда Таб.ВывестиСекцию("риска"); КонецЕсли; КонецЕсли; КонецЦИкла; Таб.ВывестиСекцию("Отрыв"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Таб.Показать() КонецПроцедуры Если ставлю цикл начиная с тройки все работает нормально только выпадает реквизит "ВСальдо" тоесть не показывает входное сальдо, остальные реквизиты показывает так как надо включая секцию "Риска" |
|||
8
Лалым
12.08.15
✎
21:46
|
Вставляю сообщить
Для Инд = 1 По МойДок.РеквизитТабличнойЧасти() Цикл Имя = Метаданные.Документ("ПайРасчет").РеквизитТабличнойЧасти(Инд).Синоним; Реквизит = Метаданные.Документ("ПайРасчет").РеквизитТабличнойЧасти(Инд).Идентификатор;; сообщить("-"+Реквизит+"-"); в результате цикл с 1 выдает -Пайщик- -ВСальдо- Сумма = Число(Док.ПолучитьАтрибут(Реквизит)); {Отчет.КорешкиПайЗемля.Форма.Модуль(21)}: Неверное имя атрибута Ставлю тройку Тогда сообщает -Начислено1- -Начислено2- -Начислено- -Касса- -СХПро- -ВоенныйСбор- -ПН- -Удержано- -КВыдаче- И никаких ошибок |
|||
9
HawkEye
12.08.15
✎
21:50
|
(8) прикольно.. надо отладчиком смотреть.. вообще структура рабочая, хотя конечно и несколько кривовата...
выгрузи таб. часть в ТЗ и в ней уже цикл по колонкам организовывай |
|||
10
Лалым
12.08.15
✎
21:53
|
Мне из каждого документа нужна только оьтдна строка, по данному пойщику
|
|||
11
Лалым
12.08.15
✎
21:55
|
тут же прикол в том что не хочет бпринимать только ОДНО имя реквизита
|
|||
12
HawkEye
12.08.15
✎
22:02
|
(11) md-ник нужен
|
|||
13
Лалым
12.08.15
✎
22:07
|
отправил на почту
|
|||
14
HawkEye
12.08.15
✎
22:24
|
(13)
докПайРасчет 1 Август 2015 г. -Пайщик- -ВСальдо- -Начислено1- -Начислено2- -Начислено- -Касса- -СХПро- -ВоенныйСбор- -ПН- -Удержано- -КВыдаче- |
|||
15
HawkEye
12.08.15
✎
22:27
|
+14 ты там dd-ник случайно не менял? не переписывал dbf?
|
|||
16
HawkEye
12.08.15
✎
22:28
|
+15
так попробуй: Попытка Сумма = Число(Док.ПолучитьАтрибут(Реквизит)); Исключение Сообщить("Ошибка: " + ОписаниеОшибки()); Сообщить(Док.ТекущийДокумент()); Конецпопытки; |
|||
17
GreyK
12.08.15
✎
22:30
|
(0) Студент?
|
|||
18
GreyK
12.08.15
✎
22:32
|
(9) Издеваешься про "вообще структура рабочая"?
|
|||
19
HawkEye
12.08.15
✎
22:38
|
(18) что у тебя там не работает?
|
|||
20
Лалым
12.08.15
✎
22:45
|
(16) попытка обнаруживает тот же самый реквизит.Выдет ошибку ну тперь же просто проскакивает через него, а дальше идет все как надо
|
|||
21
HawkEye
12.08.15
✎
22:46
|
(20) у тебя что-то с самой БД, а не с кодом..
в (14) работа твоего md-ника... |
|||
22
HawkEye
12.08.15
✎
22:48
|
(20) проскакивает в одном документе или во всех?
|
|||
23
GreyK
12.08.15
✎
22:53
|
(19) Для чего такое писать!? Я понимаю когда есть условие что если в ИД или синониме есть какой-то признак для попадания в выборку. В данном случае я не вижу смысла выборки метаданных.
|
|||
24
Лалым
12.08.15
✎
22:55
|
(21) щас прогоню проверку БД (22) Во всех
|
|||
25
Лалым
12.08.15
✎
23:00
|
Проверка и тестирование прошло без единной шероховатости
|
|||
26
Лалым
12.08.15
✎
23:04
|
(23) ты хочешь сказать что вот так правильней?
Пока ДокРасчет.ПолучитьДокумент()=1 Цикл Если ДокРасчет.ДатаЗарплаты= ДатаЗарплаты Тогда ДокРасчет.ВыбратьСтроки(); Пока ДокРасчет.ПолучитьСтроку()=1 Цикл Если Пайщик = ДокРасчет.Пайщик Тогда Всальдо = ДокРасчет.Всальдо; Начислено1 = ДокРасчет.Начислено1; Начислено2 = ДокРасчет.Начислено2; Начислено = ДокРасчет.Начислено; СХПро = ДокРасчет.СХПро; Касса = ДокРасчет.Касса; ПН = ДокРасчет.ПН; Удержано = ДокРасчет.Удержано; КВыдаче = ДокРасчет.КВыдаче; КонецЕсли КонецЦикла; Таб.ВывестиСекцию("Шапка"); Если ВСальдо > 0 Тогда Таб.ВывестиСекцию("ВСальдо1"); КонецЕсли; Если ВСальдо < 0 Тогда Таб.ВывестиСекцию("ВСальдо2"); КонецЕсли; Если Начислено1 > 0 Тогда Таб.ВывестиСекцию("Начислено1"); КонецЕсли; Если Начислено2 > 0 Тогда Таб.ВывестиСекцию("Начислено2"); КонецЕсли; Если Начислено > 0 Тогда Таб.ВывестиСекцию("Начислено"); КонецЕсли; Если Касса > 0 Тогда Таб.ВывестиСекцию("Касса"); КонецЕсли; Если СХПро > 0 Тогда Таб.ВывестиСекцию("СХПро"); КонецЕсли; Если ПН > 0 Тогда Таб.ВывестиСекцию("ПН"); КонецЕсли; Если Удержано > 0 Тогда Таб.ВывестиСекцию("Удержано"); КонецЕсли; Если КВыдаче > 0 Тогда Таб.ВывестиСекцию("КВыдаче1"); КонецЕсли; Если КВыдаче < 0 Тогда Таб.ВывестиСекцию("КВыдаче2"); КонецЕсли; Таб.ВывестиСекцию("Дно"); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Таб.Показать(); но это я споткнулся на одном доке с 11 атрибутами а у если будет 33??? |
|||
27
HawkEye
12.08.15
✎
23:06
|
(23) вопрос для чего - это не ко мне, ответ на него никак не влияет на саму конструкцию которая по сути является рабочей, коряво написанной, не оптимальной - но рабочей.
|
|||
28
Кочерга
12.08.15
✎
23:07
|
Судя по ВоенныйСбор - конфа украинская.
Там какие то проблемы с русскими буквами были часто. Связано как-то с локализацией. Поищи, даже на этом форуме было, что-то связанное с буквой С и сортировкой. Может в этом проблема. Ну и конечно перебор по метаданным для одного документа - это простите за тавтологию перебор. |
|||
29
HawkEye
12.08.15
✎
23:09
|
(26) так что-то совсем не хорошо получиться ))) не надо так делать ))
(24) я создал руками документ.. результат в (14), если у тебя ошибка - надо базу смотреть |
|||
30
HawkEye
12.08.15
✎
23:10
|
(26) о! учитывая (28) поменяй название реквизита в копии и проверь )
|
|||
31
GreyK
12.08.15
✎
23:14
|
(26) Научись хотя-бы объявлять переменные и суммировать их результаты, а потом рассуждай про "правильно и не правильно"
|
|||
32
Лалым
12.08.15
✎
23:15
|
(28) щас попробую переписать имя реквизита, строго на русском, да украинская конфа
|
|||
33
Лалым
12.08.15
✎
23:22
|
Ничего не дало (30) (28) однозначно на русской раскладке написал, эфекта никакого
|
|||
34
GreyK
12.08.15
✎
23:26
|
(32) Я не знаю твоего задания, но посмотрев твой код, я-бы выгрузил ТЧ документа в ТЗ и свернул её по нужным колонкам.
|
|||
35
Кочерга
12.08.15
✎
23:30
|
Тут почитай http://club-1c.com/topic/2874-совместимость-при-работе-на-windows-7-и-xp/
Чем-то отдаленно похоже. |
|||
36
Лалым
12.08.15
✎
23:36
|
(35) Гдюк как то связан с кодировкой Все таки каким образом не разобрался еще
Просто запустил на виртуалльной хрюше и все оказывается летает как анадо, работаю в семере 64 для больших кусков кода стоит виртуалка, под ней крутится опен конф ( он с семерой 64 как то совсем не дружит (30) Выходит глюки семеры , на хрюше без сучка без задоринки |
|||
37
Лалым
12.08.15
✎
23:43
|
Всем спасибо за участие
это расчетные листки для людей которые сдали в данное хозяйство свой земельный пай. там одинадцать атрибутов они бывают пустые и непустые зачем выводить ненужные атрибуты, надо только те по которым в данном документе были какие то движения. заодно используя синоним как заголовок для строки колонки я не буду париться с названием показателя, ну и еще в любой момент может добавиться еще какой нибуть реквизит, так что каждый раз форму переделывать? И вообще по сути вопроса я от вас уважаемый ни одного совета кроме коментов не получил. |
|||
38
Лалым
12.08.15
✎
23:44
|
(37) Вторая часть для (34)
|
|||
39
HawkEye
12.08.15
✎
23:47
|
(36) я на win8.1 x64 пробовал
|
|||
40
HawkEye
12.08.15
✎
23:48
|
(37) при чем тут форма? выгружай в ТЗ и все то-же самое делай в ТЗ
|
|||
41
Лалым
12.08.15
✎
23:54
|
(40) обясни мне зачем выгружать в ТЗ если мне из дока нужна всего лишь одна строка? я не понимаю
Из ТЗ будет выбирать не прще по моему, и я же писал что использую синоним для вывода как заголовока на нужном языке и в нужном виде |
|||
42
HawkEye
13.08.15
✎
07:40
|
(41) ну начнем с того, что в твоем коде обрабатывается не ОДНА строка, а ВСЕ...
а закончим тем, что если нужна именно ОДНА строка - то как раз ТЗ и нужно, чтобы все подряд не перебирать.. а вот для получения синонима - как раз имеет смысл использовать метаданные, зная идентификатор реквизита (из ТЗ) - получить по нему синоним никаких проблем нет. |
|||
43
Лалым
14.08.15
✎
06:27
|
(42) Кажется понял попробую реализовать через выгрузку в ТЗ
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |