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

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
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

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

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

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

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

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


------------------
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
pasha_usue

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

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

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

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

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


------------------
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
а мну такой способ ниразу не коробит, если среда тестовая, так сказать "тренируемся на кошках"


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
h.i.a.

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


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




Исправлено 1 раз(а). Последнее : h.i.a., 02.05.16 22:39
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

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

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


------------------
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
ssa

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

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




Исправлено 1 раз(а). Последнее : ssa, 27.06.16 14:33
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

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

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


------------------
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
ssa

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


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




Исправлено 1 раз(а). Последнее : ssa, 27.06.16 15:53
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

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

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


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




Исправлено 1 раз(а). Последнее : Аспид, 28.06.16 08:00
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
Аспид
Автор

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

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


------------------
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
ssa

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

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
pasha_usue

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

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

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

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
pasha_usue
Супер!Спасибо!

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


------------------
Ratings: 0 negative/0 positive
Re: 8.3 РеализацияТоваровУслуг
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Аспид
pasha_usue Супер!Спасибо!

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

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

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


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


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

On-line: 5 (Гостей: 5)

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