Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 06:55

Внешняя обработка, создание связанных объектов

Автор golovina, 11 авг 2015, 17:09

0 Пользователей и 1 гость просматривают эту тему.

golovina

Здравствуйте, подскажите, пожалуйста! Во внешней обработке создаю Заказ поставщику на основании Заказа клиента. При этом в табличную часть Заказа поставщику заполняю основными вариантами комплектации товаров, которые содержаться в Заказе клиенту. На данный момент 2 проблемы.
1. Табличная часть заполняется без ошибок, но при попытке провести созданный документ говорит, что "Обнаружено нулевое количество при пересчете в единицу хранения в строке n списка "Товары" и так по каждой строке... Само поле Кол-во (которое на самом деле КоличествоУпаковок заполнено).
Для каждого СтрокаТЧ из Основание.Товары Цикл

    ЗапросВариантаКомплектации = Новый Запрос();
    ЗапросВариантаКомплектации.Текст =
    "ВЫБРАТЬ
    | ВариантыКомплектацииНоменклатуры.Номенклатура.Ссылка КАК Номенклатура,
    |   ВариантыКомплектацииНоменклатуры.Количество КАК Количество,
    |   ВариантыКомплектацииНоменклатуры.Упаковка КАК Упаковка,
    |   ВариантыКомплектацииНоменклатуры.КоличествоУпаковок КАК КоличествоУпаковок
    |
    |ИЗ
    | Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатуры
    |ГДЕ
    | ВариантыКомплектацииНоменклатуры.Ссылка.Владелец = &Ссылка
    |   И ВариантыКомплектацииНоменклатуры.Ссылка.Основной
    |УПОРЯДОЧИТЬ ПО
    | ВариантыКомплектацииНоменклатуры.НомерСтроки";
   
    ЗапросВариантаКомплектации.УстановитьПараметр("Ссылка", СтрокаТЧ.Номенклатура);
    Выборка = ЗапросВариантаКомплектации.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
   
    НоваяСтрока = НовыйОбъект.Товары.Добавить();
    НоваяСтрока.Номенклатура = Выборка.Номенклатура;
НоваяСтрока.КоличествоУпаковок = Выборка.Количество * СтрокаТЧ.Количество;
НоваяСтрока.Количество = Выборка.Количество * СтрокаТЧ.Количество;

    КонецЦикла;

КонецЦикла;


2. Пытаюсь указать ссылку на документ основание таким способом
Процедура СоздатьНовыйДокумент(Элемент, НовыйОбъект)

    Основание = Элемент.Ссылка;

    НовыйОбъект.Дата = ТекущаяДата();
    НовыйОбъект.Организация = Основание.Организация;
    НовыйОбъект.Склад = "";
    НовыйОбъект.ДокументОснование = Основание;\
    ...
КонецПроцедуры

но ничего не заполняется...

Буду очень благодарна за советы!

Дмитрий@

Может это связано с тем, что нет информации о том сколько в упаковке количества товара.

golovina

Добавила строку при заполнении
НоваяСтрока.Упаковка = Выборка.Упаковка;

Не спасло.
Причем ошибка уходит если руками перевыбрать позицию номенклатуры или количество.
Добавлено: 12 авг 2015, 15:52


С первой проблемой разобралась, осталась 2-ая

Kironten

Цитата: golovina от 12 авг 2015, 09:19
С первой проблемой разобралась, осталась 2-ая

Если значение в "Основание" заполнено, то проверяйте типы. Возможно несовпадение в них.

golovina

Я вот тоже думала про несовпадение типов.
Тип ДокументОснование - ДокументСсылка.ЗаказКлиента
а элемент - это ЗаказКлиента. В процессе выполнения Элемент.Ссылка принимает значение "Заказ клиента ОМТ-00001 от 07.08.2015 12:40:48" вроде бы все норм... это же значение имеет и ДокументОснование после строки присваивания.
Поэтому я в тупике.
Добавлено: 14 авг 2015, 10:19


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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск