Обмен УТ11->Бухгалтерия. Номенклатура = Номенклатура + Характеристика
Здравствуйте. В программе УТ-11 номенклатура ведется с учетом характеристик при выгрузке в бухгалтерскую базу характеристика добавляется к наименованию номенклатуры. Подскажите, как это сделать? Вот так - в ПКО реквизитов документов где Номенклатура -> Номенклатура.Наименование + Характеристика.Наименование не получается. Не находит поле Номенклатура.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
То есть в Бухгалтерии надо создавать номенклатуру если такой нет? Поиск по чему идет? По уникальному идентификатору не подойдет - у одной номенклатуры с разными характеристиками будет он один, а в бухгалтерии - несколько. Если искать только по наименованию - пользователь одну букву исправит и у вас в бухгалтерии появится еще одна номенклатура. Недавно только решал таку проблему - сделал свое поле синхронизации, гуид+характеристика, по нему синхронизирую, если не находит - создает. Не придумал как по другому решить, да и сроки поджимали.
(5) AlenkaInt,
Тогда обратите внимание на ответ №2 там сказано что если без характеристики в БП то для каждой характеристики надо новою номенклатуру И делать как то так НовыйЭлемент = Справочники.ХарктеристикаНоменклатуры.НовыйЭлемент;
А потом уже Номенклатура НовыйЭлемент = Справочники.Номенклатуры.НовыйЭлемент;
НовыйЭлемент.Харктеристика = Справочники.ХарктеристикаНоменклатуры.НайтиПоНайменованию();.
Тогда обратите внимание на ответ №2 там сказано что если без характеристики в БП то для каждой характеристики надо новою номенклатуру И делать как то так НовыйЭлемент = Справочники.ХарктеристикаНоменклатуры.НовыйЭлемент;
А потом уже Номенклатура НовыйЭлемент = Справочники.Номенклатуры.НовыйЭлемент;
НовыйЭлемент.Харктеристика = Справочники.ХарктеристикаНоменклатуры.НайтиПоНайменованию();.
(6) Vovus, я так понимаю, тут проблема как раз в том, что в бухгалтерии в принципе нет механизма характеристик, поэтому мы там их создать не можем и выход здесь на каждую связку "Номенклатура + Характеристика" создавать в бухгалтерии новую номенклатуру... Другое дело, что если у вас к примеру одежда, то характеристик там будет вагон целый, типа, цветов, размеров и прочей ерунды...
Ну, у меня в бухгалтерии два поля добавлены к номенклатуре. Это мой генерящийся в УТ идентификатор и поле в которое пишется идентификатор характеристики. В правиле номенклатуры на всех полях стоит галочка "Получать из входящих данных", на этих двух полях стоят галочки "Поиск". Потом, уже в документе, к примеру реализации, на поле номенклатура примерно такой код:
Значение=Строка(ОбъектКоллекции.Номенклатура.КодБУХ + ОбъектКоллекции.ХарактеристикаНоменклатуры);
//Здесь очень важно это вот значение установить, пусть даже строковое, главное чтобы для каждой номенклатуры которая будет в бухии отдельной номенклатурой - оно различалось
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("ХарактеристикаСинхронизации" , ОбъектКоллекции.ХарактеристикаНоменклатуры);
ИсходящиеДанные.Вставить("Наименование" , ОбъектКоллекции.Номенклатура.Наименование + "_" + ОбъектКоллекции.ХарактеристикаНоменклатуры);
ИсходящиеДанные.Вставить("КодУТ" , ОбъектКоллекции.Номенклатура.КодБУХ);
И так далее перечисляете все реквизиты которые есть у номенклатуры.
На правильность решения не претендую, были очень сжатые сроки, конвертацию когда писал почти не знал. У меня заработало.
Значение=Строка(ОбъектКоллекции.Номенклатура.КодБУХ + ОбъектКоллекции.ХарактеристикаНоменклатуры);
//Здесь очень важно это вот значение установить, пусть даже строковое, главное чтобы для каждой номенклатуры которая будет в бухии отдельной номенклатурой - оно различалось
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("ХарактеристикаСинхронизации" , ОбъектКоллекции.ХарактеристикаНоменклатуры);
ИсходящиеДанные.Вставить("Наименование" , ОбъектКоллекции.Номенклатура.Наименование + "_" + ОбъектКоллекции.ХарактеристикаНоменклатуры);
ИсходящиеДанные.Вставить("КодУТ" , ОбъектКоллекции.Номенклатура.КодБУХ);
И так далее перечисляете все реквизиты которые есть у номенклатуры.
На правильность решения не претендую, были очень сжатые сроки, конвертацию когда писал почти не знал. У меня заработало.
А вообще, зачем в бухгалтерии аналитика по характеристикам? Я бы на этот вопрос давил, понятно, что им все хочется видеть, но считать они как будут все это? Можно вообще чтобы без геморроя - всю выгрузку свернуть в три номенклатуры "НДС10", "НДС18" и "НДС0", чтобы справочник не захламлять.
Да, в ПКО Номенклатура на всех полях галочка "Получать из входящих данных". Поиск на трех полях - КодБух, ХарактеристикаСинхронизации и ЭтоГруппа. А уже в ПКО документа, в ПКС Номенклатура - там уже код приведенный выше. Там с галочками еще игрался как-то, не помню уже, если честно.
Рассказываю как получилось у меня для УТ 10.3-БП 2.0.
Удобство в том, что можно переносить и элементы справочника Номенклатура и элементы + характеристика.
Немного изменил первый вариант, чтобы избавиться от сообщений об ошибках.
1. В конфигурации базы-приемника (Бухгалтерия) в справочнике Номенклатура добавить два новых реквизита для элементов и групп.
УИДНоменклатура, тип строка, длина 36
УИДХарактеристика, тип строка, длина 36.
2. В ПКО Номенклатура добавить новый ПКС. Источник пустой, получатель УИДНоменклатура.
В событии ПередВыгрузкой пишем код:
Если ТипЗнч(Источник) = Тип("СправочникСсылка.Номенклатура") Тогда
Значение = Строка(Источник.УникальныйИдентификатор());
Иначе
Значение = Строка(Источник.Ссылка.УникальныйИдентификатор());
КонецЕсли;
3. В ПКО Номенклатура добавить новый ПКС. Источник пустой, получатель УИДХарактеристика.
В событии ПередВыгрузкой пишем код:
Значение = "";
Попытка
Если ТипЗнч(ВходящиеДанные.ХарактеристикаНоменклатуры) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Иначе
Значение = Строка(ВходящиеДанные.Ссылка.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
КонецЕсли;
Исключение
КонецПопытки;
4. В ПКО Номенклатура:
Установить галочку поиск только у двух новых ПКС + Родитель, ЭтоГруппа.
Поиск по уникальному идентификатору необходимо снять.
Отключить ПКС Код.
5. В ПКС Наименование ПКО Номенклатура событие ПередВыгрузкой
Значение = Источник.Наименование;
Попытка
Значение = Значение + " " + ВходящиеДанные.ХарактеристикаНоменклатуры.Наименование;
Исключение
КонецПопытки;
6. В ПКС Наименование Полное ПКО Номенклатура событие ПередВыгрузкой
Значение = Источник.НаименованиеПолное;
Попытка
Значение = Значение + " " + ВходящиеДанные.ХарактеристикаНоменклатуры.Наименование;
Исключение
КонецПопытки;
7. В ПКС Номенклатура, подчиненному ПКГС типа выгружаемого документа, в событии ПередВыгрузкой располагается код, который при заполненной характеристике производит выгрузку с передачей значения характеристики.
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные, "Номенклатура");
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура, , ,"Номенклатура");
КонецЕсли;
Удобство в том, что можно переносить и элементы справочника Номенклатура и элементы + характеристика.
Немного изменил первый вариант, чтобы избавиться от сообщений об ошибках.
1. В конфигурации базы-приемника (Бухгалтерия) в справочнике Номенклатура добавить два новых реквизита для элементов и групп.
УИДНоменклатура, тип строка, длина 36
УИДХарактеристика, тип строка, длина 36.
2. В ПКО Номенклатура добавить новый ПКС. Источник пустой, получатель УИДНоменклатура.
В событии ПередВыгрузкой пишем код:
Если ТипЗнч(Источник) = Тип("СправочникСсылка.Номенклатура") Тогда
Значение = Строка(Источник.УникальныйИдентификатор());
Иначе
Значение = Строка(Источник.Ссылка.УникальныйИдентификатор());
КонецЕсли;
3. В ПКО Номенклатура добавить новый ПКС. Источник пустой, получатель УИДХарактеристика.
В событии ПередВыгрузкой пишем код:
Значение = "";
Попытка
Если ТипЗнч(ВходящиеДанные.ХарактеристикаНоменклатуры) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Иначе
Значение = Строка(ВходящиеДанные.Ссылка.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
КонецЕсли;
Исключение
КонецПопытки;
4. В ПКО Номенклатура:
Установить галочку поиск только у двух новых ПКС + Родитель, ЭтоГруппа.
Поиск по уникальному идентификатору необходимо снять.
Отключить ПКС Код.
5. В ПКС Наименование ПКО Номенклатура событие ПередВыгрузкой
Значение = Источник.Наименование;
Попытка
Значение = Значение + " " + ВходящиеДанные.ХарактеристикаНоменклатуры.Наименование;
Исключение
КонецПопытки;
6. В ПКС Наименование Полное ПКО Номенклатура событие ПередВыгрузкой
Значение = Источник.НаименованиеПолное;
Попытка
Значение = Значение + " " + ВходящиеДанные.ХарактеристикаНоменклатуры.Наименование;
Исключение
КонецПопытки;
7. В ПКС Номенклатура, подчиненному ПКГС типа выгружаемого документа, в событии ПередВыгрузкой располагается код, который при заполненной характеристике производит выгрузку с передачей значения характеристики.
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные, "Номенклатура");
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура, , ,"Номенклатура");
КонецЕсли;
3. В ПКО Номенклатура добавить новый ПКС. Источник пустой, получатель УИДХарактеристика.
В событии ПередВыгрузкой пишем код:
Значение = "";
Попытка
Если ТипЗнч(ВходящиеДанные.ХарактеристикаНоменклатуры) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Иначе
Значение = Строка(ВходящиеДанные.Ссылка.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
КонецЕсли;
Исключение
КонецПопытки;
Почему то при выгрузке выгружает не все УИД характеристики. Т.е. один УИД характеристики выгружает, далее выгружает УИД номенлатуры
В событии ПередВыгрузкой пишем код:
Значение = "";
Попытка
Если ТипЗнч(ВходящиеДанные.ХарактеристикаНоменклатуры) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Иначе
Значение = Строка(ВходящиеДанные.Ссылка.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
КонецЕсли;
Исключение
КонецПопытки;
Почему то при выгрузке выгружает не все УИД характеристики. Т.е. один УИД характеристики выгружает, далее выгружает УИД номенлатуры
Я в этом месте пришел к такому решению. Попробуйте, может и вам поможет.
Если Источник.ЭтоГруппа Тогда
Значение = "";
Иначе
Попытка
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Исключение
Значение = "";
КонецПопытки;
КонецЕсли;
Если Источник.ЭтоГруппа Тогда
Значение = "";
Иначе
Попытка
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Исключение
Значение = "";
КонецПопытки;
КонецЕсли;
Нужно проверить, чтобы п.7 отрабатывал корректно.
Данные по характеристике передаются в ПКО Номнеклатура именно в п.7 через Исходящие данные.
Затем уже в п.3 эта информация становится доступна в ПКО Номенклатура во Входящих данных.
Где теряется информация по харатеристике в п.7 или п.3?
Данные по характеристике передаются в ПКО Номнеклатура именно в п.7 через Исходящие данные.
Затем уже в п.3 эта информация становится доступна в ПКО Номенклатура во Входящих данных.
Где теряется информация по харатеристике в п.7 или п.3?
Пункт 7 отрабатывает. В поступлении товаров и услуг в ПКГС "Товары" для ПКС "Номенклатура" в событии пред выгрузкой такой код:
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
Попытка
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные, "Номенклатура");
Сообщить("ОбъектКоллекции.ХарактеристикаНоменклатуры: "+ОбъектКоллекции.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
Исключение
Сообщить("Не выгружен объектКоллекции.ХарактеристикаНоменклатуры: "+ОбъектКоллекции.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
КонецПопытки;
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура, , ,"Номенклатура");
Сообщить("ОбъектКоллекции.Номенклатура: "+ОбъектКоллекции.Номенклатура, СтатусСообщения.важное);
КонецЕсли;
При выгрузке документа с заполненной ТЧ харатеристиками (48-50, 46/4 и т.д.)через универсальный обмен получаю:
ОбъектКоллекции.ХарактеристикаНоменклатуры: 48-50/170-0/5-ОБРАЗЕЦ
ОбъектКоллекции.ХарактеристикаНоменклатуры: 46/4
ОбъектКоллекции.ХарактеристикаНоменклатуры: 50/170
ОбъектКоллекции.ХарактеристикаНоменклатуры: 62/170
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
Попытка
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные, "Номенклатура");
Сообщить("ОбъектКоллекции.ХарактеристикаНоменклатуры: "+ОбъектКоллекции.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
Исключение
Сообщить("Не выгружен объектКоллекции.ХарактеристикаНоменклатуры: "+ОбъектКоллекции.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
КонецПопытки;
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура, , ,"Номенклатура");
Сообщить("ОбъектКоллекции.Номенклатура: "+ОбъектКоллекции.Номенклатура, СтатусСообщения.важное);
КонецЕсли;
При выгрузке документа с заполненной ТЧ харатеристиками (48-50, 46/4 и т.д.)через универсальный обмен получаю:
ОбъектКоллекции.ХарактеристикаНоменклатуры: 48-50/170-0/5-ОБРАЗЕЦ
ОбъектКоллекции.ХарактеристикаНоменклатуры: 46/4
ОбъектКоллекции.ХарактеристикаНоменклатуры: 50/170
ОбъектКоллекции.ХарактеристикаНоменклатуры: 62/170
Насколько я помню при выгрузке через Универсальный обмен передаются объекты а не ссылки. Попробуйте в п.3 сделать так.
Если Источник.ЭтоГруппа Тогда
Значение = "";
Иначе
Попытка
Если ТипЗнч(ВходящиеДанные.ХарактеристикаНоменклатуры) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Иначе
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.Ссылка.УникальныйИдентификатор());
КонецЕсли;
Исключение
Значение = "";
КонецПопытки;
КонецЕсли;
Если Источник.ЭтоГруппа Тогда
Значение = "";
Иначе
Попытка
Если ТипЗнч(ВходящиеДанные.ХарактеристикаНоменклатуры) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Иначе
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.Ссылка.УникальныйИдентификатор());
КонецЕсли;
Исключение
Значение = "";
КонецПопытки;
КонецЕсли;
По пункту 3. В ПКО Номенклатура для ПКС УИДХрактеристика перед выгрузкой код:
Если Источник.ЭтоГруппа Тогда
Значение = "";
Сообщить("ЭТО ГРУППА", СтатусСообщения.важное);
Иначе
Попытка
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Сообщить("Номенклатура: " +ВходящиеДанные.Номенклатура+ "Характеристика номенклатуры: "+ВходящиеДанные.ХарактеристикаНоменклатуры+ " УИД: "+ Значение, СтатусСообщения.важное);
Исключение
Значение ="";
Сообщить("Не удалось выгрузить характеристику: ", СтатусСообщения.важное);
КонецПопытки;
КонецЕсли;
Для ПКС Номенклаутра также добавил вывод сообщений в ранее приведенный код(anchvoy)
Если ТипЗнч(Источник) = Тип("СправочникСсылка.Номенклатура") Тогда
Значение = Строка(Источник.УникальныйИдентификатор());
Сообщить("Выгружена Номенклатура : " + Источник + " УИД: "+ Значение, СтатусСообщения.важное);
Иначе
Значение = Строка(Источник.Ссылка.УникальныйИдентификатор());
Сообщить("Выгружена Номенклатура : " + Источник + " СсылкаУИД: "+ Значение, СтатусСообщения.важное);
КонецЕсли;
Опять же при выгрузке получаем сообщения:
ЭТО ГРУППА
Выгружена Номенклатура : Мед. одежда УИД: 21aee1b3-4b5b-11e3-a986-000c292dafeb
ЭТО ГРУППА
Выгружена Номенклатура : Халат медицинский УИД: 9c911ac6-4815-11e3-a986-000c292dafeb
Не удалось выгрузить характеристику:
Выгружена Номенклатура : Халат модельный медицинский Т/С УИД: f9637f75-422f-11e3-a986-000c292dafeb
Если Источник.ЭтоГруппа Тогда
Значение = "";
Сообщить("ЭТО ГРУППА", СтатусСообщения.важное);
Иначе
Попытка
Значение = Строка(ВходящиеДанные.ХарактеристикаНоменклатуры.УникальныйИдентификатор());
Сообщить("Номенклатура: " +ВходящиеДанные.Номенклатура+ "Характеристика номенклатуры: "+ВходящиеДанные.ХарактеристикаНоменклатуры+ " УИД: "+ Значение, СтатусСообщения.важное);
Исключение
Значение ="";
Сообщить("Не удалось выгрузить характеристику: ", СтатусСообщения.важное);
КонецПопытки;
КонецЕсли;
Для ПКС Номенклаутра также добавил вывод сообщений в ранее приведенный код(anchvoy)
Если ТипЗнч(Источник) = Тип("СправочникСсылка.Номенклатура") Тогда
Значение = Строка(Источник.УникальныйИдентификатор());
Сообщить("Выгружена Номенклатура : " + Источник + " УИД: "+ Значение, СтатусСообщения.важное);
Иначе
Значение = Строка(Источник.Ссылка.УникальныйИдентификатор());
Сообщить("Выгружена Номенклатура : " + Источник + " СсылкаУИД: "+ Значение, СтатусСообщения.важное);
КонецЕсли;
Опять же при выгрузке получаем сообщения:
ЭТО ГРУППА
Выгружена Номенклатура : Мед. одежда УИД: 21aee1b3-4b5b-11e3-a986-000c292dafeb
ЭТО ГРУППА
Выгружена Номенклатура : Халат медицинский УИД: 9c911ac6-4815-11e3-a986-000c292dafeb
Не удалось выгрузить характеристику:
Выгружена Номенклатура : Халат модельный медицинский Т/С УИД: f9637f75-422f-11e3-a986-000c292dafeb
Начало выгрузки: 14.01.2014 21:29:40
ЭТО ГРУППА
Выгружена Номенклатура : Мед. одежда УИД: 21aee1b3-4b5b-11e3-a986-000c292dafeb
ЭТО ГРУППА
Выгружена Номенклатура : Халат медицинский УИД: 9c911ac6-4815-11e3-a986-000c292dafeb
Выгружена Номенклатура : Халат модельный медицинский Т/С УИД: f9637f75-422f-11e3-a986-000c292dafeb
ОбъектКоллекции.ХарактеристикаНоменклатуры: 48-50/170-0/5-ОБРАЗЕЦ
ОбъектКоллекции.ХарактеристикаНоменклатуры: 46/4-Мешалкина
ОбъектКоллекции.ХарактеристикаНоменклатуры: 50/170
ОбъектКоллекции.ХарактеристикаНоменклатуры: 62/170
Окончание выгрузки: 14.01.2014 21:29:41
В исходящие данные не попадает характеристика номенклатуры, только сама номенклатура.
Проверил перенос номенкалтуры без родителя. Перенес позицию номенклатуры в корень справочника чтобы не было родителей. Выгрузка также не показывает что передается харатеристика.
Начало выгрузки: 14.01.2014 21:34:18
Выгружена Номенклатура : Халат модельный медицинский Т/С УИД: f9637f75-422f-11e3-a986-000c292dafeb
ОбъектКоллекции.ХарактеристикаНоменклатуры: 48-50/170-0/5-ОБРАЗЕЦ
ОбъектКоллекции.ХарактеристикаНоменклатуры: 46/4-Мешалкина
ОбъектКоллекции.ХарактеристикаНоменклатуры: 50/170
ОбъектКоллекции.ХарактеристикаНоменклатуры: 62/170
Окончание выгрузки: 14.01.2014 21:34:18
Выгружено объектов: 24
Может при выгрузке через универсальный обмен данными не происходит заполнение исходящих данных?
ЭТО ГРУППА
Выгружена Номенклатура : Мед. одежда УИД: 21aee1b3-4b5b-11e3-a986-000c292dafeb
ЭТО ГРУППА
Выгружена Номенклатура : Халат медицинский УИД: 9c911ac6-4815-11e3-a986-000c292dafeb
Выгружена Номенклатура : Халат модельный медицинский Т/С УИД: f9637f75-422f-11e3-a986-000c292dafeb
ОбъектКоллекции.ХарактеристикаНоменклатуры: 48-50/170-0/5-ОБРАЗЕЦ
ОбъектКоллекции.ХарактеристикаНоменклатуры: 46/4-Мешалкина
ОбъектКоллекции.ХарактеристикаНоменклатуры: 50/170
ОбъектКоллекции.ХарактеристикаНоменклатуры: 62/170
Окончание выгрузки: 14.01.2014 21:29:41
В исходящие данные не попадает характеристика номенклатуры, только сама номенклатура.
Проверил перенос номенкалтуры без родителя. Перенес позицию номенклатуры в корень справочника чтобы не было родителей. Выгрузка также не показывает что передается харатеристика.
Начало выгрузки: 14.01.2014 21:34:18
Выгружена Номенклатура : Халат модельный медицинский Т/С УИД: f9637f75-422f-11e3-a986-000c292dafeb
ОбъектКоллекции.ХарактеристикаНоменклатуры: 48-50/170-0/5-ОБРАЗЕЦ
ОбъектКоллекции.ХарактеристикаНоменклатуры: 46/4-Мешалкина
ОбъектКоллекции.ХарактеристикаНоменклатуры: 50/170
ОбъектКоллекции.ХарактеристикаНоменклатуры: 62/170
Окончание выгрузки: 14.01.2014 21:34:18
Выгружено объектов: 24
Может при выгрузке через универсальный обмен данными не происходит заполнение исходящих данных?
Попробуйте для начала правильно заполнить оператор ВыгрузитьПоПравилу. ИмяПКО должно быть пятым параметром.
ВыгрузитьПоПравилу(Источник,
Приемник,
ВходящиеДанные,
ИсходящиеДанные,
ИмяПКО,
УзелСсылки,
ТолькоПолучитьУзелСсылки,
ПКО,
ЭтоПравилоСГлобальнойВыгрузкойОбъектов,
ВыборкаДляВыгрузкиДанных)
ВыгрузитьПоПравилу(Источник,
Приемник,
ВходящиеДанные,
ИсходящиеДанные,
ИмяПКО,
УзелСсылки,
ТолькоПолучитьУзелСсылки,
ПКО,
ЭтоПравилоСГлобальнойВыгрузкойОбъектов,
ВыборкаДляВыгрузкиДанных)
Исправил, результат при выгрузке такой же
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено,Неопределено, ИсходящиеДанные, "Номенклатура",,,,,);
Сообщить("ОбъектКоллекции.ХарактеристикаНоменклатуры: "+ОбъектКоллекции.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено,Неопределено,Неопределено,"Номенклатура",,,,,);
Сообщить("ОбъектКоллекции.Номенклатура: "+ОбъектКоллекции.Номенклатура, СтатусСообщения.важное);
КонецЕсли;
раньше выгружал на документах с большим количеством строк, поэтому не заметил что параметров ВыгрузитьПоПравилу не хватает
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено,Неопределено, ИсходящиеДанные, "Номенклатура",,,,,);
Сообщить("ОбъектКоллекции.ХарактеристикаНоменклатуры: "+ОбъектКоллекции.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено,Неопределено,Неопределено,"Номенклатура",,,,,);
Сообщить("ОбъектКоллекции.Номенклатура: "+ОбъектКоллекции.Номенклатура, СтатусСообщения.важное);
КонецЕсли;
раньше выгружал на документах с большим количеством строк, поэтому не заметил что параметров ВыгрузитьПоПравилу не хватает
Тут есть один неочевидный нюанс. То, что мы выгружаем как ИсходящиеДанные в ВыгрузитьПоПравилу должны быть третьим параметром, т.е. они в контексте данного оператора называются ВходящиеДанные. Соответственно нужно писать так:
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные,,"Номенклатура");
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные,,"Номенклатура");
Поменял местами:
ИсходДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено, ИсходДанные,Неопределено,"Номенклатура", , , );
Сообщить("ИсходящиеДанные.ХарактеристикаНоменклатуры: "+ИсходДанные.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено,Неопределено,Неопределено,"Номенклатура", , , , , );
Сообщить("ОбъектКоллекции.Номенклатура: "+ОбъектКоллекции.Номенклатура, СтатусСообщения.важное);
КонецЕсли;
Результат тот же. Не выгружается характеристика.Т.е. не передается входящие данные.
ИсходДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено, ИсходДанные,Неопределено,"Номенклатура", , , );
Сообщить("ИсходящиеДанные.ХарактеристикаНоменклатуры: "+ИсходДанные.ХарактеристикаНоменклатуры, СтатусСообщения.важное);
Иначе
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,Неопределено,Неопределено,Неопределено,"Номенклатура", , , , , );
Сообщить("ОбъектКоллекции.Номенклатура: "+ОбъектКоллекции.Номенклатура, СтатусСообщения.важное);
КонецЕсли;
Результат тот же. Не выгружается характеристика.Т.е. не передается входящие данные.
(39) sarun, В ПКС Номенклатура в ИсходящиеДанные.ХарактеристикаНоменклатуры что находится? Во что это превращается в ПКО Номенклатура в ВходящиеДанные.ХарактеристикаНоменклатуры?
(40) sarun, Не совсем понятно как это решит вопрос перебора табличной части. Она и так перебирается когда производится выгрузка по ПКГС.
(40) sarun, Не совсем понятно как это решит вопрос перебора табличной части. Она и так перебирается когда производится выгрузка по ПКГС.
При выгрузке через универсальный обмен информации о выгрузке характеристики нет. При обмене через план обмена - выгружается только одна характеристика из таб. части.
Может быть перебирать все объекты коллекции перед выгрузкой?
Может быть перебирать все объекты коллекции перед выгрузкой?
Должно получиться следующее. В ПКС Номенклатура в ИсходящиеДанные.ХарактеристикаНоменклатуры должна быть ссылка на характеристику, которая получается из объекта коллекции. После выгрузки через ВыгрузитьПоПравилу это должно гарантированно появиться в ПКС Номенклатура в ВходящиеДанные.ХарактеристикаНоменклатуры.
В ПКС Номенклатура (в документе)
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные,,"Номенклатура", , , , , );
Иначе
ВыгрузитьПоПравилуКонецЕсли;
КонецЕcли;
Вобщем нашел что ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные,,"Номенклатура", , , , , );
обрабатывает только одну строку из документа. Вопрос почему?
ИсходящиеДанные = Новый Структура;
Если ЗначениеЗаполнено(ОбъектКоллекции.ХарактеристикаНоменклатуры) Тогда
ИсходящиеДанные.Вставить("ХарактеристикаНоменклатуры", ОбъектКоллекции.ХарактеристикаНоменклатуры);
ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные,,"Номенклатура", , , , , );
Иначе
ВыгрузитьПоПравилуКонецЕсли;
КонецЕcли;
Вобщем нашел что ВыгрузитьПоПравилу(ОбъектКоллекции.Номенклатура,, ИсходящиеДанные,,"Номенклатура", , , , , );
обрабатывает только одну строку из документа. Вопрос почему?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот