Имя: Пароль:
1C
1С v8
В запросе таблица не найдена
,
0 Андрей 2005
 
24.04.17
16:47
Подскажите при формировании выдает ошибку где копать? {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(202)}: Ошибка при вызове метода контекста (Выполнить)     ТЗ=Запрос.Выполнить().Выгрузить(); по причине: {(38, 20)}: Таблица не найдена "РегистрНакопления.НДСпоОСиНМА.Остатки" ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрНакопления.НДСпоОСиНМА.Остатки(
1 lubitelxml
 
24.04.17
16:51
в тексте запроса копать
2 Timon1405
 
24.04.17
16:52
(0)видимо открываете не в той базе
3 Valerianich
 
24.04.17
16:53
(0) Проверь, в дереые конфигурации есть РН НДСпоОСиНМА.
4 k1noshkin
 
24.04.17
16:54
Копать здесь - Таблица не найдена "РегистрНакопления.НДСпоОСиНМА.Остатки"
Это регистр есть в Бухе, по крайней мере в 2.0.
В какой конфигурации обработку запускаешь?
5 Андрей 2005
 
24.04.17
16:58
2_0_66_25
6 Андрей 2005
 
24.04.17
17:01
видимо открываете не в той базе-это как?
7 lubitelxml
 
24.04.17
17:01
(6) не в бухгалтерии, а в зарплате например
8 Андрей 2005
 
24.04.17
17:09
Нет все в бухгалтерии  внешняя обработка делали запрос в январе все работало, сейчас вот выдает
9 Timon1405
 
24.04.17
17:10
значит имя таблицы в конфигурации поменялось.
10 fedoss
 
24.04.17
17:14
В очередном обновлении месяца 2 или 3 назад они удалили из Бухи РН НДСпоСОиНМА.
11 h-sp
 
24.04.17
17:14
(4) что-то вы не в теме. Этот регистр грохнули в БП 2.0. Причем еще в прошлом году.
12 Андрей 2005
 
24.04.17
17:15
Пожалуйста подскажите это как то можно сейчас исправить?
13 h-sp
 
24.04.17
17:16
(12) переписать эту обработку
14 k1noshkin
 
24.04.17
17:20
(11) Открыл просто старую демо-базу версии 2.0.66.3, вот в ней еще был регистр.
15 Андрей 2005
 
24.04.17
17:25
Я попробовал на этом Бухгалтерия предприятия, редакция 2.0 (2.0.66.21)  та же самая ошибка?
16 X Leshiy
 
24.04.17
17:31
(15) Нет там такого регистра.

А что за обработка, он там нужен?
17 Андрей 2005
 
24.04.17
17:38
Перем ВычетПоПриобретеннымЦенностям;
Процедура ЗаполнитьСтроки_ВычетПоПриобретеннымЦенностям(ОтменитьПроведение = Ложь,Сообщать = Истина, СтрокаСообщения = "", ОшибкаЗаполнения = Ложь) Экспорт
    //Если Объект.Проведен Тогда
    //    Если ОтменитьПроведение Тогда
    //        Записать(РежимЗаписиДокумента.ОтменаПроведения);
    //    Иначе
    //        Возврат;
    //    КонецЕсли;
    //КонецЕсли;
    
    УчетнаяПолитикаНУ = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(Объект.Дата, ОшибкаЗаполнения, Объект.Организация);
    
    Если ОшибкаЗаполнения Тогда
        СтрокаСообщения = "Не указаны параметры учетной политики ("+СокрЛП(Объект.Организация)+") на " + Формат(Объект.Дата, "ДЛФ=DD") + Символы.ПС
                        + "Табличное поле «Вычет НДС по приобретенным ценностям» не может быть заполнено автоматически.";
        Если Сообщать Тогда
            ОбщегоНазначения.СообщитьОбОшибке("Документ не заполнен:"+СтрокаСообщения,,Строка(Объект.Ссылка));
        КонецЕсли;
        Возврат;
    КонецЕсли;

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

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

// Вызывается из процедуры ЗаполнитьСтроки_ВычетПоПриобретеннымЦенностям.
// Заполняет ТЧ ВычетПоПриобретеннымЦенностям по данным регистра НДСПредъявленный
Функция ЗаполнитьНДСКВычетуПоДаннымРегистраНДСПредъявленный()

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    НДСПредъявленныйОстатки.Организация,
        |    НДСПредъявленныйОстатки.СчетФактура КАК СчетФактура,
        |    НДСПредъявленныйОстатки.ВидЦенности,
        |    НДСПредъявленныйОстатки.СтавкаНДС,
        |    НДСПредъявленныйОстатки.СчетУчетаНДС,
        |    НДСПредъявленныйОстатки.Поставщик,
        |    НДСПредъявленныйОстатки.ДатаОплаты,
        |    ВЫБОР
        |        КОГДА ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток), 0) = 0
        |            ТОГДА 0
        |        ИНАЧЕ (ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток), 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток, 0)) * ЕСТЬNULL(НДСПредъявленныйОстатки.СуммаБезНДСОстаток, 0) / ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток), 0)
        |    КОНЕЦ КАК СуммаБезНДС,
        |    ВЫБОР
        |        КОГДА ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.НДСОстаток), 0) = 0
        |            ТОГДА 0
        |        ИНАЧЕ (ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.НДСОстаток), 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.НДСОстаток, 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.НДСОстаток, 0)) * ЕСТЬNULL(НДСПредъявленныйОстатки.НДСОстаток, 0) / ЕСТЬNULL(СУММА(НДСПредъявленныйОстаткиИтог.НДСОстаток), 0)
        |    КОНЕЦ КАК НДС,
        |    ЕСТЬNULL(НДСПредъявленныйОстатки.СчетФактура.Дата, &Дата) КАК СчетФактураДата,
        |    НДСПредъявленныйОстатки.ИсправленныйСчетФактура
        |ИЗ
        |    РегистрНакопления.НДСПредъявленный.Остатки(
        |            &ДатаГраница,
        |            Организация = &Организация
        |                И (НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей))
        |                И ВЫБОР
        |                    КОГДА ВидЦенности В (&ВидыЦенностейОплата)
        |                        ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
        |                    КОГДА ВидЦенности В (&ВидыЦенностей_ОплатаПоНДССМР)
        |                        ТОГДА ВЫБОР
        |                                КОГДА ЕСТЬNULL(СчетФактура.Дата, &Дата) < ДАТАВРЕМЯ(2009, 1, 1)
        |                                    ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
        |                                ИНАЧЕ ИСТИНА
        |                            КОНЕЦ
        |                    ИНАЧЕ ИСТИНА
        |                КОНЕЦ
        |                И (НЕ СчетФактура ССЫЛКА Документ.КорректировкаРеализации)) КАК НДСПредъявленныйОстатки
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСпоОСиНМА.Остатки(
        |                &ДатаГраница,
        |                Организация = &Организация
        |                    И НДСВключенВСтоимость = ЛОЖЬ
        |                    И (НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей))
        |                    И НеВлияетНаВычет = ЛОЖЬ) КАК НДСпоОСиНМАОстатки
        |        ПО НДСПредъявленныйОстатки.СчетФактура = НДСпоОСиНМАОстатки.СчетФактура
        |            И НДСПредъявленныйОстатки.ВидЦенности = НДСпоОСиНМАОстатки.ВидЦенности
        |            И НДСПредъявленныйОстатки.СтавкаНДС = НДСпоОСиНМАОстатки.СтавкаНДС
        |            И НДСПредъявленныйОстатки.СчетУчетаНДС = НДСпоОСиНМАОстатки.СчетУчетаНДС
        |            И (НДСпоОСиНМАОстатки.СуммаБезНДСОстаток + НДСпоОСиНМАОстатки.НДСОстаток > 0)
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСПредъявленныйРеализация0.Остатки(
        |                &ДатаГраница,
        |                Организация = &Организация
        |                    И (НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей))) КАК НДСПредъявленныйРеализация0Остатки
        |        ПО НДСПредъявленныйОстатки.СчетФактура = НДСПредъявленныйРеализация0Остатки.СчетФактура
        |            И НДСПредъявленныйОстатки.ВидЦенности = НДСПредъявленныйРеализация0Остатки.ВидЦенности
        |            И НДСПредъявленныйОстатки.СтавкаНДС = НДСПредъявленныйРеализация0Остатки.СтавкаНДС
        |            И НДСПредъявленныйОстатки.СчетУчетаНДС = НДСПредъявленныйРеализация0Остатки.СчетУчетаНДС
        |            И (НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток + НДСПредъявленныйРеализация0Остатки.НДСОстаток > 0)
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСПредъявленный.Остатки(
        |                &ДатаГраница,
        |                Организация = &Организация
        |                    И (НЕ ВидЦенности В (&ИсключаемыеВидыЦенностей))
        |                    И ВЫБОР
        |                        КОГДА ВидЦенности В (&ВидыЦенностейОплата)
        |                            ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
        |                        КОГДА ВидЦенности В (&ВидыЦенностей_ОплатаПоНДССМР)
        |                            ТОГДА ВЫБОР
        |                                    КОГДА ЕСТЬNULL(СчетФактура.Дата, &Дата) < ДАТАВРЕМЯ(2009, 1, 1)
        |                                        ТОГДА ДатаОплаты <> ДАТАВРЕМЯ(1, 1, 1)
        |                                    ИНАЧЕ ИСТИНА
        |                                КОНЕЦ
        |                        ИНАЧЕ ИСТИНА
        |                    КОНЕЦ) КАК НДСПредъявленныйОстаткиИтог
        |        ПО НДСПредъявленныйОстатки.СчетФактура = НДСПредъявленныйОстаткиИтог.СчетФактура
        |            И НДСПредъявленныйОстатки.ВидЦенности = НДСПредъявленныйОстаткиИтог.ВидЦенности
        |            И НДСПредъявленныйОстатки.СтавкаНДС = НДСПредъявленныйОстаткиИтог.СтавкаНДС
        |            И НДСПредъявленныйОстатки.СчетУчетаНДС = НДСПредъявленныйОстаткиИтог.СчетУчетаНДС
        |            И НДСПредъявленныйОстатки.Организация = НДСПредъявленныйОстаткиИтог.Организация
        |            И НДСПредъявленныйОстатки.Поставщик = НДСПредъявленныйОстаткиИтог.Поставщик
        |ГДЕ
        |    (НДСПредъявленныйОстатки.СуммаБезНДСОстаток > 0
        |            ИЛИ НДСПредъявленныйОстатки.НДСОстаток > 0)
        |
        |СГРУППИРОВАТЬ ПО
        |    НДСПредъявленныйОстатки.Организация,
        |    НДСПредъявленныйОстатки.СчетФактура,
        |    НДСПредъявленныйОстатки.ВидЦенности,
        |    НДСПредъявленныйОстатки.СтавкаНДС,
        |    НДСПредъявленныйОстатки.СчетУчетаНДС,
        |    НДСПредъявленныйОстатки.Поставщик,
        |    ЕСТЬNULL(НДСПредъявленныйОстатки.СчетФактура.Дата, &Дата),
        |    НДСПредъявленныйОстатки.ДатаОплаты,
        |    НДСпоОСиНМАОстатки.СуммаБезНДСОстаток,
        |    НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток,
        |    НДСПредъявленныйОстатки.СуммаБезНДСОстаток,
        |    НДСПредъявленныйРеализация0Остатки.НДСОстаток,
        |    НДСпоОСиНМАОстатки.НДСОстаток,
        |    НДСПредъявленныйОстатки.НДСОстаток,
        |    НДСПредъявленныйОстатки.ИсправленныйСчетФактура
        |
        |ИМЕЮЩИЕ
        |    СУММА(ЕСТЬNULL(НДСПредъявленныйОстаткиИтог.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.СуммаБезНДСОстаток, 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.СуммаБезНДСОстаток, 0) + ЕСТЬNULL(НДСПредъявленныйОстаткиИтог.НДСОстаток, 0) - ЕСТЬNULL(НДСПредъявленныйРеализация0Остатки.НДСОстаток, 0) - ЕСТЬNULL(НДСпоОСиНМАОстатки.НДСОстаток, 0)) > 0
        |
        |УПОРЯДОЧИТЬ ПО
        |    СчетФактураДата";

    Запрос.УстановитьПараметр("Организация",  Объект.Организация);
    Запрос.УстановитьПараметр("Дата", КонецДня(Объект.Дата));
    Запрос.УстановитьПараметр("ДатаГраница", новый Граница(КонецДня(Объект.Дата),ВидГраницы.Включая));

    // Исключаемые из анализа виды ценностей
    ИсключаемыеВидыЦенностей = Новый СписокЗначений;
    ИсключаемыеВидыЦенностей.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные);
    ИсключаемыеВидыЦенностей.Добавить(Перечисления.ВидыЦенностей.АвансыПолученные0);
    ИсключаемыеВидыЦенностей.Добавить(Перечисления.ВидыЦенностей.АвансыВыданные);
    
    // Виды ценностей, по которым требуется оплата
    ВидыЦенностейОплата = Новый СписокЗначений;
    ВидыЦенностейОплата.Добавить(Перечисления.ВидыЦенностей.НалоговыйАгентАренда);
    ВидыЦенностейОплата.Добавить(Перечисления.ВидыЦенностей.НалоговыйАгентРеализацияИмущества);
    ВидыЦенностейОплата.Добавить(Перечисления.ВидыЦенностей.НалоговыйАгентИностранцы);
    // Виды ценностей с особым порядком распределения оплат - по НДС выплаченному в бюджет
    ВидыЦенностей_ОплатаПоНДССМР = Новый СписокЗначений;
    ВидыЦенностей_ОплатаПоНДССМР.Добавить(Перечисления.ВидыЦенностей.СМРСобственнымиСилами);
    
    Запрос.УстановитьПараметр("ИсключаемыеВидыЦенностей", ИсключаемыеВидыЦенностей);
    Запрос.УстановитьПараметр("ВидыЦенностейОплата", ВидыЦенностейОплата);
    Запрос.УстановитьПараметр("ВидыЦенностей_ОплатаПоНДССМР", ВидыЦенностей_ОплатаПоНДССМР);
    
    ТЗ=Запрос.Выполнить().Выгрузить();
    Сч=0;
    Пока Сч < ТЗ.Количество() Цикл
        СтрокаТаблицы = ТЗ.Получить(Сч);
        Если НЕ СчетСоответсвуетОтбору(СтрокаТаблицы.СчетУчетаНДС) Тогда
            Сообщить(" **  "+СтрокаТаблицы.СчетУчетаНДС);
           ТЗ.Удалить(СтрокаТаблицы);
        Иначе
            Сч = Сч + 1;
            Сообщить(" ??  "+СтрокаТаблицы.СчетУчетаНДС);
        КонецЕсли;
    КонецЦикла;
    Возврат ТЗ;
КонецФункции // ЗаполнитьНДСКВычетуПоДаннымРегистраНДСПредъявленный()

// Вызывается из процедуры ЗаполнитьСтроки_ВычетПоПриобретеннымЦенностям.
// Заполняет ТЧ ВычетПоПриобретеннымЦенностям по данным регистра НДСПредъявленныйРеализация0
Функция ЗаполнитьНДСКВычетуПоДаннымРегистраНДСПредъявленныйРеализация0()

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

    Запрос.УстановитьПараметр("Организация",  Объект.Организация);
    Запрос.УстановитьПараметр("Дата", КонецДня(Объект.Дата));
    Запрос.УстановитьПараметр("ДатаГраница", новый Граница(КонецДня(Объект.Дата),ВидГраницы.Включая));

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

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

Функция СчетСоответсвуетОтбору(СчетУчетаНДС)
    Если Счета.Количество()=0 Тогда
        Возврат Истина;
    КонецЕсли;
    Для каждого Ст Из Счета Цикл
    
        Если Ст.Счет=СчетУчетаНДС и Ст.Учитывать Тогда
        
            Возврат Истина;
        
        КонецЕсли;
    
    КонецЦикла;
    Возврат Ложь;
КонецФункции

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

Процедура ПриОткрытии()
    //ОчищатьТабличнуюЧасть=Истина;
    //Сообщить(""+ИмяТЧ);
    ВычетПоПриобретеннымЦенностям=Вычислить("Объект."+ИмяТЧ);
    ЗаполнитьСчета();
КонецПроцедуры

Процедура ЗаполнитьСчета()

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

КонецПроцедуры
18 X Leshiy
 
24.04.17
17:42
(17) Тогда попандос, нужно переписывать.
19 Андрей 2005
 
24.04.17
17:50
Да. Не вовремя спасибо за помощь
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший