Заполнение реквзитов с помощью внешней обработки
Доброго времени суток. Подскажите, пожалуйста по такому вопросу.
Пишу внешнюю обработку. Ее суть заключается в том, чтобы перенести данные из одного документа "Остатки ЕГАИС" (пусть будет №1) в документ "Передачи в торговый зал ЕГАИС" (№2). Так вот В документе №1 есть реквизит "Алко.продукция" (тип - спр. Классификаторы алко...), но нет реквизита "Номенклатура" (тип - спр. Номенклатура). А в документе №2 Есть оба эти реквизита с такими же типами. И вот как мне заполнить реквизит "Номенклатура"? Эти два справочника между собой никак не связаны..
Пишу внешнюю обработку. Ее суть заключается в том, чтобы перенести данные из одного документа "Остатки ЕГАИС" (пусть будет №1) в документ "Передачи в торговый зал ЕГАИС" (№2). Так вот В документе №1 есть реквизит "Алко.продукция" (тип - спр. Классификаторы алко...), но нет реквизита "Номенклатура" (тип - спр. Номенклатура). А в документе №2 Есть оба эти реквизита с такими же типами. И вот как мне заполнить реквизит "Номенклатура"? Эти два справочника между собой никак не связаны..
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)
(4)
(3)
(2)
Этот вопрос я решила. Теперь только не пойму вот что. Все данные записываются, как нужно. А вот реквизит "Количество" остается незаполненным, хотя механизм такой же, как и для других реквизитов. И кстати, когда прохожу отладчиком, он показывает, что значение присвоено.
(4)
(3)
(2)
Этот вопрос я решила. Теперь только не пойму вот что. Все данные записываются, как нужно. А вот реквизит "Количество" остается незаполненным, хотя механизм такой же, как и для других реквизитов. И кстати, когда прохожу отладчиком, он показывает, что значение присвоено.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОприходованиеТоваровТовары.Номенклатура,
| ОприходованиеТоваровТовары.АлкогольнаяПродукция
|ПОМЕСТИТЬ ОприходТоваров
|ИЗ
| Документ.ОприходованиеТоваров.Товары КАК ОприходованиеТоваровТовары
|ГДЕ
| ОприходованиеТоваровТовары.Ссылка.ДокументОснование.Ссылка = &Ссылка
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.СправкаБ,
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.АлкогольнаяПродукция,
| ЕСТЬNULL(ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.Количество, 0) КАК Количество
|ПОМЕСТИТЬ ОстаткиЕГАИС
|ИЗ
| Документ.ОстаткиЕГАИС.ОстаткиПоДаннымЕГАИС КАК ОстаткиЕГАИСОстаткиПоДаннымЕГАИС
|ГДЕ
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.Ссылка = &Ссылка
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ОприходованиеТоваров.Магазин,
| ОприходованиеТоваров.Склад
|ПОМЕСТИТЬ РеквизитыОприходованиеТоваров
|ИЗ
| Документ.ОприходованиеТоваров КАК ОприходованиеТоваров
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ОприходТоваров.Номенклатура,
| ОприходТоваров.АлкогольнаяПродукция,
| ОстаткиЕГАИС.СправкаБ,
| РеквизитыОприходованиеТоваров.Магазин,
| РеквизитыОприходованиеТоваров.Склад,
| ОстаткиЕГАИС.Количество
|ИЗ
| ОстаткиЕГАИС КАК ОстаткиЕГАИС
| ЛЕВОЕ СОЕДИНЕНИЕ ОприходТоваров КАК ОприходТоваров
| ПО ОстаткиЕГАИС.АлкогольнаяПродукция = ОприходТоваров.АлкогольнаяПродукция,
| РеквизитыОприходованиеТоваров КАК РеквизитыОприходованиеТоваров";
Запрос.УстановитьПараметр("Ссылка", ДокументОстатки);
Выборка = Запрос.Выполнить().Выбрать();
НовДок = Документы.ПередачаВТорговыйЗалЕГАИС.СоздатьДокумент();
НовДок.Магазин = Выборка.Магазин;
//НовДок.Организация = Выборка.Организация;
НовДок.Склад = Выборка.Склад;
НовДок.Дата = ТекущаяДата();
Пока Выборка.Следующий() Цикл
НовСтр = НовДок.Товары.Добавить();
НовСтр.Номенклатура = Выборка.Номенклатура;
НовСтр.Количество = Выборка.Количество;
НовСтр.СправкаБ = Выборка.СправкаБ;
НовСТр.АлкогольнаяПродукция = Выборка.АлкогольнаяПродукция;
КонецЦикла;
НовДок.Записать();
Показать
(10) Связь между справочниками Номенклатура и КлассификаторАлко хранится в регистре СоответствиеНоменклатурыЕГАИС, если у вас используется то запрос можно сделать попроще
"ВЫБРАТЬ
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.АлкогольнаяПродукция,
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.Количество,
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.Количество КАК КоличествоУпаковок,
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.СправкаБ,
| СоответствиеНоменклатурыЕГАИС.Номенклатура
|ИЗ
| Документ.ОстаткиЕГАИС.ОстаткиПоДаннымЕГАИС КАК ОстаткиЕГАИСОстаткиПоДаннымЕГАИС
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеНоменклатурыЕГАИС
| ПО ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.АлкогольнаяПродукция = СоответствиеНоменклатурыЕГАИС.АлкогольнаяПродукция
|ГДЕ
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументОстатки);
ТЗ = Запрос.Выполнить().Выгрузить();
НовДок = Документы.ПередачаВТорговыйЗалЕГАИС.СоздатьДокумент();
Для каждого стр из ТЗ Цикл
НовСтр = НовДок.Товары.Добавить();
ЗапонитьЗначенияСвойств(НовСтр,стр);
КонецЦикла;
НовДок.Записать();
Показать
в справочнике номенклатура есть реквизит "Алко.продукция"? если отсутствует, то есть несколько вариантов это сопоставить:
добавить реквизит "Алко.продукция" в номенклатуру и заполнить в соответствии с любой логикой;
создать регистр сведений "Соответствие Алко.продукции и номенклатура" и также заполнить в соответствии с необходимой логикой
создать внешний файл со списком соответствия номенклатуры и Алко.продукциив две колонки, например, формат "табличный документ", Excel или ему подобные
и далее во внешней обработке устанавливать соответствие в документах, исходя из выбранного алгоритма сопоставления
добавить реквизит "Алко.продукция" в номенклатуру и заполнить в соответствии с любой логикой;
создать регистр сведений "Соответствие Алко.продукции и номенклатура" и также заполнить в соответствии с необходимой логикой
создать внешний файл со списком соответствия номенклатуры и Алко.продукциив две колонки, например, формат "табличный документ", Excel или ему подобные
и далее во внешней обработке устанавливать соответствие в документах, исходя из выбранного алгоритма сопоставления
Этот вопрос я решила. Теперь только не пойму вот что. Все данные записываются, как нужно. А вот реквизит "Количество" остается незаполненным, хотя механизм такой же, как и для других реквизитов. И кстати, когда прохожу отладчиком, он показывает, что значение присвоено.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОприходованиеТоваровТовары.Номенклатура,
| ОприходованиеТоваровТовары.АлкогольнаяПродукция
|ПОМЕСТИТЬ ОприходТоваров
|ИЗ
| Документ.ОприходованиеТоваров.Товары КАК ОприходованиеТоваровТовары
|ГДЕ
| ОприходованиеТоваровТовары.Ссылка.ДокументОснование.Ссылка = &Ссылка
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.СправкаБ,
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.АлкогольнаяПродукция,
| ЕСТЬNULL(ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.Количество, 0) КАК Количество
|ПОМЕСТИТЬ ОстаткиЕГАИС
|ИЗ
| Документ.ОстаткиЕГАИС.ОстаткиПоДаннымЕГАИС КАК ОстаткиЕГАИСОстаткиПоДаннымЕГАИС
|ГДЕ
| ОстаткиЕГАИСОстаткиПоДаннымЕГАИС.Ссылка = &Ссылка
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ОприходованиеТоваров.Магазин,
| ОприходованиеТоваров.Склад
|ПОМЕСТИТЬ РеквизитыОприходованиеТоваров
|ИЗ
| Документ.ОприходованиеТоваров КАК ОприходованиеТоваров
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ОприходТоваров.Номенклатура,
| ОприходТоваров.АлкогольнаяПродукция,
| ОстаткиЕГАИС.СправкаБ,
| РеквизитыОприходованиеТоваров.Магазин,
| РеквизитыОприходованиеТоваров.Склад,
| ОстаткиЕГАИС.Количество
|ИЗ
| ОстаткиЕГАИС КАК ОстаткиЕГАИС
| ЛЕВОЕ СОЕДИНЕНИЕ ОприходТоваров КАК ОприходТоваров
| ПО ОстаткиЕГАИС.АлкогольнаяПродукция = ОприходТоваров.АлкогольнаяПродукция,
| РеквизитыОприходованиеТоваров КАК РеквизитыОприходованиеТоваров";
Запрос.УстановитьПараметр("Ссылка", ДокументОстатки);
Выборка = Запрос.Выполнить().Выбрать();
НовДок = Документы.ПередачаВТорговыйЗалЕГАИС.СоздатьДокумент();
НовДок.Магазин = Выборка.Магазин;
//НовДок.Организация = Выборка.Организация;
НовДок.Склад = Выборка.Склад;
НовДок.Дата = ТекущаяДата();
Пока Выборка.Следующий() Цикл
НовСтр = НовДок.Товары.Добавить();
НовСтр.Номенклатура = Выборка.Номенклатура;
НовСтр.Количество = Выборка.Количество;
НовСтр.СправкаБ = Выборка.СправкаБ;
НовСТр.АлкогольнаяПродукция = Выборка.АлкогольнаяПродукция;
КонецЦикла;
НовДок.Записать();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот