Имя: Пароль:
1C
1С v8
Списание товаров.
,
0 antihacker
 
26.02.14
14:52
Всем привет !

Не могу понять как документ списывает товры. Не понятно от куда то берет сумму и сажает в ДтКт. Ручками указываешь цену в табличной части. Но он их не берет.

Если не берет, то он сумму сажает во время проведения.

А там тока вот это формирует список товаров для проведения.

    РезультатЗапросаПоТоварам = УправлениеЗапасами.СформироватьЗапросПоТабличнойЧасти(ЭтотОбъект, "Товары", СтруктураПолей);

    // Подготовим таблицу товаров для проведения.
    ТаблицаПоТоварам = ПодготовитьТаблицуТоваров(РезультатЗапросаПоТоварам, СтруктураШапкиДокумента);


Функция ПодготовитьТаблицуТоваров Выглядит так.

Функция ПодготовитьТаблицуТоваров(РезультатЗапросаПоТоварам, СтруктураШапкиДокумента)

    ТаблицаТоваров = РезультатЗапросаПоТоварам.Выгрузить();
    
    Возврат ТаблицаТоваров;

КонецФункции // ПодготовитьТаблицуТоваров()

А функция  УправлениеЗапасами.СформироватьЗапросПоТабличнойЧасти выглядит так.

Функция СформироватьЗапросПоТабличнойЧасти(ДокументОбъект, ИмяТабличнойЧасти, СтруктураПолей,
                                           СтруктураСложныхПолей = Неопределено) Экспорт

    Запрос = Новый Запрос;
    ТекстЗапроса = "";
    
    ДокументМетаданные = ДокументОбъект.Метаданные();

    Для Каждого Реквизит Из СтруктураПолей Цикл

        ТекстЗапроса  = ТекстЗапроса + ",
        |    Док." + Реквизит.Значение +
        ?(НЕ ЗначениеЗаполнено(Реквизит.Ключ), "", " КАК " + СокрЛП(Реквизит.Ключ));

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

    // Установим параметры запроса.
    Запрос.УстановитьПараметр("ДокументСсылка" , ДокументОбъект.Ссылка);
    
    Если ДокументОбъект[ИмяТабличнойЧасти].Количество() = 0 Тогда
        Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ Док.Ссылка = &ДокументСсылка", "ГДЕ ЛОЖЬ");
    КонецЕсли;

    Возврат Запрос.Выполнить();

КонецФункции // СформироватьЗапросПоТабличнойЧасти()


Ни где речь н идет о сумме. А печать списка списанных товаров тупо берет сумму из ДтКт и делит на количество для выявления цен.

Блин....
1 Naumov
 
26.02.14
14:58
Конфигурацию угадать по коду? или в чем задание?
2 azernot
 
26.02.14
15:00
(0) А с чего ты взял, что подготовленная таблица содержит все данные для проведения? Очевидно, что сумма далее при проведении рассчитывается. Где-нибудь в процедуре
ДвиженияПоРегистрам()

вызывается что-нибудь типа
УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров()
3 shuhard
 
26.02.14
15:04
(1)[в чем задание?]
кто первым и как можно дальше пошлёт ТС-а
4 azernot
 
26.02.14
15:08
(3) "Первым" - это непринципиально. Главное, чтобы более витиевато, чем все предыдущие :)
5 antihacker
 
26.02.14
15:33
Я в ДвиженияПоРегистрамУпр()

Нашел вот это-

        ТаблицаПоЦенам = УправлениеРозничнойТорговлей.СформироватьЗапросПоПродажнымЦенам(Дата, Склад, ТаблицыДанныхДокумента.ТаблицаПоТоварам.ВыгрузитьКолонку("Номенклатура")).Выгрузить();
                    УправлениеРозничнойТорговлей.ЗаполнитьКолонкуСуммаПродажная(ТаблицыДанныхДокумента.ТаблицаПоТоварам, ТаблицаПоЦенам);
                    
Это значить списание делается по продажной цене ?
6 shuhard
 
26.02.14
15:34
(4) ну спортивный интерес то же важен =)
7 antihacker
 
26.02.14
15:34
Хотя нет.

эти стрки в том случае если вид склада розничный.
А у меня вид склада закупочный
8 Naumov
 
26.02.14
15:51
(5) Кто у тебя отладчик стырил?
9 antihacker
 
27.02.14
06:39
А как здесь отладчик поможет ?
10 antihacker
 
27.02.14
06:39
Конфига УТП 8,1
11 floody
 
27.02.14
07:18
(10) с чего решил, что при списании товаров должны браться вообще какие-то ЦЕНЫ? себестоимость и цена - это не одно и то же.
12 antihacker
 
27.02.14
08:30
А вот себестоимоть где берется тоже не смог найти. ПОнимаю что он смазанный по всему периоду. Но он на каждый товар как то получает этот себестоимость............
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn