|
Вопрос по конвертации данных | ☑ | ||
---|---|---|---|---|
0
Charity
23.11.13
✎
16:08
|
Доброго времени суток! у меня возник вопрос по конвертации данных, суть которого в следующем:в ПВД я делаю следующее: если из определенного реквизита не могу получить нужные мне данные, то запихиваю в реквизит пустую строку. иначе ссылку на док, из которого могу получить данные. Далее пишу ВыгрузитьПоПравилу(,,моиДанные, имяправила).
в ПКО пишу, что этот реквизит (который я инициализирую по тем условиям, что приведены выше) конвертируется по определенному правилу. /Сообщить("Источник "+Источник); В самом ПКО для этого объекта пишу, что Сообщить("Источник "+Источник); наблюдаю, что по тем объектам, которые инициализированы источником = документ, сообщение выводится, а по тем, где я не инициализировала исходящие данные - нет. Таким образом, конвертация доходит только до тех объектов, во входящих данных которых есть что-то. P.S. пробовала инициализировать передаваемый параметр как определенную организацию, однако происходит все то же самое, что я и писала выше. прошу подсказать, спасибо! |
|||
14
Диманыч
23.11.13
✎
16:43
|
(13) Нет проблема у тебя, что бы нам думать и концентрироваться нам нужен стимул а так лень
|
|||
15
vicof
23.11.13
✎
16:46
|
(13) непонятно, какая задача
|
|||
16
Aleksey
23.11.13
✎
16:48
|
(13) КД не конвертируеь пустую строку, т.е. по тем значениям, где "запихиваю в реквизит пустую строку." - ПКО не срабатывает, поэтому тебе в (2) подсказали
Исходя из твоих ответов непонятно что не получается и что ты хочешь от КД |
|||
17
Charity
23.11.13
✎
16:49
|
Итак, формулирую по-другому:
у меня есть определенный запрос, он возвращает остатки по счету с учетом его аналитики. я выгружаю данные, полученные в результате этого запроса с помощью команды ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ИМЯ_ПРАВИЛА"); в процессе выполнения запроса один из параметров я инициализирую так: -есть данные - тогда в параметр идет ссылка на док - нет данных - тогда в параметр идет ссылка на организацию в правиле конвертации прописано, что эти данные конвертируются согласно определенному правилу. В этом правиле прописано, что Сообщить("Источник "+Источник); Вопрос в следующем, почему у меня сообщается только то, что имеет место быть при заполненном источнике?? |
|||
18
Aleksey
23.11.13
✎
16:50
|
(17) Потому что так ленивая КД работает, нет данных и незачем напрягаться
|
|||
19
Wobland
23.11.13
✎
16:52
|
а источник у нас кто?
//очень лениво думать в субботу вечером.. |
|||
20
Диманыч
23.11.13
✎
16:53
|
(17) А может запрос поробуешь покопать ? А то нам лень. Может в нем слоненок зарылся ?
|
|||
21
Charity
23.11.13
✎
16:58
|
Я думаю, что проблема не в запросе, а в том, как интерпретирует входящие данные конвертация. во входящих данных не пусто, следовательно, она должна мне при выгрузке сообщать, что входящие данные = томуто или же источник = томуто.
|
|||
22
Aleksey
23.11.13
✎
16:59
|
(21) может просто для организации ты не указала
Сообщить("Источник "+Источник); |
|||
23
Charity
23.11.13
✎
16:59
|
Aleksey, в том - то и проблема, что данные не пустые
|
|||
24
Aleksey
23.11.13
✎
17:00
|
честно говоря до сих пор непонятно что делаешь и что не получается. Вначале были пустые строки, теперь уже заполненные справочники
|
|||
25
Charity
23.11.13
✎
17:00
|
Wobland, источник у нас в зависимости от условий либо определенный док, либо ссылка на организацию
|
|||
26
Диманыч
23.11.13
✎
17:04
|
(25) Если не выводится пустое сообщение "Источник", может все таки проблема в запросе ?
|
|||
27
Charity
23.11.13
✎
17:05
|
объясняю на пальцах: остатки по 10 счету. у него 3 субконто: материалы, склады, партии.
в выгружаемой базе м.б. такое, что док партии не содержит данных о контрагенте, его договоре (рассматриваем только материалы) поэтому делаю следующее ПВД: Если ПустоеЗначение(ВидДокументаПартии) = 0 Тогда СписокМПЗ.Партия = ДокПартии; Иначе //ничего КонецЕсли; |
|||
28
Aleksey
23.11.13
✎
17:05
|
Ну и ?
|
|||
29
vicof
23.11.13
✎
17:06
|
(27) Продолжай
|
|||
30
Aleksey
23.11.13
✎
17:07
|
У тебя если ПустоеЗначение(ВидДокументаПартии) = 1 СписокМПЗ.Партия будет пустое значение, так?
А значит конкретно для партии в этом случае ПКО срабатывать не будет |
|||
31
Charity
23.11.13
✎
17:07
|
в пкс стоит "Партии" для данного реквизита
|
|||
32
Aleksey
23.11.13
✎
17:09
|
(31) и?
P.S. У кого там клещи побольше есть? а то мы до вечера до вопроса не дойдём P.S.2 Charity у тебя дед случайно не партизаном был? |
|||
33
Charity
23.11.13
✎
17:10
|
в самом ПКС прописано, что
Если ПустоеЗначение(ВходящиеДанные) = 1 Тогда Сообщить("Источник = "+Источник); //Сообщить("Способ"); КонецЕсли; И сообщение это вылазит только если в качестве источника был док а если в качестве источника была организация, то в сообщениях ничего не выводится |
|||
34
Aleksey
23.11.13
✎
17:11
|
(33) эээ а что такое ВходящиеДанные тебе известно?
|
|||
35
Charity
23.11.13
✎
17:11
|
из этого делаю вывод, что ПКС не отрабатывает при источник = Организация
|
|||
36
Aleksey
23.11.13
✎
17:11
|
(35) в каком случае источник = Организация, из приведенного выше это явно не следует
|
|||
37
Charity
23.11.13
✎
17:12
|
Известно. Пробовала по-разному. Все равно в сообш.ничего не выводится, стоит ли условие на источник или на вх.д.
|
|||
38
Charity
23.11.13
✎
17:13
|
если не выполняются условия, что я из дока могу получить контрагента и его договор, источник = организ
|
|||
39
Aleksey
23.11.13
✎
17:14
|
(37) и что такое ВходящиеДанные и откуда они берутся?
|
|||
40
Aleksey
23.11.13
✎
17:15
|
(38) где это в коде?
|
|||
41
Charity
23.11.13
✎
17:16
|
Алексей, Вы меня экзаменуете? Я уже сделала по такой методике несколько правил, все было норм, а сейчас косяк.
|
|||
42
Charity
23.11.13
✎
17:17
|
вх.д. это то, что мы передаем в качестве источника
|
|||
43
Charity
23.11.13
✎
17:17
|
берутся из пвд
|
|||
44
Charity
23.11.13
✎
17:18
|
там задается структура, которая и выгружается
|
|||
45
Aleksey
23.11.13
✎
17:18
|
(42) нет, входяшие данные это то что мы передаем в исходящихданных. Это не источник это вспомогательные данные, которые ниразу не обязанные быть такими же как и источник
|
|||
46
Диманыч
23.11.13
✎
17:19
|
(41) А я паровоз поднимал !!!!!!!!!
Если ПустоеЗначение(ВходящиеДанные) = 1 Тогда Сообщить("Источник = "+Источник); //Сообщить("Способ"); КонецЕсли; Допищи Иначе Сообщить(ВходящиеДанные); Посмотри что вытащит. |
|||
47
Aleksey
23.11.13
✎
17:19
|
т.е. ты можешь например передать ссылку на договор а во входящих данных передать к примеру вид договора
|
|||
48
Диманыч
23.11.13
✎
17:20
|
(47) Она хочет сделать из нас телепат отладчик ))))))))
|
|||
49
Aleksey
23.11.13
✎
17:21
|
(41) Делать мне больше нечего как в субботу вечером экзаменовать по интернету незнакомую мне девушку
|
|||
50
GreyK
23.11.13
✎
17:22
|
(38)
Сообщить ВыгрузитьПоПравилу(,,,,); // Параметры: // Источник - произвольный источник данных // Приемник - xml-узел объекта приемника // ВходящиеДанные - произвольные вспомогательные данные, передаваемые правилу // для выполнения конвертации // ИсходящиеДанные - произвольные вспомогательные данные, передаваемые правилам // конвертации свойств // ИмяПКО - имя правила конвертации, согласно которому осуществляется выгрузка // УзелСсылки - xml-узел ссылки объекта приемника // ТолькоПолучитьУзелСсылки - если Истина, то выгрузка объекта не производится, только формируется // xml-узел ссылки // ПКО - ссылка на правило конвертации |
|||
51
Aleksey
23.11.13
✎
17:24
|
+ (50)
Функция ВыгрузитьПоПравилу(Источник = Неопределено, Приемник = Неопределено, ВходящиеДанные = Неопределено, ИсходящиеДанные = Неопределено, ИмяПКО = "", УзелСсылки = Неопределено, ТолькоПолучитьУзелСсылки = Ложь, ПКО = Неопределено, ЭтоПравилоСГлобальнойВыгрузкойОбъектов = Ложь, ВыборкаДляВыгрузкиДанных = Неопределено) Экспорт |
|||
52
Aleksey
23.11.13
✎
17:25
|
В твоем случае НЕ передаешь источник, а передаешь "ВходящиеДанные"
Когда КД сама выгружает она передает Источник, но ВходящиеДанные - пустые |
|||
53
Charity
23.11.13
✎
17:27
|
Господа, я знаю, что такое выгрузитьПоПравилу
прошу разъяснений по поводу того, почему у меня всегда источник пустой и входящие данные тоже пустые, кроме случаев, когда док заполнен? |
|||
54
Aleksey
23.11.13
✎
17:30
|
(53) ты ... блондинка?
|
|||
55
vicof
23.11.13
✎
17:31
|
(54) на 54 посту почти подобрались к истине :)
|
|||
56
GreyK
23.11.13
✎
17:31
|
(53) Источник ты не заполняешь, судя по вызову функции, а вот что делается до вызова этой функции я не в курсе, ты ведь правило выгрузки не показываешь.
|
|||
57
Charity
23.11.13
✎
17:33
|
пвд
//************************************************************************************************* // Счета учета Спецодежды и материалов //************************************************************************************************* ДатаПо = Дата(2013,09,30); СписокМПЗ = СоздатьОбъект("ТаблицаЗначений"); СписокМПЗ.НоваяКолонка("СчетУчета"); СписокМПЗ.НоваяКолонка("Номенклатура"); СписокМПЗ.НоваяКолонка("Склад"); СписокМПЗ.НоваяКолонка("Партия"); СписокМПЗ.НоваяКолонка("Количество"); СписокМПЗ.НоваяКолонка("Сумма"); СписокМПЗ.НоваяКолонка("СуммаНУ"); //СписокМПЗ.НоваяКолонка("Контрагент"); //СписокМПЗ.НоваяКолонка("Договор"); БУ = СоздатьОбъект("БухгалтерскиеИтоги"); БУ.Опции(1); БУ.ИспользоватьСубконто(); БУ.ИспользоватьСубконто(); БУ.ИспользоватьСубконто(); БУ.ВыполнитьЗапрос(ДатаПо,, "10.1.10, 10.1.002, 10.1.056, 10.1.611, 10.3.10, 10.3.11, 10.3.21, 10.3.31,10.3.41,10.3.51, 10.3.61, 10.3.71, 10.3.81, 10.3.91, 10.3.002, 10.3.056, 10.3.611, 10.4.10, 10.4.11, 10.4.002, 10.4.056, 10.4.611, 10.5.10, 10.5.002, 10.5.056, 10.5.611, 10.6.10, 10.6.002, 10.6.056, 10.6.611, 10.7.10, 10.7.002, 10.7.056, 10.7.611, 10.8.10, 10.8.002, 10.8.056, 10.8.611, 10.9.10, 10.9.002, 10.9.056, 10.9.611"); БУ.ВыбратьСубконто(1); //материалы К = 1; Пока БУ.ПолучитьСубконто(1) = 1 Цикл Если БУ.Субконто(1).ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; К=К+1; БУ.ВыбратьСчета(); Пока БУ.ПолучитьСчет() = 1 Цикл Бу.ВыбратьСубконто(2); Пока БУ.ПолучитьСубконто(2) = 1 Цикл //склады Бу.ВыбратьСубконто(3); //партии Пока БУ.получитьСубконто(3) = 1 Цикл СписокМПЗ.НоваяСтрока(); СписокМПЗ.СчетУчета = Лев(БУ.Счет.Код,4); СписокМПЗ.Номенклатура = БУ.Субконто(1); СписокМПЗ.Склад =БУ.Субконто(2); //СписокМПЗ.НоваяКолонка("Партия"); СписокМПЗ.Количество = БУ.СКД(3); СписокМПЗ.Сумма =БУ.СКД(1); СписокМПЗ.СуммаНУ =БУ.СКД(1); Сообщить("Счет "+БУ.Счет); Сообщить("Материал "+БУ.Субконто(1)); Сообщить("Склад "+БУ.Субконто(2)); Сообщить("Партия "+БУ.Субконто(3)); Сообщить("Сумма "+БУ.СКД(1)); Сообщить("Количество "+БУ.СКД(3)); //проверить, является ли документ партии доком расчетов с контрагентами //для дока поступления МПЗ это реквизит шапки субконто1 = контрагент //субконто2 = договор //но вначале надо проверить, что док поступления делает движения с кт 60 счета ДокПартии = БУ.Субконто(3).Документ; ВидДокументаПартии =ДокПартии.Вид(); Если ПустоеЗначение(ВидДокументаПартии) = 0 Тогда //возможно выцепить док партии Сообщить("Вид "+ДокПартии.ПредставлениеВида()); //проверить наличие реквизита счетК ЕстьСчетКредита = Метаданные.Документ(ВидДокументаПартии).РеквизитШапки("СчетК").Выбран(); Если ЕстьСчетКредита = 1 Тогда Сообщить("У документа есть такой реквизит"); //проверить, что у дока по счету кредита проходит 60 //Сообщить( Если Лев(ДокПартии.СчетК.Код,2) ="60" Тогда //это док расчетов с контрагентом, его можно выцепить из субконто СписокМПЗ.Партия = ДокПартии; //Контрагент = ДокПартии.Субконто1; //Сообщить("Контрагент "+Контрагент); //ДоговорКонтрагента = ДокПартии.Субконто2; //Сообщить("Договор "+ДоговорКонтрагента); //СписокМПЗ.Контрагент =Контрагент; //СписокМПЗ.Договор =ДоговорКонтрагента; Иначе СписокМПЗ.Партия =1 ; //СписокМПЗ.Контрагент =Константа.ОсновнаяФирма; //СписокМПЗ.Договор =ДоговорКонтрагента; КонецЕсли; Иначе СписокМПЗ.Партия = 1; //это не документ поступления МПЗ, партия генерируется на некий общий документ //СписокМПЗ.Контрагент =Константа.ОсновнаяФирма; //СписокМПЗ.Договор =ДоговорКонтрагента; Конецесли; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Если К=10 Тогда Прервать;КонецЕсли; КонецЦикла; ВходящиеДанные = СоздатьОбъект("СписокЗначений"); ВходящиеДанные.УдалитьВсе(); ВходящиеДанные.Установить("Организация",Константа.ОсновнаяФирма); ВходящиеДанные.Установить("МПЗПриобретенные", СписокМПЗ); ВходящиеДанные.Установить("ОтражатьВНалоговомУчете", 1); ВходящиеДанные.Установить("ОтражатьВБухгалтерскомУчете", 1); ВходящиеДанные.Установить("ОтражатьПоСпециальнымРегистрам", 1); ВходящиеДанные.Установить("РазделУчета", "Материалы"); ВходящиеДанные.Установить("Комментарий", "АБ_Остатки по 10_АБ"); ВходящиеДанные.Установить("Дата", ДатаПо); ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ВводНачальныхОстатков_Материалы_Спецодежда"); |
|||
58
Aleksey
23.11.13
✎
17:34
|
(57) а чем тебе параметр ВыборкаДанных не нравится?
ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов. Используется, когда способ выгрузки данных - Произвольный алгоритм. Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически |
|||
59
Aleksey
23.11.13
✎
17:35
|
А где тут организация?
|
|||
60
Charity
23.11.13
✎
17:36
|
Aleksey, а какая разница? в типовых правилах похожий на мой алгоритм
|
|||
61
Charity
23.11.13
✎
17:36
|
СписокМПЗ.Партия = 1;
|
|||
62
Aleksey
23.11.13
✎
17:36
|
(60) большая
|
|||
63
Charity
23.11.13
✎
17:37
|
до этого вместо 1 была некоторая орг-я
|
|||
64
Aleksey
23.11.13
✎
17:37
|
убери выгрузитьПоПравилу и исправь на ВыборкаДанных
|
|||
65
Charity
23.11.13
✎
17:38
|
я не совсем поняла, можно пример?
|
|||
66
GreyK
23.11.13
✎
17:42
|
(65) А если нет партии? То как списокМПЗ заполнится!?
Пока БУ.получитьСубконто(3) = 1 Цикл СписокМПЗ.НоваяСтрока(); |
|||
67
Charity
23.11.13
✎
17:44
|
как видно из кода, заполняется все кроме партии
|
|||
68
vicof
23.11.13
✎
17:44
|
(65) Запрос = Новый Запрос;
Запрос.Текст = "блаблабла"; ВВыборкаДанных = Запрос; |
|||
69
Aleksey
23.11.13
✎
17:45
|
(65) считай что ВыборкаДанных - это виртуальный твой документ, вот и создавай его со всем реквизитами реального документа
ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений"); МПЗПриобретенные = СоздатьОбъект("ТаблицаЗначений"); МПЗПриобретенные.НоваяКолонка(""); ... ВыборкаДанных.НоваяКолонка("Дата"); ВыборкаДанных.НоваяКолонка("Организация"); ВыборкаДанных.НоваяКолонка("МПЗПриобретенные"); ... //и заполняем его ВыборкаДанных.НоваяСтрока(); ВыборкаДанных.Дата =ДатаПо; ВыборкаДанных.Организация= Константа.ОсновнаяФирма; |
|||
70
Aleksey
23.11.13
✎
17:45
|
ну и ПКО Источник пусто приемник - твой документ, КД автоматом по именам колонки сопоставит
|
|||
71
Charity
23.11.13
✎
17:46
|
если партии нет, то в партию я ничего не отправляю
до этого пробовала отправить организацию или число 1 однако проблема остается: если я в партию отправляю ничего(также, как и организацию, также как и число = 1), то у мну правило конвертации тупо не отрабатывает |
|||
72
Charity
23.11.13
✎
17:49
|
Aleksey, это понятно, проблема в том, что что бы я ни отправляла в ПВД, у меня ПКО отрабатывает только если в реквизите "партия" есть ссылка на определенный док
Если что-то другое, ПКО тупо не выполняется. Как мне это обойти? |
|||
73
Charity
23.11.13
✎
17:49
|
Кэш я почистила
|
|||
74
GreyK
23.11.13
✎
17:51
|
(71) Нее, не так, нет партии нет посыла к выгрузке, ты забываешь что партиия не "пустоезначение", а просто её нет и в выборке по партиям она не отрабатывается.
|
|||
75
Charity
23.11.13
✎
17:53
|
GreyK, но я же инициализирую партию, даже если нет данных. следовательно, нет пустого значения, что-то в данных есть
|
|||
76
Charity
23.11.13
✎
17:55
|
и все равно в пко у меня отрабатывает только если в данных содержится док
|
|||
77
Charity
23.11.13
✎
17:56
|
возможно, конвертации важен тип данных?
|
|||
78
Диманыч
23.11.13
✎
17:57
|
(76) GreyK прав. Правило конвертации есть для партии, а для 1 правил нет. ПКО правило конвертации объекта
|
|||
79
Charity
23.11.13
✎
18:02
|
Диманыч, а вы не находите, что если я что-то передаю в ПКО, хоть в качестве источника, хоть в качестве входящих данных, у меня правило (по логике) должно что-то сделать, как минимум сообщить то, что ему передали на входе..
|
|||
80
GreyK
23.11.13
✎
18:03
|
(74) А ты посчитай итоги на второй нруппировке и на третьей, если не сходится то "где-то собака порылась" :)
|
|||
81
Charity
23.11.13
✎
18:10
|
все как раз-таки норм... в общем не получилось проблему решить...
|
|||
82
Charity
23.11.13
✎
18:10
|
спасибо всем
|
|||
83
Диманыч
23.11.13
✎
18:11
|
(79) нет не нахожу, по тому что для каждого вида объекта свое правило, а можно и более. Универсального правила в конвертации нету, я про типовую. В вашемй может быть и есть
|
|||
84
Charity
23.11.13
✎
18:26
|
Диманыч, мне надо, чтобы правило отрабатывало всегда, а оно работает только если есть входящие данные или источник в виде дока, а если эти данные имеют другой тип, то все, пздц, не передается даже в них ничего, хоть как я инициализирую эти данные, правило не отрабатывает.. ........
|
|||
85
GreyK
23.11.13
✎
18:28
|
(84) Вызови Сообщить перед ВыгрузитьПоПравилу.
|
|||
86
Charity
23.11.13
✎
18:32
|
вызывала. отрабатывает все записи.
|
|||
87
Диманыч
23.11.13
✎
18:34
|
(84) Charity , ну дык для другого типа другая процедура обработки данных то есть другое правило а ты хочечшь что бы тебе одним правилом отрабатывалось все. В типовой это не работает я же тебе написал!!!!!!!!!!!!
|
|||
88
Charity
23.11.13
✎
18:36
|
Диманыч, пожалуйста, напиши на пальцах, приведи пример, я не совсем поняла.
|
|||
89
Диманыч
23.11.13
✎
18:37
|
Для документа
правило документа для 1 должно быть правлио 1 (но его нет) хотя можно создать для организация правило организации ПравилоВыгружаюВсеЧтоВкинут() НЕТУУУУУУУУУУУУУУ |
|||
90
Charity
23.11.13
✎
18:42
|
Диманыч, я это и сделала... Пойми меня правильно, я уже по-всякому попробовала, получается в итоге х-ня, правило не работает..
|
|||
91
Диманыч
23.11.13
✎
18:43
|
(90) Нельзя в правила для выгрузки партии , передовать организацию. По тому что организация выгружается по другим правилам
|
|||
92
GreyK
23.11.13
✎
18:45
|
(90) Я думал ошибся, ан нет.
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ВводНачальныхОстатков_Материалы_Спецодежда"); Смотрим (50). Где исходящиеданные? |
|||
93
Charity
23.11.13
✎
18:50
|
GreyK, у меня по таким же правилам все выгружается. Если убрать партию, все будет хорошо. Но убрать партию нельзя...
|
|||
94
Charity
23.11.13
✎
18:52
|
у кого-то есть тимВьювер? если не сложно, подключитесь ко мне... реквизиты подключения кину в личку... реально, замучилась уже
|
|||
95
Диманыч
23.11.13
✎
18:52
|
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ВводНачальныхОстатков_Материалы_Спецодежда");
Внутри идет перебор и каждый объект выгружается по своем правилу. Для типа партия есть правло. А для 1 нету правло вот оно и клинит |
|||
96
GreyK
23.11.13
✎
18:53
|
(93) Сделай так:
ВыгрузитьПоПравилу(,,,ВходящиеДанные, "ВводНачальныхОстатков_Материалы_Спецодежда"); |
|||
97
Charity
23.11.13
✎
18:58
|
GreyK, сделала, как ты написал, теперь 1с выдает: "Ошибка выбора объектов коллекции"
|
|||
98
Диманыч
23.11.13
✎
18:59
|
ВыгрузитьПоПравилу(,, ВходящиеДанные,, "ВводНачальныхОстатков_Материалы_Спецодежда");
Если входящие данные не примитивный объект то каждый элемент этого объекта будет выгружать по паравилу берем первый объект для входящих данных это код примитвынй тип данных выгружаем как код берем второй объект для входящих данных это сложный объект его нужно выгружать по правилам для ЭТОГО сложного объекта правила есть выгружаем, правил нету тупо клиним |
|||
99
Charity
23.11.13
✎
19:00
|
Диманыч, как на практике мне обойти это? интуитивно понятно, что если тип не задан, то выгрузка не произойдет, а как мне быть сейчас? что и где прописать, чтобы не было косяков?
|
|||
100
Wobland
23.11.13
✎
19:01
|
станция технического обслуживания
|
|||
101
Диманыч
23.11.13
✎
19:02
|
(99) Создай пустой объект партия, и запихивай его перед выгрузкой везед где нету партии.
|
|||
102
Диманыч
23.11.13
✎
19:03
|
Если партия - это документ поступление, то создай пустой объект поступление
|
|||
103
Charity
23.11.13
✎
19:04
|
т.е. не инициализировать строку ТЧ "Партия"?
|
|||
104
Charity
23.11.13
✎
19:05
|
т.е. мне непонятно, как я должна поступить при выгрузке данных, т.е. в ПВД что прописать?
|
|||
105
Charity
23.11.13
✎
19:08
|
мне непонятно следующее: если я прописываю, что партия = 1, тогда ПКО для этого реквизита все равно должны отрабатывать хотть что-то...
|
|||
106
Charity
23.11.13
✎
19:09
|
Они как минимум должны получать источник, разве нет?
|
|||
107
Диманыч
23.11.13
✎
19:11
|
НесуществующаяПартия = СоздатьОбъект("Документ.Поступление");
НусуществующаяПартия.Новый(); ВыбратьСубконто(1) Если ПартияЕСть = 1 Тогда СписокМПЗ.Партия = ПартияКотораяЕсть ; Иначе СписокМПЗ.Партия = НесуществующаяПартия ; //СписокМПЗ.Контрагент =Константа.ОсновнаяФирма; //СписокМПЗ.Договор =ДоговорКонтрагента; КонецЕсли; Иначе СписокМПЗ.Партия = НесуществующаяПартия; //это не документ поступления МПЗ, партия генерируется на некий общий документ |
|||
108
Charity
23.11.13
✎
19:13
|
Спасибо! прямо сейчас пробую
|
|||
109
GreyK
23.11.13
✎
19:16
|
Пример совершенно из другой конфы, но другого под рукой нет.
Если Параметры.ВыгрузитьВсюНоменклатуру = 1 Тогда ДатаОстатков = '31.12.2012'; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(ОстаткиТоваровНаСкладах) |Период с '"+ДатаОстатков+"' по '"+ДатаОстатков+"'; |Склад = Регистр.ОстаткиТоваров.Склад; |Товар = Регистр.ОстаткиТоваров.Товар; |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара; |ЗакЦена = Регистр.ОстаткиТоваров.Товар.Цена0; |Функция КонОстТовара = КонОст(ОстатокТовара); |Группировка Склад; |Группировка Товар упорядочить по Товар.Наименование без групп; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат 0; КонецЕсли; Товары = СоздатьОбъект("ТаблицаЗначений"); Товары.НоваяКолонка("Номенклатура","Справочник.Товары",,,,,,); Товары.НоваяКолонка("ЕдиницаИзмерения","Справочник.Товары",,,,,,); Товары.НоваяКолонка("Количество","Число",15,3,,,,); Товары.НоваяКолонка("Цена","Число",15,2,,,,); Товары.НоваяКолонка("Сумма","Число",15,2,,,,); Товары2 = СоздатьОбъект("ТаблицаЗначений"); Товары.Выгрузить(Товары2); Пока Запрос.Группировка(1) = 1 Цикл Товары.УдалитьСтроки(); Товары2.УдалитьСтроки(); Пока Запрос.Группировка(2) = 1 Цикл Если Запрос.КонОстТовара > 0 Тогда Коэффициент = 1; ТекТаб = Товары; Иначе Коэффициент = -1; ТекТаб = Товары2; КонецЕсли; ТекТаб.НоваяСтрока(); ТекТаб.Номенклатура = Запрос.Товар; ТекТаб.ЕдиницаИзмерения = Запрос.Товар; ТекТаб.Количество = Запрос.КонОстТовара * Коэффициент; ТекТаб.Цена = Запрос.ЗакЦена; ТекТаб.Сумма = ТекТаб.Количество*ТекТаб.Цена; КонецЦикла; Если Товары.КоличествоСтрок() > 0 Тогда ИсходящиеДанные = СоздатьОбъект("СписокЗначений"); ИсходящиеДанные.Установить("Дата", ДатаОстатков); ИсходящиеДанные.Установить("Магазин", Запрос.Склад); ИсходящиеДанные.Установить("Склад", Запрос.Склад); ИсходящиеДанные.Установить("СуммаДокумента", Товары.Итог("Сумма")); ИсходящиеДанные.Установить("Проведен", 1); ИсходящиеДанные.Установить("ПометкаУдаления", -1); ИсходящиеДанные.Установить("Ответственный", Пользователь); ИсходящиеДанные.Установить("Комментарий", "Ввод начальных остатков."); ИсходящиеДанные.Установить("Товары", Товары); ВыгрузитьПоПравилу(,, ИсходящиеДанные,, "ОприходованиеТоваров"); КонецЕсли; Если Товары2.КоличествоСтрок() > 0 Тогда ИсходящиеДанные = СоздатьОбъект("СписокЗначений"); ИсходящиеДанные.Установить("Дата", ДатаОстатков); ИсходящиеДанные.Установить("Магазин", Запрос.Склад); ИсходящиеДанные.Установить("Склад", Запрос.Склад); ИсходящиеДанные.Установить("СуммаДокумента", Товары.Итог("Сумма")); ИсходящиеДанные.Установить("Проведен", 1); ИсходящиеДанные.Установить("ПометкаУдаления", -1); ИсходящиеДанные.Установить("Ответственный", Пользователь); ИсходящиеДанные.Установить("Комментарий", "Ввод начальных остатков."); ИсходящиеДанные.Установить("Товары", Товары2); ВыгрузитьПоПравилу(,, ИсходящиеДанные,, "СписаниеТоваров"); КонецЕсли; КонецЦикла; ТекстЗапроса = "//{{ЗАПРОС(ЦеныНоменклатуры) |Период с ДатаОстатков по ДатаОстатков; |Обрабатывать НеПомеченныеНаУдаление; |Без итогов; |Товар = Справочник.Товары.ТекущийЭлемент; |Наименование = Справочник.Товары.Наименование; |Цена = Справочник.Товары.Цена1; |Группировка Товар упорядочить по Товар.Наименование без групп; |Условие(Цена <> 0); |Условие(ПустоеЗначение(Наименование) = 0); |"//}}ЗАПРОС ; ТипыЦен = СоздатьОбъект("ТаблицаЗначений"); ТипыЦен.НоваяКолонка("ТипЦен","Справочник.ТипыЦен",,,,,,); Товары = СоздатьОбъект("ТаблицаЗначений"); Товары.НоваяКолонка("ИндексСтрокиТаблицыЦен","Число",5,0,,,,); Товары.НоваяКолонка("Номенклатура","Справочник.Товары",,,,,,); Товары.НоваяКолонка("ЕдиницаИзмерения","Справочник.Товары",,,,,,); Товары.НоваяКолонка("ТипЦен","Справочник.ТипыЦен",,,,,,); Товары.НоваяКолонка("Цена","Число",15,2,,,,); СпрТипыЦен = СоздатьОбъект("Справочник.ТипыЦен"); СпрТипыЦен.ВыбратьЭлементы(); Пока СпрТипыЦен.ПолучитьЭлемент() = 1 Цикл Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(СтрЗаменить(ТекстЗапроса,".Товары.Цена1",".Товары.Цена"+СпрТипыЦен.Код)) = 0 Тогда Возврат 0; КонецЕсли; КолДок = 1; Товары.УдалитьСтроки(); Пока Запрос.Группировка() = 1 Цикл Товары.НоваяСтрока(); Товары.ИндексСтрокиТаблицыЦен = Товары.НомерСтроки; Товары.Номенклатура = Запрос.Товар; Товары.ЕдиницаИзмерения = Запрос.Товар; Товары.ТипЦен = СпрТипыЦен.ТекущийЭлемент(); Товары.Цена = Запрос.Цена; Если Товары.КоличествоСтрок()> 9999 Тогда ТипыЦен.УдалитьСтроки(); ТипыЦен.НоваяСтрока(); ТипыЦен.ТипЦен = СпрТипыЦен.ТекущийЭлемент(); ИсходящиеДанные = СоздатьОбъект("СписокЗначений"); //ИсходящиеДанные.Установить("Номер", ""+СписокПрефиксов.Получить(ТекДок.Вид())+"-"+ТекДок.НомерДок); ИсходящиеДанные.Установить("Дата", ДатаОстатков); ИсходящиеДанные.Установить("Информация", СпрТипыЦен.Наименование); ИсходящиеДанные.Установить("Проведен", 1); ИсходящиеДанные.Установить("ПометкаУдаления", -1); ИсходящиеДанные.Установить("НеПроводитьНулевыеЗначения", 1); ИсходящиеДанные.Установить("ДокументОснование", ""); ИсходящиеДанные.Установить("Ответственный", Пользователь); ИсходящиеДанные.Установить("Комментарий", "Ввод начальных цен для типа цен: "+СокрЛП(СпрТипыЦен.Наименование)+", часть №"+КолДок); ИсходящиеДанные.Установить("ТипыЦен", ТипыЦен); ИсходящиеДанные.Установить("Товары", Товары); ВыгрузитьПоПравилу( ,, ИсходящиеДанные,, "УстановкаЦенНоменклатуры"); КолДок = КолДок + 1; Товары.УдалитьСтроки(); КонецЕсли; КонецЦикла; Если Товары.КоличествоСтрок()> 0 Тогда ТипыЦен.УдалитьСтроки(); ТипыЦен.НоваяСтрока(); ТипыЦен.ТипЦен = СпрТипыЦен.ТекущийЭлемент(); ИсходящиеДанные = СоздатьОбъект("СписокЗначений"); //ИсходящиеДанные.Установить("Номер", ""+СписокПрефиксов.Получить(ТекДок.Вид())+"-"+ТекДок.НомерДок); ИсходящиеДанные.Установить("Дата", ДатаОстатков); ИсходящиеДанные.Установить("Информация", СпрТипыЦен.Наименование); ИсходящиеДанные.Установить("Проведен", 1); ИсходящиеДанные.Установить("ПометкаУдаления", -1); ИсходящиеДанные.Установить("НеПроводитьНулевыеЗначения", 1); ИсходящиеДанные.Установить("ДокументОснование", ""); ИсходящиеДанные.Установить("Ответственный", Пользователь); ИсходящиеДанные.Установить("Комментарий", "Ввод начальных цен для типа цен: "+СокрЛП(СпрТипыЦен.Наименование)+", часть №"+КолДок); ИсходящиеДанные.Установить("ТипыЦен", ТипыЦен); ИсходящиеДанные.Установить("Товары", Товары); ВыгрузитьПоПравилу( ,, ИсходящиеДанные,, "УстановкаЦенНоменклатуры"); КонецЕсли; КонецЦикла; КонецЕсли; |
|||
110
Диманыч
23.11.13
✎
19:16
|
(108) Только уточни что за вид документа у тебя партия
|
|||
111
Диманыч
23.11.13
✎
19:18
|
(108) Обычно поступление, но в некоторых конфах бывает что это другой вид документа или элемент справочника
|
|||
112
GreyK
23.11.13
✎
19:20
|
Charity, пример конечно не из бухучета, но там есть выгрузка документа и его ТЧ.
|
|||
113
Charity
24.11.13
✎
12:22
|
ребята, простите, я дурак, в ветке условия я не прописала "иначе", поэтому у меня не отрабатывалось правило. глупая ошибка. Спасибо всем, а особенно Диманычу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |