Ссылка на счет не соображает!

1. Antimyslitel 35 20.05.14 12:11 Сейчас в теме
Добрый день друзья!
в 1с 7.7 выдает такую ошибку бьюсь головой но не как решить не могу кто поможет?

//Операция.Дебет.Номенклатура = Товар;
//{Документ.ПоступлениеТоваров.Модуль Документа(74)}: Для счета вид субконто Номенклатура неопределен!

//Проверил в плане счетов счет на который ссылается в нем субконто1 указан номенклатура

//Не могу понять в чем проблема!
//Вот часть кода на которую дает ошибку:

	Операция.НоваяПроводка();
		Операция.СодержаниеПроводки = "Поступили товары";
		Операция.НомерЖурнала = "ТВ";
		Операция.Дебет.Счет = СчетУчета;
		Если СчетУчета = СчХХХХХХХ Тогда
			Операция.Дебет.Номенклатура = Товар;
			Операция.Дебет.Контрагенты = Контрагент;
			Операция.Дебет.Основание = Договор;
		Иначе
			Операция.Дебет.Номенклатура = Товар;////// - вот на это ссылается!///
			Операция.Дебет.МестаХранения = МестоХранения;

			Операция.Кредит.Счет = СчХХХХХХХ_00;
			Операция.Кредит.Контрагенты = Контрагент;
			Операция.Кредит.Основание = Договор;
		КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Cooler 22 20.05.14 12:18 Сейчас в теме
(1) Не назначен вид субконто.
denezh; deniseek77; +2 Ответить
2. eshtrey 20.05.14 12:13 Сейчас в теме
попробуй Операция.Дебет.Субконто(1, Товар)
3. eshtrey 20.05.14 12:14 Сейчас в теме
может орфографическая ошибка?
5. l_user 20.05.14 12:47 Сейчас в теме
Варианты:
1. Реквизит документа справочник другого типа.
2. Ещё раз проверьте, что значение переменой "СчетУчета" - это счет плана счетов, у которого есть субконто "Номенклатура".
6. Antimyslitel 35 20.05.14 13:08 Сейчас в теме
(5) l_user, а как проверить? подскажите плизз что имеено к нужному плану счетов относится]!
7. Antimyslitel 35 20.05.14 13:14 Сейчас в теме
(5) l_user, вот весь код!

Перем Сч631851_00, Сч621847_00, Сч621954_06;
//__________________________________________________________­___________________
Процедура ЗачестьАванс(ЗачетАванса, ДоговорАванса)
	Если ЗачетАванса > 0 Тогда
		Операция.НоваяПроводка();
		Операция.СодержаниеПроводки = "Зачтен аванс";
		Операция.НомерЖурнала = "ТВ";
		Операция.Дебет.Счет = Сч631851_00;
		Операция.Дебет.Контрагенты = Контрагент;
		Операция.Дебет.Основание = Договор;
		Операция.Кредит.Счет = Сч621847_00;
		Операция.Кредит.Контрагенты = Контрагент;
		Операция.Кредит.Основание = ДоговорАванса;
		Операция.Сумма = ЗачетАванса;
	КонецЕсли;
КонецПроцедуры // ЗачестьАванс
//__________________________________________________________­___________________
Процедура ОбработкаПроведения()
	глКомментарийПроведения("Начало", Контекст);

	Сч612342_01 = СчетПоКоду("612342.01");
	Сч612342_02 = СчетПоКоду("612342.02");
	Сч612342_03 = СчетПоКоду("612342.03");
	Сч612342_04 = СчетПоКоду("612342.04");
	Сч631851_00 = СчетПоКоду("631851.00");
	Сч621847_00 = СчетПоКоду("621847.00");
	Сч612342 = СчетПоКоду("612342");
    Сч621954_06 = СчетПоКоду("621954.06");
	
	СуммаПоставки = Итог("Всего");
	СуммаНДС_621954 = Итог("НДС");
	ВыбратьСтроки();
	Пока ПолучитьСтроку() = 1 Цикл
		Если Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар Тогда
			глОшибкаПроведения(Контекст, "Номенклатурная единица "+Товар+" не является товаром.");
			СтатусВозврата(0); Возврат;
		КонецЕсли;

		Если Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии Тогда
			СчетУчета = Сч612342;
		    УчетнаяСтоимость = Всего;
			СуммаНДС_621954 = СуммаНДС_621954 - НДС;
			СуммаПоставки = СуммаПоставки - Всего;
		ИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.Тара Тогда
			СчетУчета = Сч612342_03;
			УчетнаяСтоимость = Всего - НДС;
		ИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.ПокупныеИзделия Тогда
			СчетУчета = Сч612342_04;
			УчетнаяСтоимость = Всего - НДС;
		Иначе //Если Товар.ТипТовара = Перечисление.ТипыТоваров.Собственный Тогда
			Если ВидПоступления = 2 Тогда //розница
				СчетУчета = Сч612342_02;
				Если ДатаГод(ДатаДок) < 2000 Тогда
					УчетнаяСтоимость = Всего;
					СуммаНДС_621954 = СуммаНДС_621954 - НДС;
				Иначе
					УчетнаяСтоимость = Всего - НДС;
				КонецЕсли;
			Иначе //Если ВидПоступления = 1 Тогда опт
				СчетУчета = Сч612342_01;
				УчетнаяСтоимость = Всего - НДС;
			КонецЕсли;
		КонецЕсли;

		Операция.НоваяПроводка();
		Операция.СодержаниеПроводки = "Поступили товары";
		Операция.НомерЖурнала = "ТВ";
		Операция.Дебет.Счет = СчетУчета;
		Если СчетУчета = Сч612342 Тогда
			Операция.Дебет.Номенклатура = Товар;
			Операция.Дебет.Контрагенты = Контрагент;
			Операция.Дебет.Основание = Договор;
		Иначе
			Операция.Дебет.Номенклатура = Товар;
			Операция.Дебет.МестаХранения = МестоХранения;

			Операция.Кредит.Счет = Сч631851_00;
			Операция.Кредит.Контрагенты = Контрагент;
			Операция.Кредит.Основание = Договор;
		КонецЕсли;
		Операция.Количество = Количество;
		Операция.Сумма = УчетнаяСтоимость;
	КонецЦикла;


	Если СуммаНДС_621954 > 0 Тогда
		Операция.НоваяПроводка();
		Операция.СодержаниеПроводки = "Выделен НДС";
		Операция.НомерЖурнала = "ТВ";
		Операция.Дебет.Счет = Сч621954_06;
		Операция.Дебет.Контрагенты = Контрагент;
		Операция.Дебет.Основание = Договор;
		Операция.Кредит.Счет = Сч631851_00;
		Операция.Кредит.Контрагенты = Контрагент;
		Операция.Кредит.Основание = Договор;
		Операция.Сумма = СуммаНДС_621954;
	КонецЕсли;

	Если ЗачитыватьАванс <> 1 Тогда //Зачитывать аванс
		СписокДоговоров = СоздатьОбъект("СписокЗначений");
		СписокДоговоров.ДобавитьЗначение(Договор);
		БезДоговора = глДоговор(глИмяДоговораДляПлатежейБезДоговора, Контрагент);
		Если ЗачитыватьАванс = 0 Тогда //Зачитывать аванс без договора
			СписокДоговоров.ДобавитьЗначение(БезДоговора);
		КонецЕсли;
		
		БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
		БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);
		БухИт.ИспользоватьСубконто(ВидыСубконто.Основание, СписокДоговоров, 2);
		БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"621954.06",,,,,"С");

		Если БухИт.ПолучитьСубконто(ВидыСубконто.Основание,, БезДоговора) = 1 Тогда
			АвансБезДоговора = БухИт.СКД("С");
		Иначе
			АвансБезДоговора = 0;
		КонецЕсли;
		Если БухИт.ПолучитьСубконто(ВидыСубконто.Основание,, Договор) = 1 Тогда
			АвансПоДоговору = БухИт.СКД("С");
		Иначе
			АвансПоДоговору = 0;
		КонецЕсли;

		СуммаПоступления = Итог("Всего");
		ЗачетАвансаПоДоговору = Мин(АвансПоДоговору, СуммаПоступления);
		ЗачетАвансаБезДоговора = Мин(АвансБезДоговора, СуммаПоступления - ЗачетАвансаПоДоговору);
		ЗачетАванса = ЗачетАвансаПоДоговору + ЗачетАвансаБезДоговора;
		
		ЗачестьАванс(ЗачетАвансаПоДоговору, Договор);
		ЗачестьАванс(ЗачетАвансаБезДоговора, БезДоговора);
		
		глКомментарийПроведения("=> Зачет аванса");
		глКомментарийПроведения(СимволТабуляции+"поступило на сумму: "+СуммаПоступления+", зачтен аванс в размере: "+ЗачетАванса);
		глКомментарийПроведения(СимволТабуляции+"- определен аванс по договору "+Договор+" в сумме: "+АвансПоДоговору+", зачтен аванс в размере: "+ЗачетАвансаПоДоговору);
		Если ЗачитыватьАванс = 0 Тогда
			глКомментарийПроведения(СимволТабуляции+"- определен аванс без указания договора в сумме: "+АвансБезДоговора+", зачтен аванс в размере: "+ЗачетАвансаБезДоговора);
		Иначе
			глКомментарийПроведения(СимволТабуляции+"- аванс без указания договора не учтен");
		КонецЕсли;
	КонецЕсли;

	Операция.Записать();
	глКомментарийПроведения("Окончание", Контекст);
КонецПроцедуры
Показать
8. Cooler 22 20.05.14 13:42 Сейчас в теме
(7) Лучше было это не показывать - что мы, г...кода не видели?
Если СчетУчета = Сч612342 Тогда
         Операция.Дебет.Номенклатура = Товар;
         Операция.Дебет.Контрагенты = Контрагент;
         Операция.Дебет.Основание = Договор;
      Иначе
         Операция.Дебет.Номенклатура = Товар;
         Операция.Дебет.МестаХранения = МестоХранения;

         Операция.Кредит.Счет = Сч631851_00;
         Операция.Кредит.Контрагенты = Контрагент;
         Операция.Кредит.Основание = Договор;
      КонецЕсли;
Показать


Получается, что в случае СчетУчета = Сч612342 у операции не будет счета и аналитики по кредиту! К тому же, если я правильно понял, то Сч612342 - это группа, и пытаться делать по нему проводки более чем глупо.

Когда приведете в порядок логику кода, попробуйте (2) вместо "Операция.Дебет.Номенклатура = Товар", и далее по аналогии.
Bukaska; l_user; +2 Ответить
9. l_user 20.05.14 13:53 Сейчас в теме
To Cooler:
Поддерживаю, но как бы Вы поняли, что идет речь о группе из плана счетов, если бы не был приведен этот код?

То Antimyslitel:
Может выложите скриншот экрана с планом счетов, где видно счета группы 612342 вместе с их аналитикой (субконто)?
Как поймать ошибку. Я делаю
- или через "Сообщить(""+СчетУчета.Код+" - "+счетУчета.Наименование)"
- или через "Отладчик": поставить точку остановки с строке №74 и через табло посмотреть какой счет учета используется, а потом посмотреть в плане счетов аналитику (субконто) данного счета.
10. Antimyslitel 35 20.05.14 15:13 Сейчас в теме
Ни то ни другое не получается!

Никак не могу понять где и как посмотреть какой СчетУчета используется!
ПРоверил план счетов на том счете на который он ссылается есть субконто1 = Номенклатура субконто2=МестаХранения
11. Bukaska 140 20.05.14 15:21 Сейчас в теме
(10) Antimyslitel, Вы бы проверили отладчиком..
Операция.Дебет.Номенклатура = Товар;

ПРоверил план счетов на том счете на который он ссылается есть субконто1 = Номенклатура субконто2=МестаХранения

Вот именно что у счета есть субконто.. вы его не пишите...
Вы пробовали писать так:
Операция.Дебет.Субконто(1, Товар)


Как сказал (2) eshtrey, ???

И посмотрите отладчиком, чему равно значение Операция.Дебет.Счет, Операция.Дебет и Операция.Дебет.субконто
15. Antimyslitel 35 20.05.14 19:02 Сейчас в теме
(11) Bukaska,
Попробывал подставить как вы написали, получил следующее
Операция.Записать();
{Документ.ПоступлениеТоваров.Модуль Документа(140)}: Выбраны счета из разных планов счетов!(проводка 1)

Как и что делать далее незнаю! помогите плзз!
12. agrustny 19 20.05.14 15:32 Сейчас в теме
Детальная инструкция по пользованию отладчиком недавно выложена на сайте ццц.инфостарт.ру
13. Cooler 22 20.05.14 15:36 Сейчас в теме
на том счете на который он ссылается есть субконто1 = Номенклатура
Значит, скорее всего, Товар - не Номенклатура.
Вставьте

Сообщить(ТипЗначенияСтр(Товар));


перед "Операция.Дебет.Номенклатура = Товар;"
14. eshtrey 20.05.14 16:32 Сейчас в теме
может план счетов надо выбрать? сколько планов счетов используется?
16. Antimyslitel 35 20.05.14 19:03 Сейчас в теме
(14) eshtrey,
План Счетов всего один ОСНОВНОЙ но он поменялся в системе многое в нем поменял, нумерация, обозначение и все такое!
24. eshtrey 21.05.14 10:31 Сейчас в теме
(16)получается несколько планов счетов.
ПС = СоздатьОбъект("Счет")
ПС.ИспользоватьПланСчетов("Основной")
Сч612342_01 = ПС.НайтиПоКоду("612342.01");
27. Antimyslitel 35 21.05.14 10:41 Сейчас в теме
(24) eshtrey,
Подставил ваше, вот что теперь получилось:
Сч612342_01 = ПС.НайтиПоКоду("612342.01");
{Документ.ПоступлениеТоваров.Модуль Документа(23)}: Не задан вид
30. eshtrey 21.05.14 10:46 Сейчас в теме
(27)а если
Если ПС.НайтиПоКоду("612342.01")=1 Тогда
Сч612342_01 = ПС.ТекущийСчет()
КонецЕсли
17. MaxDavid 127 20.05.14 20:14 Сейчас в теме
Проверьте в отладчике, какое значение в момент возникновения ошибки имеет переменная СчетУчета.
18. l_user 20.05.14 21:07 Сейчас в теме
To Antimyslitel:
Вам уже Cooler написал, что использование в проводках ссылки на группу из плана счетов некорректно. Вы проверили чему у Вас равняется значение переменной "СчетУчета"?
Не получается использовать "Отладчик"- вставьте после
Операция.Дебет.Счет = СчетУчета;

строчку
Сообщить("Счета учета = "+СчетУчета.Код);
.
19. Cooler 22 20.05.14 22:25 Сейчас в теме
(18) Судя по (15):
Выбраны счета из разных планов счетов!


там все-таки остались какие-то ошметки от другого плана счетов. Поэтому последний вопль автора:
он поменялся в системе многое в нем поменял, нумерация, обозначение и все такое!


напомнил мне старый афоризм: "Сложность программы растет до тех пор, пока не превысит способности программиста".

Как раз этот случай, надо в консерватории что-то подправлять.
agrustny; +1 Ответить
21. Bukaska 140 21.05.14 10:19 Сейчас в теме
(19) Cooler, Непонимаю..
Операция.Дебет.Счет = Сч621954_06;

Неужели нельзя присвоить тип: Плансчетов.Хозрасчетный.ИмяСчета
А там ещё сначала в коде номер счета.. потом счет по коду.. мама.. спасите - помогите(((
Вопрос ещё здесь
Сч612342 = СчетПоКоду("612342");
//А здесь счет.. субсчета у него есть?
Сч621954_06 = СчетПоКоду("621954.06");
//Здесь субсчет)

Короче я вообще не понимаю, что происходит...
22. Antimyslitel 35 21.05.14 10:29 Сейчас в теме
(21) Bukaska,
Поймитиже старый программист практически сделал все, но не доделал блок по поступлению товаров и зарплате в конфе
Теперь меня попросили подправить, а я не бум ногой там! вот поэтому и прошу о помощи!
мне бы код сам написать где что должно стоять!
35. agrustny 19 21.05.14 11:03 Сейчас в теме
(22)
Теперь меня попросили подправить, а я не бум ногой там! вот поэтому и прошу о помощи!

Странная логика. Скажите тем, кто Вас попросил: "я не бум ногой там!".
37. Bukaska 140 21.05.14 11:11 Сейчас в теме
(35) agrustny, Я сама в семерочном отладчике не бум.. хотя я включала его пару раз.. и потом не стала заморачиваться...
40. agrustny 19 21.05.14 11:23 Сейчас в теме
(37) Я тоже в Фортране редко пользуюсь, но там планов счетов нет, слава тебе господи. Просто исправлять такое должен реальный Геркулес, этакий чистильщик авгиев конюшен! Тогда его будут Ясным Солнышком называть)))
38. Antimyslitel 35 21.05.14 11:20 Сейчас в теме
(35) agrustny, Попросила главный бухгалтер!
42. agrustny 19 21.05.14 11:25 Сейчас в теме
(38) И? Я понимаю, если бы Вас сам ВВП попросил
62. jigourt 31 21.05.14 13:44 Сейчас в теме
(22) Antimyslitel,
Теперь меня попросили подправить, а я не бум ногой там! вот поэтому и прошу о помощи!
мне бы код сам написать где что должно стоять!

вы право шутите, почему неквалифицированный специалист решает задачи и почему квалифицированные программисты на форуме будут бесплатно писать код? неужто мы, коллеги, тратили время и деньги на обучение ради альтруистических идей? )))
63. Antimyslitel 35 21.05.14 13:58 Сейчас в теме
(62) jigourt, Дорогой друг, товарисчь Если у тебя когда нить в жизни появится такая ситуация что тебе надо будет связать сетью несколько офисов и т.д. и т.п. или хотя бы тел.станцию на эластике настроить или у тебя возникнет проблема с сервачком поверь я бы тебе помог, и дал бы более детальную информацию что да как сделать!
Я учился по Cisco, microsoft, apache, oracle но вот 1с как то не то думал! оказывается придется лететь в другую страну что бы и этому научится))) но пока поеду поучится мне надо что бы хоть что то да как то работало!
Также теперь методом тыка разобрался!
Пишу решение проблемы:

Если СчетУчета <> Сч612342_01 Тогда - и тут вместо знака равно поставил больше меньше
Операция.Дебет.Субконто(1, Товар);//   - эту строчку удалил и все завелось, всем спасибо за помощь! в особенности Кулеру и АйЮзеру
            Операция.Дебет.Субконто(3, Контрагент);
            Операция.Дебет.Основание = Договор;
       
       Иначе
            Операция.Дебет.Субконто(1, Товар);
            Операция.Дебет.Субконто(2, МестоХранения);
            Операция.Кредит.Счет = Сч631851_00;
            Операция.Кредит.Контрагенты = Контрагент;
            Операция.Кредит.Основание = Договор;
Показать
64. Cooler 22 21.05.14 14:02 Сейчас в теме
(63) Не-не-не, от благодарности лично я категорически отказываюсь! Во-первых, я не предлагал удалять "мешающие" строки (это как "лишние детали" в любом механизме), во-вторых, не хочу нести даже моральную ответственность за такое "решение".
65. Antimyslitel 35 21.05.14 14:06 Сейчас в теме
(64) Cooler, Проводка сформировалась именно так как она нужна была! Помимо этого сейчас бухгалтер поблагодарила))) и сказала что проводки нормально сформированы! спасибо! взял книжку в гугле-великом и почитал немного! понял что есть такая комбинация как шифт+Ф9
66. Bukaska 140 21.05.14 14:09 Сейчас в теме
(65) Antimyslitel, Это всегда))) Если долго мучаться - что-нибудь получится)))
67. jigourt 31 21.05.14 14:11 Сейчас в теме
(63) Antimyslitel,
поверь я бы тебе помог

дак и я бы помог с 1С и я думаю на форуме уже наберется достаточное количество человек, которым я помог, но выполнять работу, а именно
мне бы код сам написать где что должно стоять!

это просто то за что программисты свой хлеб кушают, а именно код пишут... а уж по теме вашей проблемы вам детальной информации тут дали достаточно, за сим прошу прощения за такой оффтоп и выражение мнения... и хочу вас заверить, если бы подсказки остальных вам не помогли бы, я бы-таки углубился бы в вашу проблему и помог даже несмотря на свою позицию...
Antimyslitel; Bukaska; +2 Ответить
69. Antimyslitel 35 21.05.14 18:55 Сейчас в теме
(67) jigourt, Спасибо и на том что имеется))) Если что обращайтесь по сервачкам и всему такому что связанно с сетями!
70. Antimyslitel 35 21.05.14 18:56 Сейчас в теме
(67) jigourt, И мне если быть более точным то отрезки кода где что должно было бы стоять, надо было!
68. agrustny 19 21.05.14 14:16 Сейчас в теме
(63) Гениальный человек гениален во всем)))
23. Antimyslitel 35 21.05.14 10:30 Сейчас в теме
(18) l_user,
Куда вставить в какое место кода и как! Может напишите! я не бум бум
26. Antimyslitel 35 21.05.14 10:36 Сейчас в теме
(18) l_user,
Понял поставил
теперь при проведении дает такое:
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
Счет учета =
=> Зачет аванса
Операция.Записать();
Документ.ПоступлениеТоваров.МодульДокумента(141): Выбраны счета из разных планов счетов(проводка 1)
28. MaxDavid 127 21.05.14 10:42 Сейчас в теме
(26) Antimyslitel, ну видите же, что СчетУчета выдает пустое значение. Разумеется, сложно требовать от пустого значения наличия субконто ))
Скорее всего, у вас действительно два плана счетов. Впрочем, не исключаю, что после кривых исправлений слетели нужные счета основного плана.
32. Antimyslitel 35 21.05.14 10:50 Сейчас в теме
(28) MaxDavid,
Правил не я!
Я просто хочу разобраться что куда и откудова берется, а понять не могу!
29. Bukaska 140 21.05.14 10:43 Сейчас в теме
(26) Antimyslitel,
Сч612342_01 = СчетПоКоду("612342.01");
Сч612342_02 = СчетПоКоду("612342.02");
Сч612342_03 = СчетПоКоду("612342.03");
Сч612342_04 = СчетПоКоду("612342.04");
Сч631851_00 = СчетПоКоду("631851.00");
Сч621847_00 = СчетПоКоду("621847.00");
Сч612342 = СчетПоКоду("612342");//Посмотрите что за счет.. и есть -лит у него субсчета..
Сч621954_06 = СчетПоКоду("621954.06");
Так как проводки должны проводиться по конкретным субсчетам и субконто.. а не просто по счету.
31. Antimyslitel 35 21.05.14 10:46 Сейчас в теме
(29) Bukaska,
Да у счета есть субсчета
Сч612342.01 - с такимже наименованием - да и только он один больше нет субсчетов у него!
33. Bukaska 140 21.05.14 10:51 Сейчас в теме
(31) Antimyslitel, вот и попробуйте в коде писать не Сч612342, а Сч612342.01
34. Antimyslitel 35 21.05.14 10:56 Сейчас в теме
(33) Bukaska,
Попробывал везде поменял!
Теперь вот весь код как и в конце какая ошибка!
Перем Сч631851_00, Сч621847_00, Сч621954_06;
//__________________________________________________________­___________________
Процедура ЗачестьАванс(ЗачетАванса, ДоговорАванса)
	Если ЗачетАванса > 0 Тогда
		Операция.НоваяПроводка();
		Операция.СодержаниеПроводки = "Зачтен аванс";
		Операция.НомерЖурнала = "ТВ";
		Операция.Дебет.Счет = Сч631851_00;
		Операция.Дебет.Контрагенты = Контрагент;
		Операция.Дебет.Основание = Договор;
		Операция.Кредит.Счет = Сч621847_00;
		Операция.Кредит.Контрагенты = Контрагент;
		Операция.Кредит.Основание = ДоговорАванса;
		Операция.Сумма = ЗачетАванса;
	КонецЕсли;
КонецПроцедуры // ЗачестьАванс
//__________________________________________________________­___________________
Процедура ОбработкаПроведения()
	глКомментарийПроведения("Начало", Контекст);
 
	Сч612342_01 = СчетПоКоду("612342.01");
	Сч612342_02 = СчетПоКоду("612342.02");
	Сч612342_03 = СчетПоКоду("612342.03");
	Сч612342_04 = СчетПоКоду("612342.04");
	Сч631851_00 = СчетПоКоду("631851.00");
	Сч621847_00 = СчетПоКоду("621847.00");
    Сч621954_06 = СчетПоКоду("621954.06");
	
	СуммаПоставки = Итог("Всего");
	СуммаНДС_621954 = Итог("НДС");
	ВыбратьСтроки();
	Пока ПолучитьСтроку() = 1 Цикл
		Если Товар.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Товар Тогда
			глОшибкаПроведения(Контекст, "Номенклатурная единица "+Товар+" не является товаром.");
			СтатусВозврата(0); Возврат;
		КонецЕсли;

		Если Товар.ТипТовара = Перечисление.ТипыТоваров.НаКомиссии Тогда
			СчетУчета = Сч612342_01;
		    УчетнаяСтоимость = Всего;
			СуммаНДС_621954 = СуммаНДС_621954 - НДС;
			СуммаПоставки = СуммаПоставки - Всего;
		ИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.Тара Тогда
			СчетУчета = Сч612342_03;
			УчетнаяСтоимость = Всего - НДС;
		ИначеЕсли Товар.ТипТовара = Перечисление.ТипыТоваров.ПокупныеИзделия Тогда
			СчетУчета = Сч612342_04;
			УчетнаяСтоимость = Всего - НДС;
		Иначе //Если Товар.ТипТовара = Перечисление.ТипыТоваров.Собственный Тогда
			Если ВидПоступления = 2 Тогда //розница
				СчетУчета = Сч612342_02;
				Если ДатаГод(ДатаДок) < 2000 Тогда
					УчетнаяСтоимость = Всего;
					СуммаНДС_621954 = СуммаНДС_621954 - НДС;
				Иначе
					УчетнаяСтоимость = Всего - НДС;
				КонецЕсли;
			Иначе //Если ВидПоступления = 1 Тогда опт
				СчетУчета = Сч612342_01;
				УчетнаяСтоимость = Всего - НДС;
			КонецЕсли;
		КонецЕсли;


        Операция.НоваяПроводка();
		Операция.СодержаниеПроводки = "Поступили товары";
		Операция.НомерЖурнала = "ТВ";
		Операция.Дебет.Счет = СчетУчета;
	   	Сообщить("Счет учета = "+СчетУчета.Код);
		Если СчетУчета = Сч612342_01 Тогда
			Операция.Дебет.Субконто(1, Товар);
			Операция.Дебет.Субконто(3, Контрагент);
			Операция.Дебет.Основание = Договор;
		Иначе
			Операция.Дебет.Субконто(1, Товар);
			Операция.Дебет.Субконто(2, МестоХранения);
            Операция.Кредит.Счет = Сч631851_00;
			Операция.Кредит.Контрагенты = Контрагент;
			Операция.Кредит.Основание = Договор;
		КонецЕсли;
		Операция.Количество = Количество;
		Операция.Сумма = УчетнаяСтоимость;
	КонецЦикла;


	Если СуммаНДС_621954 > 0 Тогда
		Операция.НоваяПроводка();
		Операция.СодержаниеПроводки = "Выделен НДС";
		Операция.НомерЖурнала = "ТВ";
		Операция.Дебет.Счет = Сч621954_06;
		Операция.Дебет.Контрагенты = Контрагент;
		Операция.Дебет.Основание = Договор;
		Операция.Кредит.Счет = Сч631851_00;
		Операция.Кредит.Контрагенты = Контрагент;
		Операция.Кредит.Основание = Договор;
		Операция.Сумма = СуммаНДС_621954;
	КонецЕсли;

	Если ЗачитыватьАванс <> 1 Тогда //Зачитывать аванс
		СписокДоговоров = СоздатьОбъект("СписокЗначений");
		СписокДоговоров.ДобавитьЗначение(Договор);
		БезДоговора = глДоговор(глИмяДоговораДляПлатежейБезДоговора, Контрагент);
		Если ЗачитыватьАванс = 0 Тогда //Зачитывать аванс без договора
			СписокДоговоров.ДобавитьЗначение(БезДоговора);
		КонецЕсли;
		
		БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
		БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);
		БухИт.ИспользоватьСубконто(ВидыСубконто.Основание, СписокДоговоров, 2);
		БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"621954.06",,,,,"С");

		Если БухИт.ПолучитьСубконто(ВидыСубконто.Основание,, БезДоговора) = 1 Тогда
			АвансБезДоговора = БухИт.СКД("С");
		Иначе
			АвансБезДоговора = 0;
		КонецЕсли;
		Если БухИт.ПолучитьСубконто(ВидыСубконто.Основание,, Договор) = 1 Тогда
			АвансПоДоговору = БухИт.СКД("С");
		Иначе
			АвансПоДоговору = 0;
		КонецЕсли;

		СуммаПоступления = Итог("Всего");
		ЗачетАвансаПоДоговору = Мин(АвансПоДоговору, СуммаПоступления);
		ЗачетАвансаБезДоговора = Мин(АвансБезДоговора, СуммаПоступления - ЗачетАвансаПоДоговору);
		ЗачетАванса = ЗачетАвансаПоДоговору + ЗачетАвансаБезДоговора;
		
		ЗачестьАванс(ЗачетАвансаПоДоговору, Договор);
		ЗачестьАванс(ЗачетАвансаБезДоговора, БезДоговора);
		
		глКомментарийПроведения("=> Зачет аванса");
		глКомментарийПроведения(СимволТабуляции+"поступило на сумму: "+СуммаПоступления+", зачтен аванс в размере: "+ЗачетАванса);
		глКомментарийПроведения(СимволТабуляции+"- определен аванс по договору "+Договор+" в сумме: "+АвансПоДоговору+", зачтен аванс в размере: "+ЗачетАвансаПоДоговору);
		Если ЗачитыватьАванс = 0 Тогда
			глКомментарийПроведения(СимволТабуляции+"- определен аванс без указания договора в сумме: "+АвансБезДоговора+", зачтен аванс в размере: "+ЗачетАвансаБезДоговора);
		Иначе
			глКомментарийПроведения(СимволТабуляции+"- аванс без указания договора не учтен");
		КонецЕсли;
	КонецЕсли;

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


ОШИБКА: Операция.Дебет.Основание = Договор;
{Документ.ПоступлениеТоваров.Модуль Документа(73)}: Для счета вид субконто Основание неопределен!

Уже задолбался просто
36. Bukaska 140 21.05.14 11:10 Сейчас в теме
(34) Antimyslitel,
У вас когда отладчик отработает
Если СчетУчета = Сч612342_01 Тогда
Операция.Дебет.Субконто(1, Товар);
Операция.Дебет.Субконто(3, Контрагент); 


Наберите в отладчике: Операция.Дебет.Основание = чему равна данная переменная
У вас отладчик падает в веточке Если до оператора Иначе
39. Antimyslitel 35 21.05.14 11:22 Сейчас в теме
(36) Bukaska, В отладчике не набирается вообще ничего!

и стопорится в отладчике вот тут: Операция.Дебет.Основание = Договор;
43. Bukaska 140 21.05.14 11:34 Сейчас в теме
(39) Antimyslitel, Да не может быть.. в 8.2 есть Shift + F9
В 77 тоже должно быть что-то для данных целей.. выбираем нужную часть строки и жмем: Вычислить выражение.

PS: Ни за что не поверю, что в 7.7 нет табло.. есть отладчик, должно быть и табло)
45. Antimyslitel 35 21.05.14 11:36 Сейчас в теме
(43) Bukaska, Еще один прикол у меня макбук! на нем паралелька и как бы тяжко шифтФ9)))
46. Antimyslitel 35 21.05.14 11:37 Сейчас в теме
(43) Bukaska, если бы это было 8.2 давно бы разобрался! но так как 7.7 не могу вьехать!)))
50. Cooler 22 21.05.14 12:17 Сейчас в теме
Попросила главный бухгалтер!
А денег не дала? Странный бухгалтер... тем более главный, кому как ей не знать, что все имеет свою цену.

Отладчик в 7.7 есть, и табло есть, но только автора оно не спасет: как я уже писал, у него нарушена логика кода, и даже в последнем варианте (34) я не вижу никаких подвижек в этом направлении.

(46) Может, старого программиста пригласите? Или нового наймете, но программиста по 7.7, а не который "ты же компьтерщик"?

Кстати, почему старый с вами больше не работает? Я подозреваю, что как раз разругались из-за оплаты?
51. Antimyslitel 35 21.05.14 12:30 Сейчас в теме
(50) Cooler, Не ругались из-за оплаты он просто переехал в другую страну!
программистов вообще нету! пытаемся методом тыка!
54. Cooler 22 21.05.14 12:43 Сейчас в теме
(51) Ну, так удаленно можно поработать. Ведь вряд ли он переехал в страну, в которой нет Интернета - чего в такой программисту делать?

Кстати, давно хотел спросить - а для какой страны ваша конфигурация?

пытаемся методом тыка!
Методом тыка хорошо бесплодие лечить, а программировать (даже на 1С) надо ясно понимая - что делаешь.

Поэтому хотел уже предложить свои услуги, но вовремя перечитал ветку и после "не доделал блок по поступлению товаров и зарплате в конфе" желания поубавилось - если с товарами везде более-менее похоже, то зарплата и налоги другой страны - очень специфическая область, темный лес.

Представляю, чего вы там накодите! Заранее мои соболезнования.
57. agrustny 19 21.05.14 13:02 Сейчас в теме
(54)
Представляю, чего вы там накодите! Заранее мои соболезнования.

Уже соболезновали, и гораздо раньше))) (20)
59. Cooler 22 21.05.14 13:14 Сейчас в теме
(57) Извиняюсь, но там непонятно кому соболезновали - может, помощникам? Они тоже заслуживают, по-моему. :-)

В-общем, классическая ветка образца: "Уважаемые спецы, подскажите, как сделать операцию аппендицита в домашних условиях? Скальпель мы уже купили!"

А тут не просто скальпель купили, а уже и резать начали. По живому. А теперь выясняется - скальпель "не такой", хирург уехал, на больницу денег нет.
1С-Учебный Центр №3; Antimyslitel; AllexSoft; agrustny; Bukaska; +5 Ответить
60. Bukaska 140 21.05.14 13:17 Сейчас в теме
(59) Cooler, Бугага... не могу)) Рассмешил)))
58. Bukaska 140 21.05.14 13:12 Сейчас в теме
(54) Cooler,
Методом тыка хорошо бесплодие лечить,

Вот только не надо... причин бесплодия может быть много.. пока будешь делать дело методом тыка - убъешь просто всю репродуктивную систему)))
Так что методом тыка хорошо разве что лед колоть и грядки копать)))
61. Cooler 22 21.05.14 13:25 Сейчас в теме
(58) Ну хорошо, не всякое бесплодие... мужское лечится - 100%.

Только тыкать надо не в больного, а в... ладно, молчу, взрослые сами догадаются.
20. agrustny 19 21.05.14 08:59 Сейчас в теме
25. Bukaska 140 21.05.14 10:35 Сейчас в теме
Куда вставить в какое место кода и как! Может напишите! я не бум бум

Тогда на курсы ступайте... или на общие.. или хотя бы конфигурирование бух подсистемы..
41. l_user 21.05.14 11:23 Сейчас в теме
To Antimyslitel:
Я может и ошибаюсь, но если выдает сообщение:
"Счет учета = ", то это значит, что значение переменной "СчетУчета" не определено. И соответственно, ничего не присваивается в "Операция.Дебет.Счет".
Поэтому нужно "копать" в сторону почему ничего не присваивается...
Проверьте, на всякий случай:
1. В режиме "1С.Предприятие", пункты меню "Сервис-Параметры".
2. Выбрать закладку "Бухгалтерия" и убедиться, что используется именно нужный Вам план счетов.
3. Снова попробовать "провести" документ.
44. Antimyslitel 35 21.05.14 11:35 Сейчас в теме
(41) l_user, Убедился используется именно мне нужный план счетов так как никаких других там вообще для выбора нет! но все равно так же! все таже ошибка!
49. l_user 21.05.14 11:51 Сейчас в теме
(44) Antimyslitel,
Тогда продолжим "мучать Отладчик"...
1. В Конфигураторе ставим курсор на строчку, которую Вы добавили по моей просьбе, то есть "Сообщить("Счет уч..".
2. Снова пункты меню: "Действия"-"Открыть в отладчике". Возможно будет ругаться на уже открытый отладчик. Не помню что пишет "1С 7.7", поэтому нужно убедиться, что "Отладчик" закрыт.
3. В отладчике убеждаемся, что курсор находится на нужной нам строчке и жмем клавишу "F9".
4. Переходим в Бухгалтерию и пытаемся провести документ.
5. Если все сделано правильно, то через какое-то время активируется окно "Отладчика" и "Бухгалтерия" остановит свою работу.
6. Снова пункты меню уже "Отладчика": "Отладка"-"Табло".
7. Внизу "Отладчика" откроется окно, в котором нужно набирать название переменных, значения которых на данном шаге выполнения программы Вам нужно знать. Знак "=" набирать не нужно.
8. Для начала проверить чему равны "Товар.ТипТовара", "ВидПоступления". Затем проверить "СчетУчета".

Ещё "глюпый вопрос", а "Тестирование и исправление" когда делали? Если соберетесь, то сначала только на копии!!!
52. Antimyslitel 35 21.05.14 12:41 Сейчас в теме
(49) l_user, Спасибо огромное за подробную инструкцию все сделал как Вы описали все получилось в конце после того как открылось табло было написано вот это:
Операция.Дебет.Основание =

Дальше что делать не знаю!
56. Bukaska 140 21.05.14 12:45 Сейчас в теме
(52) Antimyslitel,
Операция.Дебет.Основание = 

Знак = не набирайте.. слова набрали и жмите клавишу Enter или вычислить выражение... и посмотрите чему рано значение
53. Antimyslitel 35 21.05.14 12:41 Сейчас в теме
(49) l_user, Надо что то в табло прописать?
55. l_user 21.05.14 12:44 Сейчас в теме
(53) Antimyslitel,
Вместо "Операция.Дебет.Основание" в отдельных строчках напишите
Товар.ТипТовара
ВидПоступления
СчетУчета
47. Bukaska 140 21.05.14 11:40 Сейчас в теме
но так как 7.7 не могу вьехать!

7.7 для нас восьмерочников - это как тёмный лес... и инструменты для отладки - неудобные.. в восьмерке все автоматизировано)
А так 7.7 на макбуке? А как у вас 7.7 открылась вообще? я думала она токо на винде открывается..
48. Antimyslitel 35 21.05.14 11:41 Сейчас в теме
(47) Bukaska, расскажу смеятся будете! Через Вайн поставил))) долго танцевал с бубном но получилось))) можно еще через паралель но я паралель не люблю, и буткамп тоже не люблю!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот