Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Копия документа ОприходованиеТоваров , Пытаюсь сделать точную копию документа. Результат - нет проводок          
Lexveritas Подменю пользователя
сообщение 14.04.17, 13:11
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

УПП 1.3 РАУЗ, ФИФО. 1С8.3.10

Пытаюсь сделать копию документа ОприходованиеТоваров.

Задача примерно вот такая - ОприходованиеТоваров позиционировать как "Оприходование сырья и материалов" со всеми его стандартными проводками. Сделавши с него копию присвоить имя "Оприходование готовой продукции такго-то цеха" со всеми его стандартными проводками, но добавить туда еще несколько полей, и движений по регистрам. Скопировал. Система его обозвала "ОприходованиеТоваров1" имя не критично, пусть его хоть макаками назовет. Строки, заполнение, основания и движения по регистрам работают кроме регистров УчетЗатратРегл и Хозрасчетный.

Пробовал победить данную ситуацию путем конструктора движений... Все уже догадались чем закончилось... Регистры ТоварыНаСкладах и все остальные регистры нормально. Учета затрат и проводок нет.

Когда все счета указываеш вручную, он при проведения документа пишет "невозможно сформировать проводки ТМЦ"

Крик души!!! ПОМОГИТЕ...

Ту же процедуру придется сделать с еще кучей документов... Я в замешательстве!

Bernet Подменю пользователя
сообщение 14.04.17, 13:26
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 319 раз
Рейтинг: 0

Lexveritas @ Сегодня, 14:11 * ,
Смотрите отладчиком где формируются проводки и почему у вас они не получаются, раз вам выдает ругательство
Цитата
невозможно сформировать проводки ТМЦ
, то посмотрите где в коде есть такое сообщение и отладчиком гляньте по каким условиям Вы туда попадаете. А так телепатически вам вряд ли кто-то поможет, нужно как минимум видеть код, как максимум иметь возможность отладки =)


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Lexveritas Подменю пользователя
сообщение 14.04.17, 13:33
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Bernet @ Сегодня, 14:26 * ,
Код
Перем мУдалятьДвижения;

Перем мВалютаРегламентированногоУчета Экспорт;
Перем мПараметрыСвязиСтрокТЧ Экспорт;

Перем мРазрешитьНулевыеЦеныВРознице Экспорт;
Перем Качество;

////////////////////////////////////////////////////////////////////////////////
// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ ДОКУМЕНТА

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

// Функция печатает ценники.
//
Функция ПечатьЦенников()

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

    Запрос.УстановитьПараметр("Док", Ссылка);

    ОбработкаПечатьЦенников = Обработки.ПечатьЦенников.Создать();
    ОбработкаПечатьЦенников.Товары.Загрузить(Запрос.Выполнить().Выгрузить());

    СтруктураПараметров = Новый Структура;

    Если Склад.ВидСклада <> Перечисления.ВидыСкладов.НТТ Тогда
        СтруктураПараметров.Вставить("ЗаполнитьЦены", Истина);
    КонецЕсли;

    ФормаПечатьЦенников = ОбработкаПечатьЦенников.ПолучитьФорму("Форма");
    ФормаПечатьЦенников.Параметр = СтруктураПараметров;
    ФормаПечатьЦенников.Открыть();

КонецФункции // ПечатьЦенников()

// Функция формирует табличный документ с печатной формой накладной,
// разработанной методистами
//
// Возвращаемое значение:
//  Табличный документ - печатная форма накладной
//
Функция ПечатьОприходованияТоваров()

    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ВидОперации =  Перечисления.ВидыОперацийОприходованиеТоваров.Оборудование Тогда
        ВыводитьКоды    = Ложь;
        Колонка         = "";
        ТекстКодАртикул = "Код";
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
        ВыводитьКоды    = Истина;
        Колонка         = "Артикул";
        ТекстКодАртикул = "Артикул";
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
        ВыводитьКоды    = Истина;
        Колонка         = "Код";
        ТекстКодАртикул = "Код";
    Иначе
        ВыводитьКоды    = Ложь;
        Колонка         = "";
        ТекстКодАртикул = "Код";
    КонецЕсли;

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

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

    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

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

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

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ОприходованиеТоваров_Накладная";
    Макет       = ПолучитьМакет("Накладная");

    // печать производится на языке, указанном в настройках пользователя
    КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
    Макет.КодЯзыкаМакета = КодЯзыкаПечать;

    
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.Дата,,,КодЯзыкаПечать);    
    
    // Выводим шапку накладной
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка,  НСтр("ru='Оприходование излишков товаров';uk='Оприбуткування надлишків товарів'",КодЯзыкаПечать),КодЯзыкаПечать);
    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ОбластьМакета.Параметры.Заполнить(Шапка);    
    ОбластьМакета.Параметры.ПредставлениеПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ПолноеНаименование,",,КодЯзыкаПечать);
    ОбластьМакета.Параметры.РеквизитыПокупателя     = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "КодПоЕДРПОУ,",,КодЯзыкаПечать);    
    
    // Вывести табличную часть
    ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
    Если ВыводитьКоды Тогда
        ОбластьМакета.Параметры.Колонка = Колонка;
    КонецЕсли;

    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);
    ИтогоСумма    = 0;

    Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

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

        ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
        ОбластьМакета.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
        ОбластьМакета.Параметры.Товар = СокрП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары);

        Если ВыводитьКоды Тогда
            ОбластьМакета.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
        КонецЕсли;

        ТабДокумент.Вывести(ОбластьМакета);

        ИтогоСумма = ИтогоСумма + ВыборкаСтрокТовары.Сумма;
    КонецЦикла;

    // Вывести Итого
    ОбластьМакета                 = Макет.ПолучитьОбласть("Итого");
        ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(ИтогоСумма);
    ТабДокумент.Вывести(ОбластьМакета);

    // Вывести Сумму прописью
    ОбластьМакета                          = Макет.ПолучитьОбласть("СуммаПрописью");
    ОбластьМакета.Параметры.ИтоговаяСтрока =  НСтр("ru='Всего наименований ';uk='Всього найменувань '",КодЯзыкаПечать) + ЗапросТовары.Количество()
                                             +  НСтр("ru=', на сумму ';uk=', на суму '",КодЯзыкаПечать) + ОбщегоНазначения.ФорматСумм(ИтогоСумма, Шапка.ВалютаРегламентированногоУчета)+ ".";
    
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(ИтогоСумма, Шапка.ВалютаРегламентированногоУчета, КодЯзыкаПечать);
    ТабДокумент.Вывести(ОбластьМакета);

    // Вывести подписи
    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ТабДокумент.Вывести(ОбластьМакета);
    
    МестВсего = ЗапросТовары.Итог("КоличествоМест");
    
    Если МестВсего = 0 Тогда
        УниверсальныеМеханизмы.СкрытьКолонкиВТабличномДокументе(ТабДокумент, НСтр("ru='Мест';uk='Місць'", КодЯзыкаПечать), 6, ОбластьШапки);
    КонецЕсли;


    Возврат ТабДокумент;

КонецФункции // ПечатьОприходованияТоваров()

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

    Если ЭтоНовый() Тогда
        Предупреждение("Документ можно распечатать только после его записи");
        Возврат;
    ИначеЕсли Не УправлениеДопПравамиПользователей.РазрешитьПечатьНепроведенныхДокументов(Проведен) Тогда
        Предупреждение("Недостаточно полномочий для печати непроведенного документа!");
        Возврат;
    КонецЕсли;

    Если Не РаботаСДиалогами.ПроверитьМодифицированность(ЭтотОбъект) Тогда
        Возврат;
    КонецЕсли;

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

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

#КонецЕсли


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

    СтруктураМакетов = Новый Структура("Ведомость", "Накладная на оприходование товаров");
    СтруктураМакетов.Вставить("Ценники", "Ценники на товары");
    СтруктураМакетов.Вставить("СерийныеНомера",     "Список серийных номеров");

    Возврат СтруктураМакетов;

КонецФункции // ПолучитьСтруктуруПечатныхФорм()

// Процедура выполняет заполниение табличной части по инвентаризации Товаров.
//
// Параметры:
//  ДокументОснование - ссылка на документ основание (инвентаризация Товаров).
//
Процедура ЗаполнитьТоварыПоИнвентаризацииТоваровУпр(ДокументОснование) Экспорт

    #Если ВнешнееСоединение Тогда
        Если Товары.Количество() > 0 Тогда
            Товары.Очистить();
        КонецЕсли;
    #КонецЕсли

    ВалютаУпрУчета    = глЗначениеПеременной("ВалютаУправленческогоУчета");
    СтруктураКурса    = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаУпрУчета, Дата);
    КурсУпрУчета      = СтруктураКурса.Курс;
    КратностьУпрУчета = СтруктураКурса.Кратность;

    Запрос = Новый Запрос;

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

    // Заполняем выявленными излишками по инвентраизации, с учетом уже выполненного оприходования
    // по данной инвентаризации. Цены берем из документа инвентраизации.
    // Если розница – заполняем розничную цену.
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Док.Номенклатура,
    |    Док.Номенклатура.ВидНоменклатуры.БланкСтрогогоУчета КАК БСУ,
    |    Док.ЕдиницаИзмерения,
    |    Док.ЕдиницаИзмеренияМест,
    |    Док.Качество,
    |    Док.Коэффициент КАК КоэффициентЕдиницыИнвентаризации,
    |    МАКСИМУМ(Док.Количество - Док.КоличествоУчет) КАК КоличествоОтклонениеИнвентаризации,
    |    СУММА(ВЫБОР
    |            КОГДА ДокОприходование.Количество ЕСТЬ NULL
    |                ТОГДА 0
    |            ИНАЧЕ ДокОприходование.Количество
    |        КОНЕЦ) КАК КоличествоОприходованное,
    |    Док.Цена,
    |    ВЫБОР
    |        КОГДА &НТТ
    |            ТОГДА Док.ЦенаВРознице
    |        ИНАЧЕ 0
    |    КОНЕЦ КАК ЦенаВРознице,
    |    Док.ХарактеристикаНоменклатуры,
    |    Док.СерияНоменклатуры,
    |    МИНИМУМ(Док.НомерСтроки) КАК НомерСтроки
    |ИЗ
    |    Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК Док
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОприходованиеТоваров.Товары КАК ДокОприходование
    |        ПО Док.Номенклатура = ДокОприходование.Номенклатура
    |            И Док.ХарактеристикаНоменклатуры = ДокОприходование.ХарактеристикаНоменклатуры
    |            И Док.СерияНоменклатуры = ДокОприходование.СерияНоменклатуры
    |            И Док.Ссылка.Склад = ДокОприходование.Ссылка.Склад
    |            И (ДокОприходование.Ссылка.ИнвентаризацияТоваровНаСкладе = &ДокументОснованиеСсылка)
    |            И (ДокОприходование.Ссылка.Проведен)
    |            И (ДокОприходование.Ссылка <> &ДокументСсылка)
    |            И (ДокОприходование.ЦенаВРознице = Док.ЦенаВРознице)
    |ГДЕ
    |    Док.Ссылка = &ДокументОснованиеСсылка
    |    И Док.Количество - Док.КоличествоУчет > 0
    |
    |СГРУППИРОВАТЬ ПО
    |    Док.Номенклатура,
    |    Док.Качество,
    |    Док.ХарактеристикаНоменклатуры,
    |    Док.СерияНоменклатуры,
    |    Док.ЕдиницаИзмерения,
    |    Док.ЕдиницаИзмеренияМест,
    |    Док.Коэффициент,
    |    Док.Цена,
    |    Док.ЦенаВРознице
    |
    |УПОРЯДОЧИТЬ ПО
    |    НомерСтроки";

    РезультатЗапроса = Запрос.Выполнить();

    Склад = ДокументОснование.Склад;

    Выборка = РезультатЗапроса.Выбрать();

    СтрокиДобавлены = Ложь;
    Пока Выборка.Следующий() Цикл

        КоличествоОприходовать = Выборка.КоличествоОтклонениеИнвентаризации - Выборка.КоличествоОприходованное;
        Если КоличествоОприходовать <= 0 Тогда
            Продолжить;
        КонецЕсли;

        СтрокиДобавлены = Истина;
        
        СтрокаТабличнойЧасти = ?(Выборка.БСУ, БланкиСтрогогоУчета.Добавить(), Товары.Добавить());    
                
        СтрокаТабличнойЧасти.Номенклатура               = Выборка.Номенклатура;
        СтрокаТабличнойЧасти.ЕдиницаИзмерения           = Выборка.ЕдиницаИзмерения;
        СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест       = Выборка.ЕдиницаИзмеренияМест;
        СтрокаТабличнойЧасти.Коэффициент                = Выборка.КоэффициентЕдиницыИнвентаризации;
        СтрокаТабличнойЧасти.Количество                 = КоличествоОприходовать;          
        СтрокаТабличнойЧасти.Цена                       = Выборка.Цена;
        СтрокаТабличнойЧасти.Качество                   = Выборка.Качество;
        
        // Проверка продублирована, т.к. в слудующих вычислениях
        //  необходимо использовать общие для обеих случаев реквизиты.
        Если НЕ Выборка.БСУ Тогда
            
            СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
            СтрокаТабличнойЧасти.СерияНоменклатуры          = Выборка.СерияНоменклатуры;
            СтрокаТабличнойЧасти.ЦенаВРознице               = Выборка.ЦенаВРознице;
            
            Если Выборка.Номенклатура.ВидВоспроизводства = Перечисления.ВидыВоспроизводстваНоменклатуры.Производство Тогда
                СтрокаТабличнойЧасти.СтатусПартии                = Перечисления.СтатусыПартийТоваров.Продукция;
            Иначе
                СтрокаТабличнойЧасти.СтатусПартии                = Перечисления.СтатусыПартийТоваров.Купленный;
            КонецЕсли;
            
            // Рассчитаем и заполним процент розничной наценки.
            ЦенаРегл = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(СтрокаТабличнойЧасти.Цена, ВалютаУпрУчета,
                       мВалютаРегламентированногоУчета, КурсУпрУчета, 1, КратностьУпрУчета, 1);
                  
            СтрокаТабличнойЧасти.ПроцентРозничнойНаценки = ?(НЕ ЗначениеЗаполнено(СтрокаТабличнойЧасти.Цена), 0,
                                                       100 * (СтрокаТабличнойЧасти.ЦенаВРознице - ЦенаРегл) / ЦенаРегл);
                                                      
        КонецЕсли; // НЕ Выборка.БСУ
        

        ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
        ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

        СтрокаТабличнойЧасти.СуммаРегл = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(СтрокаТабличнойЧасти.Сумма, ВалютаУпрУчета,
                                         мВалютаРегламентированногоУчета, КурсУпрУчета, 1, КратностьУпрУчета, 1);
                                        
        //номинальные реквизиты необходимо вычислять только после подсчета суммы                                
        Если Выборка.БСУ Тогда
            СтрокаТабличнойЧасти.ЦенаНоминальная = ОбработкаТабличныхЧастей.БСУПолучитьЦенуНоминальную(СтрокаТабличнойЧасти.Номенклатура, Дата);
            ОбработкаТабличныхЧастей.БСУРассчитатьНоминальныеРеквизитыТЧ(СтрокаТабличнойЧасти, ЭтотОбъект);
        КонецЕсли; // Выборка.БСУ

    КонецЦикла;
    #Если Клиент Тогда

    Если ( (НЕ Товары.Количество()) И (НЕ БланкиСтрогогоУчета.Количество()) ) Тогда
            Сообщить("В документе """ + ДокументОснование.Метаданные().Представление() + """ № " + ДокументОснование.Номер +" отсутствуют товары фактическое количество которых превышает учетное.");
    КонецЕсли;

    #КонецЕсли

КонецПроцедуры // ЗаполнитьТоварыПоИнвентаризацииТоваров()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ОБЕСПЕЧЕНИЯ РАБОТЫ ФОРМ

//Выполняет заполнение счетов учета в переданной строке табличной части
//
Процедура ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТЧ, ИмяТабЧасти, ЗаполнятьБУ) Экспорт

    ЗаполнитьСчетаУчетаВТабЧасти(СтрокаТЧ, ИмяТабЧасти, ЗаполнятьБУ);
    
КонецПроцедуры // ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл()

// Заполняет счета БУ и НУ в табличной части документа
//
Процедура ЗаполнитьСчетаУчетаВТабЧасти(ТабличнаяЧасть, ИмяТабЧасти, ЗаполнятьБУ) Экспорт

    СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаТабличнойЧасти(ИмяТабЧасти, ТабличнаяЧасть, ЭтотОбъект, ЗаполнятьБУ);

КонецПроцедуры // ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл()

Процедура ЗаполнитьСчетаУчетаВТабЧастиРегл(ИмяТабЧасти, ЗаполнятьБУ) Экспорт

    Для Каждого СтрокаТЧ Из ЭтотОбъект[ИмяТабЧасти] Цикл
        
        ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТЧ, ИмяТабЧасти, ЗаполнятьБУ);
        
    КонецЦикла

КонецПроцедуры // ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ОБЕСПЕЧЕНИЯ ПРОВЕДЕНИЯ ДОКУМЕНТА

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

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

    // Переименуем колонку "Сумма" в "Стоимость" (как в регистрах).
    ТаблицаТоваров.Колонки.Сумма.Имя = "Стоимость";

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

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

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

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

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

Процедура ПодготовитьТаблицуТоваровРегл(ТаблицаТоваров, СтруктураШапкиДокумента)
    
КонецПроцедуры

// Выгружает результат запроса в табличную часть, добавляет ей необходимые колонки для проведения.
//
// Параметры:
//  РезультатЗапросаПоТаре  - результат запроса по табличной части "ВозвратнаяТара",
//  СтруктураШапкиДокумента - выборка по результату запроса по шапке документа.
//
// Возвращаемое значение:
//  Сформированная таблица значений.
//
// Проверяет правильность заполнения шапки документа.
// Если какой-то из реквизитов шапки, влияющий на проведение не заполнен или
// заполнен не корректно, то выставляется флаг отказа в проведении.
// Проверяется также правильность заполнения реквизитов ссылочных полей документа.
// Проверка выполняется по объекту и по выборке из результата запроса по шапке.
//
// Параметры:
//  СтруктураШапкиДокумента - выборка из результата запроса по шапке документа,
//  Отказ                   - флаг отказа в проведении,
//  Заголовок               - строка, заголовок сообщения об ошибке проведения.
//
Процедура ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок)

    // Укажем, что надо проверить:
    СтруктураОбязательныхПолей = Новый Структура("ВидОперации, Организация, Склад");

    ДополнитьСтруктуруОбязательныхПолейШапкиРегл(СтруктураШапкиДокумента, Отказ, Заголовок, СтруктураОбязательныхПолей);

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

КонецПроцедуры // ПроверитьЗаполнениеШапки()

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

    Если СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете Тогда
        СтруктураОбязательныхПолей.Вставить("СчетКт");
    КонецЕсли;

КонецПроцедуры

// Проверяет правильность заполнения строк табличной части "Товары".
//
// Параметры:
// Параметры:
//  ТаблицаПоТоварам        - таблица значений, содержащая данные для проведения и проверки ТЧ Товары
//  СтруктураШапкиДокумента - выборка из результата запроса по шапке документа,
//  Отказ                   - флаг отказа в проведении.
//  Заголовок               - строка, заголовок сообщения об ошибке проведения.
//
Процедура ПроверитьЗаполнениеТабличнойЧастиТовары(ТаблицаПоТоварам, СтруктураШапкиДокумента, Отказ, Заголовок)

    ИмяТабличнойЧасти = "Товары";

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

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

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

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

    // Здесь услуг быть не должно.
    УправлениеЗапасами.ПроверитьЧтоНетУслуг(ЭтотОбъект, "Товары", ТаблицаПоТоварам, Отказ, Заголовок);

    // Здесь наборов быть не должно.
    УправлениеЗапасами.ПроверитьЧтоНетНаборов(ЭтотОбъект, "Товары", ТаблицаПоТоварам, Отказ, Заголовок);

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

КонецПроцедуры // ПроверитьЗаполнениеТабличнойЧастиТовары()

// Проверяет правильность заполнения строк табличной части "БланкиСтрогогоУчета".
//
// Параметры:
// Параметры:
//  ТаблицаПоБланкам        - таблица значений, содержащая данные для проведения и проверки ТЧ БланкиСтрогогоУчета
//  СтруктураШапкиДокумента - выборка из результата запроса по шапке документа,
//  Отказ                   - флаг отказа в проведении.
//  Заголовок               - строка, заголовок сообщения об ошибке проведения.
//
Процедура ПроверитьЗаполнениеТабличнойЧастиБланкиСтрогогоУчета(ТаблицаПоБланкам, СтруктураШапкиДокумента, Отказ, Заголовок)

    ИмяТабличнойЧасти = "БланкиСтрогогоУчета";

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

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

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

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

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

    ДвиженияПоРегиструТоварыОрганизаций(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, Отказ, Заголовок);
    ДвиженияПоРегиструТоварыОрганизацийРегл(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, Отказ, Заголовок);
    ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, Отказ, Заголовок);
    ДвиженияПоРегистрамРегл(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, Отказ, Заголовок);

КонецПроцедуры // ТоварыИТараПоРегистрамОстатковИПартий()

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

    НаборДвижений = Движения.ТоварыОрганизаций;

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

    // Заполним таблицу движений.
    ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам, ТаблицаДвижений);

    // Недостающие поля.
    ТаблицаДвижений.ЗаполнитьЗначения(Организация, "Организация");
    ТаблицаДвижений.ЗаполнитьЗначения(Неопределено,"Комиссионер");

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

    Если Не Отказ Тогда
        Движения.ТоварыОрганизаций.ВыполнитьПриход();
    КонецЕсли;
    
КонецПроцедуры

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

    НаборДвижений = Движения.ТоварыОрганизацийРегл;

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

    // Заполним таблицу движений.
    ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам, ТаблицаДвижений);

    // Недостающие поля.
    ТаблицаДвижений.ЗаполнитьЗначения(Организация, "Организация");
    ТаблицаДвижений.ЗаполнитьЗначения(Неопределено,"Комиссионер");

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

    Если Не Отказ Тогда
        Движения.ТоварыОрганизацийРегл.ВыполнитьПриход();
    КонецЕсли;
    
КонецПроцедуры

Процедура ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, Отказ, Заголовок)
    
    Если СтруктураШапкиДокумента.ОтражатьВУправленческомУчете Тогда

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

//        // ТОВАРЫ ПО РЕГИСТРУ ТоварыНаСкладах или ТоварыВНТТ.
//        Если СтруктураШапкиДокумента.ВидСклада = Перечисления.ВидыСкладов.НТТ Тогда
//            НаборДвижений = Движения.ТоварыВНТТ;
//        ИначеЕсли СтруктураШапкиДокумента.ВидСклада = Перечисления.ВидыСкладов.Розничный Тогда
//            НаборДвижений = Движения.ТоварыВРознице;
//        Иначе
//            НаборДвижений = Движения.ТоварыНаСкладах;
//        КонецЕсли;

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

//        // Заполним таблицу движений.
//        ОбщегоНазначения.ЗагрузитьВТаблицуЗначений(ТаблицаПоТоварам, ТаблицаДвижений);

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

//            УправлениеРозничнойТорговлей.ЗаполнитьКолонкуСуммаПродажная(ТаблицаДвижений, ТаблицаПоЦенам);

//            // Проверка наличия продажных цен на приходуемый товар.
//            УправлениеРозничнойТорговлей.ПроверитьЧтоДляРозничныхСкладовЗаполненаСуммаПродажная(ЭтотОбъект, "Товары",
//               ТаблицаДвижений, Отказ, Заголовок);
//        КонецЕсли;

//        НаборДвижений.мПериод          = Дата;
//        НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;

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

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

    Если НЕ СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете Тогда
        Возврат;
    КонецЕсли;
    
    УправлениеЗапасамиПартионныйУчет.ВыполнитьПриходПоРегистрамПартий(
        ?(ДополнительныеСвойства.Свойство("ТаблицаСтаройРегистрацииВПоследовательности"),ДополнительныеСвойства.ТаблицаСтаройРегистрацииВПоследовательности,Неопределено),
        СтруктураШапкиДокумента, Отказ, ТаблицаПоТоварам, , , Ложь, СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете);

    УправлениеЗапасамиПартионныйУчет.СформироватьПроводкиПоПоступлениюТМЦ(СтруктураШапкиДокумента,,ТаблицаПоТоварам,,,,, СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете);
    
    Движения.Хозрасчетный.Записать(ложь);

КонецПроцедуры

Процедура ДополнитьСтруктуруПолейТабличнойЧастиТоварыУпр(СтруктураПолей, СтруктураПростыхПолей)
    
    СтруктураПолей.Вставить("ЦенаВРознице"              , "ЦенаВРознице");
    Если ВидОперации = Перечисления.ВидыОперацийОприходованиеТоваров.ТоварыПродукция
     ИЛИ ВидОперации = Перечисления.ВидыОперацийОприходованиеТоваров.БланкиСтрогогоУчета Тогда
    
        СтруктураПолей.Вставить("Качество"    , "Качество");
        СтруктураПолей.Вставить("СтатусПартии", "СтатусПартии");    
        
    ИначеЕсли ВидОперации = Перечисления.ВидыОперацийОприходованиеТоваров.Оборудование Тогда
        
        СтруктураПростыхПолей.Вставить("Качество"    , Справочники.Качество.Новый);
        СтруктураПростыхПолей.Вставить("СтатусПартии", Перечисления.СтатусыПартийТоваров.Оборудование);    
        
    КонецЕсли;
    
КонецПроцедуры

Процедура ДополнитьСтруктуруПолейТабличнойЧастиТоварыРегл(СтруктураПолей, СтруктураПростыхПолей);
    
    СтруктураПолей.Вставить("СчетУчетаБУ"               , "СчетУчетаБУ");
    СтруктураПолей.Вставить("Забалансовый"              , "СчетУчетаБУ.Забалансовый");
    СтруктураПолей.Вставить("НалоговоеНазначение"       , "НалоговоеНазначение");
    СтруктураПолей.Вставить("ВидДеятельностиНДС"        , "НалоговоеНазначение.ВидДеятельностиНДС");
    СтруктураПолей.Вставить("ВидНалоговойДеятельности"  , "НалоговоеНазначение.ВидНалоговойДеятельности");
    СтруктураПолей.Вставить("СуммаРегл"                  , "СуммаРегл");
    СтруктураПолей.Вставить("СуммаНУ"                   , "СуммаНУ");
    СтруктураПолей.Вставить("НДСВходящий"               , "НДСВходящий");
    СтруктураПолей.Вставить("НДСКредит"                 , "НДСКредит");    
    
КонецПроцедуры

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

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

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ

// Процедура - обработчик события "ОбработкаЗаполнения".
//
Процедура ОбработкаЗаполнения(Основание)

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

        Если Основание.Склад.ВидСклада <> Перечисления.ВидыСкладов.НТТ Тогда
            
            СтруктураКурсаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(глЗначениеПеременной("ВалютаУправленческогоУчета"), Дата);
            КурсДокумента      = СтруктураКурсаДокумента.Курс;
            КратностьДокумента = СтруктураКурсаДокумента.Кратность;
            
        Иначе

            КурсДокумента      = 1;
            КратностьДокумента = 1;
            
        КонецЕсли;

        ИнвентаризацияТоваровНаСкладе = Основание;

        ЗаполнитьТоварыПоИнвентаризацииТоваровУпр(Основание);
        
        //Заполним состав комиссии
        ПервыйЧленКомиссии = Основание.ПервыйЧленКомиссии;
        ВторойЧленКомиссии = Основание.ВторойЧленКомиссии;
        ТретийЧленКомиссии = Основание.ТретийЧленКомиссии;
        ПредседательКомиссии = Основание.ПредседательКомиссии;

    КонецЕсли;
    
    ЗаполнитьСчетаУчетаВТабЧасти(Товары,                 "Товары",                 ОтражатьВБухгалтерскомУчете);
    ЗаполнитьСчетаУчетаВТабЧасти(БланкиСтрогогоУчета,     "БланкиСтрогогоУчета",     ОтражатьВБухгалтерскомУчете);

    // Дабы не допустить ситуации, когда скрытая ТЧ содержит строки.
    Если БланкиСтрогогоУчета.Количество() > 0 Тогда
        ВидОперации = Перечисления.ВидыОперацийОприходованиеТоваров.БланкиСтрогогоУчета;    
    КонецЕсли; // БланкиСтрогогоУчета.Количество()

КонецПроцедуры // ОбработкаЗаполнения()

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

    // Проверка заполнения единицы измерения мест и количества мест
    ОбработкаТабличныхЧастей.ПриЗаписиПроверитьЕдиницуИзмеренияМест(Товары);
    
    // Посчитать суммы документа и записать ее в соответствующий реквизит шапки для показа в журналах
    СуммаДокумента     = Товары.Итог("Сумма")      + БланкиСтрогогоУчета.Итог("Сумма");
    СуммаДокументаРегл = Товары.Итог("СуммаРегл") + БланкиСтрогогоУчета.Итог("СуммаРегл");

    ОбработкаТабличныхЧастей.ЗаполнитьКачествоПоУмолчанию(Товары);
    
    // Удаление неиспользуемых строк табличной части "Серийные номера".
    УчетСерийныхНомеров.УдалитьНеиспользуемыеСтрокиПодчиненнойТЧ(ЭтотОбъект, мПараметрыСвязиСтрокТЧ, "Товары");
             
    мУдалятьДвижения = НЕ ЭтоНовый();

КонецПроцедуры // ПередЗаписью

// Процедура формирует структуру шапки документа и дополнительных полей.
//
Процедура ПодготовитьСтруктуруШапкиДокумента(Заголовок, СтруктураШапкиДокумента, Отказ = Ложь) Экспорт
    
    // Дерево значений, содержащее имена необходимых полей в запросе по шапке.
    Перем ДеревоПолейЗапросаПоШапке;

    // Заголовок для сообщений об ошибках проведения.
    Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(Ссылка);

    // Сформируем структуру реквизитов шапки документа
    СтруктураШапкиДокумента = ОбщегоНазначения.СформироватьСтруктуруШапкиДокументаИПроверитьОтражениеВУчете(ЭтотОбъект, Отказ, Заголовок);

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

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

    Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам;
    
    // таблицы движений
    Перем ТаблицаПоБланкам;

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

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

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

КонецПроцедуры // ОбработкаПроведения()

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

КонецПроцедуры


мВалютаРегламентированногоУчета = глЗначениеПеременной("ВалютаРегламентированногоУчета");

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

мРазрешитьНулевыеЦеныВРознице = УправлениеДопПравамиПользователей.РазрешитьНулевыеЦеныВРознице();


Код стандартный. Его никто не менял. Добавил еще один регистр, по нему движения идут... Проводки и Учет Затрат нет... Еще раз напомню что это точная копия работающего документа!


Сообщение отредактировал logist - 14.04.17, 13:48

Petre Подменю пользователя
сообщение 14.04.17, 13:39
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Lexveritas @ Сегодня, 13:33 * ,
Знаете, что такое подписка на событие?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Lexveritas Подменю пользователя
сообщение 14.04.17, 14:15
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

Petre @ Сегодня, 14:39 * ,
Понятия не имею что такое подписка на событие. В событиях и близко нет ничего похожего на действия связаные с проводками.

В общем модуле нашел какую то ботву, которая говорит что если ДокументСсылка.ОприходованиеТоваров тогда сформировать проводки и так далее. если документ не равно вывести сообщение "Не удалось сформировать проводки..."

Скопировал строку под свой документ, теперь ошибка "УправлениеЗапасамиПартионныйУчет.Модуль(10679)}: Поле объекта не обнаружено (СчетКт)" Нахрен этот партионный учет... РАУЗ включен. Теперь копаю тут. Сомнения есть что копаю туда куда нужно.

logist Подменю пользователя
сообщение 14.04.17, 16:14
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Почему не выбрали путь - использовать тот же документ добавив вариант при котором туда заносятся дополнительные данные? Это было бы намного проще.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Lexveritas Подменю пользователя
сообщение 14.04.17, 16:20
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ Сегодня, 17:14 * ,
Нет. Такой путь не подойдет.

Lexveritas Подменю пользователя
сообщение 17.04.17, 16:54
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0

logist @ 14.04.17, 17:14 * ,

С проводками вопрос решил. ПРишлось кое что подкоректировать в общем модуле. А, вот проводок по регистру "УчетЗатратРегл" ну никак!
У кого есть какие идеи?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 23:01
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!