Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

КД2: Получить значение из входящих данных

КД2: Получить значение из входящих данных
Я
   Mikhail Volkov
 
08.08.18 - 13:10
При обмене КА1.1 с КА2.4 выдало ошибку:
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)}: Ошибка получения свойства объекта из входящих данных 
    ПКО                    =  СерииНоменклатуры  (Справочник: Серии номенклатуры)
    ПКС                    =  3  (--> ВидНоменклатуры)
    Объект                 =  с/н перчатки  (Серия номенклатуры)
    СвойствоПриемника      =  ВидНоменклатуры  (СправочникСсылка.ВидыНоменклатуры)
    ОписаниеОшибки         =  Поле объекта не обнаружено (ВидНоменклатуры)
    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283)
    КодСообщения           =  68
В ПКС ВидНоменклатуры поле Источник не заполнено, установлена галочка Получить значение из входящих данных. Обработчик ПКС_СерииНоменклатуры_ВидНоменклатуры_ПередВыгрузкойСвойства_3_17 пустой. Вписал в него:
Если ТипЗнч(Источник.Наименование) = Тип("Строка") Тогда
    Значение = Источник.Владелец.ВидНоменклатуры;    
КонецЕсли;
Это потому что в ПКО_СерииНоменклатуры_ПередВыгрузкойОбъекта:
КлючВыгружаемыхДанных = Источник.Наименование;
Первое что пришло в голову, что Источник.Наименование и есть "значение из входящих данных". После засомнивался...
Обмен прошел без ошибок, но гложет, что правила потеряли свою универсальность. Значение = Источник.Владелец.ВидНоменклатуры должно выполняться лишь в случае, если "Получить значение из входящих данных" ничего не удается. Но как это сделать?
 
 
   Mikhail Volkov
 
1 - 08.08.18 - 15:26
Заменил ПКС_СерииНоменклатуры_ВидНоменклатуры_ПередВыгрузкойСвойства_3_17:
Если ТипЗнч(Источник) <> Тип("Структура") Тогда
    Значение = Источник.Владелец.ВидНоменклатуры;    
КонецЕсли;
Вроде нет ошибок!?
   Lexandr
 
2 - 08.08.18 - 15:31
Неправильно. Жмем "информация по обработчикам" и читаем, что такое входящие данные.
   Mikhail Volkov
 
3 - 08.08.18 - 18:17
(2) ВходящиеДанные - Произвольный. Произвольные вспомогательные данные, переданные правилу конвертации из других правил (например из правила выгрузки данных или правила конвертации свойств). Значение параметра, как правило, имеет тип Структура, где ключи значений соответствуют структуре свойств объекта приемника. Таким образом, при конвертации свойств (в ПКС), конвертируемые данные (или часть данных) могут быть получены из этого параметра.
А конкретно где формируются эти ВходящиеДанные? ПКО СерииНоменклатуры обычно вызываются из табличной части Товары, в их ПКГС и ПКС ничего нет. Кроме Структура какой еще тип могут иметь ВходящиеДанные, как определить, что они не пустые?
   Lexandr
 
4 - 09.08.18 - 09:14
В информации по обработчикам для ПКС есть еще параметр "исходящие данные". То есть, значение - это источник, который ты передаешь в пкс, а исходящие данные(структура)  довеском. Я предпочитаю сразу структуру нужных данных передавать, как источник.
   Mikhail Volkov
 
5 - 09.08.18 - 19:25
(4) Значит ВходящиеДанные для ПКО СерииНоменклатуры являются ИсходящиеДанные, которые формируются в ПКС вызывающие ПКО СерииНоменклатуры? К сожалению в исходных правилах УПП-УП (1.3.103, 2.4.5.33, v.1) не нашел такого ПКС, они написаны для переноса лишь начальных остатков. А в тех ПКС, которые дописывал, не формировал ИсходящиеДанные.
Хотя нашел примеры формирования ИсходящиеДанные для ПКО ХарактеристикиНоменклатуры:

ИсходящиеДанные = Новый Структура;
Если Параметры.ИспользоватьХарактеристикиНоменклатуры
    И ОбъектКоллекции.Номенклатура.ВестиУчетПоХарактеристикам
    И НЕ ЗначениеЗаполнено(ОбъектКоллекции.Характеристика) Тогда
    ИсходящиеДанные.Вставить("Владелец", ОбъектКоллекции.Номенклатура);
    Значение = Новый Структура("Ссылка");
    ИмяПКО = "ПустаяХарактеристикаНоменклатуры";
КонецЕсли;

Вообщем-то, если в дальнейшем такие ПКС появятся, то скорее ИсходящиеДанные будут Структура, и решение (1) правильное.
   Mikhail Volkov
 
6 - 10.08.18 - 18:43
А нет, оказывается ПКО_ВидыНоменклатуры_ПередВыгрузкойОбъекта:

Если ТипЗнч(Источник) = Тип("Структура") Тогда
    Если Не Источник.Свойство("АлкогольнаяПродукция") Тогда
        Источник.Вставить("АлкогольнаяПродукция", Ложь);
    КонецЕсли;
    Если Не Источник.Свойство("ИмпортнаяАлкогольнаяПродукция") Тогда
        Источник.Вставить("ИмпортнаяАлкогольнаяПродукция", Ложь);
    КонецЕсли;
    Если Не Источник.Свойство("ВидАлкогольнойПродукции") Тогда
        Источник.Вставить("ВидАлкогольнойПродукции", Справочники.ВидыАлкогольнойПродукции.ПустаяСсылка());
    КонецЕсли;
КонецЕсли;    

Если ТипЗнч(Источник) = Тип("Структура") Тогда
    
    ВходящиеДанные.Вставить("Наименование",                    Лев(Источник.Наименование, 50));
    ВходящиеДанные.Вставить("ИспользованиеХарактеристик",    Источник.ИспользованиеХарактеристик);
    ВходящиеДанные.Вставить("ИспользоватьСерии",            Источник.ИспользоватьСерии);
    
ИначеЕсли ТипЗнч(Источник) <> Тип("Строка") Тогда
    
    // Если передали объект, то на данный вид номенклатуры нет ссылок, выгружаем все по-минимуму

    ВходящиеДанные.Вставить("ИспользованиеХарактеристик", "НеИспользовать");
    ВходящиеДанные.Вставить("Наименование", Лев(Источник.Наименование + " " + "(" + НСтр("ru='б/х'") + ")", 50));
    ВходящиеДанные.Вставить("ИспользоватьСерии", Ложь);
    
КонецЕсли;

В моем случае ТипЗнч(Источник) не Структура, не Строка, а ВидыНоменклатуры. Поэтому ИспользоватьСерии Ложь, и в документах где точно серии есть в колонке "Серия" пишется: <серия не указывается>.
Наверное все же в ПКО СерииНоменклатуры сформировать Структура для ВидыНоменклатуры? Только где: в ПКО СерииНоменклатуры или в ПКС ВидыНоменклатуры? И каком обработчике: перед или после выгрузки?
   Mikhail Volkov
 
7 - 11.08.18 - 09:18
Заменил ПКС_СерииНоменклатуры_ВидНоменклатуры_ПередВыгрузкойСвойства_3_17:

Если ТипЗнч(Источник) <> Тип("Структура") Тогда
//    Значение = Источник.Владелец.ВидНоменклатуры;

    ИсходящиеДанные = Новый Структура;
    ИсходящиеДанные.Вставить("Наименование",                Источник.Владелец.ВидНоменклатуры.Наименование);
    ИсходящиеДанные.Вставить("ИспользованиеХарактеристик",    Источник.Владелец.ВестиУчетПоХарактеристикам);
    ИсходящиеДанные.Вставить("ИспользоватьСерии",            Истина);
КонецЕсли;

получил ту же ошибку (0). Почему "Поле объекта не обнаружено (ВидНоменклатуры)", что ни так?
   Mikhail Volkov
 
8 - 11.08.18 - 09:37
По Конвертация данных. получить из входящих данных заменил ИсходящиеДанные на ВходящиеДанные - не помогло, та же ошибка (0)!?
   Mikhail Volkov
 
9 - 11.08.18 - 15:36
(8) + ИсходящиеДанные или ВходящиеДанные, которые я прописываю в ПКС ВидНоменклатуры (ПКО СерииНоменклатуры) все равно не Источник для ПКО ВидыНоменклатуры. Когда ставится галочка "Получить значение из входящих данных" поле Источник недоступно.
(4) > значение - это источник, который ты передаешь в пкс, а исходящие данные(структура)  довеском.
Как же правильно задать Источник для ПКО ВидыНоменклатуры (6) из ПКО СерииНоменклатуры?
   Mikhail Volkov
 
10 - 13.08.18 - 06:42
(4) Все верно: ИсходящиеДанные сформированные в ПКС_СерииНоменклатуры_ВидНоменклатуры_ПередВыгрузкойСвойства_3_17 в ПКО_ВидыНоменклатуры_ПередВыгрузкойОбъекта становятся ВходящиеДанные:

Если ТипЗнч(Источник) <> Тип("Структура") Тогда
    Значение = Источник.Владелец.ВидНоменклатуры;

    ИсходящиеДанные = Новый Структура;
    ИсходящиеДанные.Вставить("Наименование",                Источник.Владелец.ВидНоменклатуры.Наименование);
    ИсходящиеДанные.Вставить("ИспользованиеХарактеристик",  Источник.Владелец.ВестиУчетПоХарактеристикам);
    ИсходящиеДанные.Вставить("ИспользоватьСерии",           Истина);
КонецЕсли;

Но там (6) они затирались, поскольку ТипЗнч(Источник) <> Тип("Строка"). Добавил еще условие:
ИначеЕсли ТипЗнч(Источник) <> Тип("Строка") И ТипЗнч(Источник) <> Тип("СправочникСсылка.ВидыНоменклатуры") Тогда
и видах номенклатуры с сериями появилась галочка Серии "Настроены для этого вида номенклатуры"! Правда "Политика учета серий" пустая!? Создал новую "Учет по сериям" с типом "Справочное указание серий". Наставил в ней все доступные галочки "На складах". Более ничего не трогал видах номенклатуры.
После этого в табличных частях документов Товары в колонках "Серия" появились красные значки <серия указывается отдельно>. Жму кнопку "Указать серии" - открывается пустое окно "Регистрация серий товаров" с вкладками "Ввод" и "Выбор" - обе пустые!? Как будь-то серий нет?
А в документах серии есть, специально прописал в правилах ПКО ПослеЗагрузкиОбъекта вывод номенклатуры, которая с сериями:
Обновлен: Приобретение товаров и услуг ТИП-0000327 от 09.07.2018 13:10:33 (Закупка у поставщика)
 - Торцевая головка 3/4"DR, 38мм, серия: 10/07/2018 до 01.01.80
Обновлен: Возврат товаров поставщику ТИП-0000003 от 10.07.2018 13:15:56
 - Торцевая головка 3/4"DR, 38мм, серия: 10/07/2018 до 01.01.80
Одно радует, что теперь нет ошибки:
Возврат по номенклатуре Торцевая головка 3/4"DR, 38мм превышает количество закупленных товаров по документу поступления ТИП-0000327 на 1 шт
Не удалось провести: Возврат товаров поставщику ТИП-0000003 от 10.07.2018 13:15:56 как не прошедший проверку заполнения

Где-то настройки учета серий не доделаны. Где?
 
 Рекламное место пустует
   Mikhail Volkov
 
11 - 13.08.18 - 17:00
Может склад не настроен для учета серий. Склады имеют реквизит Использовать серии номенклатуры, но в форме склада такой галочки не нашел!? Может этот реквизит автоматически устанавливается при Использовать ордерную схему документооборота?
   Mikhail Volkov
 
12 - 13.08.18 - 18:50
Нашел в форме Склад гиперссылку "Настройки учета серий". По ней открывается форма Настройки учета серий: Виды номенклатуры с колонками "Виды номенклатуры" и "Политика учета серий". И что с ней делать? Ни каких галочек "Использовать серии номенклатуры" в ней нет!?
   Mikhail Volkov
 
13 - 14.08.18 - 05:29
СерииНоменклатуры во всех типовых конфигурациях имеет владельца Справочник.Номенклатура. А в КА2.4 его нет!? Разве при этом серийный учет возможен?
   Mikhail Volkov
 
14 - 14.08.18 - 09:14
+ В принципе вопрос темы решен, осталось разобраться почему не вижу серий в документах (красные значки <серия указывается отдельно>, а не зеленые)? Пора открыть новую тему. Но есть смысл в этом, если СерииНоменклатуры не имеют владельца Справочник.Номенклатура?
   Mikhail Volkov
 
15 - 14.08.18 - 17:10
Посмотрел справочник ВидыНоменклатуры, чего в нем только нет по сериям: реквизиты ИспользоватьСерии, НаборСвойствСерий, НастройкаИспользованияСерий, НастройкиСерийБерутсяИзДругогоВидаНоменклатуры, ПолитикаУчетаСерий, ОсобенностьУчета... , а также табличные части: РеквизитыДляКонтроляНоменклатуры, РеквизитыДляКонтроляСерий... При таком построении справочника ВидыНоменклатуры возможно учет серий возможен без владельца серий, но без бутылки не разобраться... в ручную надо настраивать. Из КА1.1 приходит только Наименование и ТипНоменклатуры. Гугл показал только выше описанные настройки серийного учета. Может кто осилил кто серийный учет в ERP, или толковое описание встречал? Поделитесь...
   Mikhail Volkov
 
16 - 19.08.18 - 15:57
Оказывается серий нет в документах!? Сами серии в справочник СерииНоменклатуры приходят. И вроде в документы пишутся, специально в ПКО_ПоступлениеТоваровУслуг_ПослеЗагрузкиОбъекта прописал комментарии:
Обновлен проведенный: Приобретение товаров и услуг ТИП-0000317 от 06.07.2018 13:32:04 (Закупка у поставщика)
 - Перчатки (10 кл) х/б с ПВХ 5-нит 10*250 пч41, серия: перчатки до 01.01.80, вид: Материалы и спецоснастка
Обновлен проведенный: Приобретение товаров и услуг ТИП-0000335 от 11.07.2018 16:35:41 (Закупка у поставщика)
 - Угловая шлифмашина МШУ-0,9-125 (болгарка 12.07.2018), серия: болгарка до 01.01.80, вид: Инструменты
Обновлен проведенный: Приобретение товаров и услуг ТИП-0000333 от 13.07.2018 16:29:32 (Закупка у поставщика)
 - Торцевая головка 3/4"DR, 28мм, серия: 28 до 01.01.80, вид: Материалы и спецоснастка
Обновлен проведенный: Приобретение товаров и услуг ТИП-0000350 от 23.07.2018 14:24:22 (Закупка у поставщика)
 - Ветошь х/б "хлопок цветной", серия: 23/07/2018 до 23.07.18, вид: Материалы и спецоснастка
Обновлен проведенный: Приобретение товаров и услуг ТИП-0000365 от 26.07.2018 12:54:58 (Закупка у поставщика)
 - Штуцер быстросъемный(М)-шл.9мм, серия: 31/07/2018 до 31.07.18, вид: Материалы и спецоснастка
 - Штуцер быстросъемный(П)-1/4(внеш), серия: 31/07/2018 до 31.07.18, вид: Материалы и спецоснастка
 - Фиксатор резьбы соед.50г, серия: 31/07/2018 до 31.07.18, вид: Материалы и спецоснастка
 - Насадка (мундштук) (М10*1) НАСАДКА ДЛЯ СМАЗОЧНИКА, серия: 31/07/2018 до 31.07.18, вид: Материалы и спецоснастка
А смотрю в самих документах, и не только, консолью запросов:

ВЫБРАТЬ
    ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    ПриобретениеТоваровУслугТовары.Серия КАК Серия,
    ПриобретениеТоваровУслугТовары.Серия.ВидНоменклатуры КАК СерияВидНоменклатуры,
    ПриобретениеТоваровУслугТовары.Серия.ВидНоменклатуры.ИспользоватьСерии КАК СерияВидНоменклатурыИспользоватьСерии,
    ПриобретениеТоваровУслугТовары.Ссылка.Ссылка КАК Ссылка
ИЗ
    Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
ГДЕ
    ПриобретениеТоваровУслугТовары.Ссылка = &Ссылка

никаких серий в документах нет!? Какие-то настройки запрещают серии в документы писать. Какие?
   Mikhail Volkov
 
17 - 20.08.18 - 11:00
Пока выяснил, что серии уничтожаются в документе ПередЗаписью при ОбменДанными.Загрузка = Ложь, при проведении документа.
   Mikhail Volkov
 
18 - 21.08.18 - 17:12
+ ПередЗаписью есть фвагмент: НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект, НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ПриобретениеТоваровУслуг)); который удалял серии. Посмотрел в демо-базе документы, где есть серии: там не удаляется потому-что СтатусУказанияСерий = 14 - Служебный реквизит который определяет состояние ввода серий для строки ТЧ. Формируется автоматически, пользователем не редактируется.
Как он формируется предстоит разбираться. Прописал его в ПКС:
Значение = ?(ЗначениеЗаполнено(ОбъектКоллекции.СерияНоменклатуры), 14, 0);
теперь ПередЗаписью серии не удаляются, но желаемого результата нет: в открытом документе серий не видно, а при записи все СтатусУказанияСерий обнуляются. Что-то еще влияет!?
   Mikhail Volkov
 
19 - 22.08.18 - 09:35
Про СтатусУказанияСерий кое что нашел:
//  Возможные статусы указания серий:

//  
//  -1 - серии указаны в таблице уточнения (нет картинки)

//  0 - серии указывать не требуется (нет картинки)
//  первый указанный статус - количество по сериям не совпадает с количеством товаров или серии не указаны (красная картинка)

//  второй указанный статус   - количество по сериям совпадает с количеством товаров (зеленая картинка)
//  третий указанный статус   - серии не указаны, их можно указывать, а можно и не указывать (синяя картинка)

//      1,2,21  - серии указываются справочно
//      3,4,23  - по сериям учитываются остатки, серии указываются по факту отбора

//      5,6,25  - по сериям учитываются остатки, серии указываются при планировании отбора,
//          заполняются по FEFO (используются только в документах отгрузки товаров)

//      7,8,27  - по сериям учитываются остатки, серии указываются при планировании отбора
//      9,10,11 - по сериям учитываются остатки, серии указываются при планировании отгрузки,

//      по сериям формируются движения по регистру СвободныеОстатки (как при приходе, так и при расходе)
//   13,14,15 - по сериям учитывается себестоимость

//   17,18,28 - по сериям учитываются товары у партнеров (товары в пути, неотфактурованные поставки).

в комментариях процедуры НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(), но не понял что за "первый указанный статус", 2-й, 3-й... разряды что-ли?
Еще на счет табличных частей Серии, на них не обращал внимание поскольку они пустые даже в тех документах, где указаны конкретные серии (а не <серия указывается отдельно>). Но в демо-базе нашел пару документов (консолью запросов) где Серии заполнены. В одном их столько же сколько строк Товары. В колонке Серии значки зеленые <серия указывается отдельно>. Жму кнопку "Указать серии", открывается список из одной серии для каждого товара.
В другом документе товар один (строка товара), а серий 6. Действительно, жму кнопку "Указать серии" - открывается список из 6 серий.
Так я не понял, когда табличную часть Серии заполнять надо, и как?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует