1С бухгалтерия

На днях сразу 2 организации, которые до этого занимались только производством и оптовой продажей, решили завести свои розничные магазины. И учет им в рознице необходи только суммовой с использованем 42 счета. Версия программы 1С УСН 7.7 (делал для 172-го релиза). Решил поделиться своим опытом решения данной ситуации.

Нам придется внести изменения в 3 основных документа: Поступление, Перемещение и Реализация. Но начнем с добавления 2-х новых констант.

  • ХА_РозничныйТовар - тип Справочник.Номенклатура
  • ХА_ЗакупочныеЦены - тип Справочник.ТипыЦен

Для константы ХА_РозничныйТовар необходимо будет потом установить ту номенклатуру, которая будет фигурировать в качестве субконто для 41-го счета в рознице. Т.е., т.к. по условию задачи у нас в рознице учет суммовой, то нет смысла вести 41-й счет в разрезе номенклатуры, поэтому у нас будет одна обобщенная номенклатура, например, с наименованием "Товар".
Для константы ХА_ЗакупочныеЦены необходимо будет установить закупочный тип цен. Они будут регистрироваться при поступлении и в дальнейшем будут подставляться при перемещении из розницы в опт.

Далее меняем документ ПоступлениеМПЗ.
Добавляем новый реквизит табличной части "Наценка" (тип число).
В модуле формы, после объявления переменных пишем:

// ХА
Процедура ПриВыбореМестаХранения()
	Если МестоХранения.ТипСклада = Перечисление.ТипыСкладов.Розничный Тогда
		Форма.Наценка.Видимость(1);  
		Форма.СуммаВРознице.Видимость(1);
	Иначе
		Форма.Наценка.Видимость(0);
		Форма.СуммаВРознице.Видимость(0);
	КонецЕсли;
КонецПроцедуры
// 		ХА

Из названия процедуры можно догадаться, что ее необходимо прописать в реквизите МестоХранения.
В этом же модуле формы добавляем вызов этой процедуры (ПриВыбореМестаХранения()) в процедуре ПриОткрытии():
Процедура ПриОткрытии()
	ПриЗаписиПерепроводить(1); 
	ПриВыбореМестаХранения(); // ХА	
...

Далее меняем модуль документа(см. в прикрепленном файле). На этом с документом поступления все. Переходим к самому сложному - ПеремещениеМПЗ.
Добавляем 4 новых числовых реквизита табличной части:

  • ХА_РозничнаяСумма
  • ХА_РозничнаяЦена
  • ХА_ЗакупочнаяСумма
  • ХА_ЗакупочнаяЦена

В начале модуля формы, после объявления переменных пишем:

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

Вызов процедуры ПриВыбореМестаХранения() проставляем для 2-х реквизитов: МестоХранения и МестоХраненияПриемник. Для реквизита количество ставим вызов процедуры ХА_Пересчет(), а для реквизитов ХА_ЗакупочнаяЦена и ХА_РозничнаяЦена ставим вызов процедуры ХА_ПриИзмененииЦены().
Еще в этом же модуле формы корректируем процедуры:
Процедура ПриВыбореНоменклатуры()         
	Если Номенклатура.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Материал Тогда
		Контрагент = "";
		Договор = "";
	КонецЕсли;	
	ХА_Пересчет(); // ХА	
КонецПроцедуры	// ПриВыбореНоменклатуры()
...
Процедура ПриОткрытии()
	ПриЗаписиПерепроводить(1);
	ПриВыбореМестаХранения(); // ХА
...

Далее меням модуль документа ПеремещениеМПЗ (см. в прикрепленном файле).

И последний документ - это Реализация. Меняем в нем модуль документа:

// Проверим достаточно ли МПЗ на складе. 
Если (МестоХранения.ТипСклада <> Перечисление.ТипыСкладов.Розничный)  Тогда // ХА
	ТоварыКоличество = СоздатьОбъект("ТаблицаЗначений");
	ВыгрузитьТабличнуюЧасть(ТоварыКоличество, "Номенклатура, Количество");
	ТоварыКоличество.Свернуть("Номенклатура", "Количество");
	ТоварыКоличество.ВыбратьСтроки();
...
КонецЕсли; // ХА

Немного поясню этот кусок кода. При реализации происходит проверка достаточности МПЗ на складе. Мы добавляем условие, чтобы эта проверка не происходила для розничного склада.
И еще одна вставка:

//Списание по договорам поставки
//Принимаемые материалы (10.2)
//Принимаемые товары (41.2)   
//Товары на комиссии (004)
//Принимаемые товары и материалы, переданные на комиссию (КМС.1)
//Товары переданные на субкомиссию (КМС.2)
Если (Номенклатура.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар) или
 	(Номенклатура.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.ТоварНаКомиссии) или
 	(Номенклатура.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Материал)Тогда
 
 	НеобходимоСписатьКоличество = Количество;  
 
 	// ХА    
	Если (МестоХранения.ТипСклада = Перечисление.ТипыСкладов.Розничный) и (Номенклатура.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.Товар) Тогда
		Если НеобходимоСписатьКоличество = 0 Тогда
			Операция.НоваяПроводка();
			Операция.НомерЖурнала = "ТВ";
			Если ЕНВД = 1 Тогда
				Операция.Дебет.Счет = СчетПоКоду("90.3");
				Операция.Дебет.Субконто(1, Номенклатура.ВидДеятельности);
				Операция.Кредит.Счет 		 = Сч41_1;
				Операция.Кредит.Номенклатура = Константа.ХА_РозничныйТовар;
				Операция.Кредит.Субконто(2, МестоХранения);
				Операция.Количество 		 = Количество;
				Операция.Сумма				 = Сумма;
				Операция.СодержаниеПроводки  = "Списание МПЗ"; 
			Иначе
				Операция.Дебет.Счет = СчетПоКоду("90.4");
				Операция.Дебет.Субконто(1, Номенклатура.ВидДеятельности);
				Операция.Кредит.Счет 		 = Сч41_1;
				Операция.Кредит.Номенклатура = Константа.ХА_РозничныйТовар;
				Операция.Кредит.Субконто(2, МестоХранения);
				Операция.Количество 		 = Количество;
				Операция.Сумма				 = Сумма;
				Операция.СодержаниеПроводки  = "Списание МПЗ"; 
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;                                     
 	// 		ХА
 
 	Если (НеобходимоСписатьКоличество > 0) и
		(Номенклатура.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.ТоварНаКомиссии) и
		(ЕНВД = 1) Тогда	

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

  • При поступлении товаров в розницу указываем в документе ПоступлениеМПЗ наценку и т.о. формируются проводки по 42-му счету
  • Все товары, которые хранятся на розничном складе, для простоты учитываются на счете 41.1 (не зависимо от того покупной это товар или перемещенная собственная продукция, которая напрашивается на 41.2)
  • Для счета 41.1 я добавил дополнительное субконто МестаХранения, чтобы было проще смотреть оборотку по магазинам
  • При перемещении всегда(кроме перемещения опт-опт) делаются проводки по 41(или 43) счету. Партии товаров при перемещении из опта в розницу подбираются автоматически.
  • Приход розничной выручки оформляем документом Реализация и затем вводим на основании этого документа приходник.
  • При перемещении опт-розница и наоборот могут возникнуть вопросы, связанные с налоговым учетом, особенно если стоит порядок признания расходов "По оплате поставщику". Т.е.,например, может быть по товару уже признаны расходы, а мы этот товар перемещаем из опта в розницу. Поэтому лучше порядок признания расходов выбрать "По факту реализации" или "По факту получения дохода"
  • Ну и наконец прикрепляю еще отчет "Товарный отчет".

Все.

Прикрепленный файлРазмерХитыПоследнее скачивание
module_postuplenie.txt18.33 кб28721 день 3 часа назад
module_peremeshenie.txt62.82 кб26801 день 1 час назад
Tovarnyy_otchet.ert50.5 кб272710 часов 49 минут назад

Комментарии

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Недавно случилась та же ситуация с ронизой, очень неплохой метод у Вас!

Комсомольск-на-Амуре

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".