|
v8: Вопросы по КД2... | ☑ | ||
---|---|---|---|---|
0
mikecool
06.06.13
✎
12:33
|
Начал собсно на старости лет изучать КД2 - посему затрахаю вопросами )
Правила рисую из 77 комплекс в 77 бух Есть документ, в ТЧ счет и три субконто В зависимости от счета-источника подставляется счет-приемник и в приемнике надо субконто 1 - найти в справочнике(типы источника и приемника не совпадают) субконто 2 и 3 - пустые в пкс Субконто1 в событии ПередВыгрузкой записано следующее: КоррСчет = ОбъектКоллекции.КоррСчет; Если (КоррСчет.ПринадлежитГруппе(Параметры.Счет44) = 1) Тогда Если СтрДлина(СокрЛП(Сред(КоррСчет.Код, 4))) > 1 Тогда //это субсчета, заменяемые на субконто СтруктураДляПравила = СоздатьОбъект("СписокЗначений"); СтруктураДляПравила.ДобавитьЗначение("Код", "Z1"); СтруктураДляПравила.ДобавитьЗначение("Наименование", "Z1"); СтруктураДляПравила.ДобавитьЗначение("Родитель", ""); СтруктураДляПравила.ДобавитьЗначение("ЭтоГруппа", 0); СтруктураДляПравила.ДобавитьЗначение("СписыватьИздержкиПропорциональноОстаткуТоваров", 0); Значение = ВыгрузитьПоПравилу(, , СтруктураДляПравила, , "СтатьиИздержекОбращенияВхДанные"); КонецЕсли; КонецЕсли; Значение субконто в файл выгрузки попадает с пустыми значениями свойств ПКО СтатьиИздержекОбращенияВхДанные - все реквизиты с галкой "Получать из вх. данных" Значение = ВыгрузитьПоПравилу(, , СтруктураДляПравила, , "СтатьиИздержекОбращенияВхДанные"); или ВыгрузитьПоПравилу(, , СтруктураДляПравила, , "СтатьиИздержекОбращенияВхДанные"); - результат одинаков, пустая структура чяднт? как же получить нормальную заполненную структуру для того, чтобы при загрузке по ней нашелся/создался элемент справочника? |
|||
1
fenixx
06.06.13
✎
12:42
|
А в приемнике куда записывать надо - в ТЧ, в шапку документа или ещё куда?
|
|||
2
mikecool
06.06.13
✎
12:44
|
(1) также, в ТЧ, структуры документов практически идентичны
|
|||
3
acsent
06.06.13
✎
12:45
|
СтруктураДляПравила.ДобавитьЗначение("Родитель", "")
Ты правильно делаешь? Значение и представление не путаешь? |
|||
4
fenixx
06.06.13
✎
12:46
|
ИМХО, там ПКГС надо править, при выгрузке ТЧ. То что ты написал не взлетит. Исходящие данные формируются для объекта целиком, в ПКС дума можно только что-то добавить
|
|||
5
mikecool
06.06.13
✎
13:05
|
(3) я вообще хотел передавать только код и Этогруппа как поля поиска, но при загрузке в приемнике получал "не заполнено наименование" и т.п.
(4) щас попробую в пкгс прописать |
|||
6
fenixx
06.06.13
✎
13:16
|
Блин, ну и задачка )
Попробуй ещё, через ПКС субконто 1 вариант Насколько я понял, ПКС для счетов у тебя настроен? Тогда в ПКС субконто 1 можно изобразить Если ОБъектКоллекции.Счет = ... Тогда Значение = ... ИмяПКО = ... ИначеЕсли ОбъектКоллекции.Счет = ... Значение = ... ИмяПКО = ... КонецЕсли; |
|||
7
fenixx
06.06.13
✎
13:17
|
(6) + в обработчике "ПередВыгрузкой"
|
|||
8
mikecool
06.06.13
✎
13:18
|
(6) у меня есть только строка кода элемента справочника приемника, схавает только по нему?
щас для тестов записал в пкс субконто1 в источнике: Статьи = СоздатьОбъект("Справочник.СтатьиИздержекОбращения"); Статьи.НайтиПоКоду("14000001", 0); Значение = Статьи.ТекущийЭлемент(); это работает. пробую вариант (6) |
|||
9
mikecool
06.06.13
✎
13:19
|
но думаю если в значение запихну строку, то не пко соответствующее не схавает, или ошибаюсь?
|
|||
10
fenixx
06.06.13
✎
13:23
|
(8) схавает. Сделай ПКО типа "из строки в справочник":
Источник - строка Приемник - справочник.ххх делаешь одно пкс Источник - строка, Приемник - код. Ставишь галку "поиск", в обработчике перед выгрузкой пишешь "Значение = Источник" |
|||
11
mikecool
06.06.13
✎
13:42
|
пкс субконто стало таким http://s018.radikal.ru/i505/1306/6c/2ccfcceb0f8d.jpg
пко на строка - справочник такое http://s49.radikal.ru/i125/1306/57/e956b536a1d9.jpg при загрузке не находится |
|||
12
mikecool
06.06.13
✎
13:46
|
в файле выгрузки
- <Объект Нпп="10" Тип="СправочникСсылка.СтатьиИздержекОбращения" ИмяПравила="СтатьяИздержекПоКоду"> - <Ссылка Нпп="10"> - <Свойство Имя="Код" Тип="Строка"> <Пусто /> </Свойство> </Ссылка> </Объект> |
|||
13
fenixx
06.06.13
✎
13:51
|
(12) Попробуй в ПКС (Субконто1->Cубконто1) очистить Источник - субконто1. Ты же значению строку присваиваешь. Теоретически, это может не влиять, но кто его знает...
|
|||
14
vicof
06.06.13
✎
13:53
|
(13) Это не влияет.
|
|||
15
vicof
06.06.13
✎
13:54
|
Правило укажи в ПКС
|
|||
16
fenixx
06.06.13
✎
13:54
|
(12) А в обработчике "При выгрузке" что за код?
|
|||
17
fenixx
06.06.13
✎
13:55
|
(15) правило он указал в обработчике. И оно прижилось ИмяПравила="СтатьяИздержекПоКоду"
значение почему-то не подхватилось. |
|||
18
mikecool
06.06.13
✎
13:55
|
(13) заработало!
|
|||
19
mikecool
06.06.13
✎
13:57
|
ПКС Субконто1, Перед выгрузкой:
Источник = ""; Значение = "14000001"; ИмяПКО = "СтатьяИздержекПоКоду"; и все нормально выгружается-загружается ) всем спасибо |
|||
20
fenixx
06.06.13
✎
13:59
|
(19) =-O
Я вообще имел ввиду поле в форме редактирования ПКС очистить. Ну, заработало значит и так прокатит ) |
|||
21
mikecool
06.06.13
✎
13:59
|
ветка с круглым номером )))
|
|||
22
mikecool
06.06.13
✎
14:00
|
(20) заработало, как - я хз, это чудо )))
|
|||
23
fenixx
06.06.13
✎
14:01
|
(22) а кинь xml-код выгруженного дока, глянуть что там получилось.
|
|||
24
mikecool
06.06.13
✎
14:01
|
а если почистить поле - то и источник очищать не придется ))
но - у меня подмена субконто только по конкретному счету идет, по остальным - обработка по-умолчанию |
|||
25
mikecool
06.06.13
✎
14:02
|
(23) ось так в файле получилось
- <Объект Нпп="10" Тип="СправочникСсылка.СтатьиИздержекОбращения" ИмяПравила="СтатьяИздержекПоКоду"> - <Ссылка Нпп="10"> - <Свойство Имя="Код" Тип="Строка"> <Значение>14000001</Значение> </Свойство> </Ссылка> </Объект> в документе соответственно - ссылки на Нпп=10 |
|||
26
vicof
06.06.13
✎
14:03
|
(25) Может, ты сохранил правила?)
|
|||
27
mikecool
06.06.13
✎
14:04
|
(26) нене, я каждый раз сохранял и правила, и модули
|
|||
28
fenixx
06.06.13
✎
14:05
|
(25) Я всегда считал что "Источник" - это ссылка на док целиком. С этой точки зрения обнулив "Источник" ты ссылку на док побил.
хелп в этом отношении тоже ясности не вносит: "Источник - Произвольный. Ссылка на выгружаемый объект источник данных" А что за объект - док в целом или субконто1 - неполнятненько.... |
|||
29
mikecool
06.06.13
✎
14:05
|
(28) в данном случае в пкс Субконто1 Источник = ссылка на значение субконто1 источника, имхо
|
|||
30
fenixx
06.06.13
✎
14:06
|
(25) да, бывает паришься паришься а на самом деле правила не выгрузил :-)
|
|||
31
fenixx
06.06.13
✎
14:07
|
(29) Ну что тут сказать... Век живи век учись
|
|||
32
mikecool
06.06.13
✎
14:07
|
(30) не, я как школьник в первом классе - переписываю весь лист )))
даже модуль загрузки подменяю, хотя в нем и не было изменений ) |
|||
33
fenixx
06.06.13
✎
14:09
|
(32) ты как во второй класс перейдёшь (будешь корёжить восьмерочные правила для планов обмена БСП) - увидишь что лучше иногда перепроверить )
|
|||
34
mikecool
06.06.13
✎
14:12
|
(33) )))
до этого сталкивался с правилами 8х-77 там все было на пвд заточено, подготовка структуры выгрузки вся была там, куски кода одинакового было по всем пвд - что изменить, надо править по всем пвд ( а щас подумал - ведь должно же работать и в пкс все, что бы если править, то в одном месте ) |
|||
35
mikecool
06.06.13
✎
15:56
|
а вот теперь усложняю вопрос - как решенный сабж вынести в общее пко типа "КонвертацияСубконто", чтобы не прописывать тексты модулей в каждом реквизите, а указывать пко?
|
|||
36
mikecool
06.06.13
✎
15:56
|
думаю - должно же получиться?
|
|||
37
vicof
07.06.13
✎
04:50
|
на уровне конвертации есть событие "ПередВыгрузкойОбъекта". Там можно проверять и выгружать.
Можно сделать алгоритм, в котором написать действия по выгрузке, а в ПКС указывать, что нужно выполнить алгоритм. |
|||
38
mikecool
07.06.13
✎
09:55
|
(37)
ПередВыгрузкойОбъекта - думаю не подойдет, поскольку анализ именно свойства нужен, ибо это субконто - а будет ли выгружаемый объект ссылкой на свойство субконто - не всегда. вот про алгоритмы мне уже намекнули, почитал по ссылкам и не особо понял как их применять ( |
|||
39
mikecool
07.06.13
✎
10:14
|
если я правильно понимаю, вызываю алгоритм, в нем доступно в виде параметров все из пко или пкс, и собсно в самом алгоритме все и прописываю?
|
|||
40
mikecool
07.06.13
✎
10:24
|
в алгоритме доступны входящие и исходящие данные, если я в пкс передвыгрузкой вызываю алгоритм - какое из этих свойств заполнять?
|
|||
41
fenixx
07.06.13
✎
10:49
|
(35) Я правильно понял, что ты хочешь правило "Субконто в субконто" сделать для нескольких документов?
|
|||
42
fenixx
07.06.13
✎
10:58
|
(40) В алгоритме доступен весь контекст обработчика. Т.е. если вызвать из обработчика "Перед выгрузкой" то в алгоритме можешь задавать "значение" "имя пко", смотреть реквизиты источника и объекта коллекции для тч
|
|||
43
fenixx
07.06.13
✎
10:59
|
+ (42) Это в восьмерке. Будет ли так работать в семёрке - сложно сказать
|
|||
44
mikecool
07.06.13
✎
10:59
|
(41) ога, эти субконто - в каждом документе по три раза, и чтобы в сслучае изменения алгоритма не лазить по всем пко и пкс - опишу все в одном месте
|
|||
45
mikecool
07.06.13
✎
11:00
|
попробовал - получилось ))
все описано также как и ранее в пкс, только в одном месте терь будет ) |
|||
46
mikecool
07.06.13
✎
11:00
|
(43) в семерке тоже доступно, проверено
|
|||
47
mikecool
07.06.13
✎
11:12
|
вот остается вопрос - в источнике субконто 3, если в приемнике только одно субконто, как указать, что второе и третье должны быть пустыми? Отказ = 1 при выгрузке 2 и 3?
или Пусто = 1? |
|||
48
mikecool
07.06.13
✎
11:15
|
пробую через Пусто = 1
|
|||
49
sttt
07.06.13
✎
11:16
|
(38) Выполнить(Алгоритмы.ЧтотоСделать);
|
|||
50
mikecool
07.06.13
✎
12:03
|
(49) а вот в семерке нет - это функция, так что просто ЧтотоСделать()
|
|||
51
mikecool
14.06.13
✎
11:41
|
Подниму тему... Теперь уперся в операции, надо переносить еще и их проводки.
Почитал Хрусталеву, почитал Бояркина - не понял, как это делать у меня нет ни источника, ни приемника, как рисовать ПКС - не представляю... помогите чем можете ) |
|||
52
Aleksey
14.06.13
✎
11:46
|
как это нет приемника? украли?
|
|||
53
mikecool
14.06.13
✎
11:50
|
(52) ну в 77 таб части или набора записей нет, к чему привязывать свойства?
|
|||
54
mikecool
14.06.13
✎
12:54
|
попробовал описать выгрузку согласно Перенос операций между 7.7 базами с помощью КД2
выгружается, ругается, что не на все значения есть пко - как бы нормально а вот при загрузке - 1с крашится без звуков (( |
|||
55
mikecool
14.06.13
✎
12:56
|
пытаюсь описать согласно Бояркину, но тут проблема - нет приемника и не активируется ПКГС
как активировать правило конветации, если нет ни источника, ни приемника? |
|||
56
ДенисЧ
14.06.13
✎
12:57
|
Если нет приёмника нет, куда выгружаешь?
|
|||
57
acsent
14.06.13
✎
12:57
|
Для начала открой правила из бу 77 в бп 20. посмотри как несовпадающие субконто передают
|
|||
58
acsent
14.06.13
✎
12:58
|
там же как проводки передают
|
|||
59
mikecool
14.06.13
✎
12:59
|
(57) как бы пример из 7 в 8 видел, в приемнике есть набор записей
у меня 7 - 7, там ни в источнике, ни в приемнике нихрена нет |
|||
60
acsent
14.06.13
✎
12:59
|
Ах тебе из 7 в 7. Это ваще хз как
|
|||
61
mikecool
14.06.13
✎
12:59
|
(56) хз, вот как то надо ))))
|
|||
62
mikecool
14.06.13
✎
13:00
|
(60) :) зато экспа будет
|
|||
63
acsent
14.06.13
✎
13:00
|
(62) да кому она такая нужна
|
|||
64
acsent
14.06.13
✎
13:01
|
там весь код внутри обработчиков. Проще самому обработку писать
|
|||
65
acsent
14.06.13
✎
13:01
|
*Все формирование XML файла
|
|||
66
mikecool
14.06.13
✎
14:25
|
(64) вот вечно извращение какое придумаешь...
|
|||
67
mikecool
14.06.13
✎
14:31
|
как же сэмулировать приемник?
|
|||
68
acsent
14.06.13
✎
14:40
|
(67) никак, только самому формировать хмл
|
|||
69
mikecool
14.06.13
✎
14:52
|
(68) я надыбал кусок, ссылку в (54) привел, дык валит приемник при загрузке ((
|
|||
70
acsent
14.06.13
✎
14:53
|
(69) выгружай 1 операцию и отладчиком ищи где валит
|
|||
71
mikecool
14.06.13
✎
14:54
|
о, еще нарвался
ТекстЗапроса = "Период С ДатаНачала По ДатаОкончания; |ТекущийДокумент = Документ.РасходнаяНакладная.ТекущийДокумент; |Номенклатура = Документ.РасходнаяНакладная.Товар; |Условие (Номенклатура.ВидТовара = Перечисление.ВидыТоваров.Товар); |Условие (Сумма(Номенклатура) > 0); |Группировка ТекущийДокумент; при выгрузке говорит "Функция не обнаружена (Сумма)" пробовал Количество() - та же хрень |
|||
72
mikecool
14.06.13
✎
14:54
|
(70) уже предчуствую отладчик и рыдаю (((
|
|||
73
mikecool
14.06.13
✎
14:54
|
+71 в передвыгрузкой пвд
|
|||
74
mikecool
14.06.13
✎
17:17
|
остыли? ща подкину дровишек
имею пвд, в передобработкой написал: Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "Период С ДатаНачала По ДатаОкончания; |ТекущийДокумент = Документ.РасходнаяНакладная.ТекущийДокумент; |Номенклатура = Документ.РасходнаяНакладная.Товар; |Условие (Номенклатура.ВидТовара = Перечисление.ВидыТоваров.Товар); |Группировка ТекущийДокумент; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Отказ = 1; КонецЕсли; СписокДанных = СоздатьОбъект("СписокЗначений"); Пока Запрос.Группировка("ТекущийДокумент") = 1 Цикл Если СписокДанных.Принадлежит(Запрос.ТекущийДокумент) = 0 Тогда СписокДанных.ДобавитьЗначение(Запрос.ТекущийДокумент); КонецЕсли; КонецЦикла; Для Счетчик = 1 По СписокДанных.РазмерСписка() Цикл ВыгрузитьПоПравилу(СписокДанных.ПолучитьЗначение(Счетчик), , , , "РасходнаяНакладная"); КонецЦикла; в ПКО "РасходнаяНакладная" в ПКГС ТабличнаяЧасть в событии "Перед выгрузкой" как бы (по справке) должен получать построчно строки табчасти, а получаю таблицу значений, с содержимым ТЧ - при этом событие вызывается столько раз, сколько строк в ТЧ документа где я совершил косяк? |
|||
75
mikecool
14.06.13
✎
17:22
|
вернул в пвд стандартную выгрузку
ситуация не изменилась... значит все таки справка врет, и в ПКГС только ТЗ целиком, а не построчно обрабатывается |
|||
76
Alex S D
14.06.13
✎
17:26
|
(75) нет, товарищ, у меня там все работает. Где ты там таблицу видишь?
|
|||
77
Alex S D
14.06.13
✎
17:27
|
и что у тебя в ОбъектКоллекции ?
|
|||
78
mikecool
14.06.13
✎
17:28
|
(76) в ПКГС "Табличная часть" в событии "Перед выгрузкой" ОбъектКоллекции = Таблица значений
|
|||
79
mikecool
14.06.13
✎
17:30
|
вот так проверял
http://s020.radikal.ru/i713/1306/e6/2be8e04b1087.jpg |
|||
80
mikecool
14.06.13
✎
17:31
|
пробовал инициализровать ВыборкаДанных в виде списка значений
выполнял при этом Важно: Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты". |
|||
81
mikecool
14.06.13
✎
17:32
|
щас думаю переписать на ВыборкаДанных в виде ТЗ и попробовать еще раз с произвольным алгоритмом
|
|||
82
Alex S D
14.06.13
✎
17:37
|
а что у тебя в Источнике в ПКГС ПередВыгрузкой?
|
|||
83
mikecool
17.06.13
✎
09:24
|
(82) а в источник у меня попадает документ
|
|||
84
mikecool
17.06.13
✎
09:49
|
+83 даже при стандартной выгрузке туда попадает документ
вотзефак? |
|||
85
mikecool
17.06.13
✎
10:25
|
почему ПКГС вызывается столько раз, сколько строк в документе?
|
|||
86
mikecool
17.06.13
✎
10:26
|
+85 вернее - это логично, но почему в элементеколлекции не строка, а вся табчасть документа?
|
|||
87
mikecool
17.06.13
✎
10:50
|
подниму чтоли
|
|||
88
mikecool
17.06.13
✎
13:40
|
новый вопрос:
в ПКО в ПриЗагрузке пишу ВариантНалогов = СоздатьОбъект("Справочник.ВариантыРасчетаНалогов"); ВариантНалогов.НайтиПоКоду(99); Объект.ВариантРасчетаНалогов = ВариантНалогов.ТекущийЭлемент(); Объект.ВыбратьСтроки(); Пока Объект.ПолучитьСтроку() = 1 Цикл Объект.Всего = глПоказательДокумента(Объект, "СуммаСНалогами"); КонецЦикла; получаю: Объект.ВариантРасчетаНалогов - заполнен Всего - нет чяднт? |
|||
89
mikecool
17.06.13
✎
13:41
|
+88 в отладчике смотрю - Всего рассчитывается и присваивается, а в готовом документе - пусто
|
|||
90
mikecool
17.06.13
✎
13:44
|
где же спецы по кд?
|
|||
91
sttt
17.06.13
✎
14:27
|
(89) может последняя строка пустая))
|
|||
92
mikecool
17.06.13
✎
17:44
|
(91) как ни странно - переписал в событие послезагрузки(хоть оно и для восьмерки) - и сработало
|
|||
93
mikecool
17.06.13
✎
17:46
|
на мисте в последнее время пока ответ получишь - сам все выучишь и сделаешь )))
|
|||
94
sttt
17.06.13
✎
18:26
|
(92) где это написано, что для 8ки?
погорячился я в (91) не внимательно посмотрел, что у тебя выборка объекта)) |
|||
95
EvgeniuXP
17.06.13
✎
19:07
|
(0) так курсы по КД есть :)
|
|||
96
mikecool
18.06.13
✎
09:41
|
(94) в справке в кд )
(95) да, верю, и что? я смотрел курсы от nasf-а, пока смотришь - все понятно, курсы дают лишь поверхностное значние, зачастую при реальных задачах ответов в них не найдешь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |