Надо чтобы в документе ПередачаМатериалаВЭксплуатацию у Номенклатуры Шины автоматически ставился номер счета МЦ5 вместо МЦ4. Есть код как это делается с базы БП 2.0 (я работаю в БП 3.0). Но что куда прописывать не пойму.
ну вот тут надо присваивать
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.05");
как то так. я честно говоря не знаю что такое мцо5поэтому найдите где он там есть, в планах счетов или еще где, и присваивайте
// Алгоритмы формирования проводок этого документа рассчитывают суммы проводок налогового учета
Движения.Хозрасчетный.ДополнительныеСвойства.Вставить("СуммыНалоговогоУчетаЗаполнены", Истина);
// Спецодежда
УчетТоваров.СформироватьДвиженияСписаниеТоваров(
ТаблицаСписаннаяСпецодежда,
ПараметрыПроведения.СписаниеСпецодеждыРеквизиты,
Движения, Отказ);
УчетМатериаловВЭксплуатации.СформироватьДвиженияПередачаСпецодеждыСпецоснасткиВЭксплуатацию(
ПараметрыПроведения.ПередачаСпецодеждыТаблица,
ТаблицаСписаннаяСпецодежда,
ПараметрыПроведения.ПередачаСпецодеждыРеквизиты,
Движения, Отказ);
// Спецоснастка
УчетТоваров.СформироватьДвиженияСписаниеТоваров(
ТаблицаСписаннаяСпецоснастка,
ПараметрыПроведения.СписаниеСпецоснасткиРеквизиты,
Движения, Отказ);
УчетМатериаловВЭксплуатации.СформироватьДвиженияПередачаСпецодеждыСпецоснасткиВЭксплуатацию(
ПараметрыПроведения.ПередачаСпецоснасткиТаблица,
ТаблицаСписаннаяСпецоснастка,
ПараметрыПроведения.ПередачаСпецоснасткиРеквизиты,
Движения, Отказ);
// Инвентарь и хозяйственные принадлежности
УчетТоваров.СформироватьДвиженияСписаниеТоваров(
ТаблицаСписанныйИнвентарь,
ПараметрыПроведения.СписаниеИнвентаряРеквизиты,
Движения, Отказ);
УчетМатериаловВЭксплуатации.СформироватьДвиженияПередачаИнвентаряВЭксплуатацию(
ПараметрыПроведения.ПередачаИнвентаряТаблица,
ТаблицаСписанныйИнвентарь,
ПараметрыПроведения.ПередачаИнвентаряРеквизиты,
Движения, Отказ);
// Учет НДС
// Списание спецодежды
УчетНДСБП.СформироватьДвиженияПередачаМатериаловВЭксплуатацию(
ПараметрыПроведения.СпецодеждаНДС,
ТаблицаСписаннаяСпецодежда,
ПараметрыПроведения.РеквизитыНДС,
Движения, Отказ);
// Списание спецоснастки
УчетНДСБП.СформироватьДвиженияПередачаМатериаловВЭксплуатацию(
ПараметрыПроведения.СпецоснасткаНДС,
ТаблицаСписаннаяСпецоснастка,
ПараметрыПроведения.РеквизитыНДС,
Движения, Отказ);
// Списание инвентаря
УчетНДСБП.СформироватьДвиженияПередачаМатериаловВЭксплуатацию(
ПараметрыПроведения.ИнвентарьНДС,
ТаблицаСписанныйИнвентарь,
ПараметрыПроведения.РеквизитыНДС,
Движения, Отказ);
(10) нет. Да я вообще не программист, больше по аналитической части, но вот дали такое вот задание. Неделю тут мучался с внешней обработкой, сделал же. И тут какими то силами надо справляться.
// Инвентарь и хозяйственные принадлежности
УчетТоваров.СформироватьДвиженияСписаниеТоваров(
ТаблицаСписанныйИнвентарь,
ПараметрыПроведения.СписаниеИнвентаряРеквизиты,
Движения, Отказ);
УчетМатериаловВЭксплуатации.СформироватьДвиженияПередачаИнвентаряВЭксплуатацию(
ПараметрыПроведения.ПередачаИнвентаряТаблица,
ТаблицаСписанныйИнвентарь,
ПараметрыПроведения.ПередачаИнвентаряРеквизиты,
Движения, Отказ);
Показать
Тут надо пройтись по всем функциям:
УчетТоваров.СформироватьДвиженияСписаниеТоваров
УчетМатериаловВЭксплуатации.СформироватьДвиженияПередачаИнвентаряВЭксплуатацию
и посмотреть что там задается в виде номера счета.
чтоб шагнуть в функцию надо УчетТоваров.СформироватьДви(поставить курсор сюда и нажать ф10)женияСписаниеТоваров
или же открыть УчетТоваров, и в модуле менеджера эта функция будет
Если НазваниеОбъектаВСодержании Тогда
Проводка.Содержание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Реквизиты.Содержание,
БухгалтерскийУчетПовтИсп.НазваниеОбъектаПоСчетуУчета(СтрокаПартии.СчетУчета));
Иначе
Проводка.Содержание = СокрЛП(Реквизиты.Содержание);
КонецЕсли;
Проводка.СчетКт = СтрокаПартии.СчетУчета;
СвойстваСчетаКт = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Проводка.СчетКт);
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "Номенклатура", СтрокаПартии.Номенклатура);
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "Склады", СтрокаПартии.Склад);
Если ВедетсяУчетПоПартиям ИЛИ СвойстваСчетаКт.Забалансовый Тогда
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "Партии", СтрокаПартии.Партия);
КонецЕсли;
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, "Контрагенты", Реквизиты.Контрагент);
Если СвойстваСчетаКт.УчетПоПодразделениям Тогда
Проводка.ПодразделениеКт = СтрокаПартии.Подразделение;
КонецЕсли;
Если СвойстваСчетаКт.Количественный Тогда
Проводка.КоличествоКт = СтрокаПартии.Количество;
КонецЕсли;
Если СвойстваСчетаДт.Забалансовый = СвойстваСчетаКт.Забалансовый Тогда
Проводка.СчетДт = СтрокаПартии.КорСчетСписания;
// Цикл субконто по строке партий
Для НомерСубконто = 1 По 3 Цикл
ВидСубконто = СтрокаПартии["ВидКорСубконто" + НомерСубконто];
Если НЕ ВедетсяУчетПоПартиям И ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партии Тогда
Продолжить;
КонецЕсли;
Если ТипЗначенияВидаСубконто.СодержитТип(Тип("СправочникСсылка.Номенклатура")) Тогда
ВидСубконто = СвойстваСчетаДт["ВидСубконто" + НомерСубконто];
Если ВидСубконто <> ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Продукция Тогда
КорСубконто = СтрокаПартии.Номенклатура;
КонецЕсли;
ИначеЕсли ТипЗначенияВидаСубконто.СодержитТип(Тип("СправочникСсылка.Организации")) Тогда
КорСубконто = Реквизиты.Организация;
ИначеЕсли ТипЗначенияВидаСубконто.СодержитТип(Тип("СправочникСсылка.Склады")) Тогда
Если ЗначениеЗаполнено(СтрокаПартии.Склад) Тогда
КорСубконто = СтрокаПартии.Склад;
КонецЕсли;
ИначеЕсли ТипЗначенияВидаСубконто.СодержитТип(Тип("СправочникСсылка.Контрагенты")) Тогда
Если ЗначениеЗаполнено(Реквизиты.Контрагент) Тогда
КорСубконто = Реквизиты.Контрагент;
КонецЕсли;
ИначеЕсли ВидСубконто = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами
И ТипЗначенияВидаСубконто.СодержитТип(ТипЗнч(Реквизиты.Регистратор)) Тогда
КорСубконто = Реквизиты.Регистратор;
Если ВедетсяУчетПоПартиям ИЛИ СвойстваСчетаДт.Забалансовый Тогда
БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт,
"Партии", СтрокаПартии.Партия);
КонецЕсли;
Если СвойстваСчетаДт.УчетПоПодразделениям Тогда
Проводка.ПодразделениеДт = СтрокаПартии.КорПодразделение;
КонецЕсли;
Если СвойстваСчетаДт.Количественный Тогда
Проводка.КоличествоДт = СтрокаПартии.Количество;
КонецЕсли;
Если СвойстваСчетаДт.НалоговыйУчет Тогда
Проводка.СуммаНУДт = СтрокаПартии.СуммаКорСписанияНУ;
Если ПоддержкаПБУ18 Тогда
Проводка.СуммаПРДт = СтрокаПартии.СуммаКорСписанияПР;
Проводка.СуммаВРДт = СтрокаПартии.СуммаКорСписанияВР;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Проводка.Сумма = СтрокаПартии.СуммаСписания;
Если СвойстваСчетаКт.НалоговыйУчет Тогда
Проводка.СуммаНУКт = СтрокаПартии.СуммаСписанияНУ;
Если ПоддержкаПБУ18 Тогда
Проводка.СуммаПРКт = СтрокаПартии.СуммаСписанияПР;
Проводка.СуммаВРКт = СтрокаПартии.СуммаСписанияВР;
КонецЕсли;
КонецЕсли;
ну вот тут надо присваивать
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.05");
как то так. я честно говоря не знаю что такое мцо5поэтому найдите где он там есть, в планах счетов или еще где, и присваивайте
Процедура ПолучитьСчетДебетаИСодержание(Проводка, СчетУчета, Номенклатура=Неопределено)
КодСчетаУчета = Сред(СчетУчета.Код,4,4);
Если КодСчетаУчета = "11.1" Тогда
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный;
Проводка.Содержание = "Передача спецодежды в эксплуатацию";
ИначеЕсли КодСчетаУчета = "11.2" Тогда
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.СпецоснасткаВЭксплуатацииВспомогательный;
Проводка.Содержание = "Передача спецоснастки в эксплуатацию";
Иначе
// изменение счету учета для шин с МЦ04 на МЦ05 в зависимости от дополнительного реквизита
УчетМЦ05=ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("003");
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Объект,
| ЗначенияСвойствОбъектов.Свойство,
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект = &Номенклатура
| И ЗначенияСвойствОбъектов.Свойство = &УчетМЦ05";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("УчетМЦ05",УчетМЦ05);
Результат=Запрос.Выполнить();
Если Результат.Пустой() тогда
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации;
Проводка.Содержание = "Передача инвентаря в эксплуатацию";
Иначе
Проводка.Содержание = "Передача шин в эксплуатацию";
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.05");
КонецЕсли;
КонецЕсли;
(1) Программно поменять проводки, самое простое ...
Как программно изменить проводку в Регистре Бухгалтерии?
Код 1C v 8.х
//Необходимо изменить существующие проводки и добавить значение Субконто
Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Объект.Ссылка);
Набор.Прочитать();
Для каждого Запись из Набор Цикл
Если Запись.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами Тогда
// для переборов субконто
Запись.СубконтоКт[Запись.СчетКт.ВидыСубконто[1]] = Объект.ДоговорКонтрагента;
// указывая конкретное значение
//Запись.СубконтоКт.Договоры = Объект.ДоговорКонтрагента;
КонецЕСли;
КонецЦикла;
Набор.Записать();
Код 1C v 8.х
// Перебор и замена реквизитов в проводках операции
НаборЗаписейБУ = РегистрыБухгалтерии.Типовой.СоздатьНаборЗаписей();
НаборЗаписейБУ.Отбор.Регистратор.Использование = Истина;
НаборЗаписейБУ.Отбор.Регистратор.Значение = ОперацияБух;
НаборЗаписейБУ.Прочитать();
Для Каждого ЗаписьБУ Из НаборЗаписейБУ Цикл
Если (ЗаписьБУ.СчетКт = ПланыСчетов.Типовой.ИндивидуальныйПодоходныйНалог) или
(ЗаписьБУ.СчетКт = ПланыСчетов.Типовой.СоциальныйНалог) Тогда
ВидСубк = ЗаписьБУ.СчетКт.ВидыСубконто[2].ВидСубконто;
ЗаписьБУ.СубконтоКт.Вставить(ВидСубк, Контрагент);
ЕстьИзменения = Истина;
КонецЕсли;
КонецЦикла;
Если ЕстьИзменения Тогда
НаборЗаписейБУ.Записать();
КонецЕсли;
13.
SedovSU@mail.ru
29717.04.19 14:40 Сейчас в теме
(5) Ну смотрите, тут два подхода, первый это вам нужно найти место где делаются записи в проводки из документа и в этом месте вы уже и добавите свое условие. Второй подход, после проведения, верней в этой процедуре в самом конце написать обработку движений:
ТаблицаДвижений = ЭтотОбъект.Движения.Хозрасчетный.Выгрузить();
// далее считываете таблицы меняете счет и обратно загружаете
ЭтотОбъект.Движения.Хозрасчетный.Загрузить(ТаблицаДвижений);
Это подойдет в том случае если в процедура которые используется в обработке проведения нету записи регистра. Если она есть то нужно получить набор записей его прочитать и изменить и обратно записать