for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Вопросы по 1С
  

8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 18.04.16 14:48:31
1С:Предприятие 8.3 (8.3.7.2008)
Бухгалтерия предприятия, редакция 3.0 (3.0.43.174)
УФ. Тонкий клиент.

Программно создаю документ РеализацияТоваровУслуг
Вот тестовый код
  
  	//Вычисление Параметров    	  
  	Склад =  Справочники.Склады.НайтиПоНаименованию("Производство");  
  	Контрагент = Справочники.Контрагенты.НайтиПоКоду("00024970");  
  	Товар = Справочники.Номенклатура.НайтиПоКоду("000000534");  
  	Договор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000001",,,Контрагент);  
    
   	СчетУчета =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");  
          СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");  
  	СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");   
  	СчетУчетаНДСПоРеализации  = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.03");	  
  	  
  	СчетУчетаРасчетовПоАвансам =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.02");	  
  	СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");	  
    
  	//Заполнение Шапки  
  	НовыйДок=Документы.РеализацияТоваровУслуг.СоздатьДокумент();  
  	НовыйДок.Организация = Справочники.Организации.ОрганизацияПоУмолчанию();  
  	  
  	НовыйДок.ВидОперации=Перечисления.ВидыОперацийРеализацияТоваров.Товары;  
  	  
      НовыйДок.Дата = ДатаНачало;  
      НовыйДок.УстановитьНовыйНомер();  
      НовыйДок.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним);  
  	НовыйДок.Склад=Склад;  
  	НовыйДок.Контрагент=Контрагент;  
  	НовыйДок.ДоговорКонтрагента= Договор;  
  	//НовыйДок.ЗаполнитьСчетаУчетаРасчетов();  
    
  	НовыйДок.СчетУчетаРасчетовПоАвансам =СчетУчетаРасчетовПоАвансам;  
  	НовыйДок.СчетУчетаРасчетовСКонтрагентом =СчетУчетаРасчетовСКонтрагентом;  
  	  
  	НовыйДок.СпособЗачетаАвансов=Перечисления.СпособыЗачетаАвансов.Автоматически;  
  	  
  	//Заполнение Деталей	  
  	НоваяСтрока = НовыйДок.Товары.Добавить();  
  	НоваяСтрока.Номенклатура=Товар;  
  	НоваяСтрока.Количество = 100;   
      НоваяСтрока.Цена = 5555;    
  	НоваяСтрока.Сумма=555500;  
  	НоваяСтрока.ЕдиницаИзмерения=Товар.ЕдиницаИзмерения;  
  	НоваяСтрока.СтавкаНДС=Перечисления.СтавкиНДС.НДС18;  
  	НоваяСтрока.СуммаНДС=   99990;  
  	НоваяСтрока.СчетУчета=СчетУчета;  
  	НоваяСтрока.СчетДоходов=СчетДоходов;  
  	НоваяСтрока.СчетРасходов=СчетРасходов;  
  	НоваяСтрока.СчетУчетаНДСПоРеализации=СчетУчетаНДСПоРеализации;  
  	  
      НовыйДок.Записать();
В результате, док. проводится, но когда открываешь созданный док на просмотр, он несколько отличается от созданного в ручную.
А имеено в сечтах учета, что то лишнее показывает
На картинке Неверно
[attachment 24157 ]

Вот так при ручном вводе
[attachment 24158 ]

Что за лишние <...> ?
Док проводится, Никаких ошибок не выдает.
Но вызывает беспокойство, что то не так. )

Подскажите...)


------------------
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
pasha_usue

Сообщений: 3118
Откуда: Е-бург
Дата: 19.04.16 06:35:00
Лениво ковырять код, но скорей всего это какой-то незаполненный счет, который в вашем случае не используется. Например, это может быть СчетУчетаРасчетовПоТаре. А тару вы отдельно не учитываете, поэтому на проведении документов это никак не сказывается.
Штатно, похоже, тара учитывается на 41.01, как и прочие товары (а счет 41.01 уже и так в списке).

PS. Счета плана счетов определены в конфигураторе (предопределенные), поэтому к ним можно обращаться как к объектам конфигурации: "ПланыСчетов.Хозрасчетный.ТоварыНаСкладах".
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 19.04.16 08:20:18
pasha_usue
PS. Счета плана счетов определены в конфигураторе (предопределенные), поэтому к ним можно обращаться как к объектам конфигурации: "ПланыСчетов.Хозрасчетный.ТоварыНаСкладах".
Не понял фразу(((

Я пробовал решить данную задачу, через отладчик, останавливал, и смотрел, как что создается.
Мозг закипает((( От собственного незнания-закипания.

Хочется просто понять, поскольку все глубже приходится погружаться, какой подход для решения подобных задач.
А то впечатление, что велосипед изобретаю?


------------------
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
pasha_usue

Сообщений: 3118
Откуда: Е-бург
Дата: 19.04.16 09:54:02
Аспид
pasha_usue
PS. Счета плана счетов определены в конфигураторе (предопределенные), поэтому к ним можно обращаться как к объектам конфигурации: "ПланыСчетов.Хозрасчетный.ТоварыНаСкладах".
Не понял фразу(((

Я пробовал решить данную задачу, через отладчик, останавливал, и смотрел, как что создается.
Мозг закипает((( От собственного незнания-закипания.

Хочется просто понять, поскольку все глубже приходится погружаться, какой подход для решения подобных задач.
А то впечатление, что велосипед изобретаю?
Аспид
Контрагент = Справочники.Контрагенты.НайтиПоКоду("00024970");   
  СчетУчетаРасчетовПоАвансам =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.02");
Меня слегка коробит вот от таких участков кода. Дело в том, что конфигурация это программа. Программа не должна ничего знать о данных, которые лежат в вашей базе. Это относится и к фоксовым программам и к 1Совским. И вообще к любым.
Я так понимаю, код контрагента у вас, в общем случае, приходит из другой базы, а не пробит константой в модуле. Но и счет у вас пробит константой в модуле. Это тоже нарушает принцип разделения кода и пользовательских данных.
Вот поэтому, я предложил обращаться к счету плана счетов по его наименованию, определенному в конфигураторе.

А так. Нормальный подход. Документ создается, проводится. Цель достигнута.
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 19.04.16 15:07:39
pasha_usue
Меня слегка коробит вот от таких участков кода.
pasha_usue
Программа не должна ничего знать о данных, которые лежат в вашей базе.
pasha_usue
Но и счет у вас пробит константой в модуле
+100500
Согласен.
Я и не заметил этого!


------------------
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Foxtrot

Сообщений: 3378
Откуда: Куда:
Дата: 22.04.16 12:52:27
а мну такой способ ниразу не коробит, если среда тестовая, так сказать "тренируемся на кошках"


------------------
P.S. будете проходить мимо, не стесняйтесь, проходите
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
h.i.a.

Сообщений: 3997
Откуда: Мурманск
Дата: 02.05.16 22:38:56
pasha_usue
Аспид
Контрагент = Справочники.Контрагенты.НайтиПоКоду("00024970");   
  СчетУчетаРасчетовПоАвансам =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.02");
Меня слегка коробит вот от таких участков кода.
Первая строчка - однозначный костыль. А со второй - это бух счет. И значит ровно одно и тоже независимо от программы, как 20 лет назад, так и сейчас. Вполне можно допустить, что в коде какие-то жёсткие привязки есть, не предполагающие даже выноса в константы.


------------------




Исправлено: h.i.a., 02.05.16 22:39
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 27.06.16 14:22:20
Дошел до конкретики.
Понял, что на разную номенклатуру, могут быть разные счета.
(Тупо бух указал, что вот эта фигня, по другому счету)
pasha_usue
PS. Счета плана счетов определены в конфигураторе (предопределенные), поэтому к ним можно обращаться как к объектам конфигурации: "ПланыСчетов.Хозрасчетный.ТоварыНаСкладах".

А как это предопределенное вытащить?


------------------
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
ssa

Сообщений: 12248
Откуда: Москва
Дата: 27.06.16 14:32:58
Аспид
PS. Счета плана счетов определены в конфигураторе (предопределенные), поэтому к ним можно обращаться как к объектам конфигурации: "ПланыСчетов.Хозрасчетный.ТоварыНаСкладах".
А как это предопределенное вытащить?
Куда и зачем вытащить?

------------------
Лень - это неосознанная мудрость.




Исправлено: ssa, 27.06.16 14:33
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 27.06.16 15:38:59
Есть номенклатура.
Программно создаю документ РеализацияТоваровУслуг
  
 *Жестко прописываю  
  	СчетУчета =  ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");    
          СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");    
    	СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");     
    	СчетУчетаНДСПоРеализации  = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.03");	  
    
  //Заполнение Деталей	    
    	НоваяСтрока = НовыйДок.Товары.Добавить();    
    	НоваяСтрока.Номенклатура=Товар;    
    
  Так вот, хотелось бы именно по этой номенклатуре (=Товар) найти предопределенные счета  
  Далее сейчас    
    
    	НоваяСтрока.СчетУчета=СчетУчета;    
    	НоваяСтрока.СчетДоходов=СчетДоходов;    
    	НоваяСтрока.СчетРасходов=СчетРасходов;    
    	НоваяСтрока.СчетУчетаНДСПоРеализации=СчетУчетаНДСПоРеализации;

Т.е. жестко прописаны счета.
А хотелось бы их вынуть из номенклатуры. Т.к. как в 1С есть соотвествующие настройки, и бухи ими пользуются.


------------------
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
ssa

Сообщений: 12248
Откуда: Москва
Дата: 27.06.16 15:51:37
1. Идешь в конфигуратор, ПланыСчетов, Хозрсчетный. Открываешь и видишь список предопределенных счетов.
2. При наборе кода в конфигураторе после набора ПланыСчетов.Хозрасчетный и нажатии точки выскакивает список свойств, методов и Предопределенных счетов.
3.
Аспид
Т.е. жестко прописаны счета.
А хотелось бы их вынуть из номенклатуры.
Там не предопределенные. А просто счета, в числе которых могут быть и предопределенные. Получаются эти счета точно так же, как и любые другие ссылочные типы.
4. Если мне не изменяет склероз, в РТУ есть вызов УстановкаСчетовНомеклатуры или подобное. То бишь не стОит изобретать велосипед.


------------------
Лень - это неосознанная мудрость.




Исправлено: ssa, 27.06.16 15:53
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 28.06.16 07:57:20
Извиняюсь.
Но что такое РТУ?)
Изобретать велосипед не хочется.
Но как добраться до счетов?

Например у номенклатуры, есть вид номенклатуры, откуда все и берется.
Наверное можно вынуть от туда.
Но в том то и дело, что можно у конкретной номенклатуры, поменять счета.
Я не понимаю, где эта связка прописана.


------------------




Исправлено: Аспид, 28.06.16 08:00
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 28.06.16 08:34:14
Кажется нашел где все это лежит)
РегистрСведений.СчетаУчетаНоменклатуры
И там ссылка на номенклатуру, и вид номенклатуры.

Как же путано (для меня)


------------------
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
ssa

Сообщений: 12248
Откуда: Москва
Дата: 28.06.16 10:19:24
Аспид
Извиняюсь.
Но что такое РТУ?)
М-да... Название этой темы, особенно выделенные буквы названия прочитай внимательно.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
pasha_usue

Сообщений: 3118
Откуда: Е-бург
Дата: 04.07.16 06:11:37
Аспид
Кажется нашел где все это лежит)
РегистрСведений.СчетаУчетаНоменклатуры
И там ссылка на номенклатуру, и вид номенклатуры.
Все правильно нашел. Только действительно стоит воспользоваться штатной функцией общего модуля "СчетаУчетаВДокументах":

  
  СчетаУчетаВДокументах.ЗаполнитьСтроки(СтрокиДляЗаполненияСчетов, ИмяТабЧасти, ЭтотОбъект, Документы.РеализацияТоваровУслуг);

Где [СтрокиДляЗаполненияСчетов] это [МойДокументОбъект.Товары]; [ИмяТабЧасти] это ["Товары"] (строка); [ЭтотОбъект] это [МойДокументОбъект]; а последний аргумент так и остается.
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 04.07.16 08:36:05
pasha_usue
Супер!!! Спасибо!

Вот еще бы понять, как ты находишь это, такие функции. )
Где то описание такое есть, просто опыт?)


------------------
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
pasha_usue

Сообщений: 3118
Откуда: Е-бург
Дата: 04.07.16 12:13:31
Аспид
pasha_usue Супер!!! Спасибо!

Вот еще бы понять, как ты находишь это, такие функции. )
Где то описание такое есть, просто опыт?)
Дай человеку рыбу и он будет сыт целый день... (;Ж
Я знаю, что штатный механизм есть. Мне нужна функция, которая работает с уже готовой заполненной таблицей, массово, со всеми строками. Поэтому я сразу иду в модуль объекта и ищу, что может быть подходящим (в форме реализовано построчное заполнение). А подходящим у нас будет процедура заполнения на основании какого-нибудь документа. Пятая от начала модуля функция называется "ЗаполнитьПоПоступлению". Я предположил, что где-то в этой функции после того как табличная часть будет заполнена, будут проставляться счета. Я мог и ошибиться, это могла быть процедура "ЗаполнитьПоДокументуОснованию". Но мне повезло. В конце процедуры был такой код:
  
  	Если ЗаполнятьСчетаУчета Тогда  
  		  
  		СчетаУчетаВДокументах.ЗаполнитьСтроки(  
  			СтрокиДляЗаполненияСчетов, ИмяТабЧасти, ЭтотОбъект, Документы.РеализацияТоваровУслуг);  
  		  
  	КонецЕсли;
Код я не проверял, только посмотрел, какие должны быть аргументы.

Описание я бы заколебался штудировать - очень много нюансов, причем в каждой конфигурации они свои. Опыт только в том, что 1Сники придерживаются определенных стандартов при создании своих конфигураций. А вот запомнить их - только с опытом.
Ratings: 0 negative/0 positive

Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

Сообщений: 3295
Откуда: Москва
Дата: 04.07.16 14:10:59
Еще раз спасибо)
После 1го сообщения, я и сам нашел обращение к этой функции.
Примерно понял как копать.
ТОка боюсь еще стока всяко разно)))


------------------
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 12 Taran Ytuzov  (Гостей: 10)

20.06.2019 23:07:48 exec: 0.2
Mem: 1.438 Mb

© 2000-2019 Fox Club 
Яндекс.Метрика