|
КД: по каждой строке документа - новый документ | ☑ | ||
---|---|---|---|---|
0
lg2marvel
29.10.15
✎
17:00
|
Добрый день. Почитал как делают люди (в том числе и тут на форуме) - понял что реализовать возможно.
Что делаю: Создал ПКО без источника с данными, обозвал "КомплектацияНоменклатурыПересорт", пока без табличной части - просто чтоб создавался документ. в ПКС - галочка "получать из входящих данных. Создал ПВД, в событии ПередВыгрузкой: Для Каждого Строка Из Объект.Товары Цикл ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("Номер",Объект.Номер); ВходящиеДанные.Вставить("Дата",Объект.Дата); ВходящиеДанные.Вставить("Склад",Объект.Склад); ВыгрузитьПоПравилу(,,ВходящиеДанные,,"КомплектацияНоменклатурыПересорт"); КонецЦикла; Пробую - ошибка при выгрузке с источника: Ошибка в обработчике события ПередВыгрузкойОбъекта ПВД = АктПересортицы Объект = Акт пересортицы О0000000035 от 29.10.2015 10:19:52 (Документ объект: Акт пересортицы) Обработчик = ПередВыгрузкойОбъектаВыборки ОписаниеОшибки = Значение не является значением объектного типа (УникальныйИдентификатор) ПозицияМодуля = Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9411) КСообщенияОбОшибках = 33 Что-бы могло значить? Что не так? |
|||
1
Temai
29.10.15
✎
17:49
|
Во 1 попробуй кинуть в ПередОбработкой
во 2 посмотри на это правило оно точно работает и сделано было для входящего документа. Для каждого Стр из ТЗ Цикл ВходящиеДокументы = Стр.Ссылка; ВыгрузитьПоПравилу(ВходящиеДокументы, , , , "ВходящиеДокументы"); КонецЦикла; |
|||
2
lg2marvel
03.11.15
✎
10:24
|
(1) Если помещаю в ПередОбработкой ругается на Объект
Ошибка в обработчике события ПередОбработкойПравилаВыгрузки ПВД = АктПересортицы Обработчик = ПередОбработкойВыгрузкиДанных ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,23)}: Переменная не определена (Объект) ПозицияМодуля = Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(13931) КСообщенияОбОшибках = 31 |
|||
3
lg2marvel
03.11.15
✎
10:48
|
Может нужно создать группу ТЧ документа источника и как-то передать текущие значения в ПВД?
|
|||
4
toys
03.11.15
✎
11:10
|
в твоем случае удобней юзать параметр ВыборкаДанных
в ПВД ПередОбработкой ВыборкаДанных = Новый Структура(); ВыборкаДанных.Вставить("Номер",ОбъектНомер); ... ну и в ПВД в шапке ПКО укажи явно...и все) |
|||
5
lg2marvel
03.11.15
✎
11:20
|
Сейчас это так:
http://i.piccy.info/i9/b844d2e0cc28a81d0bf50a949eec05c3/1446538613/26861/958438/1.png http://i.piccy.info/i9/d2c7955940e68e195b175ad8ff8b6139/1446538622/30641/958438/2.png http://i.piccy.info/i9/2c90007f3e4115636d9507eedc8b5d99/1446538734/47320/958438/3.png (4) Сейчас еще раз проверю |
|||
6
lg2marvel
03.11.15
✎
11:26
|
(4) Переменная не определена (Объект) Как только перемещаю в ПередОбработкой
|
|||
7
lg2marvel
03.11.15
✎
11:29
|
(0) Фу блин, с этой ошибкой разобрался, ну нельзя же в цикле обращаться к данным.
|
|||
8
lg2marvel
03.11.15
✎
11:31
|
(7) а нет, как только добавляю
ВыгрузитьПоПравилу(,,ВходящиеДанные,,"КомплектацияНоменклатурыПересорт"); сразу же ошибка: Значение не является значением объектного типа (УникальныйИдентификатор) |
|||
9
bolder
03.11.15
✎
11:36
|
(5)Сними выгрузку по уникальному идентификатору в /1.png
|
|||
10
toys
03.11.15
✎
11:47
|
в 2.png правило укажи в шапке, используй выборку данных
|
|||
11
lg2marvel
03.11.15
✎
11:54
|
(9) http://i.piccy.info/i9/0e620a6c01e0d4ee46df1714ccb8c0ab/1446540611/59124/958438/4.png в таком случае будут ли сопоставляться документы в источнике и приемнике?
(10) http://i.piccy.info/i9/ec0abccadcff524592aef12702cfbe59/1446540859/36439/958438/5.png так вроде работает, буду писать дальше... |
|||
12
Naumov
03.11.15
✎
11:57
|
(11) А как ты собираешься сопоставлять 1 ко многим по единственному ключу?, убирай поиск по ГУИ
|
|||
13
Naumov
03.11.15
✎
11:58
|
+ Формируй свой КлючВыгрузкиДанных
|
|||
14
lg2marvel
03.11.15
✎
11:59
|
(13) Спасибо, действительно.
|
|||
15
lg2marvel
03.11.15
✎
15:44
|
подскажите плз, сделал вот так: http://i.piccy.info/i9/d434f248c58dd28a31ff1143ee695706/1446554434/20839/958438/6.png
Номер документа при выгрузке формирую следующим образом: Источник: О0000000033 Приемник: ОП062-00033 где 62 будет меняться, оно как бы номер строки. Как бы сделать так чтоб при переброске оно синхронизировалось? Что б намутить в ПКО? |
|||
16
lg2marvel
03.11.15
✎
15:45
|
Поиск по "дате", "складу" и "номеру"
|
|||
17
Naumov
03.11.15
✎
17:40
|
(16) а смысл в поиск ставить склад? дата и номер должны дать уникальность
|
|||
18
lg2marvel
04.11.15
✎
10:11
|
(17) Дату оказалось не удобно брать для уникальности, оставил номер, склад. На тестовых прогонах вроде все ок.
Дошел до переноса данных из табличной части документа и тут затык. ВходящиеДанные.Вставить("ПометкаУдаления",Объект.ПометкаУдаления); ВходящиеДанные.Вставить("Комментарий","Акт пересортицы №"+Объект.Номер+" от "+Объект.Дата); ВходящиеДанные.Вставить("Количество",Объект.Товары.НоваяКоличество); ВходящиеДанные.Вставить("Номенклатура",Объект.Товары.НоваяНоменклатура); Пробовал так же ВходящиеДанные.Вставить("Количество",Объект.НоваяКоличество); ВходящиеДанные.Вставить("Номенклатура",Объект.НоваяНоменклатура); Эффект один и тот же НоваяКоличество - Неверное имя атрибута. Как правильно это сделать? |
|||
19
lg2marvel
04.11.15
✎
10:27
|
Или отобрать все значения ТЧ запросом с условием пономеру строки и потом передавать в параметр?
|
|||
20
lg2marvel
04.11.15
✎
10:32
|
ВходящиеДанные.Вставить("Количество",Объект.Товары.ТекущиеДанные.НоваяКоличество);
Тоже самое: Поле объекта не обнаружено (ТекущиеДанные) |
|||
21
lg2marvel
04.11.15
✎
10:53
|
Текст модуля:
НомерСтроки = 0; Для Каждого Строка Из Объект.Товары Цикл НомерСтроки = Формат(Число(НомерСтроки) + 1,"ЧЦ=3; ЧДЦ=0"); Если СтрДлина(НомерСтроки)=1 Тогда Параметры.Префикс = "П00"+НомерСтроки+"-"; ИначеЕсли СтрДлина(НомерСтроки)=2 Тогда Параметры.Префикс = "П0"+НомерСтроки+"-"; ИначеЕсли СтрДлина(НомерСтроки)=3 Тогда Параметры.Префикс = "П"-НомерСтроки+"-"; Иначе Сообщить("Длина номера строки в документе больше 3, не предусмотрено обработкой!"); Параметры.Префикс = "err"+"-"; Продолжить; КонецЕсли; ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("Номер",Параметры.Префикс+Прав(Объект.Номер,6)); //Сообщить("Номер в ПВД "+Параметры.Префикс+Прав(Объект.Номер,6)); //Сообщить("Номер строки "+Параметры.Префикс); ВходящиеДанные.Вставить("Дата",Объект.Дата); ВходящиеДанные.Вставить("Склад",Объект.Склад); ВходящиеДанные.Вставить("Организация",Объект.Фирма.Ссылка); ВходящиеДанные.Вставить("Проведен",Объект.Проведен); ВходящиеДанные.Вставить("ПометкаУдаления",Объект.ПометкаУдаления); ВходящиеДанные.Вставить("Комментарий","Акт пересортицы №"+Объект.Номер+" от "+Объект.Дата); ВходящиеДанные.Вставить("Количество",Объект.Товары.ТекущиеДанные().НоваяКоличество); ВыгрузитьПоПравилу(,,ВходящиеДанные,,"КомплектацияНоменклатурыПересорт"); КонецЦикла; |
|||
22
lg2marvel
04.11.15
✎
10:55
|
и этот столбец есть в документе!
http://i.piccy.info/i9/771daa0a23bb740f2829e5ee88379ea4/1446623679/19214/958438/7.png |
|||
23
lg2marvel
04.11.15
✎
11:02
|
Модуль:
НомерСтроки = 0; Для Каждого Строка Из Объект.Товары Цикл НомерСтроки = Формат(Число(НомерСтроки) + 1,"ЧЦ=3; ЧДЦ=0"); Если СтрДлина(НомерСтроки)=1 Тогда Параметры.Префикс = "П00"+НомерСтроки+"-"; ИначеЕсли СтрДлина(НомерСтроки)=2 Тогда Параметры.Префикс = "П0"+НомерСтроки+"-"; ИначеЕсли СтрДлина(НомерСтроки)=3 Тогда Параметры.Префикс = "П"-НомерСтроки+"-"; Иначе Сообщить("Длина номера строки в документе больше 3, не предусмотрено обработкой!"); Параметры.Префикс = "err"+"-"; Продолжить; КонецЕсли; ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("Номер",Параметры.Префикс+Прав(Объект.Номер,6)); //Сообщить("Номер в ПВД "+Параметры.Префикс+Прав(Объект.Номер,6)); //Сообщить("Номер строки "+Параметры.Префикс); ВходящиеДанные.Вставить("Дата",Объект.Дата); ВходящиеДанные.Вставить("Склад",Объект.Склад); ВходящиеДанные.Вставить("Организация",Объект.Фирма.Ссылка); ВходящиеДанные.Вставить("Проведен",Объект.Проведен); ВходящиеДанные.Вставить("ПометкаУдаления",Объект.ПометкаУдаления); ВходящиеДанные.Вставить("Комментарий","Акт пересортицы №"+Объект.Номер+" от "+Объект.Дата); //МД_Реквизиты = Объект.Метаданные().Реквизиты; //Для Каждого МетаРеквизит Из МД_Реквизиты Цикл //Сообщить(МетаРеквизит.Имя + " = " + Объект.[МетаРеквизит.Имя]); //КонецЦикла; ВходящиеДанные.Вставить("Количество",Объект.НоваяКоличество); //ВходящиеДанные.Вставить("Номенклатура",Объект.Товары.НоваяНоменклатура); //ВходящиеДанные.Вставить("Количество",Объект.Количество); //ВходящиеДанные.Вставить("Количество",Объект.Номенклатура); ВыгрузитьПоПравилу(,,ВходящиеДанные,,"КомплектацияНоменклатурыПересорт"); КонецЦикла; |
|||
24
lg2marvel
04.11.15
✎
13:43
|
Нужно передать в ТЧ документа приемника 1 строку. Как правильно это сделать? Из ПВД передаю данные которые будут реквизитами этой строки, но получаю ошибку: Получение элемента по индексу для значения не определено
|
|||
25
lg2marvel
04.11.15
✎
13:57
|
зергуд, спасибо за участие.
|
|||
26
Naumov
04.11.15
✎
14:45
|
(24) Во входящие данные ТЗ с подходящими колонками передай.
|
|||
27
lg2marvel
05.11.15
✎
09:35
|
Получилось как-то так:
НомерСтроки = 0; Для Каждого Строка Из Объект.Товары Цикл НомерСтроки = Формат(Число(НомерСтроки) + 1,"ЧЦ=3; ЧДЦ=0"); Если СтрДлина(НомерСтроки)=1 Тогда Параметры.Префикс = "П00"+НомерСтроки+"-"; ИначеЕсли СтрДлина(НомерСтроки)=2 Тогда Параметры.Префикс = "П0"+НомерСтроки+"-"; ИначеЕсли СтрДлина(НомерСтроки)=3 Тогда Параметры.Префикс = "П"-НомерСтроки+"-"; Иначе Сообщить("Длина номера строки в документе больше 3, не предусмотрено обработкой!"); Параметры.Префикс = "err"+"-"; Продолжить; КонецЕсли; ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить("Номер",Параметры.Префикс+Прав(Объект.Номер,6)); ВходящиеДанные.Вставить("Дата",Объект.Дата); ВходящиеДанные.Вставить("Склад",Объект.Склад); ВходящиеДанные.Вставить("Организация",Объект.Фирма.Ссылка); ВходящиеДанные.Вставить("Проведен",Объект.Проведен); ВходящиеДанные.Вставить("ПометкаУдаления",Объект.ПометкаУдаления); ВходящиеДанные.Вставить("Комментарий","Акт пересортицы №"+Объект.Номер+" от "+Объект.Дата); ТекстЗапроса = "ВЫБРАТЬ |АктПересортицы.Ссылка, |АктПересортицы.Товары.( | Ссылка, | НомерСтроки, | Номенклатура, | НоваяНоменклатура, | Количество, | НоваяКоличество, | ИдентификаторСтроки, |) |ИЗ |Документ.АктПересортицы КАК АктПересортицы |ГДЕ | АктПересортицы.Ссылка = &Ссылка И | АктПересортицы.Товары.НомерСтроки = &НомерСтроки |"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка); Запрос.УстановитьПараметр("НомерСтроки", Число(НомерСтроки)); КоллекцияОбъектов = Запрос.Выполнить().Выгрузить(); ВходящиеДанные.Вставить("Количество",КоллекцияОбъектов[0][1][0][5]); ВходящиеДанные.Вставить("Номенклатура",КоллекцияОбъектов[0][1][0][3]); ВходящиеДанные.Вставить("Комплектующие",КоллекцияОбъектов); Параметры.КВО = Число(КоллекцияОбъектов[0][1][0][4]); Параметры.ТМЦ = КоллекцияОбъектов[0][1][0][2]; ВыгрузитьПоПравилу(,,ВходящиеДанные,,"КомплектацияНоменклатурыПересорт"); КонецЦикла; Может есть какие-то грубые ошибки? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |