Ввод остатков по 76.ВА в 1С ПУБ

Опубликовал Евгений (Пользователь 1С) в раздел Программирование - Практика программирования

Статья посвящена найденному мной недостатку в конфигурации 1С 7.7 "Производство-услуги-бухгалтерия", связанному с вводом начальных остатков по 76.ВА.

При попытке настроить соответствующий документ ввода остатков должным образом и провести, программа выдает ошибку и в общем итоге ввести остатки не получается.Итак, что нужно сделать.

Во-первых, если по контрагенту есть остаток по 76.ВА, то по нему же должен быть остаток по 60.2
Находим, как мы ввели остаток по 60.2. Для этого мы использовали документ "Ввод остатков по расчетам с поставщиками" с видом остатка
"Ввод остатка выданных авансов". В строке этого документа, по которой вводится остаток также указывается документ списания денежных средств,
которым, собственно аванс и был порожден. Запомним, что это за документ (выпишем на листок).
Далее: для ввода остатков по 76.ВА используем  документ "Ввод остатков НДС" (Ввод остатков НДС по приобретенным ценностям).
В каждой строке т.ч. документа вводим Контрагента, Ставку НДС, Тип НДС (тут предусмотрен специальный тип="НДС по выплаченным авансам"),
База НДС (она должна соответствовать сумме долга по 60.2 по одной строке т.ч. документа ввода остатков по авансу поставщика), НДС рассчитается
автоматически, при необходимости сумму НДС можно откорректировать вручную.
Заметим, что с/ф мы не заполняли.
Ставим галочку "Формировать проводки...", записываем (не проводим!) документ
Теперь вносим изменения в модуль проведения документа.
Меняем целиком приведенную ниже процедуру (правки обозначены блоками //яяя //яяя!)
Правился изначально 329 релиз, возможно в более поздних релизах было все исправлено.
В 

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

	    Если СоздаватьОперацию = 1 Тогда

	        глИнициализацияТаблицыПроводок();

	    КонецЕсли;

	    

	    Сч68_2 = СчетПоКоду("68.2");



	    ТаблицаАвтоДокументов = СоздатьОбъект("ТаблицаЗначений");

	    ТаблицаАвтоДокументов.НоваяКолонка("Контрагент", "Справочник");

	    ТаблицаАвтоДокументов.НоваяКолонка("СчетФактура", "Документ");



	    ВыбратьСтроки();

	    Пока Получитьстроку() = 1 Цикл

	        Если ПустоеЗначение(Контрагент) = 1 Тогда

	            глНеПроводить(Контекст,"Строка:" + СокрЛП(НомерСтроки) + ", необходимо указать контрагента. Строка НЕ обработана!");

	        КонецЕсли;

	        Если ПустоеЗначение(СтавкаНДС) = 1 Тогда

	            глНеПроводить(Контекст,"Строка:" + СокрЛП(НомерСтроки) + ", необходимо указать ставку НДС. Строка НЕ обработана!");

	        КонецЕсли;

	        Если ПустоеЗначение(ТипНДС) = 1 Тогда

	            глНеПроводить(Контекст,"Строка:" + СокрЛП(НомерСтроки) + ", необходимо указать тип НДС. Строка НЕ обработана!");

	        КонецЕсли;

	        Если (ПустоеЗначение(СчетФактура) = 1) и (ТипХозОперации = 1) Тогда

	            глНеПроводить(Контекст,"Строка:" + СокрЛП(НомерСтроки) + ", необходимо указать счет-фактуру. Строка НЕ обработана!");

	        КонецЕсли;

	        Если СтатусВозврата() = 0 Тогда

	            Продолжить;

	        КонецЕсли;

	        ПривязыватьСтроку(НомерСтроки);



	        Если ПустоеЗначение(СчетФактура) = 1 Тогда

	            Стр = 0;

	            Если ТаблицаАвтоДокументов.НайтиЗначение(Контрагент, Стр, "Контрагент") = 0 Тогда

	                АвтоДокумент = СоздатьОбъект("Документ.СчетФактураПолученный");

	                АвтоДокумент.Новый();

	                АвтоДокумент.ДатаДок = ДатаДок;

	                АвтоДокумент.УстановитьНовыйНомер();

	                АвтоДокумент.Контрагент = Контрагент;

	                АвтоДокумент.Комментарий = "Фиктивный документ для ввода начальных остатков";

	                АвтоДокумент.Записать();



	                ТаблицаАвтоДокументов.НоваяСтрока();

	                ТаблицаАвтоДокументов.Контрагент = Контрагент;

	                ТаблицаАвтоДокументов.СчетФактура = АвтоДокумент.ТекущийДокумент();

	                глСообщениеПроведения("Создан фиктивный документ для ввода начальных остатков - " + глПредставлениеДокумента(АвтоДокумент), ТекущийДокумент());

	            Иначе

	                ТаблицаАвтоДокументов.ПолучитьСтрокуПоНомеру(Стр);

	            КонецЕсли;

	            СчетФактура = ТаблицаАвтоДокументов.СчетФактура;

	            глСообщениеПроведения("Строка:" + СокрЛП(НомерСтроки) + ", не указан счет-фактура. Автоматически подставлен документ - " + глПредставлениеДокумента(СчетФактура), ТекущийДокумент());

	        КонецЕсли;

	        

	        Регистр.НДСпоПриобретеннымЦенностям.Контрагент = Контрагент;

	        Регистр.НДСпоПриобретеннымЦенностям.СчетФактура = СчетФактура;

	        Регистр.НДСпоПриобретеннымЦенностям.СтавкаНДС = СтавкаНДС;

	        Регистр.НДСпоПриобретеннымЦенностям.ТипНДС = ТипНДС;

	        Регистр.НДСпоПриобретеннымЦенностям.БазаНДС = БазаНДС;

	        Регистр.НДСпоПриобретеннымЦенностям.НДС = НДС;

	        Регистр.НДСпоПриобретеннымЦенностям.КодОперации = "";

	        Регистр.НДСпоПриобретеннымЦенностям.ЗаписьДопЛиста = "";

	        Регистр.НДСпоПриобретеннымЦенностям.ДатаДопЛиста = "";

	        //яяя

	        Если ТипНДС<>Перечисление.ТипыНДС.Аванс Тогда

	            Если ТипХозОперации = 0 Тогда

	                Регистр.НДСпоПриобретеннымЦенностям.ВключатьВКнигуПокупок = 0;

	                Регистр.НДСпоПриобретеннымЦенностям.ДвижениеПриходВыполнить();

	            Иначе

	                Регистр.НДСпоПриобретеннымЦенностям.ВключатьВКнигуПокупок = 1;

	                Регистр.НДСпоПриобретеннымЦенностям.ДвижениеРасходВыполнить();

	            КонецЕсли;

	        Иначе

	            Регистр.НДСпоПриобретеннымЦенностям.ВключатьВКнигуПокупок = 1;

	            Регистр.НДСпоПриобретеннымЦенностям.ДвижениеПриходВыполнить();

	        КонецЕсли;

	        //яяя!

	        Если (СоздаватьОперацию = 1) или (ТипХозОперации = 1) Тогда

	            

	            Если ТипНДС = Перечисление.ТипыНДС.ОС Тогда

	                СчетНДС = СчетПоКоду("19.1");

	            ИначеЕсли ТипНДС = Перечисление.ТипыНДС.НМА Тогда

	                СчетНДС = СчетПоКоду("19.2");

	            ИначеЕсли ТипНДС = Перечисление.ТипыНДС.МПЗ Тогда

	                СчетНДС = СчетПоКоду("19.3");

	            ИначеЕсли ТипНДС = Перечисление.ТипыНДС.Таможня Тогда

	                СчетНДС = СчетПоКоду("19.4");   

	                //яяя

	            ИначеЕсли ТипНДС=Перечисление.ТипыНДС.Аванс Тогда

	                СчетНДС=СчетПоКоду("76.ВА");

	                //яяя!

	            КонецЕсли;

	            



	            Если ТипХозОперации = 0 Тогда   

	                //яяя  

	                Если   ТипНДС<>Перечисление.ТипыНДС.Аванс Тогда

	                    глПроводка(СчетНДС, Контрагент, , ,

	                    СчетПоКоду("00"), , , ,

	                    НДС, "Ввод ост. НДС", "ВО");  

	                Иначе   

	                    глПроводка(СчетПоКоду("00"), , , ,

	                    СчетНДС,Контрагент , , ,

	                    НДС, "Ввод ост. НДС аванса", "ВО");  

	                КонецЕсли;

	                //яяя!

	            Иначе

	                Если СчетФактура.Вид() = "ПоступлениеМПЗИмпорт" Тогда

	                    Контрагент = СчетФактура.Таможня;

	                Иначе

	                    Контрагент = СчетФактура.Контрагент;

	                КонецЕсли;

	                

	                глПроводка(Сч68_2, Перечисление.ВидыПлатежейВБюджет.Налог, , ,

	                           СчетНДС, Контрагент, , ,

	                           НДС, "Вычет НДС, предъявлен. до 2006г.", "ПС");

	            КонецЕсли;

	        КонецЕсли;

	    КонецЦикла;



	        Если (СоздаватьОперацию = 1) и (СтатусВозврата() = 1) Тогда

	        глСформироватьПроводки(Операция, 2);

	        Операция.Записать();

	    КонецЕсли;

	    

	    глПриПроведении(Контекст);



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


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

См. также

В этой теме еще нет сообщений.
Оставьте свое сообщение