1С:Предприятие 8.3 (8.3.17.1549)
конфа: "Управление торговым предприятием для Украины", редакция 1.2.
Всем привет.
Есть конфа УТП, использовалась только для управленческого учёта
теперь её нужно перевести на бух. учёт
Мой алгоритм: беру запросом документы без галки в реквизите ОтражатьВБухгалтерскомУчете, получаю Объект каждого документа, ставлю галку "ОтражатьВБухгалтерскомУчете"
далее нужно проверить шапку документа, использую процедуру из общего модуля Заполнение документов
ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(докОбьект, докОбьект.мСтруктураПараметровДляПолученияДоговора);
докОбьект.ЗаполнитьСчетаУчетаВТабЧасти(докОбьект.Товары , "Товары" , Истина, Истина);
докОбьект.ЗаполнитьСчетаУчетаВТабЧастиУслуги(Истина, Истина);
докОбьект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
Смотрите регистр СчетаУчетаНоменклатуры
попробуйТЕ в проблемном документе вручную установить галку БУ и выбрать повторно номенклатуру, если поле СчетБУ останется пустым, тогда как сказал sava1 смотриТЕ СчетаУчетаНоменклатуры
! | https://pro1c.org.ua/index.php?act=announce&id=2: 1 |
One @ Сегодня, 14:16
,
играюсь на демке, в доках были предварительно сняты галки "проводить в бух. учёте" , очищены счета бухгалтерского и налогового учёта и перепроведены
т.е. я преднамерено получил документы только с управленческими проводками, для того что б найти их запросом и обработать, если ставлю вручную в каждом документе галку "в бух. учёте" то всё проводиться хорошо,
регистр СчетаУчетаНоменклатуры тоже заполнен
Счета учета и прочая информация для бух.учета устанавливается в форме если что.
Смотрите в эту сторону.
А то что вы предлагали как раз на форме и делается, а вам надо самому заполнять документ-объект.
sava1 @ Сегодня, 18:08
,
Да.
Смысл что плясать надо от формы, и адаптировать под программный метод. )
DartRomanius @ Сегодня, 20:41
,
Я бы перенёс в обработку функции из события при установке флажка
СчетаУчета = УправлениеВзаиморасчетами.ПолучитьСчетаРасчетовСКонтрагентом(Организация, Контрагент, ДоговорКонтрагента);
Если ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателя;
СчетУчетаРасчетовПоАвансам = СчетаУчета.СчетАвансовПокупателя;
ИначеЕсли ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Бартерный Тогда
СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателяПриБартере;
СчетУчетаРасчетовПоАвансам = СчетаУчета.СчетАвансовПокупателяПриБартере;
Иначе
СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателя;
СчетУчетаРасчетовПоАвансам = СчетаУчета.СчетАвансовПокупателя;
КонецЕсли;
СчетУчетаРасчетовПоТаре = СчетаУчета.СчетУчетаТарыПокупателя;
СчетУчетаРасчетовПоТареПоАвансам = СчетаУчета.СчетАвансовПоТареПокупателя;
СчетУчетаНДС = СчетаУчета.СчетУчетаНДСПродаж;
СчетУчетаНДСПодтвержденный = СчетаУчета.СчетУчетаНДСПродажПодтвержденный;
// обработка счетов НУ в ТЧ
Если Товары.Количество() + ВозвратнаяТара.Количество() + Услуги.Количество() > 0 Тогда
ЗаполнитьСчетаУчетаВТабЧасти(Товары , "Товары" , ОтражатьВБухгалтерскомУчете, ОтражатьВБухгалтерскомУчете);
ЗаполнитьСчетаУчетаВТабЧасти(ВозвратнаяТара, "ВозвратнаяТара", ОтражатьВБухгалтерскомУчете, ОтражатьВБухгалтерскомУчете);
ЗаполнитьСчетаУчетаВТабЧастиУслуги(ОтражатьВБухгалтерскомУчете, ОтражатьВБухгалтерскомУчете);
КонецЕсли;
ЗаполнитьСчетаУчетаВТабЧасти(Товары , "Товары" , ОтражатьВБухгалтерскомУчете, ОтражатьВБухгалтерскомУчете);
// Заполняет счета БУ и НУ в строке табличной части
//
Процедура ЗаполнитьСчетаУчетаВСтрокеТабЧасти(СтрокаТЧ, ИмяТабЧасти, ЗаполнятьБУ, ЗаполнятьНУ) Экспорт
СчетаУчета = БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Организация, СтрокаТЧ.Номенклатура, ?(мУказаниеСкладовВТЧ, СтрокаТЧ.Склад, Склад));
ЭтоКомиссия = (ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия
И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером);
МетаданныеДока = Метаданные();
ЗаполнитьСчетаБУ(СтрокаТЧ, ИмяТабЧасти, СчетаУчета, ЗаполнятьБУ, ЭтоКомиссия, МетаданныеДока);
ЗаполнитьСчетаНУ(СтрокаТЧ, ИмяТабЧасти, СчетаУчета, ЗаполнятьНУ, ЭтоКомиссия, МетаданныеДока);
КонецПроцедуры // ЗаполнитьСчетаУчетаВСтрокеТабЧасти()
Процедура ПроверкаДокРеализации()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументВыб.Ссылка
|ИЗ
| Документ.ДокументВыб КАК ДокументВыб
|ГДЕ
| ДокументВыб.ОтражатьВБухгалтерскомУчете = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| ДокументВыб.Номер";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"ДокументВыб",Строка(ЭлементыФормы.ПолеВыбораДокумента.Значение));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
докОбьект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
докОбьект.ОтражатьВБухгалтерскомУчете = Истина;
докОбьект.Записать(РежимЗаписиДокумента.Запись,);
ЗаполнениеДокументов.ПриИзмененииЗначенияКонтрагента(докОбьект,докОбьект.мСтруктураПараметровДляПолученияДоговора);
СчетаУчета = УправлениеВзаиморасчетами.ПолучитьСчетаРасчетовСКонтрагентом(докОбьект.Организация, докОбьект.Контрагент, докОбьект.ДоговорКонтрагента);
Если докОбьект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда
докОбьект.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателя;
докОбьект.СчетУчетаРасчетовПоАвансам = СчетаУчета.СчетАвансовПокупателя;
ИначеЕсли докОбьект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Бартерный Тогда
докОбьект.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателяПриБартере;
докОбьект.СчетУчетаРасчетовПоАвансам = СчетаУчета.СчетАвансовПокупателяПриБартере;
Иначе
докОбьект.СчетУчетаРасчетовСКонтрагентом = СчетаУчета.СчетРасчетовПокупателя;
докОбьект.СчетУчетаРасчетовПоАвансам = СчетаУчета.СчетАвансовПокупателя;
КонецЕсли;
докОбьект.СчетУчетаРасчетовПоТаре = СчетаУчета.СчетУчетаТарыПокупателя;
докОбьект.СчетУчетаРасчетовПоТареПоАвансам = СчетаУчета.СчетАвансовПоТареПокупателя;
докОбьект.СчетУчетаНДС = СчетаУчета.СчетУчетаНДСПродаж;
докОбьект.СчетУчетаНДСПодтвержденный = СчетаУчета.СчетУчетаНДСПродажПодтвержденный;
// обработка счетов НУ в ТЧ
Если докОбьект.Товары.Количество() + докОбьект.ВозвратнаяТара.Количество() + докОбьект.Услуги.Количество() > 0 Тогда
докОбьект.ЗаполнитьСчетаУчетаВТабЧасти(докОбьект.Товары , "Товары" , Истина, Истина);
докОбьект.ЗаполнитьСчетаУчетаВТабЧасти(докОбьект.ВозвратнаяТара, "ВозвратнаяТара", Истина, Истина);
докОбьект.ЗаполнитьСчетаУчетаВТабЧастиУслуги(Истина, Истина);
КонецЕсли;
докОбьект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
КонецЦикла;
КонецПроцедуры
Yevhenii_S @ Сегодня, 13:57
,
Пробовали вот здесь
СчетаУчета = БухгалтерскийУчет.ПолучитьСчетаУчетаНоменклатуры(Организация, СтрокаТЧ.Номенклатура, ?(мУказаниеСкладовВТЧ, СтрокаТЧ.Склад, Склад));
Yevhenii_S @ 15.01.21, 13:57
Проверил Ваш код на типовой - всё работает. Разбирайтесь с данными в базе.
https://pro1c.org.ua/topic/universalnye-podbor-i-obrabotka-obektov-upravlyaemoe-i-obychnoe-prilozhenie-64088/
С ее помощью можно дозаполнить все необходимые реквизиты табличных частяй
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua