Имя: Пароль:
1C
1С v8
Сделать опись документов
0 103
 
05.05.20
11:13
Есть Справочник Хранилища. Каждое хранилище закреплено за Ответственным.
Есть документы которые хранятся в этих хранилищах.
При создании документа указывается в каком хранилище он находится, количество подлинников и количество копий, при чем копии хранятся в другом хранилище (его тоже указываем в документе) с другим Ответственным.
Нужна, грубо говоря опись по всем хранилищам по заданному Ответственному:
Задаем Ответственного и получаем таблицу:
№пп    Хранилище    Кол-во наименований документа     Кол-во экземпляров док-та      

Как приплюсовать копии?
Вот что у меня в результате:
Копии выдает отдельной строкой
и вежде прописывает одно и то же хранилище А123, во 2 и 4 строке должны быть другие
В 3-ей строке копия,данные 1 и 3 строк должны суммироваться и быть в одной строке

№ п/п Номер хранилища Количество наименований документов Количество экземпляров документов  Примечание

1       А123               8                                  11                            Согласно описи хранилища А123
2       А123               4                                  6                             Согласно описи хранилища А123
3       А123               1                                  2                             Согласно описи хранилища А123
4       А123               1                                  2                             Согласно описи хранилища А123

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

                Кол = 0;

                Пока Выборка.Следующий() Цикл
                Кол = Кол+1;
                               ОбластьЗначениеТабл.Параметры.НомХран = Хран.Наименование;
                               ОбластьЗначениеТабл.Параметры.КолЭкз = Выборка.КолвоПодл;
                               ОбластьЗначениеТабл.Параметры.КолДок = Выборка.КолДок;
                               ОбластьЗначениеТабл.Параметры.НомерПП= Кол;
                               ТабДок.Вывести(ОбластьЗначениеТабл);
                КонецЦикла;
                ТабДок.Вывести(ОбластьПункт2);
                ТабДок.Вывести(ОбластьПодвал);
                Возврат(ТабДок);
1 Галахад
 
гуру
05.05.20
11:25
1. Про копии в коде нет ничего.
2. Хран = Справочники.Хранилища.НайтиПоРеквизиту("Ответственный",Объект.ТекОтв,,);
Соответственно, Хран - не меняется.
3.Почему?
2 JeHer
 
05.05.20
12:16
Это что за ИЛИ ИЛИ?

    |ГДЕ
                     |             (АрхивныйДокумент.ХранилищеКоп = &ХранилищеКоп
                     |                                             ИЛИ АрхивныйДокумент.Хранилище = &Хранилище
                     |                                             ИЛИ АрхивныйДокумент.Ответственный = &Ответственный
                     |                                             )
3 103
 
05.05.20
13:34
(1) 1 почему ничего нет про копии? есть ХнанилищеКоп
2 в цикле обходит все нужные хранилища по заданному Ответственному, но в табл. почему-то выдает название первого которое находит. Не понимаю что и где-еще прописать
4 103
 
05.05.20
14:14
(2) может это и странно выглядит, но это работает
5 103
 
05.05.20
14:17
(1) с хранилищем решен вопрос-ошибка была
6 Злопчинский
 
05.05.20
15:31
(0) "при чем копии хранятся в другом хранилище (его тоже указываем в документе) с другим Ответственным."
а если копии хранятся в нескольких других хранилищах..?
7 103
 
06.05.20
13:56
(6) нет, копии хранятся в одном хранилище