8.х Обновление в товарніх таблицах

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Geek, 23 май 2008.

  1. TopicStarter Overlay
    Geek
    Offline

    Geek Опытный в 1С

    Регистрация:
    3 апр 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    в документ возврата стандартная обработка заполняет по документу отгрузки количество товара, я же подставляю количество оставшегося товара на руках запросом. все нормально в таблице товара но при проведении берутся цифры которые были подставлены стандартной обработкой .как мне обновить таблицу что бы при проведении воспринялись новые данные?


    Причем если я набираю руками то все нормально воспринимаются новые цифры , если запросом подставляю то нет
  2. TopicStarter Overlay
    Geek
    Offline

    Geek Опытный в 1С

    Регистрация:
    3 апр 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ДокументОснованиеПриИзменении(Элемент)
    ЭлементыФормы.Товары.Колонки.ДокументПродажи.Доступность=обЗначениеНеЗаполн
    ено(Д
    окументОснование);
    Если НЕ обЗначениеНеЗаполнено(ДокументОснование) Тогда
    Попытка Контрагент=ДокументОснование.Контрагент Исключение КонецПопытки;
    Попытка ДоговорВзаиморасчетов=ДокументОснование.ДоговорВзаиморасчетов Исключение КонецПопытки;
    ОбработкаРеквизита("ДоговорВзаиморасчетов",,ЭтаФорма);
    // заполним все строки "документом основания"
    Для Каждого СтрокаТЧ Из Товары Цикл
    СтрокаТЧ.ДокументПродажи=ДокументОснование;
    КонецЦикла;
    КонецЕсли;
    дкВывестиЗаголовокВзаиморасчеты(ЭтаФорма);
    Результат = дкКоманднаяПанельТоварыЗаполнение(ЭтаФорма, Товары,ЭлементыФормы.КоманднаяПанельТовары.Кнопки.Заполнение.Кнопки.ЗаполнитьПоД
    окументуОтгрузки);
    // смотрим что нам вернули
    // проверка
    Если обЗначениеНеЗаполнено(ДокументОснование) Тогда
    Предупреждение("Не выбран документ отгрузки!",10); Возврат;
    КонецЕсли;
    // спросим про очистку.
    Если Товары.Количество()>0 Тогда
    дкКоманднаяПанельТоварыЗаполнение(ЭтаФорма, Товары, ЭлементыФормы.КоманднаяПанельТовары.Кнопки.Заполнение.Кнопки.Очистить);    
    КонецЕсли;
    // проверим, очистили ли...
    Если Товары.Количество()>0 Тогда Возврат; КонецЕсли;
    // перезаполняем
    Заполнить(ДокументОснование);
    ///////////////////Вывод реальных остатков на руках//////////////////        
    СтрокаТабличнойЧасти=ЭлементыФормы.Товары.ТекущиеДанные;
    Запрос=Новый Запрос("ВЫБРАТЬ
    |    ПартииТоваровОтданныеОстатки.Номенклатура КАК Номенклатура,
    |    ПартииТоваровОтданныеОстатки.ДокументПередачи КАК ДокументПередачи,
    |    ВЫБОР
    |        КОГДА ЕСТЬNULL(ПартииТоваровОтданныеОстатки.Номенклатура.ОсновнаяЕдиницаИзмерения.Коэф
    фициент, 0) = 0
    |            ТОГДА ПартииТоваровОтданныеОстатки.КоличествоОстаток
    |        ИНАЧЕ ПартииТоваровОтданныеОстатки.КоличествоОстаток / ПартииТоваровОтданныеОстатки.Номенклатура.ОсновнаяЕдиницаИзмерения.Коэффициент
    |    КОНЕЦ КАК Количество
    |ИЗ
    |    РегистрНакопления.ПартииТоваровОтданные.Остатки(
    |        &Момент,
    |        Контрагент = &Контрагент
    |            И ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов
    |            И Номенклатура В (&Номенклатура)
    |            И ДокументПередачи = &ДокументПередачи) КАК ПартииТоваровОтданныеОстатки");
    
    Запрос.УстановитьПараметр("ДоговорВзаиморасчетов",ЭтаФорма.ДоговорВзаиморасчетов);
    Запрос.УстановитьПараметр("Контрагент",ЭтаФорма.Контрагент);
    Запрос.УстановитьПараметр("Момент",КонецДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("Номенклатура",Товары.ВыгрузитьКолонку("Номенклатура"));
    Запрос.УстановитьПараметр("ДокументПередачи",ДокументОснование);
    ТаблицаКоличества = Запрос.Выполнить().Выгрузить();
    Для Каждого стр из Товары Цикл
    НайденнаяСтрока=ТаблицаКоличества.Найти(Стр.Номенклатура,"Номенклатура");
    Если
    НайденнаяСтрока = Неопределено Тогда
    Продолжить;
    КонецЕсли;
    Если НайденнаяСтрока.Количество = Null ИЛИ
    НайденнаяСтрока.Количество = 0 ИЛИ
    НайденнаяСтрока.Количество < 0 Тогда
    Стр.Количество = 0;
    ОбработкаРеквизита("Товары.Количество",ЭлементыФормы.Товары.ТекущаяСтрока,ЭтаФорма);
    Стр.КоличествоЗапомнить = Стр.Количество;
    Иначе
    Стр.Количество = НайденнаяСтрока.Количество;
    ОбработкаРеквизита("Товары.Количество",ЭлементыФормы.Товары.ТекущаяСтрока,ЭтаФорма);
    Стр.КоличествоЗапомнить = НайденнаяСтрока.Количество;
    Стр.СуммаСкидки=Окр((Стр.ЦенаЗапомнить-Стр.Цена)*Стр.Количество,2);
    Стр.Сумма=Окр(Стр.Количество*Стр.ЦенаЗапомнить,2);
    Стр.СуммаВсего=Окр(Стр.Цена*Стр.Количество,2);
    СуммаБезНДС=Окр((100*Стр.СуммаВсего)/(100+Стр.СтавкаНДС.Ставка),2);
    Стр.СуммаНДС=Окр(Стр.СуммаВсего-СуммаБезНДС,2);
    дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
    КонецЕсли;
    КонецЦикла;
    // изменим сумму документа
    дкВывестиЗаголовокСуммаДокумента(ЭтаФорма);
    
    
    
    После слов///////////////////Вывод реальных остатков на руках////////////////// это мое . в таблицу выводятся остатки итоваров на руках у комиссионера а не по документу отгрузки как в стандартой выше. но не воспринимается при проведении новые цифры количества хотя в таблицу подставляются
  3. LordKim
    Offline

    LordKim Опытный в 1С

    Регистрация:
    11 мар 2008
    Сообщения:
    118
    Симпатии:
    0
    Баллы:
    26
    А таблица на форме = табличной части документа?
    Посмотри чего при проведении находится в таб. части.

    Может не записываешь в документ, а только на форме изменяешь?
  4. TopicStarter Overlay
    Geek
    Offline

    Geek Опытный в 1С

    Регистрация:
    3 апр 2008
    Сообщения:
    105
    Симпатии:
    0
    Баллы:
    26
    я его записывал вручную пробовал и потом проводил. все тоже самое. Думаю дело в стандартоном обработчике для количества
    ОбработкаРеквизита("Товары.Количество",ЭлементыФормы.Товары.ТекущаяСтрока,ЭтаФорма);

    Только как его прикрутить . к этому

Поделиться этой страницей