Имя: Пароль:
1C
1С v8
Заполнение инвентаризации по счету
0 NovichokAlena
 
29.12.14
10:30
День добрый, в бп 3.0 (3.0.37.25) ест обработка заполнения табличных частей для документа "инвентаризация товаров на складе". Обработка заполняет данными только балансовые счета, а по забалансовым ничего не выдает. Вот код:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    
    Режим = РежимДиалогаВопрос.ДаНет;
    Текст = "Текущие данные документа будут заменены новыми без возможности восстановления.
    |Продолжить?";
    Ответ = Вопрос(Текст, Режим, 0);
    Если Ответ = КодВозвратаДиалога.Да Тогда
        
        ОткрытьФормуМодально(ЭтаФорма, );
        Для каждого Элемент из ОбъектыНазначенияМассив Цикл

            КлючПоиска = Новый Структура("Ключ", Элемент);

            Окна = ПолучитьОкна();
            Для каждого Окно из Окна Цикл

                Если НЕ Окно.Основное
                    И Найти(Окно.Заголовок, Элемент) Тогда
                    
                    Форма = ОткрытьФорму("Документ.ИнвентаризацияТоваровНаСкладе.Форма.ФормаДокумента",КлючПоиска,,,Окно);

                    НовыйОбъект = Форма.Объект;

                    ЗаполнитьОбъект(НовыйОбъект, Элемент);

                    КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
                    
                    Форма.Модифицированность = Истина;
                    
                КонецЕсли;
                
            КонецЦикла;

        КонецЦикла;
        
    КонецЕсли;
            
КонецПроцедуры

&НаКлиенте
Процедура Заполнить(Команда)
    
    ЭтаФорма.Закрыть();
            
КонецПроцедуры

&НаСервере
Функция ЗаполнитьОбъект(НовыйОбъект, Элемент)

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

КонецФункции


Подскажите,пожалуйста,что не так?
1 vicof
 
29.12.14
10:32
Счет учета, видимо, забалансовый в документе не указан. Или на нем подразделения нет.
2 NovichokAlena
 
29.12.14
10:37
(1) указан счет и подразделение есть
3 vicof
 
29.12.14
10:42
(2) а если удалить ,Субконто2 = &Подразделение из запроса, какой результат будет?
4 NovichokAlena
 
29.12.14
10:48
(3)заполняет без номенклатуры
5 NovichokAlena
 
29.12.14
10:49
(3) и одинаковыми данными для разных подразделений
6 vicof
 
29.12.14
10:52
(5) Счета появились?
7 NovichokAlena
 
29.12.14
10:53
(6)да
8 vicof
 
29.12.14
10:54
(7) Значит, там или тип или порядок субконто не совпадает с указанным в запросе.
9 NovichokAlena
 
29.12.14
11:00
(8)да,так и есть.спасибо!