|
Корреспонденция | ☑ | ||
---|---|---|---|---|
0
zippygrill
15.08.11
✎
09:50
|
Ребята доброе утро.
переделываю штатные правила конвертации Acc77_Acc82 под УПП8.2 наткнулся над строкой: Для каждого Корреспонденция из Объект[ИмяТабличнойЧасти] Цикл ..... Мне слово Корреспонденция из Бухг совсем чужая. Какое соответсвие у нее в УПП? вот кусок откуда взял: ИмяТабличнойЧасти = Параметры.ПараметрыАлгоритмов.ИмяТабличнойЧасти; ИмяСчета = Параметры.ПараметрыАлгоритмов.ИмяСчета; ИмяСубконто = Параметры.ПараметрыАлгоритмов.ИмяСубконто; Если ПустоеЗначение(ИмяТабличнойЧасти) = 0 Тогда //обрабатываем табличную часть Для каждого Корреспонденция из Объект[ИмяТабличнойЧасти] Цикл мСведенияОСчетах = Новый Соответствие; СведенияОСчете = БухгалтерскийУчетДополнительный.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчета]); |
|||
1
zippygrill
15.08.11
✎
09:52
|
за тупые вопросы за ранее приношу свои извинения.
|
|||
2
zippygrill
15.08.11
✎
10:00
|
вверх
|
|||
3
butterbean
15.08.11
✎
10:02
|
(2) вопрос настолько тупой, что просто непонятно что ты спрашиваешь
|
|||
4
mikecool
15.08.11
✎
10:10
|
Для каждого Корреспонденция из Объект[ИмяТабличнойЧасти]
при каждой итерации в "Корреспонденция" будет очередная строка ТЧ |
|||
5
zippygrill
15.08.11
✎
10:17
|
что это за объект или "слово" - Корреспонденция?
(4)глянул в общий модуль БухгалтерскийУчетДополнительный.ПолучитьСведе.... разобрался. Передается счет(коресспондирующий счет). спс. |
|||
6
Naumov
15.08.11
✎
10:25
|
(5) В данном случае Корреспонденция - строка ТаблицыЗначений. не больше, ни меньше.
а по сути соответствует записи регистра бух-ии. |
|||
7
zippygrill
15.08.11
✎
11:31
|
продолжает ругатся на
Переменная не объявлена как массив (Корреспонденция) отсюда начинается: Если ПустоеЗначение(ИмяТабличнойЧасти) = 0 Тогда //обрабатываем табличную часть Для каждого Корреспонденция из Объект[ИмяТабличнойЧасти] Цикл мСведенияОСчетах = СоздатьОбъект("СписокЗначений"); СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчета]); |
|||
8
zippygrill
15.08.11
✎
11:38
|
дай подниму
|
|||
9
zippygrill
15.08.11
✎
12:05
|
еще
|
|||
10
zippygrill
15.08.11
✎
12:20
|
ап
|
|||
11
GenV
15.08.11
✎
12:24
|
(10) Добавь в обработчик вывод через Сообщить типа и значения Корреспонденция, найдешь где ошибка. Или в отладчике.
|
|||
12
zippygrill
15.08.11
✎
12:50
|
(11) V77Exp.ert даже не открывается ))
|
|||
13
zippygrill
15.08.11
✎
12:51
|
естественно переделал для 77:
Если ПустоеЗначение(ИмяТабличнойЧасти) = 0 Тогда //обрабатываем табличную часть КолЭлементов = ИмяТабличнойЧасти.Количество(); Для Корреспонденция = 0 по Объект.[КолЭлементов - 1] Цикл |
|||
14
Alexandr Puzakov
15.08.11
✎
12:56
|
На месте "Корреспонденция" могло быть что угодно.Могло быть так:
Для каждого Пиндюлина из Объект[ИмяТабличнойЧасти] Цикл или так Для каждого Фиговина из Объект[ИмяТабличнойЧасти] Цикл а то и так Для каждого Хренотень из Объект[ИмяТабличнойЧасти] Цикл Это лишь имя переменной, в которую помещается строка табличной части... |
|||
15
zippygrill
15.08.11
✎
12:58
|
(14) ну понятно уже))
|
|||
16
GenV
15.08.11
✎
12:58
|
(13) Что-то код (13) непохож по функционалу на (7).
Если не открывается, значит неправильно код написал, КД тут не причем. |
|||
17
Alexandr Puzakov
15.08.11
✎
12:59
|
Корреспонденция[ИмяСчета] должно быть
Корреспонденция[<строковый литерал имени колонки табличной части>] |
|||
18
zippygrill
15.08.11
✎
13:01
|
(16) вот с начала:
ИмяТабличнойЧасти = Параметры.ПараметрыАлгоритмов.ИмяТабличнойЧасти; ИмяСчета = Параметры.ПараметрыАлгоритмов.ИмяСчета; ИмяСубконто = Параметры.ПараметрыАлгоритмов.ИмяСубконто; Если ПустоеЗначение(ИмяТабличнойЧасти) = 0 Тогда //обрабатываем табличную часть КолЭлементов = ИмяТабличнойЧасти.Количество(); Для Корреспонденция = 0 по Объект[КолЭлементов - 1] Цикл мСведенияОСчетах = СоздатьОбъект("СписокЗначений"); СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчета]); |
|||
19
Alexandr Puzakov
15.08.11
✎
13:02
|
КолЭлементов = ИмяТабличнойЧасти.ИмяТабличнойЧасти.Количество();
Для Корреспонденция = 0 по КолЭлементов - 1 Цикл Значение = Объект.ИмяТабличнойЧасти[КолЭлементов - 1][<имя нужнойколонки>]; . . . КонецЦикла; |
|||
20
Alexandr Puzakov
15.08.11
✎
13:03
|
КолЭлементов = Объект[ИмяТабличнойЧасти].Количество();
|
|||
21
Alexandr Puzakov
15.08.11
✎
13:05
|
(18)
ИмяТабличнойЧасти = Параметры.ПараметрыАлгоритмов.ИмяТабличнойЧасти; ИмяСчета = Параметры.ПараметрыАлгоритмов.ИмяСчета; ИмяСубконто = Параметры.ПараметрыАлгоритмов.ИмяСубконто; Если ПустоеЗначение(ИмяТабличнойЧасти) = 0 Тогда //обрабатываем табличную часть КолЭлементов = Объект[ИмяТабличнойЧасти].Количество(); Для Корреспонденция = 0 по КолЭлементов Цикл мСведенияОСчетах = СоздатьОбъект("СписокЗначений"); СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[<имя колонки>]); |
|||
22
Alexandr Puzakov
15.08.11
✎
13:05
|
Тьфу ты,
Для Корреспонденция = 0 по КолЭлементов - 1 Цикл |
|||
23
Alexandr Puzakov
15.08.11
✎
13:06
|
А вообще какая-то куета получается. Что мы получаем-то? Почему список значений внутри цикла создается?
|
|||
24
zippygrill
15.08.11
✎
13:10
|
(23) нужно соответствие счетов чтобы передавать в функцию ПолучитьСведенияОСчете(СведенияОСчетах, Счет) из общего модуля
|
|||
25
Alexandr Puzakov
15.08.11
✎
13:16
|
(24) так эта функция получается нифига не в общем модуле, а в модуле объекта...
|
|||
26
zippygrill
15.08.11
✎
13:21
|
вообще-то она в
БухгалтерскийУчетДополнительный.ПолучитьСведенияОСчете(СведенияОСчетах, Счет) Экспорт |
|||
27
Alexandr Puzakov
15.08.11
✎
13:25
|
(26) ну тогда нужно вместо
СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[<имя колонки>]) писать СведенияОСчете = БухгалтерскийУчетДополнительный.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[<имя колонки>]) |
|||
28
GenV
15.08.11
✎
13:25
|
(18) Это у тебя на стороне 7.7 или 8?!
ЗЫ В 7.7 у документов только одна табличная часть и к ней по имени не обращаются, количество строк - КоличествоСтрок(), на строку нужно сначала спозиционироваться ПолучитьСтрокуПоНомеру(). На сколько помню. |
|||
29
aka AMIGO
15.08.11
✎
13:27
|
ЗЫ. correspond
соответствовать, согласовываться, соотноситься совпадать быть аналогичным корреспондировать счета ПС могут по дебету и по кредиту, а в самом ПС (бумажном варианте) каждому счету расписана подробная допустимая корреспонденция счетов. в какой-то бухконфе даже наметки были на проверку и подстановку корресп.счетов.. давно не видел.. |
|||
30
zippygrill
15.08.11
✎
13:33
|
(28) Алгоритм вызывается из "ПослеЗагрузки". Тогда я ничего не понимаю.
|
|||
31
Alexandr Puzakov
15.08.11
✎
13:33
|
Тащи сюды текст функции ПолучитьСведенияОСчете, ща разберемся.
|
|||
32
zippygrill
15.08.11
✎
13:35
|
(31) ну это штатная функция 1с))) не доверяещь разработчикам? ))
(28) + Если алгоритм выполняется в послезагрузки тогда почему елементарный ЗначениеЗаполнено не понимает?? |
|||
33
zippygrill
15.08.11
✎
13:35
|
*доверяешь
|
|||
34
Alexandr Puzakov
15.08.11
✎
13:36
|
(32) доверяю, просто мне нужно знать, чего она там вытворяет.
|
|||
35
GenV
15.08.11
✎
13:38
|
(30) Еще раз. Ошибки бывают синтаксические и в алгоритме. Синтаксическая ошибка в 7.7 проверяется синтаксическим контролем модуля обработки. Алгоритмическая ошибка возникнет при выполнении кода обработки. Соотв. совершенно разные тексты ошибок. Сначала определись где у тебя ошибка возникает.
ЗЫ При загрузке без проблем через Сообщить можно проверить ... |
|||
36
zippygrill
15.08.11
✎
13:42
|
(34) она должно быть и в твоей конфе
(35) ок. В Алгоритмах КД на каком языке нужно тогда писать, ВООБЩЕ? под 7.7 или 8.2(к примеру) |
|||
37
GenV
15.08.11
✎
13:44
|
(36) Если у тебя источник 7.7, значит все обработчики выгрузки будут выполняться в 7.7. Если у тебя приемник 8, то все обработчики загрузки будут выполнятся только после выгрузки из 7.7 уже в 8 (т.е. код 8 в обработчиках загрузки и 7.7 в обработчиках выгрузки).
|
|||
38
Alexandr Puzakov
15.08.11
✎
13:46
|
(36) у мене нет этой конфы, я сейчас не на работе.
|
|||
39
zippygrill
15.08.11
✎
13:51
|
(38) повери дело не в этой функции + она не маленкая))
(37) вот к примеру написано на 8 ИмяТабличнойЧасти = Параметры.ПараметрыАлгоритмов.ИмяТабличнойЧасти; ИмяСчета = Параметры.ПараметрыАлгоритмов.ИмяСчета; ИмяСубконто = Параметры.ПараметрыАлгоритмов.ИмяСубконто; Если ЗначениеЗаполнено(ИмяТабличнойЧасти) Тогда //обрабатываем табличную часть Для каждого Корреспонденция из Объект[ИмяТабличнойЧасти] Цикл мСведенияОСчетах = Новый Соответствие; СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчета]); вот ошибка http://dl.dropbox.com/u/9627383/error8.jpg |
|||
40
zippygrill
15.08.11
✎
14:05
|
||||
41
Alexandr Puzakov
15.08.11
✎
14:15
|
(40) так ведь это в семерке... Перепиши код под 7.7
|
|||
42
zippygrill
15.08.11
✎
14:17
|
(41) данный алгоритм вызывается из обработчика ПослеЗагрузки. то ести этот код выполняется в 8 уже и не надо на 7.7 переписать.
|
|||
43
GenV
15.08.11
✎
14:27
|
(40) Где же он в 8 выполняется? В 7.7. Поэтому и ругается ... Может модуль обработки не обновил, может правила не обновил или обработчик лишний создал с кодом 8. "Синтаксическая ошибка в 7.7 проверяется синтаксическим контролем модуля обработки".
|
|||
44
Alexandr Puzakov
15.08.11
✎
14:29
|
(42) так ведь ругается-то семерка...
|
|||
45
Alexandr Puzakov
15.08.11
✎
14:30
|
+ хотя бы по ругани семерки можно было догадаться, что этот код выполняется на ее стороне ;)
|
|||
46
zippygrill
15.08.11
✎
14:32
|
(43) полностью сконфузил меня.
(45) ну да 7.7. Выгрузку не могу инициализировать. |
|||
47
zippygrill
15.08.11
✎
14:47
|
Ощибка:
СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция<<?>>[ИмяСчета]); {C:\USERS\USR\DESKTOP\МЦБ\ПРАВИЛА ВЫГРУЗКИ\20110811\V77EXP.ERT(145)}: Переменная не объявлена как массив (Корреспонденция) Отсюда: ИмяТабличнойЧасти = Параметры.ПараметрыАлгоритмов.ИмяТабличнойЧасти; ИмяСчета = Параметры.ПараметрыАлгоритмов.ИмяСчета; ИмяСубконто = Параметры.ПараметрыАлгоритмов.ИмяСубконто; Если ПустоеЗначение(ИмяТабличнойЧасти) = 0 Тогда //обрабатываем табличную часть КолЭлементов = ИмяТабличнойЧасти.Количество(); Для Корреспонденция = 0 по КолЭлементов - 1 Цикл мСведенияОСчетах = СоздатьОбъект("ТаблицаЗначений"); СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчета]); |
|||
48
Alexandr Puzakov
15.08.11
✎
14:53
|
(45) все правильно, ты ее только что определил как числовую переменную (счетчик), и тут же пытаешься обратиться через []...
|
|||
49
Alexandr Puzakov
15.08.11
✎
14:54
|
(48) к (47)
|
|||
50
zippygrill
15.08.11
✎
14:58
|
(49) СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция.ИмяСчета);
да нет? |
|||
51
Alexandr Puzakov
15.08.11
✎
15:02
|
(50) в твоем случае и так ты к нему не обратишься, т. к. Корреспонденция - счетчик, он будет содержать значения:
0 1 2 3 4 ... Тут просто не к чему через точку обращаться... |
|||
52
zippygrill
15.08.11
✎
15:08
|
(51) тогда просто:
СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция); ?? |
|||
53
Alexandr Puzakov
15.08.11
✎
15:10
|
(52) что-то мне подсказывает, что туда должен счет/имя счета/код счета передаваться...
|
|||
54
zippygrill
15.08.11
✎
15:14
|
ИмяТабличнойЧасти = Параметры.ПараметрыАлгоритмов.ИмяТабличнойЧасти;
ИмяСчета = Параметры.ПараметрыАлгоритмов.ИмяСчета; ИмяСубконто = Параметры.ПараметрыАлгоритмов.ИмяСубконто; Если ПустоеЗначение(ИмяТабличнойЧасти) = 0 Тогда //обрабатываем табличную часть КолЭлементов = ИмяТабличнойЧасти.Количество(); Для Корреспонденция = 0 по КолЭлементов - 1 Цикл мСведенияОСчетах = СоздатьОбъект("ТаблицаЗначений"); СведенияОСчете = Объект.ПолучитьСведенияОСчете(мСведенияОСчетах, ИмяСчета); Для СчетчикСубконто = 1 По 3 Цикл Для СчетчикСчета = 1 по СведенияОСчете.КоличествоСубконто Цикл Если (Корреспонденция[ИмяСубконто+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСчета].ПривестиЗначение(Корреспонденция[ИмяСубконто+СчетчикСубконто])) и (СчетчикСчета <> СчетчикСубконто) и (ЗначениеЗаполнено(Корреспонденция[ИмяСубконто+СчетчикСубконто])) Тогда Субконто = Корреспонденция[ИмяСубконто+СчетчикСчета]; Корреспонденция[ИмяСубконто+СчетчикСчета] = Корреспонденция[ИмяСубконто+СчетчикСубконто]; Корреспонденция[ИмяСубконто+СчетчикСубконто] = Субконто; КонецЕсли; КонецЦикла; КонецЦикла; Для СчетчикСубконто = 1 По 3 Цикл Если СведенияОСчете.КоличествоСубконто >= СчетчикСубконто Тогда Корреспонденция[ИмяСубконто+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСубконто].ПривестиЗначение(Корреспонденция[ИмяСубконто+СчетчикСубконто]); Иначе Корреспонденция[ИмяСубконто+СчетчикСубконто] = Неопределено; КонецЕсли; КонецЦикла; КонецЦикла; Иначе //обрабатываем объект Корреспонденция = Объект; мСведенияОСчетах = Новый Соответствие; СведенияОСчете = БухгалтерскийУчетДополнительный.ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчета]); Для СчетчикСубконто = 1 По 3 Цикл Для СчетчикСчета = 1 по СведенияОСчете.КоличествоСубконто Цикл Если (Корреспонденция[ИмяСубконто+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСчета].ПривестиЗначение(Корреспонденция[ИмяСубконто+СчетчикСубконто])) и (СчетчикСчета <> СчетчикСубконто) и (ЗначениеЗаполнено(Корреспонденция[ИмяСубконто+СчетчикСубконто])) Тогда Субконто = Корреспонденция[ИмяСубконто+СчетчикСчета]; Корреспонденция[ИмяСубконто+СчетчикСчета] = Корреспонденция[ИмяСубконто+СчетчикСубконто]; Корреспонденция[ИмяСубконто+СчетчикСубконто] = Субконто; КонецЕсли; КонецЦикла; КонецЦикла; Для СчетчикСубконто = 1 По 3 Цикл Если СведенияОСчете.КоличествоСубконто >= СчетчикСубконто Тогда Корреспонденция[ИмяСубконто+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСубконто].ПривестиЗначение(Корреспонденция[ИмяСубконто+СчетчикСубконто]); Иначе Корреспонденция[ИмяСубконто+СчетчикСубконто] = Неопределено; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
55
wertyu
15.08.11
✎
15:17
|
(54) и с какой целью надо было копировать код v8 в обработчик для v7 ?
|
|||
56
Alexandr Puzakov
15.08.11
✎
15:17
|
(54) ну вот, а теперь осталось оттуда убрать весь восьмерочный код :)
|
|||
57
GenV
15.08.11
✎
15:19
|
(54) Определился при выгрузке или при загрузке должен код выполняться и что этот код должен делать?
|
|||
58
zippygrill
15.08.11
✎
15:28
|
(57) единственный обработчик который вызывает данный алгоритм это ПослеЗагрузки ПКО. в другом месте его не встретил. Честно говоря я еще на него смотрю и темный лес((
(55) потому-что не дает выгружать. |
|||
59
GenV
15.08.11
✎
15:32
|
(58) Тогда его !не должно быть! в обработчиках выгрузки и соотв. обработке 7.7.
ЗЫ Судя по коду - едет проверка правильности загруженных субконто для счета и их перестановка или очистка. |
|||
60
zippygrill
15.08.11
✎
15:41
|
(59) ну .... не я его написал а 1С. я лиш пытаюсь понимать его и пользоватся.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |