Нужна помощь в изменении обработки
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Показано с 1 по 9 из 9
  1. #1
    Гость форума

    Регистрация
    17.04.2012
    Сообщений
    5
    Сказал(а) спасибо
    22
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Нужна помощь в изменении обработки

    Прошу помощи, т.к. в программировании 1с я валенок.
    Нужно добавить в Бланк товарного наполнения (ПечатьРаскладкиНоменклат� �рыПоМестамХранения) графу Покупатель.
    Вроде что-то изменила, но где должна быть фамилия контрагента пишется ПолноеНаименование, вообщем получается как на рисунке. Безымянный.jpg
    Подскажите, пожалуйста, как это исправить.
    Заранее большое спасибо за помощь!

    Сам код в модуле:

    Если ВыводитьЗаголовок Тогда // выведем заголовок
    Секция = мМакет.ПолучитьОбласть("За� �оловок");


    Секция.Параметры.ТекстЗаго ловка = СокрЛП(Документ);
    Секция.Параметры.Склад = СокрЛП(мСклад);
    мТабДок.Вывести(Секция);
    КонецЕсли;


    Секция = мМакет.ПолучитьОбласть("По� �упатель");
    Секция.Параметры.Представл ениеПолучателя = ("ПолноеНаименование");
    мТабДок.Вывести(Секция);

    Секция = мМакет.ПолучитьОбласть("Вр� �мяПечати");
    Секция.Параметры.ВремяПеча ти = "Дата и время печати: " + ТекущаяДата() + ". Пользователь: " + СокрЛП(глЗначениеПеременн� �й("глТекущийПользователь")) ;
    мТабДок.Вывести(Секция);

  2. #2
    Пришел за помощью

    Регистрация
    15.03.2013
    Сообщений
    14
    Сказал(а) спасибо
    10
    Поблагодарили 3 раз(а) в 3 сообщениях

    По умолчанию

    Секция.Параметры.Представл ениеПолучателя = ("ПолноеНаименование");
    Вы вроде как строку передаете "ПолноеНаименование", вот она у вас и выводится.
    Что за конфигурация? Скиньте обработку саму.
    Попробуйте кавычки убрать в ("ПолноеНаименование"); Да и скобок я не припомню в выводе в макет через параметры.

  3. Пользователь сказал cпасибо:

    Perefly (17.01.2014)

  4. #3
    Пришел за помощью
    Аватар для Poluk
    Регистрация
    21.05.2013
    Адрес
    Москва
    Сообщений
    43
    Сказал(а) спасибо
    4
    Поблагодарили 2 раз(а) в 2 сообщениях

    По умолчанию

    Секция.Параметры.Представл ениеПолучателя = ("ПолноеНаименование"); - не нужны кавычки. Если они стоят то выводится текст помещенный между ними. Необходимо после знака "=" написать переменную, которая содержит полное наименование представления получателя.

  5. Пользователь сказал cпасибо:

    Perefly (17.01.2014)

  6. #4
    Пришел за помощью

    Регистрация
    25.10.2012
    Адрес
    Санкт-Петербург
    Сообщений
    13
    Сказал(а) спасибо
    22
    Поблагодарили 1 раз в 1 сообщении

    По умолчанию

    Добрый день. Не знаю куда писать(в какую тему) по этому поводу... У меня есть обработка для 8.2(бухгалтерия предприятия) формирование поступления товаров и услуг на основании реализации товаров и услуг. в 8.3 она конечно же не работает. я открыла ее как то через толстый клиент в конфигураторе, но при попытке сформировать документ прихода вылетает вот такая дребедень
    {Форма.Форма.Форма(63)}: Ошибка при вызове метода контекста (Выполнить)
    Выборка1 = Запрос1.Выполнить().Выбрать( );
    по причине:
    {(23, 25)}: Поле не найдено "РеализацияТоваровУслуг.Уч итыватьНДС"
    РеализацияТоваровУслуг.<<?>> УчитыватьНДС
    Если кто может помочь пишите!!
    С уважением, Lerikspb

  7. #5
    Пришел за помощью
    Аватар для Poluk
    Регистрация
    21.05.2013
    Адрес
    Москва
    Сообщений
    43
    Сказал(а) спасибо
    4
    Поблагодарили 2 раз(а) в 2 сообщениях

    По умолчанию

    Структура метаданных в похоже разная... у документа РеализацияТоваровУслуг нету реквизита УчитыватьНДС. Нужно править запрос, и скорее еще много чего... обратиться к программистам советую! Но это будет стоить денег....

  8. #6
    Гость форума

    Регистрация
    17.04.2012
    Сообщений
    5
    Сказал(а) спасибо
    22
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию

    Спасибо, что откликнулись, сделала, как сказали убрали кавычки. Теперь другая проблема, пишет Не удалось определить значение параметра организации: ПолноеНаименование, ИНН, ОГРН и тд

    #Если Клиент Тогда

    Перем мТабДок;

    Перем мКоличествоГруппировок;

    Перем мКоличествоДопПолейПосле;
    Перем мКоличествоДопПолейДо;
    Перем мКоличествоДопПолейВместе ;

    Перем мСоответствиеГруппировок;

    Перем мСоответствиеДопПолейДо;
    Перем мСоответствиеДопПолейПосл е;
    Перем мСоответствиеДопПолейВмес те;

    Перем мСписокПоложенийДляПечати Экспорт;

    Перем мСписокНачало;
    Перем мСписокНоменклатура;
    Перем мСписокДопПоле;

    Перем мСписокГруппаНачало;
    Перем мСписокГруппаНоменклатура ;
    Перем мСписокГруппаДопПоле;

    Перем мСпециальныеПоля;

    Перем мИмяРеквизитаСклад;
    Перем мСклад;

    Перем мИмяМакета Экспорт;

    Перем мМакет;

    Перем мИнициализироватьНастройк иПриОткрытии Экспорт;

    Перем мТекущаяНастройка Экспорт;

    Перем мНомерСтроки;

    Перем мИзмеренияСтроки;

    Перем мЕдиницаИзмеренияВеса;

    Перем мПоляСПредставлениями;

    Перем мВесВведенНеДляВсехТоваро в;
    Перем мИтогВес;

    // Процедура осуществляет вызов формирования печатной формы из документа.
    //
    // Параметры:
    //
    //
    Процедура НапечататьИзДокумента(Док, ИмяМакета = Неопределено, ПечататьТолькоНеотсканиро ванные = Неопределено, НаПринтер = Ложь) Экспорт

    Если ИмяМакета <> Неопределено Тогда
    мИмяМакета = ИмяМакета;
    КонецЕсли;

    Если ПечататьТолькоНеотсканиро ванные <> Неопределено Тогда
    ТолькоНеотсканированныйТо вар = ПечататьТолькоНеотсканиро ванные;
    КонецЕсли;

    ВидДокументов = Док.Метаданные().Имя;
    Документ = Док;
    ВосстановитьНастройкиПриО ткрытии();

    Если ПоказыватьФорму Тогда
    мИнициализироватьНастройк иПриОткрытии = Ложь;

    ПолучитьФорму().Открыть();
    Иначе
    Печать(НаПринтер);
    КонецЕсли;

    КонецПроцедуры // НапечататьИзДокумента()

    // Формирует структуру для сохранения настроек отчета
    //
    Процедура СформироватьСтруктуруДляС охраненияНастроек(Структу� �аСНастройками) Экспорт

    СтруктураСНастройками = Новый Структура;
    СтруктураСНастройками.Вст� �вить("НастройкиПостроител� �" , ПостроительОтчета.Получит� �Настройки());
    СтруктураСНастройками.Вст� �вить("ТаблицаНастройкиПол� �йПечать" , ТаблицаНастройкиПолейПеча ть);
    СтруктураСНастройками.Вст� �вить("СписокСкладов" , СписокСкладов);
    СтруктураСНастройками.Вст� �вить("ВыводитьЗаголовок" , ВыводитьЗаголовок);
    СтруктураСНастройками.Вст� �вить("ПоказыватьФорму" , ПоказыватьФорму);
    СтруктураСНастройками.Вст� �вить("ИспользоватьСвойств� �" , ИспользоватьСвойства);
    СтруктураСНастройками.Вст� �вить("КоличествоУровнейМе� �тХранения" , КоличествоУровнейМестХран ения);
    СтруктураСНастройками.Вст� �вить("ПредставленияПриори� �етовМестХранения", ПредставленияПриоритетовМ естХранения);


    КонецПроцедуры // СформироватьСтруктуруДляС охраненияНастроек()

    // Процедура открывает форму настройки из документа.
    //
    // Параметры:
    // ТекДок - Ссылка на документ, из которого открыта форма.
    //
    Процедура ОткрытьФормуНастройкиИзДо кумента(Док) Экспорт

    ВидДокументов = Док.Метаданные().Имя;
    Документ = Док;
    ВосстановитьНастройкиПриО ткрытии();
    мИнициализироватьНастройк иПриОткрытии = Ложь;
    ПолучитьФорму().Открыть();

    КонецПроцедуры // ОткрытьФормуНастройкиИзДо кумента()

    // Функция выводит поле в шапку отчета. Возвращает количество выведенных полей.
    //
    // Параметры:
    // ДопПоле - поле, которое нужно вывести.
    // РезультатЗапроса - результат запроса.
    // Секция - выводимая секция.
    //
    // Возвращаемое значение:
    // Число - количество выведенных полей.
    //
    Функция ВывестиПолеВШапку(ДопПоле, РезультатЗапроса, Знач Секция)

    КоличествоПолей = 0;

    Если мСпециальныеПоля[ДопПоле.Имя] = 0 Тогда // "МестоХранения"
    Выборка = РезультатЗапроса.Выбрать(О бходРезультатаЗапроса.ПоГ� �уппировкам, "Приоритет", "Все");
    Пока Выборка.Следующий() Цикл
    СтрокаПредставленияПриори тета = ПредставленияПриоритетовМ естХранения.Найти(Выборка.� �риоритет, "Приоритет");
    Если СтрокаПредставленияПриори тета = Неопределено Тогда
    НазваниеКолонки = ДопПоле.Псевдоним + ?(Выборка.Количество() = 1, "", " " + (Выборка.Приоритет));
    Иначе
    НазваниеКолонки = СтрокаПредставленияПриори тета.Псевдоним;
    КонецЕсли;

    Секция.Параметры.ДопПоле = НазваниеКолонки;
    мТабДок.Присоединить(Секци я);

    КоличествоПолей = КоличествоПолей + 1;
    КонецЦикла;
    ИначеЕсли мСпециальныеПоля[ДопПоле.Имя] = 1 Тогда // "Остаток"
    Секция = мМакет.ПолучитьОбласть("Ша� �ка|ДопПолеОстаток");

    Выборка = РезультатЗапроса.Выбрать(О бходРезультатаЗапроса.ПоГ� �уппировкам, "Склад", "Все");
    Пока Выборка.Следующий() Цикл
    НазваниеКолонки = СокрЛП(Выборка.СкладПредст авление);
    Если Не ПустаяСтрока(ДопПоле.Псевд оним) Тогда
    НазваниеКолонки = НазваниеКолонки + Символы.ПС + ДопПоле.Псевдоним;
    КонецЕсли;

    Секция.Параметры.ДопПоле = НазваниеКолонки;
    мТабДок.Присоединить(Секци я);

    КоличествоПолей = КоличествоПолей + 1;
    КонецЦикла;
    Иначе
    Секция.Параметры.ДопПоле = ДопПоле.Псевдоним;
    мТабДок.Присоединить(Секци я);

    КоличествоПолей = КоличествоПолей + 1;
    КонецЕсли;

    Возврат КоличествоПолей;

    КонецФункции // ВывестиПолеВШапку()

    // Процедура выводит поле в отчет.
    //
    // Параметры:
    // ДопПоле - поле, которое нужно вывести.
    // РезультатЗапроса - результат запроса.
    // Секция - выводимая секция.
    //
    Процедура ВывестиПолеВОтчет(ДопПоле, Выборка, Знач Секция)

    Если мСпециальныеПоля[ДопПоле] = 0 Тогда // "МестоХранения"
    ВыборкаДопПоле = Выборка.Выбрать(ОбходРезул ьтатаЗапроса.ПоГруппировк� �м, "Приоритет", "Все");
    Пока ВыборкаДопПоле.Следующий() Цикл
    Секция.Параметры.ЗначениеД опПоля = ВыборкаДопПоле[ДопПоле];
    Секция.ТекущаяОбласть.Гори зонтальноеПоложение = ТаблицаНастройкиПолейПеча ть.Найти(ДопПоле, "Имя").Выравнивание;
    мТабДок.Присоединить(Секци я);
    КонецЦикла;
    ИначеЕсли мСпециальныеПоля[ДопПоле] = 1 Тогда // "Остаток"
    Секция = мМакет.ПолучитьОбласть("Сп� �сок|ДопПолеОстаток");

    ВыборкаДопПоле = Выборка.Выбрать(ОбходРезул ьтатаЗапроса.ПоГруппировк� �м, "Склад", "Все");
    Пока ВыборкаДопПоле.Следующий() Цикл
    Секция.Параметры.ЗначениеД опПоля = ВыборкаДопПоле.Остаток;
    Секция.ТекущаяОбласть.Гори зонтальноеПоложение = ТаблицаНастройкиПолейПеча ть.Найти(ДопПоле, "Имя").Выравнивание;
    мТабДок.Присоединить(Секци я);
    КонецЦикла;
    Иначе
    Если мПоляСПредставлениями[ДопПоле] = Неопределено Тогда
    ПредставлениеПоля = Выборка[ДопПоле];
    Иначе
    ПредставлениеПоля = Выборка[ДопПоле + "Представление"];
    КонецЕсли;

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

    КонецПроцедуры // ВывестиПолеВОтчет()

    // Процедура выводит пустое поле в отчет.
    //
    // Параметры:
    // ДопПоле - поле, которое нужно вывести.
    // РезультатЗапроса - результат запроса.
    // Секция - выводимая секция.
    //
    Процедура ВывестиПустоеПолеВОтчет(Д� �пПоле, Выборка, Знач Секция)

    Если мСпециальныеПоля[ДопПоле] = 0 Тогда // "МестоХранения"
    ВыборкаДопПоле = Выборка.Выбрать(ОбходРезул ьтатаЗапроса.ПоГруппировк� �м, "Приоритет", "Все");
    Пока ВыборкаДопПоле.Следующий() Цикл
    Секция.Параметры.ЗначениеД опПоля = "";
    мТабДок.Присоединить(Секци я);
    КонецЦикла;
    ИначеЕсли мСпециальныеПоля[ДопПоле] = 1 Тогда // "Остаток"
    Секция = мМакет.ПолучитьОбласть("Сп� �сокГруппа|ДопПолеОстаток") ;

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

    КонецПроцедуры // ВывестиПустоеПолеВОтчет()

    // Процедура устанавливает ширину колонок полей.
    //
    // Параметры:
    // ДопПоле - поле, которое нужно вывести.
    // РезультатЗапроса - результат запроса.
    // Секция - выводимая секция.
    //
    Функция УстановитьШиринуПолей(Доп� �оле, РезультатЗапроса, ТекКолонка)

    Если мСпециальныеПоля[ДопПоле] = 0 Тогда // "МестоХранения"
    КоличествоПолей = 0;
    ВыборкаДопПоле = РезультатЗапроса.Выбрать(О бходРезультатаЗапроса.ПоГ� �уппировкам, "Приоритет", "Все");
    Пока ВыборкаДопПоле.Следующий() Цикл
    мТабДок.Область(, ТекКолонка + КоличествоПолей, , ТекКолонка + КоличествоПолей).ШиринаКол онки = ТаблицаНастройкиПолейПеча ть.Найти(ДопПоле).Ширина;

    КоличествоПолей = КоличествоПолей + 1;
    КонецЦикла;
    ИначеЕсли мСпециальныеПоля[ДопПоле] = 1 Тогда // "Остаток"
    КоличествоПолей = 0;
    ВыборкаДопПоле = РезультатЗапроса.Выбрать(О бходРезультатаЗапроса.ПоГ� �уппировкам, "Склад", "Все");
    Пока ВыборкаДопПоле.Следующий() Цикл
    мТабДок.Область(, ТекКолонка + КоличествоПолей, , ТекКолонка + КоличествоПолей + 1).ШиринаКолонки = ТаблицаНастройкиПолейПеча ть.Найти(ДопПоле).Ширина;

    КоличествоПолей = КоличествоПолей + 1;
    КонецЦикла;
    Иначе
    мТабДок.Область(, ТекКолонка, , ТекКолонка).ШиринаКолонки = ТаблицаНастройкиПолейПеча ть.Найти(ДопПоле).Ширина;

    КоличествоПолей = 1;
    КонецЕсли;

    Возврат КоличествоПолей;

    КонецФункции // УстановитьШиринуПолей()

    // Процедура обновляет построитель отчета.
    // Установленные настройки при этом не изменяются.
    //
    Процедура ОбновитьПостроительОтчета () Экспорт

    Настройки = ПостроительОтчета.Получит� �Настройки();

    ЗаполнитьПостроительОтчет а();

    ПостроительОтчета.Установ� �тьНастройки(Настройки);

    КонецПроцедуры // ОбновитьПостроительОтчета ()

    // Проверяет корректность установленных пользователем настроек.
    //
    // Параметры:
    // Отказ - в этот параметр возвращается значение Истина, если обнаружены ошибки.
    //
    Процедура ПроверитьКорректностьНаст роек(Отказ)

    Если Не ЗначениеЗаполнено(Докумен� �) Тогда
    Предупреждение("Не выбран документ для печати!");
    Отказ = Истина;

    Возврат;
    КонецЕсли;

    //Если СписокСкладов.Количество() = 0 Тогда
    // Предупреждение("Не выбраны склады!");
    // Отказ = Истина;

    // Возврат;
    //КонецЕсли;

    Если КоличествоУровнейМестХран ения = 0 Тогда
    Предупреждение("Не указано количество уровней мест хранения!");
    Отказ = Истина;

    Возврат;
    КонецЕсли;

    КоличествоИзмерений = ПостроительОтчета.Измерен� �яСтроки.Количество() - 1;

    ИзмерениеНоменклатура = ПостроительОтчета.Измерен� �яСтроки.Найти("Номенклатур а");

    Если ИзмерениеНоменклатура = Неопределено Тогда
    Предупреждение("Отсутствуе т обязательная группировка но номенклатуре!");

    Отказ = Истина;
    Возврат;
    КонецЕсли;

    Индекс = ПостроительОтчета.Измерен� �яСтроки.Индекс(ИзмерениеН� �менклатура);

    Если Индекс <> КоличествоИзмерений Тогда
    Предупреждение ("Группировка: ""Номенклатура"" должна быть последней в измерениях строк.");
    ПостроительОтчета.Измерен� �яСтроки.Сдвинуть(Измерени� �Номенклатура, КоличествоИзмерений - Индекс);
    КонецЕсли;

    СоответствиеСтрок = Новый Соответствие;
    Для Каждого СтрокаПостроителя Из ПостроительОтчета.Измерен� �яСтроки Цикл
    Если СоответствиеСтрок[СтрокаПостроителя.ПутьКДа� �ным] = Неопределено Тогда
    СоответствиеСтрок.Вставит� �(СтрокаПостроителя.ПутьКД� �нным, СтрокаПостроителя);
    Иначе
    Предупреждение("Повторяюща яся группировка " + СтрокаПостроителя.Предста� �ление + "." + Символы.ПС +
    "Нельзя использовать одинаковые поля группировки строк!");

    Отказ = Истина;
    Прервать;
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры // ПроверитьКорректностьНаст роек()

    // В текст для построителя отчета вставляет свойства.
    // Скопирована из общего модуля и изменена.
    Процедура ДобавитьВТекстСвойстваЛок ально(ТаблицаПолей, Текст, СтруктураПредставлениеПол ей, мСоответствиеНазначений,
    СтруктураПараметры, ТекстИсточникиСведений="", ТекстПоляКатегорий="",
    ТекстПоляСвойств="", ТекстПоляСгруппироватьПо = "",
    ЗаменятьСвойства = "//СВОЙСТВА", ЗаменятьКатегории = "//КАТЕГОРИИ",
    ЗаменятьСоединения = "//СОЕДИНЕНИЯ", ЗаменятьСгруппироватьПо = "//СГРУППИРОВАТЬПО",
    ИдентификаторыПараметровД ляОтборовПоКатегориям = "", ЗаменятьИтоги = "//ИТОГИ",
    ЗаменятьПредставления = "//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА") Экспорт

    // Добавляемые фрагменты запроса.
    ТекстПоляСвойствДляГруппи ровки = "";
    ТекстИсточникиСведений ="";
    ТекстПоляСвойств = "";
    ТекстПоляСвойствИтоги = "";
    ТекстПоляСвойствПредставл ения = "";

    Индекс = 0;

    СвойстваОбъектов = ПланыВидовХарактеристик.С� �ойстваОбъектов.Выбрать();

    Пока СвойстваОбъектов.Следующи� �() Цикл
    Если СвойстваОбъектов.ЭтоГрупп� � ИЛИ СвойстваОбъектов.ПометкаУ� �аления Тогда
    Продолжить;
    КонецЕсли;

    Поля = ТаблицаПолей.НайтиСтроки(Н овый Структура("Назначение", СвойстваОбъектов.Назначен� �еСвойства));

    Для Каждого Поле из Поля Цикл

    // Для списка всех полей.
    ТекстПоляСвойств = ТекстПоляСвойств + ",
    | Свойство" + Индекс + ".Значение" + " КАК " + "Свойство" + Индекс + "Значение";

    ТекстПоляСвойствИтоги = ТекстПоляСвойствИтоги + ",
    | МИНИМУМ(Свойство" + Индекс + ".Значение)";

    ТекстПоляСвойствПредставл ения = ТекстПоляСвойствПредставл ения + ",
    | Свойство" + Индекс + ".Значение.Представление" + " КАК " + "Свойство" + Индекс + "ЗначениеПредставление";

    ТекстПоляСвойствДляГруппи ровки = ТекстПоляСвойствДляГруппи ровки + ",
    | Свойство" + Индекс + ".Значение";

    // Источник для свойств.
    ТекстИсточникиСведений = ТекстИсточникиСведений + Символы.ПС +
    "{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияС� �ойствОбъектов КАК Свойство" + Индекс + "
    |ПО Свойство" + Индекс + ".Объект = " + Поле.ПутьКДанным + "
    |И Свойство" + Индекс + ".Свойство = &ПараметрСвойство" + Индекс + "}";

    СтруктураПараметры.Встави� �ь("ПараметрСвойство" + Индекс, СвойстваОбъектов.Ссылка);

    СтруктураПредставлениеПол ей.Вставить("Свойство" + Индекс + "Значение", СвойстваОбъектов.Наименов� �ние + " (св-во " + Поле.Представление + ")");

    мСоответствиеНазначений.В� �тавить(СвойстваОбъектов.Н� �именование + " (св-во " + Поле.Представление + ")", СвойстваОбъектов.Ссылка);

    Индекс = Индекс + 1;
    КонецЦикла;
    КонецЦикла;

    Текст = СтрЗаменить(Текст, ЗаменятьСвойства, ТекстПоляСвойств);
    Текст = СтрЗаменить(Текст, ЗаменятьИтоги, ТекстПоляСвойствИтоги);
    Текст = СтрЗаменить(Текст, ЗаменятьПредставления, ТекстПоляСвойствПредставл ения);
    Текст = СтрЗаменить(Текст, ЗаменятьСоединения, ТекстИсточникиСведений);
    Текст = СтрЗаменить(Текст, ЗаменятьСгруппироватьПо, ТекстПоляСвойствДляГруппи ровки);

    КонецПроцедуры // ДобавитьВТекстСвойстваЛок ально()

    // Производит рекурсивный обход выборки,
    // выводит в макет строки из текущей выборки.
    //
    // Параметры:
    // Выборка - текущая выборка.
    // НомерГруппировки - текущий номер группировки строк.
    //
    Процедура ВывестиСтроку(Выборка, НомерГруппировки)

    // Обойдем в цикле переданную выборку.
    Пока Выборка.Следующий() Цикл
    НазваниеГруппировки = Выборка.Группировка();

    ЗначениеГруппировки = Выборка[НазваниеГруппировки];

    Уровень = Выборка.Уровень();
    ЭтоНеИтогПоИерархии = (Выборка.ТипЗаписи() <> ТипЗаписиЗапроса.ИтогПоИе� �архии);

    ЭтоНижнийУровень = (НазваниеГруппировки = "Номенклатура" И ЭтоНеИтогПоИерархии);

    Если мПоляСПредставлениями[НазваниеГруппировки] = Неопределено Тогда
    ПредставлениеГруппировки = Выборка[НазваниеГруппировки];
    Иначе
    ПредставлениеГруппировки = Выборка[НазваниеГруппировки + "Представление"];
    КонецЕсли;

    // Если тип записи - это итог по иерархии,
    // то для вывода будем использовать секции, предназначенные для иерархии.
    Если ЭтоНижнийУровень Тогда
    мНомерСтроки = мНомерСтроки + 1;

    СекцияНачало = мСписокНачало;

    СекцияНачало.Параметры.Ном ерСтроки = мНомерСтроки;

    СекцияНоменклатура = мСписокНоменклатура;
    СекцияДопПоле = мСписокДопПоле;
    Иначе
    СекцияНачало = мСписокГруппаНачало;
    СекцияНоменклатура = мСписокГруппаНоменклатура ;
    СекцияДопПоле = мСписокГруппаДопПоле;
    КонецЕсли;

    СекцияНоменклатура.Параме� �ры.Измерение = ПредставлениеГруппировки;

    Если ЭтоНеИтогПоИерархии Тогда
    СекцияНоменклатура.Параме� �ры.Расшифровка = ЗначениеГруппировки;
    КонецЕсли;

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

    Если ВыборкаЕдиницыИзмерения.В� �с = 0 Тогда
    мВесВведенНеДляВсехТоваро в = Истина;
    Иначе
    мИтогВес = мИтогВес + ВыборкаЕдиницыИзмерения.В� �с;
    КонецЕсли;

    Для Тмп = 1 По мСоответствиеДопПолейДо.К� �личество() Цикл
    ВывестиПолеВОтчет(мСоотве� �ствиеДопПолейДо[Тмп], ВыборкаЕдиницыИзмерения, СекцияДопПоле);
    КонецЦикла;

    СтрокаДопПолейВместе = "";
    Для Тмп = 1 По мКоличествоДопПолейВместе Цикл
    Если Не ПустаяСтрока(Строка(Выборк аЕдиницыИзмерения[мСоответствиеДопПолейВмес те[Тмп]])) Тогда
    Если ПустаяСтрока(СтрокаДопПол� �йВместе) Тогда
    СтрокаДопПолейВместе = СтрокаДопПолейВместе + " (" + ВыборкаЕдиницыИзмерения[мСоответствиеДопПолейВмес те[Тмп]];
    Иначе
    СтрокаДопПолейВместе = СтрокаДопПолейВместе + ", " + ВыборкаЕдиницыИзмерения[мСоответствиеДопПолейВмес те[Тмп]];
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    Если Не ПустаяСтрока(СтрокаДопПол� �йВместе) Тогда
    СекцияНоменклатура.Параме� �ры.Измерение = Строка(СекцияНоменклатура. Параметры.Измерение) + СтрокаДопПолейВместе + ")";
    КонецЕсли;

    мТабДок.Присоединить(Секци яНоменклатура);

    Для Тмп = 1 По мСоответствиеДопПолейПосл е.Количество() Цикл
    ВывестиПолеВОтчет(мСоотве� �ствиеДопПолейПосле[Тмп], ВыборкаЕдиницыИзмерения, СекцияДопПоле);
    КонецЦикла;
    КонецЦикла;
    Иначе
    мТабДок.Вывести(СекцияНача ло, Уровень, , Истина);

    // Для группировок верхних уровней и иерархии выведем
    // пустые ячейки доп. полей.
    Для Тмп = 1 По мСоответствиеДопПолейДо.К� �личество() Цикл
    ВывестиПустоеПолеВОтчет(м� �оответствиеДопПолейДо[Тмп], Выборка, СекцияДопПоле);
    КонецЦикла;

    мТабДок.Присоединить(Секци яНоменклатура);

    Для Тмп = 1 По мСоответствиеДопПолейПосл е.Количество() Цикл
    ВывестиПустоеПолеВОтчет(м� �оответствиеДопПолейПосле[Тмп], Выборка, СекцияДопПоле);
    КонецЦикла;

    // Если тип записи не итог по иерархии,
    // то нужно выбрать следующую группировку.
    Если ЭтоНеИтогПоИерархии Тогда
    ВывестиСтроку(Выборка.Выбр ать(ОбходРезультатаЗапрос� �.ПоГруппировкам, мСоответствиеГруппировок[НомерГруппировки + 1]), НомерГруппировки + 1);
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры // ВывестиСтроку()

    Функция ВосстановитьНастройки() Экспорт

    Перем СохраненнаяНастройка;

    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Встави� �ь("Пользователь" , глЗначениеПеременной("глТе кущийПользователь"));
    СтруктураНастройки.Встави� �ь("ИмяОбъекта" , Строка(ЭтотОбъект));
    СтруктураНастройки.Встави� �ь("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.Наимено� �аниеНастройки));

    Результат = УниверсальныеМеханизмы.Во� �становлениеНастроек(Струк тураНастройки);
    Если Результат <> Неопределено Тогда
    мТекущаяНастройка = Результат;

    ВосстановитьНастройкиИзСт руктуры(мТекущаяНастройка. СохраненнаяНастройка);
    Иначе
    мТекущаяНастройка = СтруктураНастройки;
    КонецЕсли;

    ОбновитьСохраненныеНастро йки();

    КонецФункции // ВосстановитьНастройки()

    // Процедура восстанавливает сохраненные настройки при открытии обработки.
    //
    Процедура ВосстановитьНастройкиПриО ткрытии() Экспорт

    ЗаполнитьПостроительОтчет а();

    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Встави� �ь("Пользователь", глЗначениеПеременной("глТе кущийПользователь"));
    СтруктураНастройки.Встави� �ь("ИмяОбъекта" , Строка(ЭтотОбъект));

    Если УниверсальныеМеханизмы.По� �учитьНастройкуИспользова� �ьПриОткрытии(СтруктураНас тройки) Тогда
    мТекущаяНастройка = СтруктураНастройки;
    ВосстановитьНастройкиИзСт руктуры(СтруктураНастройк� �.СохраненнаяНастройка);
    КонецЕсли;

    ОбновитьСохраненныеНастро йки();

    КонецПроцедуры // ВосстановитьНастройкиПриО ткрытии()

    // Заполняет настройки отчета из структуры сохраненных настроек
    //
    Функция ВосстановитьНастройкиИзСт руктуры(СтруктураСНастрой� �ами) Экспорт

    Перем ТекНастройка;

    Если СтруктураСНастройками.Сво� �ство("НастройкиПостроител� �", ТекНастройка) Тогда
    ПостроительОтчета.Установ� �тьНастройки(ТекНастройка);
    КонецЕсли;

    СтруктураСНастройками.Сво� �ство("ТаблицаНастройкиПол� �йПечать" , ТаблицаНастройкиПолейПеча ть);
    СтруктураСНастройками.Сво� �ство("СписокСкладов" , СписокСкладов);
    СтруктураСНастройками.Сво� �ство("ВыводитьЗаголовок" , ВыводитьЗаголовок);
    СтруктураСНастройками.Сво� �ство("ПоказыватьФорму" , ПоказыватьФорму);
    СтруктураСНастройками.Сво� �ство("ИспользоватьСвойств� �" , ИспользоватьСвойства);
    СтруктураСНастройками.Сво� �ство("КоличествоУровнейМе� �тХранения" , КоличествоУровнейМестХран ения);
    СтруктураСНастройками.Сво� �ство("ПредставленияПриори� �етовМестХранения", ПредставленияПриоритетовМ естХранения);

    КонецФункции // ВосстановитьНастройкиИзСт руктуры()

    Процедура СохранитьНастройки() Экспорт

    Перем СохраненнаяНастройка;

    СохраненнаяНастройка = Новый Структура;
    СформироватьСтруктуруДляС охраненияНастроек(Сохране� �наяНастройка);

    СтруктураНастройки = Новый Структура;
    СтруктураНастройки.Встави� �ь("Пользователь", глЗначениеПеременной("глТе кущийПользователь"));
    СтруктураНастройки.Встави� �ь("ИмяОбъекта", Строка(ЭтотОбъект));
    СтруктураНастройки.Встави� �ь("НаименованиеНастройки", ?(мТекущаяНастройка = Неопределено, Неопределено, мТекущаяНастройка.Наимено� �аниеНастройки));
    СтруктураНастройки.Встави� �ь("СохраненнаяНастройка", СохраненнаяНастройка);
    СтруктураНастройки.Встави� �ь("ИспользоватьПриОткрыти� �", Ложь);
    СтруктураНастройки.Встави� �ь("СохранятьАвтоматически" , Ложь);

    Результат = УниверсальныеМеханизмы.Со� �ранениеНастроек(Структура Настройки);

    Если Результат <> Неопределено Тогда
    мТекущаяНастройка = Результат;
    Иначе
    мТекущаяНастройка = СтруктураНастройки;
    КонецЕсли;

    КонецПроцедуры // СохранитьНастройки()

    // Процедура добавляет колонку в таблицу значений, если ее там нет.
    // Параметры:
    // ТЗ - таблица значений, в которую нужно добавить колонку;
    // ИмяКолонки - имя колонки, которую нужно добавить.
    Процедура ДобавитьКолонкуВТЗ(ТЗ, ИмяКолонки, ЗначениеПоУмолчанию = Неопределено)

    Если ТЗ.Колонки.Найти(ИмяКолонк� �) = Неопределено Тогда
    ТЗ.Колонки.Добавить(ИмяКол� �нки);
    ТЗ.ЗаполнитьЗначения(Значе ниеПоУмолчанию, ИмяКолонки);
    КонецЕсли;

    КонецПроцедуры // ДобавитьКолонкуВТЗ()

    // Процедура обновляет настройки после их восстановления.
    //
    Процедура ОбновитьСохраненныеНастро йки()

    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "Поле");
    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "Псевдоним");
    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "ВыводитьНаПечать");
    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "Положение");
    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "Имя");
    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "ПутьКДанным");
    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "Ширина");
    ДобавитьКолонкуВТЗ(Таблиц� �НастройкиПолейПечать, "Выравнивание", ГоризонтальноеПоложение.А� �то);

    ДобавитьКолонкуВТЗ(Предст� �вленияПриоритетовМестХра� �ения, "Приоритет");
    ДобавитьКолонкуВТЗ(Предст� �вленияПриоритетовМестХра� �ения, "Псевдоним");

    ОбновитьНастройкиПечати();

    КонецПроцедуры // ОбновитьСохраненныеНастро йки()

    // Обновляет таблицу с настройками вывода доп. полей на печать.
    //
    Процедура ОбновитьНастройкиПечати() Экспорт

    КоличествоСтрок = ТаблицаНастройкиПолейПеча ть.Количество() - 1;
    Для Тмп = 0 По КоличествоСтрок Цикл
    СтрокаНастройки = ТаблицаНастройкиПолейПеча ть[КоличествоСтрок - Тмп];
    Если ПостроительОтчета.Выбранн� �еПоля.Найти(СтрокаНастрой� �и.Имя) = Неопределено Тогда
    ТаблицаНастройкиПолейПеча ть.Удалить(СтрокаНастройки );
    КонецЕсли;
    КонецЦикла;

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

    НоваяСтрока.Положение = мСписокПоложенийДляПечати[0].Значение;
    КонецЕсли;
    КонецЦикла;

    КонецПроцедуры // ОбновитьНастройкиПечати()

    // Процедура формирует печатную форму в соответствии с заданными настройками.
    //
    // Параметры:
    //
    //
    Процедура Печать(НаПринтер = Ложь) Экспорт

    Отказ = Ложь;

    ПроверитьКорректностьНаст роек(Отказ);

    Если Отказ Тогда
    ФормаНастройки = ПолучитьФорму();
    Если Не ФормаНастройки.Открыта() Тогда
    мИнициализироватьНастройк иПриОткрытии = Ложь;
    ФормаНастройки.Открыть();
    КонецЕсли;
    КонецЕсли;

    Если Отказ Тогда
    Возврат;
    КонецЕсли;

    РезультатЗапроса = ВыполнитьЗапрос(Новый Структура("НоменклатураПре дставление, ЕдиницаИзмеренияПредставл ение, СкладПредставление"));

    мТабДок = Новый ТабличныйДокумент;
    мТабДок.ИмяПараметровПеча� �и = "Обработки.ПечатьРаскладки НоменклатурыПоМестамХране ния";

    мМакет = ПолучитьМакет("Макет");

    Если ВыводитьЗаголовок Тогда // выведем заголовок
    Секция = мМакет.ПолучитьОбласть("За� �оловок");

    Секция.Параметры.ТекстЗаго ловка = СокрЛП(Документ);
    Секция.Параметры.Склад = СокрЛП(мСклад);
    мТабДок.Вывести(Секция);
    КонецЕсли;

    ОбластьМакета = мМакет.ПолучитьОбласть("По� �упатель");
    ПредставлениеПолучателя = ФормированиеПечатныхФорм.� �писаниеОрганизации("Полно� �Наименование,");
    ОбластьМакета.Параметры.Пр едставлениеПолучателя = ПредставлениеПолучателя;
    мТабДок.Вывести(ОбластьМак ета);

    Секция = мМакет.ПолучитьОбласть("Вр� �мяПечати");
    Секция.Параметры.ВремяПеча ти = "Дата и время печати: " + ТекущаяДата() + ". Пользователь: " + СокрЛП(глЗначениеПеременн� �й("глТекущийПользователь")) ;
    мТабДок.Вывести(Секция);

    Секция = мМакет.ПолучитьОбласть("Ша� �ка|Начало");
    мТабДок.Вывести(Секция);

    Секция = мМакет.ПолучитьОбласть("Ша� �ка|ДопПоле");

    мКоличествоДопПолейДо = 0;
    мСоответствиеДопПолейДо = Новый Соответствие;

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

    мКоличествоДопПолейДо = мКоличествоДопПолейДо + ВывестиПолеВШапку(ДопПоле, РезультатЗапроса, Секция);
    КонецЕсли;
    КонецЦикла;

    мКоличествоДопПолейВместе = 0;
    мСоответствиеДопПолейВмес те = Новый Соответствие;

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

    мКоличествоГруппировок = - 1;
    мСоответствиеГруппировок = Новый Соответствие;

    // Посчитаем группировок количество и запомним соответствие имен.
    ТекстГруппировок = "";
    Для Каждого ГруппировкаСтрок Из мИзмеренияСтроки Цикл
    мКоличествоГруппировок = мКоличествоГруппировок + 1;
    мСоответствиеГруппировок.� �ставить(мКоличествоГруппи ровок, ГруппировкаСтрок.Ключ);
    КонецЦикла;

    Секция = мМакет.ПолучитьОбласть("Ша� �ка|Номенклатура");
    мТабДок.Присоединить(Секци я);

    Секция = мМакет.ПолучитьОбласть("Ша� �ка|ДопПоле");

    мКоличествоДопПолейПосле = 0;
    мСоответствиеДопПолейПосл е = Новый Соответствие;

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

    мКоличествоДопПолейПосле = мКоличествоДопПолейПосле + ВывестиПолеВШапку(ДопПоле, РезультатЗапроса, Секция);
    КонецЕсли;
    КонецЦикла;

    мСписокНачало = мМакет.ПолучитьОбласть("Сп� �сок|Начало");
    мСписокНоменклатура = мМакет.ПолучитьОбласть("Сп� �сок|Номенклатура");
    мСписокДопПоле = мМакет.ПолучитьОбласть("Сп� �сок|ДопПоле");

    мСписокГруппаНачало = мМакет.ПолучитьОбласть("Сп� �сокГруппа|Начало");
    мСписокГруппаНоменклатура = мМакет.ПолучитьОбласть("Сп� �сокГруппа|Номенклатура");
    мСписокГруппаДопПоле = мМакет.ПолучитьОбласть("Сп� �сокГруппа|ДопПоле");

    мНомерСтроки = 0;

    МетаданныеДокумента = Метаданные.Документы[ВидДокументов];

    ЕстьСоставНабора = ОбщегоНазначения.ЕстьТабЧ� �стьДокумента("СоставНабор� �", МетаданныеДокумента);

    мИтогВес = 0;
    мВесВведенНеДляВсехТоваро в = Ложь;

    ВывестиСтроку(РезультатЗа� �роса.Выбрать(ОбходРезульт� �таЗапроса.ПоГруппировкам, мСоответствиеГруппировок[0]), 0);

    ШиринаНоменклатура = мМакет.ПолучитьОбласть("Но� �енклатура").ШиринаТаблицы;
    ШиринаНачало = мМакет.ПолучитьОбласть("На� �ало").ШиринаТаблицы;

    ТекКолонка = ШиринаНачало + 1;
    Для Тмп = 1 По мСоответствиеДопПолейДо.К� �личество() Цикл
    ТекКолонка = ТекКолонка + УстановитьШиринуПолей(мСо� �тветствиеДопПолейДо[Тмп], РезультатЗапроса, ТекКолонка);
    КонецЦикла;

    ТекКолонка = ШиринаНачало + 1 + ШиринаНоменклатура + мКоличествоДопПолейДо;
    Для Тмп = 1 По мСоответствиеДопПолейПосл е.Количество() Цикл
    ТекКолонка = ТекКолонка + УстановитьШиринуПолей(мСо� �тветствиеДопПолейПосле[Тмп], РезультатЗапроса, ТекКолонка);
    КонецЦикла;

    Секция = мМакет.ПолучитьОбласть("Ит� �гоВес");
    Секция.Параметры.ИтогВес = "Общий вес товаров: " + мИтогВес + " " + мЕдиницаИзмеренияВеса + "."
    + ?(мВесВведенНеДляВсехТовар ов, " Вес введен не для всех товаров.", "");
    мТабДок.Вывести(Секция);

    УниверсальныеМеханизмы.На� �ечататьДокумент(мТабДок, , НаПринтер, "Бланк товарного наполнения");

    КонецПроцедуры // Печать()

    // Сохраняет настройки построителя, добавляет служебные поля, получает результат,
    // восстанавливает настройки.
    //
    // Параметры:
    // СлужебныеПоля - структура со служебными полями.
    //
    // Возвращаемое значение - РезультатЗапроса.
    //
    Функция ВыполнитьЗапрос(Служебные� �оля)

    Настройки = ПостроительОтчета.Получит� �Настройки();

    ЗаполнитьПостроительОтчет а();
    ПостроительОтчета.Установ� �тьНастройки(Настройки);

    Для Каждого Поле Из СлужебныеПоля Цикл
    ПостроительОтчета.Доступн� �еПоля.Найти(Поле.Ключ).Поле = Истина;
    ПостроительОтчета.Выбранн� �еПоля.Добавить(Поле.Ключ);
    КонецЦикла;

    ПостроительОтчета.Доступн� �еПоля.Склад.Измерение = Истина;
    ПостроительОтчета.Доступн� �еПоля.Приоритет.Измерение = Истина;
    ПостроительОтчета.Доступн� �еПоля.ЕдиницаИзмерения.Из� �ерение = Истина;

    ПостроительОтчета.Измерен� �яКолонки.Очистить();
    ПостроительОтчета.Измерен� �яКолонки.Добавить("Приорит ет" , ,ТипИзмеренияПостроителяО� �чета.Элементы);
    ПостроительОтчета.Измерен� �яКолонки.Добавить("Склад" , ,ТипИзмеренияПостроителяО� �чета.Элементы);
    ПостроительОтчета.Измерен� �яКолонки.Добавить("Единица Измерения", ,ТипИзмеренияПостроителяО� �чета.Элементы);

    мИзмеренияСтроки = Новый Структура;
    Для Каждого ИзмерениеСтроки Из ПостроительОтчета.Измерен� �яСтроки Цикл
    мИзмеренияСтроки.Вставить( ИзмерениеСтроки.Имя);
    КонецЦикла;

    РезультатЗапроса = ПостроительОтчета.Результ� �т;

    ПостроительОтчета.Установ� �тьНастройки(Настройки);

    ПостроительОтчета.Доступн� �еПоля.Склад.Измерение = Ложь;
    ПостроительОтчета.Доступн� �еПоля.Приоритет.Измерение = Ложь;
    ПостроительОтчета.Доступн� �еПоля.ЕдиницаИзмерения.Из� �ерение = Ложь;

    Для Каждого Поле Из СлужебныеПоля Цикл
    ПостроительОтчета.Доступн� �еПоля.Найти(Поле.Ключ).Поле = Ложь;
    КонецЦикла;

    Возврат РезультатЗапроса;

    КонецФункции // ВыполнитьЗапрос()

    // Функция возвращает массив складов для вывода остатков товаров.
    //
    // Возвращаемое значение:
    // Массив - Массив складов для вывода остатков товаров.
    //
    Функция ПолучитьМассивСкладов()

    МассивСкладов = СписокСкладов.ВыгрузитьЗн� �чения();
    Если МассивСкладов.Найти(мСклад ) = Неопределено Тогда
    МассивСкладов.Добавить(мСк лад);
    КонецЕсли;

    Возврат МассивСкладов;

    КонецФункции // ПолучитьМассивСкладов()

    // Процедура заполняет построитель отчета.
    //
    // Параметры:
    // ИмяМакета -Название макета, в который выводится печатная форма.
    //
    Процедура ЗаполнитьПостроительОтчет а(НеЗаполнятьНастройки = Ложь) Экспорт

    МетаданныеДокумента = Метаданные.Документы[ВидДокументов];

    ИмяДокумента = МетаданныеДокумента.Имя;

    Если мИмяМакета = Неопределено И ОбщегоНазначения.ЕстьРекв� �зитДокумента("СкладОтправ� �тель", МетаданныеДокумента) Тогда
    мИмяМакета = "БланкОтправитель";
    КонецЕсли;

    Если ОбщегоНазначения.ЕстьРекв� �зитДокумента("Склад", МетаданныеДокумента) Тогда
    мИмяРеквизитаСклад = "Склад";
    ИначеЕсли ОбщегоНазначения.ЕстьРекв� �зитДокумента("СкладОрдер", МетаданныеДокумента) Тогда
    мИмяРеквизитаСклад = "СкладОрдер";
    ИначеЕсли ОбщегоНазначения.ЕстьРекв� �зитДокумента("СкладГруппа" , МетаданныеДокумента) Тогда
    мИмяРеквизитаСклад = "СкладГруппа";
    ИначеЕсли мИмяМакета = "БланкОтправитель"
    И ОбщегоНазначения.ЕстьРекв� �зитДокумента("СкладОтправ� �тель", МетаданныеДокумента) Тогда
    мИмяРеквизитаСклад = "СкладОтправитель";
    ИначеЕсли мИмяМакета = "БланкПолучатель"
    И ОбщегоНазначения.ЕстьРекв� �зитДокумента("СкладПолуча� �ель", МетаданныеДокумента) Тогда
    мИмяРеквизитаСклад = "СкладПолучатель";
    КонецЕсли;

    мСклад = Документ[мИмяРеквизитаСклад];

    ЕстьСкладВТабЧасти = ОбщегоНазначения.ЕстьРекв� �зитТабЧастиДокумента("Скл� �д", МетаданныеДокумента, "Товары");
    ЕстьСоставНабора = ОбщегоНазначения.ЕстьТабЧ� �стьДокумента("СоставНабор� �", МетаданныеДокумента);

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

    ПостроительОтчета.Парамет� �ы.Вставить("ТекДокумент" , Документ);
    ПостроительОтчета.Парамет� �ы.Вставить("МассивСклады" , ПолучитьМассивСкладов());
    ПостроительОтчета.Парамет� �ы.Вставить("ДокументРезерв а", ДокументРезерва);

    // Текст запроса для отбора по номенклатуре.
    ТекстЗапросаНоменклатура = "
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |";

    Если ЕстьСоставНабора Тогда
    ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
    | ЕСТЬNULL(ДокСостав.Номенклат ура, Док.Номенклатура) КАК Номенклатура
    |";
    Иначе
    ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
    | Док.Номенклатура КАК Номенклатура
    |";
    КонецЕсли;

    ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
    |ИЗ
    | Документ." + ИмяДокумента + ".Товары КАК Док
    |";

    Если ЕстьСоставНабора Тогда
    ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
    |ЛЕВОЕ СОЕДИНЕНИЕ
    | Документ." + ИмяДокумента + ".СоставНабора КАК ДокСостав
    |ПО
    | ДокСостав.Ссылка = Док.Ссылка
    | И ДокСостав.КлючСтроки = Док.КлючСтроки
    |";
    КонецЕсли;

    ТекстЗапросаНоменклатура = ТекстЗапросаНоменклатура + "
    |ГДЕ
    | Док.Ссылка = &ТекДокумент
    | " + ?(ТолькоНеотсканированныйТ овар, "И Док.Количество <> Док.КоличествоОтсканирова� �ного", "") + "
    |";

    ТекстРодительМестаХранени я = "";
    Для Тмп = 1 По КоличествоУровнейМестХран ения - 1 Цикл
    ТекстРодительМестаХранени я = ТекстРодительМестаХранени я + ".Родитель";
    КонецЦикла;

    ДокументПроведен = Документ.Проведен;

    ТекстЗапроса = "
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ЗапросАдрес.*
    |//СВОЙСТВА
    |//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
    |ИЗ
    | (ВЫБРАТЬ
    | ОсновнаяТаблица.Номенклат� �ра КАК Номенклатура,
    | ОсновнаяТаблица.Номенклат� �ра.Наименование КАК НоменклатураПредставление ,
    | ОсновнаяТаблица.ЕдиницаИз� �ерения КАК ЕдиницаИзмерения,
    | ОсновнаяТаблица.ЕдиницаИз� �ерения.Наименование КАК ЕдиницаИзмеренияПредставл ение,
    | ОсновнаяТаблица.ЕдиницаИз� �ерения.Вес * ОсновнаяТаблица.Количеств� � КАК Вес,
    | ОсновнаяТаблица.Склад КАК СкладОтгрузкиОприходовани я,
    | ОсновнаяТаблица.Количеств� � КАК Количество,
    | ЕСТЬNULL(РегМестаХраненияОс� �овной.МестоХранения" + ТекстРодительМестаХранени я + ", """") КАК МестоХраненияРодитель,
    | ЕСТЬNULL(РегМестаХранения.Ме стоХранения.Наименование, """") КАК МестоХранения,
    | ЕСТЬNULL(РегМестаХранения.Пр иоритет, 0) КАК Приоритет,
    | СпрСклады.Ссылка КАК Склад,
    | СпрСклады.Наименование КАК СкладПредставление,
    | ВЫРАЗИТЬ(((ЕСТЬNULL(ТоварыНаС кладах.КоличествоОстаток, 0)
    | - ЕСТЬNULL(ТоварыВРезервеНаСк� �адах.КоличествоОстаток, 0)
    | - ЕСТЬNULL(ТоварыКПередачеСоС� �ладов.КоличествоОстаток, 0)
    | + ЕСТЬNULL(РезервыПоЗаказу.Кол ичествоОстаток, 0)
    |" + ?(ДокументПроведен, "
    // Движения по документу.
    | + ЕСТЬNULL(ТоварыНаСкладахПоД� �кументу.Количество, 0)
    | - ЕСТЬNULL(ТоварыВРезервеНаСк� �адахПоДокументу.Количеств о, 0)
    | - ЕСТЬNULL(ТоварыКПередачеСоС� �ладовПоДокументу.Количест во, 0)", "") + "
    | ) * ОсновнаяТаблица.Номенклат� �ра.ЕдиницаХраненияОстатко в.Коэффициент
    | / ОсновнаяТаблица.ЕдиницаИз� �ерения.Коэффициент) КАК ЧИСЛО(15, 3)) КАК Остаток
    | ИЗ
    | (ВЫБРАТЬ
    | ДокИсточникПервичный.Скла� � КАК Склад,
    | ДокИсточникПервичный.Номе� �клатура КАК Номенклатура,
    | ДокИсточникПервичный.Един� �цаИзмерения КАК ЕдиницаИзмерения,
    | ДокИсточникПервичный.Коли� �ество КАК Количество,
    | МИНИМУМ(ЕСТЬNULL(РегМестаХра нения.Приоритет, 0)) КАК МинПриоритет
    | ИЗ
    | (ВЫБРАТЬ
    | " + ?(ЕстьСкладВТабЧасти, "ТЧТовары.Склад", "Документ." + мИмяРеквизитаСклад) + " КАК Склад,";

    Если ЕстьСоставНабора Тогда
    ТекстЗапроса = ТекстЗапроса + "
    | ЕСТЬNULL(ТЧСоставНабора.Номе нклатура, ТЧТовары.Номенклатура) КАК Номенклатура,
    | ЕСТЬNULL(ТЧСоставНабора.Един ицаИзмерения, ТЧТовары.ЕдиницаИзмерения) КАК ЕдиницаИзмерения,
    | СУММА(ЕСТЬNULL(ТЧСоставНабор а.Количество * ТЧТовары.Количество"
    + ?(ТолькоНеотсканированныйТ овар, " - ТЧСоставНабора.Количество� �тсканированного", "")
    + ", ТЧТовары.Количество" + ?(ТолькоНеотсканированныйТ овар, " - ТЧТовары.КоличествоОтскан� �рованного", "") + ")) КАК Количество
    |";
    Иначе
    ТекстЗапроса = ТекстЗапроса + "
    | ТЧТовары.Номенклатура КАК Номенклатура,
    | ТЧТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    | СУММА(ТЧТовары.Количество" + ?(ТолькоНеотсканированныйТ овар, " - ТЧТовары.КоличествоОтскан� �рованного", "") + ") КАК Количество
    |";
    КонецЕсли;

    ТекстЗапроса = ТекстЗапроса + "
    | ИЗ
    | Документ." + ИмяДокумента + " КАК Документ
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ." + ИмяДокумента + ".Товары КАК ТЧТовары
    | ПО ТЧТовары.Ссылка = Документ.Ссылка";


    Если ЕстьСоставНабора Тогда
    ТекстЗапроса = ТекстЗапроса + "
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ." + ИмяДокумента + ".СоставНабора КАК ТЧСоставНабора
    | ПО ТЧСоставНабора.Ссылка = Документ.Ссылка
    | И ТЧСоставНабора.КлючСтроки = ТЧТовары.КлючСтроки
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
    | ПО (СправочникНоменклатура.Сс ылка = ТЧТовары.Номенклатура)";
    Иначе
    ТекстЗапроса = ТекстЗапроса + "
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
    | ПО (СправочникНоменклатура.Сс ылка = ТЧТовары.Номенклатура)";
    КонецЕсли;

    ТекстЗапроса = ТекстЗапроса + "
    | ГДЕ
    | Документ.Ссылка В(&ТекДокумент)
    | " + ?(ТолькоНеотсканированныйТ овар, "И ТЧТовары.Количество <> ТЧТовары.КоличествоОтскан� �рованного", "") + "
    |
    | СГРУППИРОВАТЬ ПО
    | " + ?(ЕстьСкладВТабЧасти, "ТЧТовары.Склад", "Документ." + мИмяРеквизитаСклад) + ",";

    Если ЕстьСоставНабора Тогда
    ТекстЗапроса = ТекстЗапроса + "
    | ЕСТЬNULL(ТЧСоставНабора.Номе нклатура, ТЧТовары.Номенклатура),
    | ЕСТЬNULL(ТЧСоставНабора.Един ицаИзмерения, ТЧТовары.ЕдиницаИзмерения) ) КАК ДокИсточникПервичный";
    Иначе
    ТекстЗапроса = ТекстЗапроса + "
    | """",
    | ТЧТовары.Номенклатура,
    | ТЧТовары.ЕдиницаИзмерения) КАК ДокИсточникПервичный";
    КонецЕсли;

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

    // Соответствие имен полей в запросе и их представлений в отчете.
    СтруктураПредставлениеПол ей = Новый Структура(
    "Номенклатура, ЕдиницаИзмерения, Остаток, МестоХранения , МестоХраненияРодитель, СкладОтгрузкиОприходовани я",
    "Номенклатура", "Ед. изм.", "Cвободный остаток", "Место хранения", "Родитель мест хранения", "Склад отгрузки (оприходования)");

    Если ИспользоватьСвойства Тогда
    ТекстПоляСвойств = "";

    ТаблицаПолей = Новый ТаблицаЗначений;
    ТаблицаПолей.Колонки.Добав ить("ПутьКДанным"); // описание поля запроса поля, для которого добавляются свойства. Используется в условии соединения с регистром сведений, хранящим значения свойств.
    ТаблицаПолей.Колонки.Добав ить("Представление");// представление поля, для которого добавляются свойства.
    ТаблицаПолей.Колонки.Добав ить("Назначение"); // назначение свойств объектов для данного поля.
    ТаблицаПолей.Колонки.Добав ить("ТипЗначения"); // тип значения поля, для которого добавляются свойства. Используется, если не установлено назначение.

    СтрокаТаблицы = ТаблицаПолей.Добавить();
    СтрокаТаблицы.ПутьКДанным = "Номенклатура";
    СтрокаТаблицы.Представлен� �е = "Номенклатура";
    СтрокаТаблицы.Назначение = ПланыВидовХарактеристик.Н� �значенияСвойствКатегорий� �бъектов.Справочник_Номенк� �атура;

    ТекСоответствиеНазначений = Новый Соответствие;

    ДобавитьВТекстСвойстваЛок ально(ТаблицаПолей, ТекстЗапроса, СтруктураПредставлениеПол ей,
    ТекСоответствиеНазначений , ПостроительОтчета.Парамет� �ы, , , ТекстПоляСвойств);

    УправлениеОтчетами.Добави� �ьВТекстСВойстваОбщие(Текс тЗапроса, ТекстПоляСвойств, "//ОБЩИЕ_СВОЙСТВА");
    КонецЕсли;

    ПостроительОтчета.Текст = ТекстЗапроса;

    Если НеЗаполнятьНастройки Тогда
    Возврат;
    КонецЕсли;

    ПостроительОтчета.Заполни� �ьНастройки();

    // Создадим список полей, доступных для выбора.
    СоответствиеДоступныхПоле й = Новый Соответствие;
    СоответствиеДоступныхПоле й.Вставить("ЕдиницаИзмерен� �я", 0);
    СоответствиеДоступныхПоле й.Вставить("Остаток" , 0);
    СоответствиеДоступныхПоле й.Вставить("МестоХранения" , 0);
    СоответствиеДоступныхПоле й.Вставить("Количество" , 0);
    СоответствиеДоступныхПоле й.Вставить("Вес" , 0);
    СоответствиеДоступныхПоле й.Вставить("Номенклатура" , 0);

    Для Каждого ДоступноеПоле Из ПостроительОтчета.Доступн� �еПоля Цикл
    Если СоответствиеДоступныхПоле й[ДоступноеПоле.Имя] = Неопределено
    И Найти(ДоступноеПоле.Имя, "Свойство") = 0 Тогда
    ДоступноеПоле.Поле = Ложь;
    Иначе
    ДоступноеПоле.Поле = Истина;
    КонецЕсли;
    КонецЦикла;

    ПостроительОтчета.Доступн� �еПоля.Склад.Измерение = Ложь;
    ПостроительОтчета.Доступн� �еПоля.Приоритет.Измерение = Ложь;
    ПостроительОтчета.Доступн� �еПоля.ЕдиницаИзмерения.Из� �ерение = Ложь;

    ПостроительОтчета.Измерен� �яСтроки.Очистить();
    ПостроительОтчета.Измерен� �яСтроки.Добавить("СкладОтг рузкиОприходования", ,ТипИзмеренияПостроителяО� �чета.Элементы);
    ПостроительОтчета.Измерен� �яСтроки.Добавить("МестоХра ненияРодитель", ,ТипИзмеренияПостроителяО� �чета.Элементы);
    ПостроительОтчета.Измерен� �яСтроки.Добавить("Номенкла тура", ,ТипИзмеренияПостроителяО� �чета.Элементы);

    ПостроительОтчета.Выбранн� �еПоля.Очистить();
    ПостроительОтчета.Выбранн� �еПоля.Добавить("Количество ");
    ПостроительОтчета.Выбранн� �еПоля.Добавить("ЕдиницаИзм ерения");
    ПостроительОтчета.Выбранн� �еПоля.Добавить("МестоХране ния");
    ПостроительОтчета.Выбранн� �еПоля.Добавить("Остаток");
    ПостроительОтчета.Выбранн� �еПоля.Добавить("Вес");

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

    // Вызовем стандартную процедуру заполнения представлений.
    УправлениеОтчетами.Заполн� �тьПредставленияПолей(Стру ктураПредставлениеПолей, ПостроительОтчета);

    КонецПроцедуры // ЗаполнитьПостроительОтчет а()

    мТекущаяНастройка = Новый Структура;
    мТекущаяНастройка.Вставит� �("ИмяОбъекта" , Строка(ЭтотОбъект));
    мТекущаяНастройка.Вставит� �("Пользователь" , глЗначениеПеременной("глТе кущийПользователь"));
    мТекущаяНастройка.Вставит� �("НаименованиеНастройки" , "");
    мТекущаяНастройка.Вставит� �("ИспользоватьПриОткрытии" , Ложь);
    мТекущаяНастройка.Вставит� �("СохранятьАвтоматически" , Ложь);
    мТекущаяНастройка.Вставит� �("СохраненнаяНастройка" , Неопределено);

    мСпециальныеПоля = Новый Соответствие;
    мСпециальныеПоля.Вставить( "МестоХранения", 0);
    мСпециальныеПоля.Вставить( "Остаток" , 1);

    мИнициализироватьНастройк иПриОткрытии = Истина;

    мСписокПоложенийДляПечати = Новый СписокЗначений;
    мСписокПоложенийДляПечати .Добавить("После номенклатуры");
    мСписокПоложенийДляПечати .Добавить("До номенклатуры");
    мСписокПоложенийДляПечати .Добавить("Вместе с номенклатурой");

    мЕдиницаИзмеренияВеса = СокрЛП(Константы.ЕдиницаИз меренияВеса.Получить());

    мПоляСПредставлениями = Новый Соответствие;
    мПоляСПредставлениями.Вст� �вить("Номенклатура" , 0);
    мПоляСПредставлениями.Вст� �вить("ЕдиницаИзмерения", 1);
    мПоляСПредставлениями.Вст� �вить("Склад" , 2);

    #КонецЕсли

  9. #7
    Пришел за помощью
    Аватар для Poluk
    Регистрация
    21.05.2013
    Адрес
    Москва
    Сообщений
    43
    Сказал(а) спасибо
    4
    Поблагодарили 2 раз(а) в 2 сообщениях

    По умолчанию

    что бы полностью разобраться во всем и перевести обработку на 8.3 необходимо значительное время. Могу заняться этим, но только в рамках своей профессиональной деятельности. Если интересно, то обращайтесь в личку.

  10. #8
    Гость форума

    Регистрация
    19.09.2013
    Сообщений
    4
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию

    Цитата Сообщение от Perefly Посмотреть сообщение
    Спасибо, что откликнулись, сделала, как сказали убрали кавычки. Теперь другая проблема, пишет Не удалось определить значение параметра организации: ПолноеНаименование, ИНН, ОГРН и тд
    Интересно кто-то прочитал вдумчиво эту "простыню".

  11. #9
    Пришел за помощью
    Аватар для Poluk
    Регистрация
    21.05.2013
    Адрес
    Москва
    Сообщений
    43
    Сказал(а) спасибо
    4
    Поблагодарили 2 раз(а) в 2 сообщениях

    По умолчанию

    )))) Ага, и еще при этом разобрался почему ошибки вылетают...)

Похожие темы

  1. Нужна помощь в создании отчета!!!!
    от Poluk в разделе Конфигурирование, программирование 1С - Предприятие
    Ответов: 24
    Последнее сообщение: 30.09.2013, 12:54
  2. Нужна помощь!)
    от Дарина90 в разделе Железо (hardware)
    Ответов: 0
    Последнее сообщение: 30.03.2013, 18:36
  3. Нужна помощь!!!
    от kedyan в разделе Общие вопросы
    Ответов: 2
    Последнее сообщение: 17.01.2008, 00:52

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •