Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Перенос данных из документа 8.3 в док. Операцию 7.7

Добрый день. У документа операции есть только реквизиты "Дата" и "Номер". Не могу понять как организовать перенос данных? Через узлы что-ли? Передавать в параметр не доступно? Подскажите пожалуйста
Ответ: ()Если только один вид документа, то проще через COM из 7 к 8 подцепиться и перетащить
Вопрос: Макет ценника программные вертикальные отступы

Здравствуйте, подскажите пожалуйста как заставить во время программный вывода областей макета не делать отступы между повторениями. Создается колонка между ценниками. 1,5-2мм Как быть? Код рабочий.
Вот код самой обработки(самописная):
"
Функция ПолучитьЗначениеТипаШтрихкодаДляЭУ(ТипКода)
    Перем Значение;
    
    Если ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
        Значение = 0;
    ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
        Значение = 1;
    ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
        Значение = 2;
    ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
        Значение = 3;
    ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128 Тогда
        Значение = 4;
    Иначе
        Значение = -1;
    КонецЕсли;
    
    Возврат Значение;
КонецФункции// ПолучитьЗначениеТипаШтрихкодаДляЭУ()

    
Процедура ОбновитьСтрокуТабл(ВыбТовар)
    
    Если Не ЗначениеЗаполнено(ЦеныНаДату) Тогда
        Предупреждение("Укажите дату формирования ценников");
        Возврат;
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
        Предупреждение("Укажите тип цен");
        Возврат;
    КонецЕсли;
    //Если ЗначениеЗаполнено(Поступление) Тогда

    //Иначе

    //    Предупреждение("Укажите поступление товаров");

    //    Возврат;

    //КонецЕсли;

    
    //СписокТоваров.Очистить();

    
    ЗапросТовар = Новый Запрос;
    //ЗапросШтрихкоды.УстановитьПараметр("ЭтоГруппа",               Истина);

    ЗапросТовар.УстановитьПараметр("Дата",ЦеныНаДату);
    ЗапросТовар.УстановитьПараметр("ВыбТовар", ВыбТовар);
    ЗапросТовар.УстановитьПараметр("ТипЦены", ТипЦен);
    
    Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
    //|    Товар.Ссылка КАК Товар,

    |    Товар.Код КАК Код,
    |    Товар.Наименование КАК Наименование,
    |    Товар.СтранаПроисхождения КАК СтранаПроисхождения,
    |    ШК.Штрихкод КАК Штрихкод,
    |    ШК.ТипШтрихкода КАК ТипШтрихкода,
    |    Цены.ТипЦен  КАК ТипЦен,
    |    Цены.ЕдиницаИзмерения  КАК ЕдиницаИзмерения,
    |    Цены.Валюта  КАК Валюта,
    |    Цены.Цена  КАК Цена

    |ИЗ
    |    Справочник.Номенклатура КАК Товар
    
    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |    (ВЫБРАТЬ
    |        Рег.Номенклатура.Ссылка               КАК Номенклатура,
    |        Рег.ТипЦен.Ссылка                    КАК ТипЦен,
    |        Рег.ЕдиницаИзмерения                  КАК ЕдиницаИзмерения,
    |        Рег.Валюта                            КАК Валюта,
    |        Рег.Цена                              КАК Цена
    |    ИЗ
    |        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = (&ТипЦены)) КАК Рег
    |    ) КАК Цены ПО(Товар.Ссылка               = Цены.Номенклатура)

    |    ЛЕВОЕ СОЕДИНЕНИЕ
    |    (ВЫБРАТЬ
    |        Штрихкоды.Владелец               КАК Номенклатура,
    |        Штрихкоды.ТипШтрихкода           КАК ТипШтрихкода,
    |        Штрихкоды.Штрихкод               КАК Штрихкод
    |    ИЗ
    |        РегистрСведений.Штрихкоды КАК Штрихкоды

    |    ) КАК ШК ПО (Товар.Ссылка              = ШК.Номенклатура)
    |    
    |ГДЕ
    |    Товар.Ссылка = &ВыбТовар
    |    
    //|УПОРЯДОЧИТЬ ПО

    //|    Наименование    

    |";
    

    ЗапросТовар.Текст = Текст;
    ЗапросТ       = ЗапросТовар.Выполнить();
    РезультатЗапроса=ЗапросТ.Выбрать();
    //аааа = 0;

    //Инд = СписокТоваров.Индекс(СписокТоваров.ТекущаяСтрока);

    //    Сообщить(" Инд "+Инд);

    
    Пока РезультатЗапроса.Следующий() Цикл
        
        //Строка=СписокТоваров.Добавить();

        //Строка.Товар=РезультатЗапроса.Товар;

        //СписокТоваров.Код=РезультатЗапроса.Код;

        //СписокТоваров.Наименование=РезультатЗапроса.Наименование;

        //СписокТоваров.СтранаПроисхождения=РезультатЗапроса.СтранаПроисхождения;

        //СписокТоваров.ТипШтрихкода=РезультатЗапроса.ТипШтрихкода;

        //СписокТоваров.Штрихкод=РезультатЗапроса.Штрихкод;

        //СписокТоваров.ЕдиницаИзмерения=РезультатЗапроса.ЕдиницаИзмерения;

        //СписокТоваров.Валюта=РезультатЗапроса.Валюта;

        //СписокТоваров.Цена=РезультатЗапроса.Цена;

        //СписокТоваров.НаПечать=ИСТИНА;

        
        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.Код,"Код");

        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.Наименование,"Наименование");

        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.СтранаПроисхождения,"СтранаПроисхождения");

        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.ТипШтрихкода,"ТипШтрихкода");

        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.Штрихкод,"Штрихкод");

        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.ЕдиницаИзмерения,"ЕдиницаИзмерения");

        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.Валюта,"Валюта");

        //СписокТоваров.ЗаполнитьЗначения(РезультатЗапроса.Цена,"Цена");

        //СписокТоваров.ЗаполнитьЗначения(ИСТИНА,"НаПечать");

        //аааа = аааа+1;

        //Сообщить(" РезультатЗапроса.Наименование -  "+РезультатЗапроса.Наименование);

        ТекСтрока = ЭлементыФормы.СписокТоваров.ТекущаяСтрока;
        Для каждого Колонка Из ЭлементыФормы.СписокТоваров.Колонки Цикл
            ИмяКолонки = Колонка.Имя;
            Если ИмяКолонки = "НаПечать"  Тогда
                ТекСтрока.НаПечать = ИСТИНА;
            ИначеЕсли ИмяКолонки = "Код"  Тогда
                ТекСтрока.Код = РезультатЗапроса.Код;
            ИначеЕсли ИмяКолонки = "СтранаПроисхождения"  Тогда
                ТекСтрока.СтранаПроисхождения = РезультатЗапроса.СтранаПроисхождения;
            ИначеЕсли ИмяКолонки = "Штрихкод"  Тогда
                ТекСтрока.Штрихкод = РезультатЗапроса.Штрихкод;
            ИначеЕсли ИмяКолонки = "Наименование"  Тогда
                ТекСтрока.Наименование = РезультатЗапроса.Наименование;
            ИначеЕсли ИмяКолонки = "ТипШтрихкода"  Тогда
                ТекСтрока.ТипШтрихкода = РезультатЗапроса.ТипШтрихкода;
            ИначеЕсли ИмяКолонки = "ЕдиницаИзмерения"  Тогда
                ТекСтрока.ЕдиницаИзмерения = РезультатЗапроса.ЕдиницаИзмерения;
            ИначеЕсли ИмяКолонки = "Цена"  Тогда
                ТекСтрока.Цена = РезультатЗапроса.Цена;
            ИначеЕсли ИмяКолонки = "Валюта"  Тогда
                ТекСтрока.Валюта = РезультатЗапроса.Валюта;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    

//Колонка.Имя НаПечать

//Колонка.Имя Товар

//Колонка.Имя Код

//Колонка.Имя СтранаПроисхождения

//Колонка.Имя Штрихкод

//Колонка.Имя Наименование

//Колонка.Имя ТипШтрихкода

//Колонка.Имя ЕдиницаИзмерения

//Колонка.Имя Цена

//Колонка.Имя Валюта

    
    //тз = ЗапросТ.Выгрузить();

    //тз.ВыбратьСтроку();

    
КонецПроцедуры//ОбновитьСтрокуТабл


Процедура ЗаполнитьТаблицу()
    
    Если НЕ ЗначениеЗаполнено(ЦеныНаДату) Тогда
        Предупреждение("Укажите дату формирования ценников");
        Возврат;
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
        Предупреждение("Укажите тип цен");
        Возврат;
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(Поступление) Тогда
        Предупреждение("Укажите поступление товаров");
        Возврат;
    КонецЕсли;
    
    СписокТоваров.Очистить();
    
    ЗапросШтрихкоды = Новый Запрос;
    //ЗапросШтрихкоды.УстановитьПараметр("ЭтоГруппа",               Истина);

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

    ЗапросШтрихкоды.Текст = Текст;
    ЗапросШК       = ЗапросШтрихкоды.Выполнить();
    РезультатЗапроса=ЗапросШК.Выбрать();
    
    Пока РезультатЗапроса.Следующий() Цикл
        
        Строка=СписокТоваров.Добавить();
        Строка.Товар=РезультатЗапроса.Товар;
        Строка.Код=РезультатЗапроса.Код;
        Строка.Наименование=РезультатЗапроса.Наименование;
        Строка.СтранаПроисхождения=РезультатЗапроса.СтранаПроисхождения;
        Строка.ТипШтрихкода=РезультатЗапроса.ТипШтрихкода;
        Строка.Штрихкод=РезультатЗапроса.Штрихкод;
        Строка.ЕдиницаИзмерения=РезультатЗапроса.ЕдиницаИзмерения;
        Строка.Валюта=РезультатЗапроса.Валюта;
        Строка.Цена=РезультатЗапроса.Цена;
        Строка.НаПечать=ИСТИНА;
        
    КонецЦикла;
    
КонецПроцедуры//ЗаполнитьТаблицу


Процедура ЗаполнитьТаблицуПоГруппе(ГруппаДляПодбора, ФормаВызова) Экспорт
    
    Если НЕ ЗначениеЗаполнено(ЦеныНаДату) Тогда
        Предупреждение("Укажите дату формирования ценников");
        Возврат;
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
        Предупреждение("Укажите тип цен");
        Возврат;
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(Поступление) Тогда
        Предупреждение("Укажите поступление товаров");
        Возврат;
    КонецЕсли;
    

    ЗапросШтрихкоды = Новый Запрос;
    //ЗапросШтрихкоды.УстановитьПараметр("ЭтоГруппа",               Истина);

    ЗапросШтрихкоды.УстановитьПараметр("Дата",                    ЦеныНаДату);
    ЗапросШтрихкоды.УстановитьПараметр("Группа", ГруппаДляПодбора);
    ЗапросШтрихкоды.УстановитьПараметр("ТипЦен", ТипЦен);
    
    //Текст = "ВЫБРАТЬ

    //        |    ШК.Штрихкод КАК Штрихкод,

    //        |    ШК.ТипШтрихкода КАК ТипШтрихкода,

    //        |    Цены.ТипЦен КАК ТипЦен,

    //        |    Цены.ЕдиницаИзмерения КАК ЕдиницаИзмерения,

    //        |    Цены.Валюта КАК Валюта,

    //        |    Цены.Цена КАК Цена,

    //        |    Цены.Номенклатура КАК Товар,

    //        |    Цены.Номенклатура.Код КАК Код,

    //        |    Цены.Номенклатура.СтранаПроисхождения КАК СтранаПроисхождения,

    //        |    Цены.Номенклатура.НаименованиеПолное КАК Наименование,

    //        |    ТоварыНаСкладахОстатки.КоличествоОстаток

    //        |ИЗ

    //        |    (ВЫБРАТЬ

    //        |        Рег.Номенклатура.Ссылка КАК Номенклатура,

    //        |        Рег.ТипЦен.Ссылка КАК ТипЦен,

    //        |        Рег.ЕдиницаИзмерения КАК ЕдиницаИзмерения,

    //        |        Рег.Валюта КАК Валюта,

    //        |        Рег.Цена КАК Цена

    //        |    ИЗ

    //        |        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦены) КАК Рег) КАК Цены

    //        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

    //        |            Штрихкоды.Владелец КАК Номенклатура,

    //        |            Штрихкоды.ТипШтрихкода КАК ТипШтрихкода,

    //        |            Штрихкоды.Штрихкод КАК Штрихкод

    //        |        ИЗ

    //        |            РегистрСведений.Штрихкоды КАК Штрихкоды) КАК ШК

    //        |        ПО Цены.Номенклатура = ШК.Номенклатура

    //        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки

    //        |        ПО Цены.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура

    //        |ГДЕ

    //        |    Цены.Номенклатура В ИЕРАРХИИ(&Номенклатура)";

    
        Текст = "ВЫБРАТЬ
                |    Номенклатура.Ссылка
                |ПОМЕСТИТЬ НомИзГрп
                |ИЗ
                |    Справочник.Номенклатура КАК Номенклатура
                |ГДЕ
                |    Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
                |;
                |
                ////////////////////////////////////////////////////////////////////////////////

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

    ЗапросШтрихкоды.Текст = Текст;
    ЗапросШК       = ЗапросШтрихкоды.Выполнить();
    РезультатЗапроса=ЗапросШК.Выбрать();

    ФормаВызова.ЭлементыФормы.Индикатор1.МаксимальноеЗначение = ЗапросШК.Выгрузить().Количество();
    ФормаВызова.ЭлементыФормы.Индикатор1.Видимость  = истина;
    
    ФормаВызова.ЭлементыФормы.Индикатор1.Значение  = 0;
    Пока РезультатЗапроса.Следующий() Цикл
        
        СтруктураОтбора = новый структура;
        СтруктураОтбора.Вставить("Товар", РезультатЗапроса.Товар);
        //СтруктураОтбора.Вставить("Код", РезультатЗапроса.Код);

        //СтруктураОтбора.Вставить("Наименование", РезультатЗапроса.Наименование);

        //СтруктураОтбора.Вставить("СтранаПроисхождения", РезультатЗапроса.СтранаПроисхождения);

        //СтруктураОтбора.Вставить("ТипШтрихкода", РезультатЗапроса.ТипШтрихкода);

        СтруктураОтбора.Вставить("Штрихкод", ?(РезультатЗапроса.Штрихкод = null, "", РезультатЗапроса.Штрихкод));
        //СтруктураОтбора.Вставить("ЕдиницаИзмерения", РезультатЗапроса.ЕдиницаИзмерения);

        //СтруктураОтбора.Вставить("Валюта", РезультатЗапроса.Валюта);

        //СтруктураОтбора.Вставить("Цена", РезультатЗапроса.Цена);

        
        НайденныеСтроки = СписокТоваров.НайтиСтроки(СтруктураОтбора);

        Если НайденныеСтроки.Количество() = 0 тогда               
                
            Строка=СписокТоваров.Добавить();
            Строка.Товар=РезультатЗапроса.Товар;
            Строка.Код=РезультатЗапроса.Код;
            Строка.Наименование=РезультатЗапроса.Наименование;
            Строка.СтранаПроисхождения=РезультатЗапроса.СтранаПроисхождения;
            Строка.ТипШтрихкода=РезультатЗапроса.ТипШтрихкода;
            Строка.Штрихкод=РезультатЗапроса.Штрихкод;
            Строка.ЕдиницаИзмерения=РезультатЗапроса.ЕдиницаИзмерения;
            Строка.Валюта=РезультатЗапроса.Валюта;
            Строка.Цена=РезультатЗапроса.Цена;
            Строка.НаПечать=ИСТИНА;  
            
        КонецЕсли;
        
        ФормаВызова.ЭлементыФормы.Индикатор1.Значение  = ФормаВызова.ЭлементыФормы.Индикатор1.Значение  + 1;
        
    КонецЦикла;
    
    ФормаВызова.ЭлементыФормы.Индикатор1.Видимость  = ложь;

    
КонецПроцедуры//ЗаполнитьТаблицу


Процедура ЗаполнитьТаблицуПоЭлементу(НомДляПодбора, ФормаВызова) Экспорт
    
    Если НЕ ЗначениеЗаполнено(ЦеныНаДату) Тогда
        Предупреждение("Укажите дату формирования ценников");
        Возврат;
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(ТипЦен) Тогда
        ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000004");
        //Предупреждение("Укажите тип цен");

        //Возврат;

    КонецЕсли;
    //Если НЕ ЗначениеЗаполнено(Поступление) Тогда

    //    Предупреждение("Укажите поступление товаров");

    //    Возврат;

    //КонецЕсли;

    

    ЗапросШтрихкоды = Новый Запрос;
    //ЗапросШтрихкоды.УстановитьПараметр("ЭтоГруппа",               Истина);

    ЗапросШтрихкоды.УстановитьПараметр("Дата",                    ЦеныНаДату);
    ЗапросШтрихкоды.УстановитьПараметр("Группа", НомДляПодбора);
    ЗапросШтрихкоды.УстановитьПараметр("ТипЦен", ТипЦен);
    
    //Текст = "ВЫБРАТЬ

    //        |    ШК.Штрихкод КАК Штрихкод,

    //        |    ШК.ТипШтрихкода КАК ТипШтрихкода,

    //        |    Цены.ТипЦен КАК ТипЦен,

    //        |    Цены.ЕдиницаИзмерения КАК ЕдиницаИзмерения,

    //        |    Цены.Валюта КАК Валюта,

    //        |    Цены.Цена КАК Цена,

    //        |    Цены.Номенклатура КАК Товар,

    //        |    Цены.Номенклатура.Код КАК Код,

    //        |    Цены.Номенклатура.СтранаПроисхождения КАК СтранаПроисхождения,

    //        |    Цены.Номенклатура.НаименованиеПолное КАК Наименование,

    //        |    ТоварыНаСкладахОстатки.КоличествоОстаток

    //        |ИЗ

    //        |    (ВЫБРАТЬ

    //        |        Рег.Номенклатура.Ссылка КАК Номенклатура,

    //        |        Рег.ТипЦен.Ссылка КАК ТипЦен,

    //        |        Рег.ЕдиницаИзмерения КАК ЕдиницаИзмерения,

    //        |        Рег.Валюта КАК Валюта,

    //        |        Рег.Цена КАК Цена

    //        |    ИЗ

    //        |        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦены) КАК Рег) КАК Цены

    //        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

    //        |            Штрихкоды.Владелец КАК Номенклатура,

    //        |            Штрихкоды.ТипШтрихкода КАК ТипШтрихкода,

    //        |            Штрихкоды.Штрихкод КАК Штрихкод

    //        |        ИЗ

    //        |            РегистрСведений.Штрихкоды КАК Штрихкоды) КАК ШК

    //        |        ПО Цены.Номенклатура = ШК.Номенклатура

    //        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки

    //        |        ПО Цены.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура

    //        |ГДЕ

    //        |    Цены.Номенклатура В ИЕРАРХИИ(&Номенклатура)";

    
        Текст = "ВЫБРАТЬ
                |    Номенклатура.Ссылка
                |ПОМЕСТИТЬ НомИзГрп
                |ИЗ
                |    Справочник.Номенклатура КАК Номенклатура
                |ГДЕ
                |    Номенклатура.Ссылка = &Группа
                |;
                |
                ////////////////////////////////////////////////////////////////////////////////

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

    ЗапросШтрихкоды.Текст = Текст;
    ЗапросШК       = ЗапросШтрихкоды.Выполнить();
    РезультатЗапроса=ЗапросШК.Выбрать();

    Попытка
    ФормаВызова.ЭлементыФормы.Индикатор1.МаксимальноеЗначение = ЗапросШК.Выгрузить().Количество();
    ФормаВызова.ЭлементыФормы.Индикатор1.Видимость  = истина;
    
    ФормаВызова.ЭлементыФормы.Индикатор1.Значение  = 0;
    Исключение
    КонецПопытки;
    Пока РезультатЗапроса.Следующий() Цикл
        
        СтруктураОтбора = новый структура;
        СтруктураОтбора.Вставить("Товар", РезультатЗапроса.Товар);
        //СтруктураОтбора.Вставить("Код", РезультатЗапроса.Код);

        //СтруктураОтбора.Вставить("Наименование", РезультатЗапроса.Наименование);

        //СтруктураОтбора.Вставить("СтранаПроисхождения", РезультатЗапроса.СтранаПроисхождения);

        //СтруктураОтбора.Вставить("ТипШтрихкода", РезультатЗапроса.ТипШтрихкода);

        
        СтруктураОтбора.Вставить("Штрихкод", ?(РезультатЗапроса.Штрихкод = null, "", РезультатЗапроса.Штрихкод));
        //СтруктураОтбора.Вставить("ЕдиницаИзмерения", РезультатЗапроса.ЕдиницаИзмерения);

        //СтруктураОтбора.Вставить("Валюта", РезультатЗапроса.Валюта);

        //СтруктураОтбора.Вставить("Цена", РезультатЗапроса.Цена);

        
        НайденныеСтроки = СписокТоваров.НайтиСтроки(СтруктураОтбора);

        Если НайденныеСтроки.Количество() = 0 тогда               
                
            Строка=СписокТоваров.Добавить();
            Строка.Товар=РезультатЗапроса.Товар;
            Строка.Код=РезультатЗапроса.Код;
            Строка.Наименование=РезультатЗапроса.Наименование;
            Строка.СтранаПроисхождения=РезультатЗапроса.СтранаПроисхождения;
            Строка.ТипШтрихкода=РезультатЗапроса.ТипШтрихкода;
            Строка.Штрихкод=РезультатЗапроса.Штрихкод;
            Строка.ЕдиницаИзмерения=РезультатЗапроса.ЕдиницаИзмерения;
            Строка.Валюта=РезультатЗапроса.Валюта;
            Строка.Цена=РезультатЗапроса.Цена;
            Строка.НаПечать=ИСТИНА;  
            
        КонецЕсли;       

        Попытка
        
        ФормаВызова.ЭлементыФормы.Индикатор1.Значение  = ФормаВызова.ЭлементыФормы.Индикатор1.Значение  + 1;    
        
        Исключение
        
        КонецПопытки;
        
        
    КонецЦикла;
    
    
    Попытка
    
    
       ФормаВызова.ЭлементыФормы.Индикатор1.Видимость  = ложь;

    Исключение
    
    КонецПопытки;
    
    
КонецПроцедуры//ЗаполнитьТаблицу


Процедура КоманднаяПанельСписокДокументовЗаполнить(Кнопка)
    
    Если СписокТоваров.Количество() > 0 Тогда
        
        ТекстВопроса = "Перед заполнением табличная часть будет очищена. Заполнить?";
        Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да, );
        Если Ответ <> КодВозвратаДиалога.Да Тогда
            Возврат;
        КонецЕсли; 
    КонецЕсли;
    
    ЗаполнитьТаблицу();
    
КонецПроцедуры

Процедура Печать(Кнопка)
    
    Если СписокТоваров.Количество() = 0 Тогда
        Предупреждение("Заполните табличную часть");
        Возврат;
    КонецЕсли;
    
    ТабДокумент  = Новый ТабличныйДокумент;
    //ТабДокумент.ИмяПараметровПечати     = "РМ_Ценники";

    ТабДокумент.ПолеСверху              = 0;
    ТабДокумент.ПолеСлева               = 0;
    ТабДокумент.ПолеСнизу               = 0;
    ТабДокумент.ПолеСправа              = 0;
    ТабДокумент.РазмерКолонтитулаСверху = 0;
    ТабДокумент.РазмерКолонтитулаСнизу  = 0;
    //ТабДокумент.АвтоМасштаб             = Истина;

    //ТабДокумент.Защита                    = Истина;

    

    КолВРяду = ЭлементыФормы.ПолеВариантаПечати.Значение;
    Если КолВРяду = 2 Тогда
        Макет = ЭтотОбъект.ПолучитьМакет("МакетКрупный1");
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;
        ТабДокумент.МасштабПечати=71;
    ИначеЕсли КолВРяду = 1 Тогда
        Макет = ЭтотОбъект.ПолучитьМакет("МакетКрупный1");
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Портрет;
        ТабДокумент.МасштабПечати=100;
    ИначеЕсли КолВРяду = 4 Тогда
        Макет = ЭтотОбъект.ПолучитьМакет("МакетКрупный3");
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Портрет;
        ТабДокумент.МасштабПечати=100;
    ИначеЕсли КолВРяду = 8 Тогда
        Макет = ЭтотОбъект.ПолучитьМакет("МакетКрупный4");
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;
        ТабДокумент.МасштабПечати=100;
        //ТабДокумент.МасштабПечати=17;

    ИначеЕсли КолВРяду = 16 Тогда
        Макет = ЭтотОбъект.ПолучитьМакет("МакетКрупный16");   
        ТабДокумент.МасштабПечати=100;
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Портрет;
    ИначеЕсли КолВРяду = 32 Тогда
        Макет = ЭтотОбъект.ПолучитьМакет("МакетКрупный32");   
        ТабДокумент.МасштабПечати=60;
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Ландшафт;      
    ИначеЕсли КолВРяду = 64 Тогда
        Макет = ЭтотОбъект.ПолучитьМакет("МакетКрупный64");   
        ТабДокумент.МасштабПечати=30;
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Портрет;    
    Иначе
        Макет = ЭтотОбъект.ПолучитьМакет("Макет");
        ТабДокумент.ОриентацияСтраницы      = ОриентацияСтраницы.Портрет;
    КонецЕсли;

    СчетчикКолонок = 0;
    СчетчикРядов = 0;
    
    Отбор = новый структура();        
    Отбор.Вставить("НаПечать", Истина);
     &n
Ответ: Добавляет колонку.
Вопрос: 1С Бухгалтерия предприятия. Ошибка при записи документа "Поступление товаров и услуг": не заполнен счет Дт.

Добрый день, подскажите пожалуйста какие поля нужно заполнять при создании документа "ПоступлениеТоваровУслуг" Я создаю данный документ программно и когда пытаюсь записать, мне выдаёт следующую ошибку:

{ВнешняяОбработка.СозданиеСводныхДокументов.Форма.Форма.Форма(140)}: Ошибка при вызове метода контекста (Записать)
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
по причине:
Запись не верна! Не заполнен счет дебета (Регистр бухгалтерии: Журнал проводок (бухгалтерский и налоговый учет); Номер строки: 1)

Причём выдаёт данную ошибку тогда, когда я пытаюсь создать документ на контрагента: "Конфетпром ООО". С контрагентом "Межрегионинтерснабсбыт ООО" таких проблем не возникает. Подозреваю что я не заполнил какое-то поле или поля.
Помогите плиз.


Сам код:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
&НаСервере
Процедура СозданиеДокумента()
    Счёт = 0;
    //Выбираю всех контрагентов
    ЗапросЭлементов = Новый Запрос;
    ЗапросЭлементов.Текст =
    "ВЫБРАТЬ
    |   Контрагенты.Ссылка
    |ИЗ
    |   Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    НЕ Контрагенты.ЭтоГруппа";         
    Выборка = ЗапросЭлементов.Выполнить().Выбрать();
    //Прохожу циклом по каждому контрагенту
    
    Пока Выборка.Следующий() Цикл
        //Получаю контрагента       
        СсылканаКонтрагента = Выборка.Ссылка;                           
        
        //Делаю запрос на получение не проведённых документов определённого контрагента
        ЗапросДокументов = Новый Запрос;
        ЗапросДокументов.УстановитьПараметр("Контрагент", СсылканаКонтрагента); 
        ЗапросДокументов.УстановитьПараметр("ЛОЖЬ", ЛОЖЬ);
        ЗапросДокументов.Текст = "ВЫБРАТЬ
        |   ПоступлениеТоваровУслуг.Ссылка
        |ИЗ
        |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |   ПоступлениеТоваровУслуг.Контрагент = &Контрагент
        |   И ПоступлениеТоваровУслуг.Проведен = &ЛОЖЬ";            
        ВыборкаДок = ЗапросДокументов.Выполнить().Выбрать();
        //Получаю кол-во полученных документов
        Количество = ВыборкаДок.Количество();
        
        //Если  есть не проведённые документы то создаю новый документ 
        Если Количество > 0 Тогда 
            //Создаю новый документ на текущего контрагента 
            НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
            НовыйДокумент.Контрагент = СсылканаКонтрагента;
            НовыйДокумент.Дата = ТекущаяДата();
            НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
            
            Счёт = Счёт + Количество;               
            Пока ВыборкаДок.Следующий()Цикл
                Ссылканадок = ВыборкаДок;
                ТекущийДокумент = ВыборкаДок.Ссылка.ПолучитьОбъект();
                
                КоличествоСтрокТЧУслуг = ТекущийДокумент.Услуги.Количество();    
                Если КоличествоСтрокТЧУслуг > 0 Тогда 
                    //Записываю каждую строку из табличной части услуги в новый документ
                    Услуги = ТекущийДокумент.Услуги;                    
                    Для Каждого СтрокаТабЧасти Из Услуги Цикл
                        НоваяСтрокаТаблицы = НовыйДокумент.Услуги.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                                  
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.Содержание = СтрокаТабЧасти.Содержание;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.Субконто1 = СтрокаТабЧасти.Субконто1;
                        НоваяСтрокаТаблицы.Субконто2 = СтрокаТабЧасти.Субконто2;
                        НоваяСтрокаТаблицы.Субконто3 = СтрокаТабЧасти.Субконто3;
                        НоваяСтрокаТаблицы.СубконтоНУ1 =  СтрокаТабЧасти.СубконтоНУ1;
                        НоваяСтрокаТаблицы.СубконтоНУ2 =  СтрокаТабЧасти.СубконтоНУ2; 
                        НоваяСтрокаТаблицы.СубконтоНУ3 =  СтрокаТабЧасти.СубконтоНУ3;
                        НоваяСтрокаТаблицы.СчетЗатрат = СтрокаТабЧасти.СчетЗатрат;
                        НоваяСтрокаТаблицы.СчетЗатратНУ = СтрокаТабЧасти.СчетЗатратНУ;
                        НоваяСтрокаТаблицы.СчетУчетаНДС =СтрокаТабЧасти.СчетУчетаНДС;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                            
                    КонецЦикла;
                КонецЕсли;
                
                КоличествоСтрокТЧТоваров = ТекущийДокумент.Товары.Количество();
                Если КоличествоСтрокТЧТоваров > 0 Тогда
                    //Записываю каждый товар из табличной части услуги в новый документ
                    Товары = ТекущийДокумент.Товары;
                    Для Каждого СтрокаТабЧасти Из Товары Цикл
                        НоваяСтрокаТаблицы =  НовыйДокумент.Товары.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.ЕдиницаИзмерения = СтрокаТабЧасти.ЕдиницаИзмерения;  
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                      
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.СуммаНДС = СтрокаТабЧасти.СуммаНДС;
                        НоваяСтрокаТаблицы.Коэффициент = СтрокаТабЧасти.Коэффициент;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;  
                        НоваяСтрокаТаблицы.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                        
                    КонецЦикла;
                КонецЕсли;
                //Устанавливаю пометку на удаление текущий не проведённый документ
                ТекущийДокумент.УстановитьПометкуУдаления(Истина);   
            КонецЦикла;
            //Заполняю поля нового документа
            НовыйДокумент.СчетНаОплатуПоставщика = ТекущийДокумент.СчетНаОплатуПоставщика;
            НовыйДокумент.СпособЗачетаАвансов = ТекущийДокумент.СпособЗачетаАвансов;
            НовыйДокумент.СчетУчетаРасчетовПоАвансам = ТекущийДокумент.СчетУчетаРасчетовПоАвансам;
            НовыйДокумент.СчетУчетаРасчетовСКонтрагентом = ТекущийДокумент.СчетУчетаРасчетовСКонтрагентом;
            НовыйДокумент.ВалютаДокумента = ТекущийДокумент.ВалютаДокумента;
            НовыйДокумент.ДоговорКонтрагента = ТекущийДокумент.ДоговорКонтрагента;
            НовыйДокумент.НДСВключенВСтоимость= ТекущийДокумент.НДСВключенВСтоимость;
            НовыйДокумент.НДСНеВыделять = ТекущийДокумент.НДСНеВыделять;
            НовыйДокумент.Организация = ТекущийДокумент.Организация;
            НовыйДокумент.Ответственный = ТекущийДокумент.Ответственный;
            НовыйДокумент.Склад = ТекущийДокумент.Склад;
            НовыйДокумент.СуммаДокумента = ТекущийДокумент.СуммаДокумента;
            НовыйДокумент.КурсВзаиморасчетов = ТекущийДокумент.КурсВзаиморасчетов;
            НовыйДокумент.КратностьВзаиморасчетов =  ТекущийДокумент.КратностьВзаиморасчетов;
            НовыйДокумент.СпособЗачетаАвансов =  ТекущийДокумент.СпособЗачетаАвансов;
            
            //Свёртывание таблицы услуг
            КоличествоСтрокТЧУслуг = НовыйДокумент.Услуги.Количество();
            Если КоличествоСтрокТЧУслуг > 3 Тогда
                //Свёртывание табличной части услуг
                Свёртывание = НовыйДокумент.Услуги.Выгрузить();
                Свёртывание.Свернуть("Номенклатура","Цена, СтавкаНДС");
                НовыйДокумент.Услуги.Загрузить(Свёртывание);
            КонецЕсли;
            
            //Свёртывание таблицы товаров
            КоличествоСтрокТЧТоваров = НовыйДокумент.Товары.Количество();
            Если КоличествоСтрокТЧТоваров > 3 Тогда  
                //Свёртывание табличной части товаров
                Свёртывание = НовыйДокумент.Товары.Выгрузить();
                Свёртывание.Свернуть("Номенклатура", "Цена, СтавкаНДС");
                НовыйДокумент.Товары.Загрузить(Свёртывание);
            КонецЕсли;
            
            //Провожу созданный документ
            НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);    
        КонецЕсли;          
    КонецЦикла;  
КонецПроцедуры
Ответ: Всё, я разобрался, всё дело было в свёртывании, я указал не все нужные поля в методе свёртывания и после выполнения метода данные терялись и вылезало сообщение о том что не все поля заполнены.

Вот рабочий код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
&НаСервере
Процедура СозданиеДокумента()
    Счёт = 0;
    //Выбираю всех контрагентов
    ЗапросЭлементов = Новый Запрос;
    ЗапросЭлементов.Текст =
    "ВЫБРАТЬ
    |   Контрагенты.Ссылка
    |ИЗ
    |   Справочник.Контрагенты КАК Контрагенты
    |ГДЕ
    |    НЕ Контрагенты.ЭтоГруппа";         
    Выборка = ЗапросЭлементов.Выполнить().Выбрать();
    //Прохожу циклом по каждому контрагенту
    
    Пока Выборка.Следующий() Цикл
        //Получаю контрагента       
        СсылканаКонтрагента = Выборка.Ссылка;                           
        
        //Делаю запрос на получение не проведённых документов определённого контрагента
        ЗапросДокументов = Новый Запрос;
        ЗапросДокументов.УстановитьПараметр("Контрагент", СсылканаКонтрагента); 
        ЗапросДокументов.УстановитьПараметр("ЛОЖЬ", ЛОЖЬ);
        ЗапросДокументов.Текст = "ВЫБРАТЬ
        |   ПоступлениеТоваровУслуг.Ссылка
        |ИЗ
        |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |   ПоступлениеТоваровУслуг.Контрагент = &Контрагент
        |   И ПоступлениеТоваровУслуг.Проведен = &ЛОЖЬ";            
        ВыборкаДок = ЗапросДокументов.Выполнить().Выбрать();
        //Получаю кол-во полученных документов
        Количество = ВыборкаДок.Количество();
        
        //Если  есть не проведённые документы то создаю новый документ 
        Если Количество > 0 Тогда 
            //Создаю новый документ на текущего контрагента 
            НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
            НовыйДокумент.Контрагент = СсылканаКонтрагента;
            НовыйДокумент.Дата = ТекущаяДата();
            НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
            
            Счёт = Счёт + Количество;               
            Пока ВыборкаДок.Следующий()Цикл
                Ссылканадок = ВыборкаДок;
                ТекущийДокумент = ВыборкаДок.Ссылка.ПолучитьОбъект();
                
                КоличествоСтрокТЧУслуг = ТекущийДокумент.Услуги.Количество();    
                Если КоличествоСтрокТЧУслуг > 0 Тогда 
                    //Записываю каждую строку из табличной части услуги в новый документ
                    Услуги = ТекущийДокумент.Услуги;                    
                    Для Каждого СтрокаТабЧасти Из Услуги Цикл
                        НоваяСтрокаТаблицы = НовыйДокумент.Услуги.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                                  
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.Содержание = СтрокаТабЧасти.Содержание;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.Субконто1 = СтрокаТабЧасти.Субконто1;
                        НоваяСтрокаТаблицы.Субконто2 = СтрокаТабЧасти.Субконто2;
                        НоваяСтрокаТаблицы.Субконто3 = СтрокаТабЧасти.Субконто3;
                        НоваяСтрокаТаблицы.СубконтоНУ1 =  СтрокаТабЧасти.СубконтоНУ1;
                        НоваяСтрокаТаблицы.СубконтоНУ2 =  СтрокаТабЧасти.СубконтоНУ2; 
                        НоваяСтрокаТаблицы.СубконтоНУ3 =  СтрокаТабЧасти.СубконтоНУ3;
                        НоваяСтрокаТаблицы.СчетЗатрат = СтрокаТабЧасти.СчетЗатрат;
                        НоваяСтрокаТаблицы.СчетЗатратНУ = СтрокаТабЧасти.СчетЗатратНУ;
                        НоваяСтрокаТаблицы.СчетУчетаНДС =СтрокаТабЧасти.СчетУчетаНДС;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                            
                    КонецЦикла;
                КонецЕсли;
                
                КоличествоСтрокТЧТоваров = ТекущийДокумент.Товары.Количество();
                Если КоличествоСтрокТЧТоваров > 0 Тогда
                    //Записываю каждый товар из табличной части услуги в новый документ
                    Товары = ТекущийДокумент.Товары;
                    Для Каждого СтрокаТабЧасти Из Товары Цикл
                        НоваяСтрокаТаблицы =  НовыйДокумент.Товары.Добавить();
                        НоваяСтрокаТаблицы.Номенклатура = СтрокаТабЧасти.Номенклатура;
                        НоваяСтрокаТаблицы.ЕдиницаИзмерения = СтрокаТабЧасти.ЕдиницаИзмерения;  
                        НоваяСтрокаТаблицы.Количество = СтрокаТабЧасти.Количество;
                        НоваяСтрокаТаблицы.Цена = СтрокаТабЧасти.Цена;                      
                        НоваяСтрокаТаблицы.Сумма = НоваяСтрокаТаблицы.Цена * НоваяСтрокаТаблицы.Количество;
                        НоваяСтрокаТаблицы.СуммаНДС = СтрокаТабЧасти.СуммаНДС;
                        НоваяСтрокаТаблицы.Коэффициент = СтрокаТабЧасти.Коэффициент;
                        НоваяСтрокаТаблицы.ОтражениеВУСН = СтрокаТабЧасти.ОтражениеВУСН;
                        НоваяСтрокаТаблицы.СпособУчетаНДС = СтрокаТабЧасти.СпособУчетаНДС;
                        НоваяСтрокаТаблицы.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;  
                        НоваяСтрокаТаблицы.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НДСпоПриобретеннымМПЗ;
                        НоваяСтрокаТаблицы.СтавкаНДС = СтрокаТабЧасти.СтавкаНДС;                        
                    КонецЦикла;
                КонецЕсли;
                //Устанавливаю пометку на удаление текущий не проведённый документ
                ТекущийДокумент.УстановитьПометкуУдаления(Истина);   
            КонецЦикла;
            //Заполняю поля нового документа
            НовыйДокумент.СчетНаОплатуПоставщика = ТекущийДокумент.СчетНаОплатуПоставщика;
            НовыйДокумент.СпособЗачетаАвансов = ТекущийДокумент.СпособЗачетаАвансов;
            НовыйДокумент.СчетУчетаРасчетовПоАвансам = ТекущийДокумент.СчетУчетаРасчетовПоАвансам;
            НовыйДокумент.СчетУчетаРасчетовСКонтрагентом = ТекущийДокумент.СчетУчетаРасчетовСКонтрагентом;
            НовыйДокумент.ВалютаДокумента = ТекущийДокумент.ВалютаДокумента;
            НовыйДокумент.ДоговорКонтрагента = ТекущийДокумент.ДоговорКонтрагента;
            НовыйДокумент.НДСВключенВСтоимость= ТекущийДокумент.НДСВключенВСтоимость;
            НовыйДокумент.НДСНеВыделять = ТекущийДокумент.НДСНеВыделять;
            НовыйДокумент.Организация = ТекущийДокумент.Организация;
            НовыйДокумент.Ответственный = ТекущийДокумент.Ответственный;
            НовыйДокумент.Склад = ТекущийДокумент.Склад;
            НовыйДокумент.СуммаДокумента = ТекущийДокумент.СуммаДокумента;
            НовыйДокумент.КурсВзаиморасчетов = ТекущийДокумент.КурсВзаиморасчетов;
            НовыйДокумент.КратностьВзаиморасчетов =  ТекущийДокумент.КратностьВзаиморасчетов;
            НовыйДокумент.СпособЗачетаАвансов =  ТекущийДокумент.СпособЗачетаАвансов;
            
            //Свёртывание таблицы услуг
            КоличествоСтрокТЧУслуг = НовыйДокумент.Услуги.Количество();
            Если КоличествоСтрокТЧУслуг > 1 Тогда
                НовыйДокумент.Услуги.Свернуть("Номенклатура, ОтражениеВУСН, СпособУчетаНДС, СтавкаНДС, СчетУчета, СчетУчетаНДС, Цена", "Количество, Сумма");   
            КонецЕсли;
            
            //Свёртывание таблицы товаров 
            КоличествоСтрокТЧТоваров = НовыйДокумент.Товары.Количество();
            Если КоличествоСтрокТЧТоваров > 1 Тогда                 
                НовыйДокумент.Товары.Свернуть("Номенклатура, ОтражениеВУСН, СпособУчетаНДС, СтавкаНДС, СчетУчета, СчетУчетаНДС, Цена", "Количество, Сумма");
            КонецЕсли;
            //Провожу созданный документ
            НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);    
        КонецЕсли;          
    КонецЦикла;  
КонецПроцедуры
Вопрос: Присоединенные файлы к документу

Добрый день! УТ 11.1.10
Пытаюсь реализовать присоединение фотографий к документу.
Содрал все из Справочник.Номенклатура формы и процедуры ,в общем все 1 в 1
Но при добавлении фотки к документу вылетает ошибка

Код:
{ОбщийМодуль.ПрисоединенныеФайлыСлужебный.Модуль(1449)}: Ошибка при добавлении присоединенного файла.
У владельца файлов "Документ cервиса 00СЦ-0770 от 24.02.2016 11:31:50" типа "Документ cервиса"
не указан основной справочник для хранения файлов.

В этом случае параметр "НоваяСсылкаНаФайл" должен быть указан.
    ВызватьИсключение СокрЛП(ТекстОшибки);
Вроде бы все делал как у справочника номенклатура но не могу понять где искать этот НоваяСсылкаНаФайл

Вот из общего модуля процедура
Код:
// Возвращает имя справочника для указанного владельца или вызывает исключение,
// если их более одного.
//
// Параметры:
//  ВладелецФайлов  - Ссылка - объект, к которому добавляется файл.
//  ИмяСправочника  - Строка, если заполнено, то выполняется проверка
//                    наличия справочника среди справочников владельца для хранения файлов.
//                    Если не заполнено, возвращает имя основного справочника.
//  ЗаголовокОшибки - Строка - заголовок ошибки.
//                  - Неопределено - не вызывать исключение, а вернуть пустую строку.
//  ИмяПараметра    - Строка - имя требуемого параметра для определения имени справочника.
//  ОкончаниеОшибки - Строка - окончание ошибки (только для случая, когда ИмяПараметра = Неопределено).
//
Функция ИмяСправочникаХраненияФайлов(ВладелецФайлов, ИмяСправочника = "",
    ЗаголовокОшибки = Неопределено, ОкончаниеОшибки = Неопределено) Экспорт
   
    НеВызыватьИсключение = (ЗаголовокОшибки = Неопределено);
    ИменаСправочников = ИменаСправочниковХраненияФайлов(ВладелецФайлов, НеВызыватьИсключение);
   
    Если ИменаСправочников.Количество() = 0 Тогда
        Если НеВызыватьИсключение Тогда
            Возврат "";
        КонецЕсли;
       
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            ЗаголовокОшибки + Символы.ПС +
            НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
                       |нет справочников для хранения файлов.'"),
            Строка(ВладелецФайлов),
            Строка(ТипЗнч(ВладелецФайлов)));
    КонецЕсли;
   
    Если ЗначениеЗаполнено(ИмяСправочника) Тогда
        Если ИменаСправочников[ИмяСправочника] <> Неопределено Тогда
            Возврат ИмяСправочника;
        КонецЕсли;
   
        Если НеВызыватьИсключение Тогда
            Возврат "";
        КонецЕсли;
       
        ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            ЗаголовокОшибки + Символы.ПС +
            НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
                       |нет справочника ""%3"" для хранения файлов.'"),
            Строка(ВладелецФайлов),
            Строка(ТипЗнч(ВладелецФайлов)),
            Строка(ИмяСправочника));
    КонецЕсли;
   
    ОсновнойСправочник = "";
    Для каждого КлючИЗначение Из ИменаСправочников Цикл
        Если КлючИЗначение.Значение = Истина Тогда
            ОсновнойСправочник = КлючИЗначение.Ключ;
            Прервать;
        КонецЕсли;
    КонецЦикла;
   
    Если ЗначениеЗаполнено(ОсновнойСправочник) Тогда
        Возврат ОсновнойСправочник;
    КонецЕсли;
       
    Если НеВызыватьИсключение Тогда
        Возврат "";
    КонецЕсли;
   
    ШаблонПричиныОшибки =
        НСтр("ru = 'У владельца файлов ""%1"" типа ""%2""
            |не указан основной справочник для хранения файлов.'") + Символы.ПС;
           
    ПричинаОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        ШаблонПричиныОшибки, Строка(ВладелецФайлов), Строка(ТипЗнч(ВладелецФайлов)));
       
    ТекстОшибки = ЗаголовокОшибки + Символы.ПС
        + ПричинаОшибки + Символы.ПС
        + ОкончаниеОшибки;
       
    ВызватьИсключение СокрЛП(ТекстОшибки);
   
КонецФункции
Ответ:
Ну зайдите в этот справочник - хранения файлов владельца, посмотрите какие реквизиты, какие типы используются. Без документации - скуритесь что-то внедрять
Вопрос: Получить документы в которых нет прихода

Конфигурация Розница 1.0
В ней есть документы Перемещение товаров, с движением по регистру накопления ТоварыНаСкладах.
У этих документов часть движения нет по расходу, и части нету по приходу.
Нужно получить эти документы движения у которых либо расход, либо приход равен 0. Если просто ставить условие например на расход равен 0 то он ничего не выводит. Если через условия истина ложь, то выводит но неправильно:

Код:
ВЫБРАТЬ
   ТоварыНаСкладах.Регистратор КАК ДокументДвижения,
   СУММА(ТоварыНаСкладах.Количество) КАК Количество,
   ВЫБОР
     КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
       ТОГДА ЛОЖЬ
     ИНАЧЕ ИСТИНА
   КОНЕЦ КАК Поле1
{ВЫБРАТЬ
   ДокументДвижения.* КАК ДокументДвижения}
ИЗ
   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
     {ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК ТаблицаСклады
     ПО (ТаблицаСклады.Ссылка = ТоварыНаСкладах.Склад)}
ГДЕ
   ТаблицаСклады.Магазин = &Магазин
   И ТИПЗНАЧЕНИЯ(ТоварыНаСкладах.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
{ГДЕ
   ТаблицаСклады.Организация.* КАК Организация,
   ТаблицаСклады.Магазин.* КАК Магазин}

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладах.Регистратор,
   ВЫБОР
     КОГДА ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
       ТОГДА ЛОЖЬ
     ИНАЧЕ ИСТИНА
   КОНЕЦ

УПОРЯДОЧИТЬ ПО
   ТоварыНаСкладах.Регистратор.Дата
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Номенклатура)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       СвойстваОбъектов.Ссылка,
       СвойстваОбъектов.Наименование + " (свойство)" КАК Наименование,
       СвойстваОбъектов.ТипЗначения
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       ЗначенияСвойствОбъектов.Объект,
       СвойстваОбъектов.Ссылка КАК ХарактеристикаСсылка,
       ЗначенияСвойствОбъектов.Значение КАК Значение
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
         ПО (ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка)
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА ХарактеристикаСсылка
   ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Номенклатура)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       КатегорииОбъектов.Ссылка,
       КатегорииОбъектов.Наименование + " (категория)" КАК Наименование
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       регистрКатегорииОбъектов.Объект,
       регистрКатегорииОбъектов.Категория КАК Идентификатор
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК регистрКатегорииОбъектов
         ПО (регистрКатегорииОбъектов.Категория = КатегорииОбъектов.Ссылка)
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА Идентификатор }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Склады)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       СвойстваОбъектов.Ссылка,
       СвойстваОбъектов.Наименование + " (свойство)" КАК Наименование,
       СвойстваОбъектов.ТипЗначения
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Склады)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       ЗначенияСвойствОбъектов.Объект,
       СвойстваОбъектов.Ссылка КАК ХарактеристикаСсылка,
       ЗначенияСвойствОбъектов.Значение КАК Значение
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
         ПО (ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка)
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Склады)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА ХарактеристикаСсылка
   ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Склады)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       КатегорииОбъектов.Ссылка,
       КатегорииОбъектов.Наименование + " (категория)" КАК Наименование
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Склады)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       регистрКатегорииОбъектов.Объект,
       регистрКатегорииОбъектов.Категория КАК Идентификатор
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК регистрКатегорииОбъектов
         ПО (регистрКатегорииОбъектов.Категория = КатегорииОбъектов.Ссылка)
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Склады)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА Идентификатор }
{ХАРАКТЕРИСТИКИ
   ТИП(Документ)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       СвойстваОбъектов.Ссылка,
       СвойстваОбъектов.Наименование + " (свойство)" КАК Наименование,
       СвойстваОбъектов.ТипЗначения
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       ЗначенияСвойствОбъектов.Объект,
       СвойстваОбъектов.Ссылка КАК ХарактеристикаСсылка,
       ЗначенияСвойствОбъектов.Значение КАК Значение
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
         ПО (ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка)
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА ХарактеристикаСсылка
   ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
   ТИП(Документ)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       КатегорииОбъектов.Ссылка,
       КатегорииОбъектов.Наименование + " (категория)" КАК Наименование
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       регистрКатегорииОбъектов.Объект,
       регистрКатегорииОбъектов.Категория КАК Идентификатор
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК регистрКатегорииОбъектов
         ПО (регистрКатегорииОбъектов.Категория = КатегорииОбъектов.Ссылка)
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА Идентификатор }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.ХарактеристикиНоменклатуры)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       СвойстваОбъектов.Ссылка,
       СвойстваОбъектов.Наименование + " (свойство)" КАК Наименование,
       СвойстваОбъектов.ТипЗначения
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       ЗначенияСвойствОбъектов.Объект,
       СвойстваОбъектов.Ссылка КАК ХарактеристикаСсылка,
       ЗначенияСвойствОбъектов.Значение КАК Значение
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
         ПО (ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка)
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА ХарактеристикаСсылка
   ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Магазины)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       СвойстваОбъектов.Ссылка,
       СвойстваОбъектов.Наименование + " (свойство)" КАК Наименование,
       СвойстваОбъектов.ТипЗначения
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Магазины)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       ЗначенияСвойствОбъектов.Объект,
       СвойстваОбъектов.Ссылка КАК ХарактеристикаСсылка,
       ЗначенияСвойствОбъектов.Значение КАК Значение
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
         ПО (ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка)
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Магазины)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА ХарактеристикаСсылка
   ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Магазины)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       КатегорииОбъектов.Ссылка,
       КатегорииОбъектов.Наименование + " (категория)" КАК Наименование
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Магазины)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       регистрКатегорииОбъектов.Объект,
       регистрКатегорииОбъектов.Категория КАК Идентификатор
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК регистрКатегорииОбъектов
         ПО (регистрКатегорииОбъектов.Категория = КатегорииОбъектов.Ссылка)
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Магазины)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА Идентификатор }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Организации)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       СвойстваОбъектов.Ссылка,
       СвойстваОбъектов.Наименование + " (свойство)" КАК Наименование,
       СвойстваОбъектов.ТипЗначения
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Организации)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       ЗначенияСвойствОбъектов.Объект,
       СвойстваОбъектов.Ссылка КАК ХарактеристикаСсылка,
       ЗначенияСвойствОбъектов.Значение КАК Значение
     ИЗ
       ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
         ПО (ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка)
     ГДЕ
       СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Организации)
       И НЕ СвойстваОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА ХарактеристикаСсылка
   ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Организации)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
       КатегорииОбъектов.Ссылка,
       КатегорииОбъектов.Наименование + " (категория)" КАК Наименование
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Организации)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
       регистрКатегорииОбъектов.Объект,
       регистрКатегорииОбъектов.Категория КАК Идентификатор
     ИЗ
       Справочник.КатегорииОбъектов КАК КатегорииОбъектов
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК регистрКатегорииОбъектов
         ПО (регистрКатегорииОбъектов.Категория = КатегорииОбъектов.Ссылка)
     ГДЕ
       КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Организации)
       И НЕ КатегорииОбъектов.ПометкаУдаления)
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА Идентификатор }
Ответ:
Вот получается небольшой запросик, который выведет вам все документы перемещения по которым нет хотя бы одного Прихода или Расхода.
Попробуйте его в Консоли запросов. А потом все остальные нужные поля добавите.
Код:
//общая таблица
ВЫБРАТЬ Различные
 Док.Ссылка как Документ,
 ЕстьNull(Рег.ВидДвижения = Значение(ВидДвиженияНакопления.Приход), Ложь) как ЕстьПриход,
 ЕстьNull(Рег.ВидДвижения = Значение(ВидДвиженияНакопления.Расход), Ложь) как ЕстьРасход
поместить Таб 
ИЗ
 Документ.ПеремещениеТоваров Док
левое соединение 
 РегистрНакопления.ТоварыВЯчейках рег
 по Док.Ссылка = Рег.Регистратор
где
 Док.Проведен
;
Выбрать  
 Таб.Документ,
 Максимум(Таб.ЕстьПриход) как ЕстьПриход,
 Максимум(Таб.ЕстьРасход) как ЕстьРасход
из
 Таб

Сгруппировать по
 Таб.Документ

Имеющие 
 Максимум(Таб.ЕстьПриход) = Ложь
или Максимум(Таб.ЕстьРасход) = Ложь

Упорядочить по 
 Таб.Документ
Автоупорядочивание
 
Вопрос: Загрузка данных из табличного документа своими силами

Добрый день, Уважаемый СайберФорум.
Я очень начинающий программист, которому понадобилось перенести из экселевской таблицы данные в документ. Но так, что бы обработку написал сам и понимал, что и как и зачем. (Пожалуйста, не предлагайте стандратную и ИТС обработки).
В связи с чем большая просьба - выложите пример кода самой простейшей обработки, переносящей данные из 3х колонок в документ.
Пытался разобраться в ИТС обработке, но там столько всего намешано, что распутывается с трудом.

Заранее спасибо.
Ответ: В порядке бреда:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Процедура ПримерЗагрузки(ПутьФайла, ИмяЛиста)
    
    Эксель = Новый COMОбъект("EXCEL.Application");
    Эксель.Visible       = Ложь;
    Эксель.DisplayAlerts = Ложь;  //Чтоб не спрашивал о закрытии, про макросы и т.д.
    
    Книга = Эксель.WorkBooks.Open(ПутьФайла);
    Лист = Книга.Worksheets(ИмяЛиста);
    
    Документ = Документы.НекийВид.СоздатьДокумент();
        
    НомерКолонкиДаты = 1;
    НомерКолонкиТовара = 2;
    НомерКолонкиКоличества = 3;
        
    Для НомерСтрокиЛиста = 1 По 500 Цикл
        
        //Считываем данные строки
        ДатаСтроки          = Лист.Cells(НомерСтрокиЛиста, 1).Value;
        Если Не ЗначениеЗаполнено(ДатаСтроки) Тогда
            Прервать;
        КонецЕсли;
            
        ТоварСтроки         = Лист.Cells(НомерСтрокиЛиста, 2).Value;
        КоличествоСтроки    = Лист.Cells(НомерСтрокиЛиста, 3).Value;
        
        Если ДатаСтроки <> Документ.Дата Тогда  //Если дата изменилась, записываем текущий документ
                                                //и создаем новый
            Если Документ.Товары.Количество() > 0 Тогда
                
                Документ.Записать();
                
            КонецЕсли;
            
            Документ.Новый();
            Документ.Дата = ДатаСтроки;
            
        КонецЕсли;
        
        Товар = Справочники.Номенклатура.НайтиПоНаименованию(ТоварСтроки);
        Если Товар.Пустая() Тогда
            
            Продолжить;
            
        КонецЕсли;
        
        НоваяСтрокаДокумента = Документ.Товары.Добавить();
        НоваяСтрокаДокумента.Номенклатура = Товар;
        НоваяСтрокаДокумента.Количество = КоличествоСтроки;
        
    КонецЦикла;
    
    Если Документ.Товары.Количество() > 0 Тогда
                
        Документ.Записать();
        
    КонецЕсли;
    
    Эксель.Application.Quit();
 
            
КонецПроцедуры
Добавлено через 4 минуты
Это если из экселевской таблицы, если же из объекта типа ТабличныйДокумент, который вроде бы даже в 8.3 умеет читать экселевские таблицы, а если не умеет, то данные можно туда просто скопировать изэксель, то весь код, связанный с активизацией Excel.Application и получением из него листа можно опустить, а вместо

1C
1
Лист.Cells(НомерСтрокиЛиста, 1).Value;
писать

1C
1
ТабДокумент.Область(НомерСтрокиЛиста, 1).Значение;
Вопрос: Отчет по услугам

Доброе утро, проблема такая: в отчете если стоит галочка, то все работы нужно вывести в одной строке, при этом, описание и меры нужно выводить только 1 раз. Не понимаю, как это сделать?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Процедура СформироватьНаСервере()
    
    ТабДок = Элементы.ТабДок;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    
    Макет =  РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ТитульныйЛист = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ТитульныйЛист");
    
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьДокумент = ТитульныйЛист.ПолучитьОбласть("Документ");
    
    ОписаниеЗаполнено = ЛОЖЬ;
    ОбластьСтрока.Параметры.Описание = "";
    ОПомещении = "";
    Ссылка = "";
    Свойство1 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Описание инциндента");
    Свойство2 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Принятые меры");
            
    ОбластьДокумент.Параметры.НачалоПериода = Формат(Объект.НачалоПериода, "ДЛФ=Д");
    ОбластьДокумент.Параметры.КонецПериода = Формат(Объект.КонецПериода, "ДЛФ=Д");
    ОбластьДокумент.Параметры.ИНН = Объект.Организация.ИНН;
    ОбластьДокумент.Параметры.КПП = Объект.Организация.КПП;
    ОбластьДокумент.Параметры.ОГРН = Объект.Организация.ОГРН;
    ОбластьДокумент.Параметры.Адрес = ЗаполнитьАдрес();
    ОбластьДокумент.Параметры.Наименование = Объект.Организация.Наименование;
    ОбластьДокумент.Параметры.ПолноеНаименование = Объект.Организация.НаименованиеПолное;
    ТабДок.Вывести(ОбластьДокумент);
    
    ТабДок.Вывести(ОбластьШапка); 
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказПокупателя.Номер КАК Номер,
                   |    ЗаказПокупателя.Дата КАК Дата,
                   |    ЗаказПокупателя.Автор КАК Автор,
                   |    ЗаказПокупателя.СостояниеЗаказа КАК Статус,
                   |    ЗаказПокупателя.ОУ_Арендатор КАК Арендатор,
                   |    ЗаказПокупателя.ОУ_ПлановыйЗаказ КАК Плановый,
                   |    ЗаказПокупателя.Ссылка КАК Ссылка,
                   |    ЗаказПокупателя.ОУ_Постановщик КАК Постановщик,
                   |    ЗаказПокупателя.Контрагент КАК Контрагент
                   |ИЗ
                   |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                   |ГДЕ
                   |    ЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ЗаказПокупателя.Проведен = ИСТИНА
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Номер";
                   
    Запрос.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода",Объект.КонецПериода);
    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ОПомещении = "";
        Ссылка = Выборка.Ссылка;
        
        СтруктураСтроки = Новый Структура("Номер, Дата, Статус, Заявитель, Автор, ЗаказНаряд, Постановщик, Плановый, Описание, Меры");
        
        СтруктураСтроки.Номер = Выборка.Номер;
        СтруктураСтроки.Дата = Формат(Выборка.Дата, "ДЛФ=Д");
        СтруктураСтроки.Статус = Выборка.Статус;
        
        Если ЗначениеЗаполнено(Выборка.Арендатор) Тогда 
            СтруктураСтроки.Заявитель = Выборка.Арендатор;
        Иначе 
            СтруктураСтроки.Заявитель = Выборка.Контрагент;
        КонецЕсли;
        
        СтруктураСтроки.Автор = Выборка.Автор;
        
        СтруктураСтроки.ЗаказНаряд = Выборка.Ссылка;
        
        Если ЗначениеЗаполнено(Выборка.Постановщик) Тогда 
            СтруктураСтроки.Постановщик = ", " + Выборка.Постановщик;
        Иначе 
            СтруктураСтроки.Постановщик = "";
        КонецЕсли;
        
        Если Выборка.Плановый = ИСТИНА Тогда 
            СтруктураСтроки.Плановый = "Плановый. " 
        Иначе 
            СтруктураСтроки.Плановый = "";
        КонецЕсли;
        
        //////////////////////////////////////
                        
        ЗапросОписание = Новый Запрос;
        ЗапросОписание.Текст = "ВЫБРАТЬ
                               |    ЗаказПокупателяДополнительныеРеквизиты.Свойство КАК Свойство,
                               |    ЗаказПокупателяДополнительныеРеквизиты.Значение КАК Значение
                               |ИЗ
                               |    Документ.ЗаказПокупателя.ДополнительныеРеквизиты КАК ЗаказПокупателяДополнительныеРеквизиты
                               |ГДЕ
                               |    ЗаказПокупателяДополнительныеРеквизиты.Ссылка = &Ссылка";
                               
        ЗапросОписание.УстановитьПараметр("Ссылка", Ссылка);
        ВыборкаОписание = ЗапросОписание.Выполнить().Выбрать();
        Пока ВыборкаОписание.Следующий() Цикл
            Если ВыборкаОписание.Свойство = Свойство1 ИЛИ ВыборкаОписание.Свойство = Свойство2 Тогда
                Если ВыборкаОписание.Свойство = Свойство1 Тогда 
                    СтруктураСтроки.Описание = "Описание инцидента: " + ВыборкаОписание.Значение + "; ";
                Иначе 
                    СтруктураСтроки.Меры = "Принятые меры: " + ВыборкаОписание.Значение + "; ";
                КонецЕсли;                                  
            КонецЕсли;  
        КонецЦикла;
        
        ЗапросРаботы = Новый Запрос;
        ЗапросРаботы.Текст = "ВЫБРАТЬ
                             |  ЗаказПокупателяОУ_ИсполнителиРаботы.Работа КАК Работа,
                             |  ЗаказПокупателяОУ_Оборудование.Оборудование КАК Оборудование,
                             |  ЗаказПокупателяОУ_Помещения.Помещение КАК Помещение,
                             |  ЗаказПокупателяОУ_Помещения.Помещение.Этаж КАК Этаж,
                             |  ЗаказПокупателяОУ_Помещения.Помещение.Ось КАК Ось,
                             |  ЗаказПокупателяОУ_Помещения.Помещение.Отметка КАК Отметка,
                             |  ЗаказПокупателяОУ_ИсполнителиРаботы.Ссылка КАК Документ
                             |ИЗ
                             |  Документ.ЗаказПокупателя.ОУ_ИсполнителиРаботы КАК ЗаказПокупателяОУ_ИсполнителиРаботы
                             |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ОУ_Оборудование КАК ЗаказПокупателяОУ_Оборудование
                             |          ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ОУ_Помещения КАК ЗаказПокупателяОУ_Помещения
                             |          ПО ЗаказПокупателяОУ_Оборудование.КлючПомещения = ЗаказПокупателяОУ_Помещения.КлючСтроки
                             |      ПО ЗаказПокупателяОУ_ИсполнителиРаботы.КлючОборудования = ЗаказПокупателяОУ_Оборудование.КлючОборудования
                             |ГДЕ
                             |  ЗаказПокупателяОУ_Помещения.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                             |  И ЗаказПокупателяОУ_ИсполнителиРаботы.Ссылка = &Ссылка";
                             
                             Если Объект.Соединить Тогда ЗапросРаботы.Текст = ЗапросРаботы.Текст + "
                             |ИТОГИ ПО Документ";
                             КонецЕсли;
                   
        ЗапросРаботы.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
        ЗапросРаботы.УстановитьПараметр("КонецПериода",Объект.КонецПериода);
        ЗапросРаботы.УстановитьПараметр("Ссылка", Ссылка);
        
        ВыборкаРаботы = ЗапросРаботы.Выполнить().Выбрать();
        
        Пока ВыборкаРаботы.Следующий() Цикл
            
            ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, СтруктураСтроки);
            
            ОбластьСтрока.Параметры.Работа = "Работа: " + ВыборкаРаботы.Работа + "; ";
            ОбластьСтрока.Параметры.Оборудование = "Оборудование: " + ВыборкаРаботы.Оборудование + "; ";
            ОбластьСтрока.Параметры.Помещение = "Помещение: " + ВыборкаРаботы.Помещение + ". "; 
            
            ОПомещении = "(";
            Если ЗначениеЗаполнено(ВыборкаРаботы.Этаж) Тогда ОПомещении = ОПомещении + "Этаж: " + ВыборкаРаботы.Этаж + "; "; 
            КонецЕсли;
                
            Если ЗначениеЗаполнено(ВыборкаРаботы.Ось) Тогда ОПомещении = ОПомещении + "Ось: " + ВыборкаРаботы.Ось + "; ";
            КонецЕсли;
            
            Если ЗначениеЗаполнено(ВыборкаРаботы.Отметка) Тогда ОПомещении = ОПомещении + "Отметка: " + ВыборкаРаботы.Отметка + "; ";
            КонецЕсли;
            ОПомещении = ОПомещении + ")";
            
            Если ОПомещении = "()" Тогда ОбластьСтрока.Параметры.ОПомещении = "" Иначе ОбластьСтрока.Параметры.ОПомещении = ОПомещении;
            КонецЕсли;
            
            ТабДок.Вывести(ОбластьСтрока);
                    
            ОбластьСтрока.Параметры.ОПомещении = "";
            ОбластьСтрока.Параметры.Работа = "";
            ОбластьСтрока.Параметры.Оборудование = "";
            ОбластьСтрока.Параметры.Помещение = "";
        КонецЦикла;
        
        Если ВыборкаРаботы.Количество() = 0 Тогда
            ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, СтруктураСтроки); 
            ТабДок.Вывести(ОбластьСтрока);
        КонецЕсли;
        
        ОбластьСтрока.Параметры.Описание = "";
        ОбластьСтрока.Параметры.Меры =  "";
        ОбластьСтрока.Параметры.Постановщик = "";
        ОбластьСтрока.Параметры.Плановый = "";
    КонецЦикла;
 
КонецПроцедуры
Ответ: Разобралась. Вынесла в отдельную процедуру. Может кому поможет
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
Процедура СоединитьЗаказы (ОбластьСтрока)
    
    ОбластьСтрока.Параметры.РабОбщ = "";
    ОписаниеЗаполнено = ЛОЖЬ;
    ОбластьСтрока.Параметры.Описание = "";
    ОПомещении = "";
    Ссылка = "";
    Свойство1 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Описание инциндента");
    Свойство2 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Принятые меры");
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказПокупателя.Номер КАК Номер,
                   |    ЗаказПокупателя.Дата КАК Дата,
                   |    ЗаказПокупателя.Автор КАК Автор,
                   |    ЗаказПокупателя.СостояниеЗаказа КАК Статус,
                   |    ЗаказПокупателя.ОУ_Арендатор КАК Арендатор,
                   |    ЗаказПокупателя.ОУ_ПлановыйЗаказ КАК Плановый,
                   |    ЗаказПокупателя.Ссылка КАК Ссылка,
                   |    ЗаказПокупателя.ОУ_Постановщик КАК Постановщик,
                   |    ЗаказПокупателя.Контрагент КАК Контрагент
                   |ИЗ
                   |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
                   |ГДЕ
                   |    ЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ЗаказПокупателя.Проведен = ИСТИНА
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Номер";
                   
    Запрос.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода",Объект.КонецПериода);
    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ОПомещении = "";
        Ссылка = Выборка.Ссылка;
        
        СтруктураСтроки = Новый Структура("Номер, Дата, Статус, Заявитель, Автор, ЗаказНаряд, Постановщик, Плановый, Описание, Меры");
        
        СтруктураСтроки.Номер = Выборка.Номер;
        СтруктураСтроки.Дата = Формат(Выборка.Дата, "ДЛФ=Д");
        СтруктураСтроки.Статус = Выборка.Статус;
        СтруктураСтроки.Автор = Выборка.Автор;
        
        Если ЗначениеЗаполнено(Выборка.Арендатор) Тогда 
            СтруктураСтроки.Заявитель = Выборка.Арендатор;
        Иначе 
            СтруктураСтроки.Заявитель = Выборка.Контрагент;
        КонецЕсли;  
        
        СтруктураСтроки.ЗаказНаряд = Выборка.Ссылка;
        
        Если ЗначениеЗаполнено(Выборка.Постановщик) Тогда 
            СтруктураСтроки.Постановщик = ", " + Выборка.Постановщик;
        Иначе 
            СтруктураСтроки.Постановщик = "";
        КонецЕсли;
        
        Если Выборка.Плановый = ИСТИНА Тогда 
            СтруктураСтроки.Плановый = "Плановый. " 
        Иначе 
            СтруктураСтроки.Плановый = "";
        КонецЕсли;
        
        //////////////////////////////////////
                        
        ЗапросОписание = Новый Запрос;
        ЗапросОписание.Текст = "ВЫБРАТЬ
                               |    ЗаказПокупателяДополнительныеРеквизиты.Свойство КАК Свойство,
                               |    ЗаказПокупателяДополнительныеРеквизиты.Значение КАК Значение
                               |ИЗ
                               |    Документ.ЗаказПокупателя.ДополнительныеРеквизиты КАК ЗаказПокупателяДополнительныеРеквизиты
                               |ГДЕ
                               |    ЗаказПокупателяДополнительныеРеквизиты.Ссылка = &Ссылка";
                               
        ЗапросОписание.УстановитьПараметр("Ссылка", Ссылка);
        ВыборкаОписание = ЗапросОписание.Выполнить().Выбрать();
        Пока ВыборкаОписание.Следующий() Цикл
            Если ВыборкаОписание.Свойство = Свойство1 ИЛИ ВыборкаОписание.Свойство = Свойство2 Тогда
                Если ВыборкаОписание.Свойство = Свойство1 Тогда 
                    СтруктураСтроки.Описание = "Описание инцидента: " + ВыборкаОписание.Значение + "; ";
                Иначе 
                    СтруктураСтроки.Меры = "Принятые меры: " + ВыборкаОписание.Значение + "; ";
                КонецЕсли;                                  
            КонецЕсли;  
        КонецЦикла;
                
        //////////////////////////////////////////////////////////////
        
        ЗапросРаботы = Новый Запрос;
        ЗапросРаботы.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                             |  ЗаказПокупателяОУ_ИсполнителиРаботы.Работа КАК Работа,
                             |  ЗаказПокупателяОУ_Оборудование.Оборудование КАК Оборудование,
                             |  ЗаказПокупателяОУ_Помещения.Помещение КАК Помещение,
                             |  ЗаказПокупателяОУ_Помещения.Помещение.Этаж КАК Этаж,
                             |  ЗаказПокупателяОУ_Помещения.Помещение.Ось КАК Ось,
                             |  ЗаказПокупателяОУ_Помещения.Помещение.Отметка КАК Отметка,
                             |  ЗаказПокупателяОУ_ИсполнителиРаботы.Статус,
                             |  ЗаказПокупателяОУ_ИсполнителиРаботы.Ссылка КАК Документ
                             |ИЗ
                             |  Документ.ЗаказПокупателя.ОУ_ИсполнителиРаботы КАК ЗаказПокупателяОУ_ИсполнителиРаботы
                             |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ОУ_Оборудование КАК ЗаказПокупателяОУ_Оборудование
                             |          ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ОУ_Помещения КАК ЗаказПокупателяОУ_Помещения
                             |          ПО ЗаказПокупателяОУ_Оборудование.КлючПомещения = ЗаказПокупателяОУ_Помещения.КлючСтроки
                             |      ПО ЗаказПокупателяОУ_ИсполнителиРаботы.КлючОборудования = ЗаказПокупателяОУ_Оборудование.КлючОборудования
                             |ГДЕ
                             |  ЗаказПокупателяОУ_Помещения.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                             |  И ЗаказПокупателяОУ_ИсполнителиРаботы.Ссылка = &Ссылка
                             |ИТОГИ ПО
                             |  Документ";  
                         
        ЗапросРаботы.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
        ЗапросРаботы.УстановитьПараметр("КонецПериода",Объект.КонецПериода);
        ЗапросРаботы.УстановитьПараметр("Ссылка", Ссылка);
        
        ВыборкаРаботы = ЗапросРаботы.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаРаботы.Следующий() Цикл
            Выбор = ВыборкаРаботы.Выбрать();
            
            Пока Выбор.Следующий() Цикл             
                ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, СтруктураСтроки);    
                
                Если ЗначениеЗаполнено(Выбор.Работа) Тогда 
                    ОбластьСтрока.Параметры.РабОбщ = ОбластьСтрока.Параметры.РабОбщ + "Работа: " + Выбор.Работа + "; ";
                КонецЕсли;
                Если ЗначениеЗаполнено(Выбор.Оборудование) Тогда 
                    ОбластьСтрока.Параметры.РабОбщ = ОбластьСтрока.Параметры.РабОбщ + "Оборудование: " + Выбор.Оборудование + "; ";
                КонецЕсли;
                Если ЗначениеЗаполнено(Выбор.Помещение) Тогда 
                    ОбластьСтрока.Параметры.РабОбщ = ОбластьСтрока.Параметры.РабОбщ + "Помещение: " + Выбор.Помещение + "; ";
                КонецЕсли;
                
                ОбластьСтрока.Параметры.РабОбщ = ОбластьСтрока.Параметры.РабОбщ + Символы.ПС;
                
                ОПомещении = "(";
                Если ЗначениеЗаполнено(Выбор.Этаж) Тогда 
                    ОПомещении = ОПомещении + "Этаж: " + Выбор.Этаж + "; "; 
                КонецЕсли;                  
                Если ЗначениеЗаполнено(Выбор.Ось) Тогда 
                    ОПомещении = ОПомещении + "Ось: " + Выбор.Ось + "; ";
                КонецЕсли;              
                Если ЗначениеЗаполнено(Выбор.Отметка) Тогда 
                    ОПомещении = ОПомещении + "Отметка: " + Выбор.Отметка + "; ";
                КонецЕсли;
                ОПомещении = ОПомещении + ")";              
                Если ОПомещении = "()" Тогда 
                ОбластьСтрока.Параметры.ОПомещении = "" Иначе ОбластьСтрока.Параметры.ОПомещении = ОПомещении;
                КонецЕсли;
    
                КонецЦикла;                 
                            
            ТабДок.Вывести(ОбластьСтрока);
                        
            ОбластьСтрока.Параметры.Описание = "";          
            ОбластьСтрока.Параметры.Постановщик = "";
            ОбластьСтрока.Параметры.Плановый = "";          
            ОбластьСтрока.Параметры.ОПомещении = "";
            ОбластьСтрока.Параметры.РабОбщ = "";
                
        КонецЦикла; 
        
        Если ВыборкаРаботы.Количество() = 0 Тогда
                ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, СтруктураСтроки); 
                ТабДок.Вывести(ОбластьСтрока);
        КонецЕсли;
 
    КонецЦикла; 
КонецПроцедуры
Вопрос: Отчет ABC. Группировка строк в отчете.

Переделываю отчет ABC. Но когда делаю группировку строк,то ABC не считается для каждой номенклатуры. Помогите пожалуйста разобраться.База ERP периписаная.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ВариантыИсполнения.Ссылка КАК ВариантИсполнения
ПОМЕСТИТЬ втНоменклатура
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыИсполнения КАК ВариантыИсполнения
        ПО Номенклатура.Ссылка = ВариантыИсполнения.Владелец
{ГДЕ
    Номенклатура.Ссылка.* КАК Номенклатура}
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КурсыВалютСрезПоследних.Валюта,
    КурсыВалютСрезПоследних.Курс
ПОМЕСТИТЬ втКурсВалюты_Период_1
ИЗ
    РегистрСведений.КурсыВалют.СрезПоследних({(&КонПериода_1)}, ) КАК КурсыВалютСрезПоследних
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.КолОборот, 0)) КАК КолОборот_П1_Ассортимент_1,
    СУММА(ВЫБОР
            КОГДА &ВыводитьСуммыРеализации
                ТОГДА ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.СуммаОборот, 0)
            ИНАЧЕ ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.КолОборот, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * ЕСТЬNULL(втКурсВалюты_Период_1.Курс, 0)
        КОНЕЦ) КАК СуммаОборот_П1_Ассортимент_1,
    СУММА(ВЫБОР
            КОГДА &ВыводитьСуммыРеализации
                ТОГДА ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.МаржаОборот, 0)
            ИНАЧЕ ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.КолОборот, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * ЕСТЬNULL(втКурсВалюты_Период_1.Курс, 0)
        КОНЕЦ) КАК МаржаОборот_П1_Ассортимент_1,
    ПродажиОбороты_П1_Ассортимент_1.Номенклатура КАК Ном,
    ПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения КАК ВариантИсполнения,
    ПродажиОбороты_П1_Ассортимент_1.ПериодМесяц,
    ПродажиОбороты_П1_Ассортимент_1.ПериодГод
ПОМЕСТИТЬ втПродажиОбороты_П1_Ассортимент_1
ИЗ
    РегистрНакопления.ПродажиОбороты.Обороты({(&НачПериода_1)}, {(&КонПериода_1)}, Авто, {(Номенклатура).* КАК Номенклатура}) КАК ПродажиОбороты_П1_Ассортимент_1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                {(&КонПериода_1)},
                ТипЦен = &ТипЦен
                    И ЕдИзм = Номенклатура.БазоваяЕдИзм
                    И КатегорияЦены = ЗНАЧЕНИЕ(Справочник.КатегорииЦен.ПустаяСсылка)) КАК ЦеныНоменклатурыСрезПоследних
            ЛЕВОЕ СОЕДИНЕНИЕ втКурсВалюты_Период_1 КАК втКурсВалюты_Период_1
            ПО ЦеныНоменклатурыСрезПоследних.Валюта = втКурсВалюты_Период_1.Валюта
        ПО ПродажиОбороты_П1_Ассортимент_1.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения = ЦеныНоменклатурыСрезПоследних.ВариантИсполнения
 
СГРУППИРОВАТЬ ПО
    ПродажиОбороты_П1_Ассортимент_1.Номенклатура,
    ПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения,
    ПродажиОбороты_П1_Ассортимент_1.ПериодМесяц,
    ПродажиОбороты_П1_Ассортимент_1.ПериодГод
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(втПродажиОбороты_П1_Ассортимент_1.СуммаОборот_П1_Ассортимент_1, 0) КАК СуммаОборот_П1_Ассортимент_1,
    ЕСТЬNULL(втПродажиОбороты_П1_Ассортимент_1.КолОборот_П1_Ассортимент_1, 0) КАК КолОборот_П1_Ассортимент_1,
    втНоменклатура.Номенклатура,
    ЕСТЬNULL(втПродажиОбороты_П1_Ассортимент_1.МаржаОборот_П1_Ассортимент_1, 0) КАК МаржаОборот_П1_Ассортимент_1,
    втНоменклатура.ВариантИсполнения,
    втПродажиОбороты_П1_Ассортимент_1.ПериодМесяц,
    втПродажиОбороты_П1_Ассортимент_1.ПериодГод
ИЗ
    втНоменклатура КАК втНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ втПродажиОбороты_П1_Ассортимент_1 КАК втПродажиОбороты_П1_Ассортимент_1
        ПО втНоменклатура.Номенклатура = втПродажиОбороты_П1_Ассортимент_1.Ном
            И втНоменклатура.ВариантИсполнения = втПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения
-запрос
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Перем тзНоменклатура;
 
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    КомпоновщикМакета     = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
    КомпоновщикНастроек.Настройки, , ,
    Тип("ГенераторМакетаКомпоновкиДанных"));
 
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    ДокументРезультат.Очистить();
 
    ТаблицаРезультат = Новый ТаблицаЗначений;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;    
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); 
    ДокументРезультат.Очистить();
 
    КомпоновщикМакета   = Новый КомпоновщикМакетаКомпоновкиДанных;  
    МакетКомпоновки     = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки,ДанныеРасшифровки );
    
 
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;      
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
    ДокументРезультат.Очистить();
 
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;    
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Попытка
        Для Каждого _Строка Из ТаблицаРезультат Цикл
            Если Не ЗначениеЗаполнено(_Строка.АБЦ) Тогда
                Продолжить;
            КонецЕсли;
            Если глПустоеЗначение(_Строка.Номенклатура) Тогда
                Продолжить;
            КонецЕсли;
            Если _Строка.Номенклатура.ЭтоГруппа Тогда
                Продолжить;
            КонецЕсли;
                _НС  = тзНоменклатура.Добавить();
            _НС.Номенклатура = _Строка.Номенклатура;
            Если _Строка.АБЦ = 1 Тогда
                _НС.Статус = "A"
            ИначеЕсли _Строка.АБЦ = 2 Тогда  
                _НС.Статус = "B"        
            ИначеЕсли _Строка.АБЦ = 3 Тогда
                _НС.Статус = "C"            
            КонецЕсли;
        КонецЦикла;
    //Исключение
    Попытка Для Каждого _Строка Из ТаблицаРезультат Цикл
            Если Не ЗначениеЗаполнено(_Строка.АБЦ_Маржа) Тогда
                Продолжить;
            КонецЕсли;
            Если глПустоеЗначение(_Строка.Номенклатура) Тогда
                Продолжить;
            КонецЕсли;
            Если _Строка.Номенклатура.ЭтоГруппа Тогда
                Продолжить;
            КонецЕсли;
            _НС  = тзНоменклатура.Добавить();
            _НС.Номенклатура = _Строка.Номенклатура;
            Если _Строка.АБЦ_Маржа = 1 Тогда
                _НС.Статус = "A"
            ИначеЕсли _Строка.АБЦ_Маржа = 2 Тогда  
                _НС.Статус = "B"        
            ИначеЕсли _Строка.АБЦ_Маржа = 3 Тогда
                _НС.Статус = "C"            
    КонецЕсли;
    КонецЦикла;
    
    Исключение
Для Каждого _Строка Из ТаблицаРезультат Цикл
            Если Не ЗначениеЗаполнено(_Строка.АБЦ_Кол) Тогда
                Продолжить;
            КонецЕсли;
            Если глПустоеЗначение(_Строка.Номенклатура) Тогда
                Продолжить;
            КонецЕсли;
            Если _Строка.Номенклатура.ЭтоГруппа Тогда
                Продолжить;
            КонецЕсли;
            _НС  = тзНоменклатура.Добавить();
            _НС.Номенклатура = _Строка.Номенклатура;
            Если _Строка.АБЦ_Кол = 1 Тогда
                _НС.Статус = "A"
            ИначеЕсли _Строка.АБЦ_Кол = 2 Тогда  
                _НС.Статус = "B"        
            ИначеЕсли _Строка.АБЦ_Кол = 3 Тогда
                _НС.Статус = "C"            
            КонецЕсли;
            КонецЦикла;
        КонецПопытки;
    Исключение Сообщить("");
        КонецПопытки
КонецПроцедуры
 
Процедура ЗафиксироватьКатегории() Экспорт
    
    _МассивНаУдаление = Новый Массив;
    
    Для Каждого _Строка Из тзНоменклатура Цикл
        Если глПустоеЗначение(_Строка.Номенклатура) Или глПустоеЗначение(_Строка.Статус) Тогда
            _МассивНаУдаление.Добавить(_Строка);    
        КонецЕсли;
    КонецЦикла;
    
    Для Каждого _СтрокаУдалить Из _МассивНаУдаление Цикл
        тзНоменклатура.Удалить(_СтрокаУдалить);
    КонецЦикла;
    
    Для Каждого _Строка Из тзНоменклатура Цикл
        
        _Номенклатура                             = _Строка.Номенклатура;   
        _НоменклатураОб                           = _Номенклатура.ПолучитьОбъект();
        
        _НоменклатураОб.ПС_КатегорияДляABCАнализа = _Строка.Статус; 
        
        Попытка
            _НоменклатураОб.Записать();
        Исключение
            глСообщить(_НоменклатураОб,ОписаниеОшибки());
        КонецПопытки;   
        
    КонецЦикла;
        
КонецПроцедуры
 
тзНоменклатура = Новый ТаблицаЗначений;
тзНоменклатура.Колонки.Добавить("Номенклатура");
тзНоменклатура.Колонки.Добавить("Статус");
-модуль объекта
Ответ: polax, Сделала,вроде. Может не так поняла.
Вопрос: Как правильно разделить физические и юридические лица в справочнике "Клиенты"

Доброго времени суток.
Не знаю как правильней организовать структуру справочника "Клиенты". Клиентом может быть как физ. лицо, так и юр. лицо или ИП.
Первоначально думал создать иерархический справочник "Клиенты" с группами "Физ. лица", "Юр. лица" и "ИП". Тогда получается, что так как справочник один, то в его структуре должны быть описаны реквизиты для всех трех групп, то есть реквизиты будут являться "общими", даже если они не нужны для какой-либо конкретной группы (например, при заполнении данного справочника, скажем, на физическое лицо реквизиты "ИНН", "КПП", "корр. счет" и другие, характерные для юр. лиц, просто останутся пустыми.).
Вторым вариантом является создание трех отдельных справочников. Тогда проблема с пустыми полями решается сама собой.

Какой из двух вариантов является более корректным способом создания справочника?
И если остановиться на первом варианте, то возможно ли для каждой группы создание своей формы элемента?

Спасибо.
Ответ: Bob_Dylan, Обычно делают именно так.
Встречал более изощренный способ хранения (в типовой конфигурации), когда использовалось два справочника ФизическиеЛица и ЮридическиеЛица, и справочник Контрагенты с реквизитом-ссылкой на элемент одного из справочников.
Вопрос: Удалить области табличного документа

Добрый вечер. Такая проблема: есть документ "прием специалиста", где пациенту назначают план лечения, и одно из назначений, например, "инъекция кеторола". Пока у данного лечения статус "назначено", резервируется определенное количество препарата и находится в резерве до тех пор, пока у лечения не будет статус "выполнено" или "отменено". При смене статуса на "выполнено" произойдет списание препарата.
Отсюда в отчете по учету препаратов появляется строка с приходом, в которой количество = 0. От этих строк надо избавиться.
Пыталась выводить строку, и делать проверку, что если там приход с 0, то удалить эту область, но не получилось.
Если задавать условие, то если приход = 0, тогда пропустить, то тогда под это условие попадают записи, у которых ранее был резерв, но его либо списали, либо отменили.
Как можно избавиться от таких строк?

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
Процедура ЗаполнитьЖурналДляПечати(ТабДок, ТЗ)
    
    Макет = ПолучитьМакет("МакетПрепарат");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    
    Пер = "";
    Ном = "";
    СкладПарам = "";
    Расход = ЛОЖЬ;  
    СчитатьОстатки = "";
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ОстаткиТоваровКомпании.Номенклатура КАК Преп,
                   |    ОстаткиТоваровКомпании.Регистратор КАК Док,
                   |    ОстаткиТоваровКомпании.ВидДвижения КАК Движение,
                   |    ОстаткиТоваровКомпании.Период КАК Дата,
                   |    ОстаткиТоваровКомпании.СкладКомпании КАК СкладКомпании,
                   |    ОстаткиТоваровКомпании.Пациент КАК Пациент,
                   |    ОстаткиТоваровКомпании.Количество КАК Кол,
                   |    ОстаткиТоваровКомпании.Регистратор.Автор КАК Отв,
                   |    ОстаткиТоваровКомпании.Регистратор.Контрагент КАК Контр,
                   |    ОстаткиТоваровКомпании.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
                   |    ОстаткиТоваровКомпании.Регистратор.Пациент КАК ПриемПациент
                   |ИЗ
                   |    РегистрНакопления.ОстаткиТоваровКомпании КАК ОстаткиТоваровКомпании";
                Если ЗначениеЗаполнено(Препарат) И НЕ ЗначениеЗаполнено(Склад) Тогда
                    Запрос.Текст = Запрос.Текст + "   
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ОстаткиТоваровКомпании.Номенклатура = &Преп
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               ИначеЕсли ЗначениеЗаполнено(Склад) И НЕ ЗначениеЗаполнено(Препарат) Тогда
                   Запрос.Текст = Запрос.Текст + "
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ОстаткиТоваровКомпании.СкладКомпании = &Склад
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               ИначеЕсли ЗначениеЗаполнено(Склад) И ЗначениеЗаполнено(Препарат) Тогда
                   Запрос.Текст = Запрос.Текст + "
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода
                   |    И ОстаткиТоваровКомпании.Номенклатура = &Преп
                   |    И ОстаткиТоваровКомпании.СкладКомпании = &Склад
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               Иначе Запрос.Текст = Запрос.Текст + "
                   |ГДЕ
                   |    ОстаткиТоваровКомпании.Период МЕЖДУ &НачалоПериода И &КонецПериода 
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ОстаткиТоваровКомпании.Номенклатура.Наименование,
                   |    ОстаткиТоваровКомпании.Регистратор.Дата
                   |ИТОГИ
                   |    СУММА(Кол)
                   |ПО
                   |    Преп,
                   |    Док";
               КонецЕсли;
               
    Запрос.УстановитьПараметр("Преп", Препарат);            
    Запрос.УстановитьПараметр("Склад", Склад);              
    Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));   
    Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
    
    Выборка1 = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
    Пока Выборка1.Следующий() Цикл          
        Ном = Выборка1.Преп;        
        ОбластьШапка.Параметры.Препарат = Выборка1.Преп;
        ОбластьШапка.Параметры.Ед = Выборка1.Преп.БазоваяЕдиницаИзмерения;
        ТабДок.Вывести(ОбластьШапка);   
        Выборка2 = Выборка1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
        
        Пока Выборка2.Следующий() Цикл
                        
            Выборка3 = Выборка2.Выбрать();
            
            Пока Выборка3.Следующий() Цикл
                Хар = Выборка3.ХарактеристикаНоменклатуры;              
                //Если запись одна, берем остатки из регистра
                Если Выборка3.Количество() <= 1 Тогда
                                        
                    Пер = Выборка3.Дата;
                    СкладПарам = Выборка3.СкладКомпании; 
                    
                    Стр = ТЗ.Добавить();
                    Стр.Препарат = Выборка3.Преп;
                    Стр.Склад = Выборка3.СкладКомпании;
                    ЗаполнитьИтогиТЗ(ном, складпарам, пер, стр); 
                    Если Стр.Остаток = Неопределено Тогда 
                        Стр.Остаток = 0; 
                    КонецЕсли;
                    
                    
                    Если Выборка3.Движение = ВидДвиженияНакопления.Расход Тогда
                        ОбластьСтрока.Параметры.Расх = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаРасх = Формат(Выборка3.Дата, "ДЛФ=Д");
                        
                        Если Не ЗначениеЗаполнено(Выборка3.Пациент) Тогда
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.ПриемПациент;
                        Иначе                           
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.Пациент;
                        КонецЕсли;
 
                        ОбластьСтрока.Параметры.РасхСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокРасх = Выборка3.Док;                         
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Прих = "";
                        КонецЕсли;                      
                        Расход = ИСТИНА;
                        ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                        Если ОбластьСтрока.Параметры.КолРасх = Неопределено ИЛИ ОбластьСтрока.Параметры.КолРасх = "" Тогда
                            ОбластьСтрока.Параметры.КолРасх = 0;
                        КонецЕсли;
                        ОбластьСтрока.Параметры.РасхОст = ОбластьСтрока.Параметры.КолРасх - ОбластьСтрока.Параметры.Расх;                       
                    Иначе                       
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Расх = "";
                        КонецЕсли;
                        Областьстрока.Параметры.Прих = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаПрих = Формат(Выборка3.Дата, "ДЛФ=Д");
                        ОбластьСтрока.Параметры.КонтрПрих = Выборка3.Контр;
                        ОбластьСтрока.Параметры.ПрихСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокПрих = Выборка3.Док;
                        Расход = ЛОЖЬ;                      
                        ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                        Если ОбластьСтрока.Параметры.КолПрих = Неопределено ИЛИ ОбластьСтрока.Параметры.КолПрих = "" Тогда
                            ОбластьСтрока.Параметры.КолПрих = 0;
                        КонецЕсли;
                        ОбластьСтрока.Параметры.ПрихОст = ОбластьСтрока.Параметры.КолПрих + ОбластьСтрока.Параметры.Прих;                       
                    КонецЕсли;
                    
                Иначе
                //иначе рассчитываем остатки вручную по каждому препарату
                 
                    Пер = Выборка3.Дата;
                    СкладПарам = Выборка3.СкладКомпании;
                    
                    Стр = ТЗ.Добавить();
                    Стр.Препарат = Выборка3.Преп;
                    Стр.Склад = Выборка3.СкладКомпании;                 
                    ЗаполнитьИтогиТЗ(ном, складпарам, пер, стр);
                    Если Стр.Остаток = Неопределено Тогда 
                        Стр.Остаток = 0; 
                    КонецЕсли;
                    
                    Если Выборка3.Движение = ВидДвиженияНакопления.Расход Тогда
                        ОбластьСтрока.Параметры.Расх = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаРасх = Формат(Выборка3.Дата, "ДЛФ=Д");
                        
                        Если Не ЗначениеЗаполнено(Выборка3.Пациент) Тогда
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.ПриемПациент;
                        Иначе                           
                            ОбластьСтрока.Параметры.РасхПациент = Выборка3.Пациент;
                        КонецЕсли;
 
                        ОбластьСтрока.Параметры.РасхСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокРасх = Выборка3.Док;                         
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Прих = "";
                        КонецЕсли;                          
                        Расход = ИСТИНА;
                        
                        Если СчитатьОстатки = "" Тогда
                            ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                            Если ОбластьСтрока.Параметры.КолРасх = Неопределено или ОбластьСтрока.Параметры.КолРасх = "" Тогда
                                ОбластьСтрока.Параметры.Колрасх = 0;
                            КонецЕсли;
                            ОбластьСтрока.Параметры.РасхОст = ОбластьСтрока.Параметры.КолРасх - ОбластьСтрока.Параметры.Расх;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.РасхОст);
                        Иначе
                            ОбластьСтрока.Параметры.КолРасх = СчитатьОстатки;
                            ОбластьСтрока.Параметры.РасхОст = СчитатьОстатки - ОбластьСтрока.Параметры.Расх;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.РасхОст);
                        КонецЕсли;  
                        
                    Иначе 
                        
                        Если ТипЗнч(Выборка3.Док) <> Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
                            ОбластьСтрока.Параметры.Расх = "";
                        КонецЕсли;  
                        ОбластьСтрока.Параметры.Прих = Выборка3.Кол;
                        ОбластьСтрока.Параметры.ДатаПрих = Формат(Выборка3.Дата, "ДЛФ=Д");
                        ОбластьСтрока.Параметры.КонтрПрих = Выборка3.Контр;
                        ОбластьСтрока.Параметры.ПрихСклад = Выборка3.СкладКомпании;
                        ОбластьСтрока.Параметры.ДокПрих = Выборка3.Док;
                        Расход = ЛОЖЬ;                      
                        Если СчитатьОстатки = "" Тогда
                            ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока);
                            Если ОбластьСтрока.Параметры.КолПрих = Неопределено или ОбластьСтрока.Параметры.КолПрих = "" Тогда
                                ОбластьСтрока.Параметры.КолПрих = 0;
                            КонецЕсли;
                            ОбластьСтрока.Параметры.ПрихОст = ОбластьСтрока.Параметры.КолПрих + ОбластьСтрока.Параметры.Прих;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.ПрихОст);
                        Иначе
                            ОбластьСтрока.Параметры.КолПрих = СчитатьОстатки;
                            ОбластьСтрока.Параметры.ПрихОст = СчитатьОстатки + ОбластьСтрока.Параметры.Прих;
                            СчитатьОстатки = Число(ОбластьСтрока.Параметры.ПрихОст);
                        КонецЕсли;                                              
                    КонецЕсли;                  
                КонецЕсли;
                
            ТабДок.Вывести(ОбластьСтрока,3);
            ОчиститьСтрокуЖурналаДляПечати(ОбластьСтрока);
 
            КонецЦикла;
            
            СчитатьОстатки = "";
            ОбработкаПрерыванияПользователя(); 
            
        КонецЦикла;     
        ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЦикла;
    
    //сворачиваем дубли в таблице итогов
    ТЗ.Свернуть("Склад, Препарат, остаток");
    
КонецПроцедуры
 
Процедура ЗаполнитьОстатки(Пер, Ном, СкладПарам, Расход, ОбластьСтрока)
    
    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    |   ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура,
                    |   ОстаткиТоваровКомпанииОстатки.СкладКомпании КАК СкладКомпании,
                    |   ОстаткиТоваровКомпанииОстатки.ХарактеристикаНоменклатуры,
                    |   ОстаткиТоваровКомпанииОстатки.Пациент,
                    |   ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                    |   ОстаткиТоваровКомпанииОстатки.РезервОстаток,
                    |   ОстаткиТоваровКомпанииОстатки.СуммаРознОстаток
                    |ИЗ
                    |   РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&пер, ) КАК ОстаткиТоваровКомпанииОстатки
                    |ГДЕ
                    |   ОстаткиТоваровКомпанииОстатки.Номенклатура = &преп
                    |   И ОстаткиТоваровКомпанииОстатки.СкладКомпании = &Склад 
                    |ИТОГИ
                    |   СУММА(КоличествоОстаток)
                    |ПО
                    |   Номенклатура" ;
                    
    Запрос.УстановитьПараметр("склад", СкладПарам);
    Запрос.УстановитьПараметр("пер", Пер);
    Запрос.УстановитьПараметр("преп", Ном);
    
    Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока Выборка.Следующий() Цикл
        Если Расход = ИСТИНА Тогда
            ОбластьСтрока.Параметры.КолРасх = Выборка.КоличествоОстаток;
        Иначе 
            ОбластьСтрока.Параметры.КолПрих = Выборка.КоличествоОстаток;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры
Ответ: philophobia, сформулируйте конкретное условие, по которому записи в табличном документе(или в запросе, обходе выборки...) надо отсеить.
И что с условием: движение = приход и количествоприхода = 0 и количестворезерва <>0? Может надо проверять, чтобы количестворезерва =0? - тогда пропускаем: движение = приход и количествоприхода = 0 и количестворезерва = 0.