Имя: Пароль:
1C
1С v8
При программном заполнениии документа ОперацияБух в бп 3.0 не списывает остатки
0 ШурикОвёрт
 
22.12.21
14:56
в бп 3.0 1с 8.3, программно через внешнюю обработку заполняю документ  ОперацияБух, всё заполняется хорошо, но при записи не списываюся(не изменяются)
остатки. Что я ещё не предусмотрел значения остатков беру из остатков регистра бухгалтерии. заполняю аналогично этому коду

&НаКлиенте
Процедура ОК(Команда)
    
    ФормаДокумента = ПолучитьФорму("Документ.ОперацияБух.ФормаОбъекта");
    Для сч =1 по 9 Цикл
        
        НоваяСтрока = ФормаДокумента.ХозрасчетныйНаборЗаписей.Добавить();
        НоваяСтрока.СчетДт = ПолучитьСчетПоКоду("10.0" + сч);
        
        ОбработатьИзменениеСчета(ФормаДокумента, "Дт", НоваяСтрока);
        
    КонецЦикла;    

    ФормаДокумента.Открыть();
    
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ОбработатьИзменениеСчета(Форма, ДтКт, СтрокаТаблицы)
    
    ПоляФормы = Новый Структура("Субконто1,Субконто2,Субконто3");
    ПоляФормы.Субконто1 = "ХозрасчетныйСубконто" + ДтКт + "1";
    ПоляФормы.Субконто2 = "ХозрасчетныйСубконто" + ДтКт + "2";
    ПоляФормы.Субконто3 = "ХозрасчетныйСубконто" + ДтКт + "3";
    БухгалтерскийУчетКлиентСервер.ПриВыбореСчета(СтрокаТаблицы["Счет" + ДтКт], Форма, ПоляФормы, Неопределено, Истина, Ложь);
    
    ПоляОбъекта = Новый Структура("Субконто1,Субконто2,Субконто3,Подразделение,Валютный,Количественный,Организация");
    ПоляОбъекта.Субконто1      = "Субконто" + ДтКт + "1";
    ПоляОбъекта.Субконто2      = "Субконто" + ДтКт + "2";
    ПоляОбъекта.Субконто3      = "Субконто" + ДтКт + "3";
    ПоляОбъекта.Подразделение  = "Подразделение" + ДтКт;
    ПоляОбъекта.Валютный       = "Валютный" + ДтКт;
    ПоляОбъекта.Количественный = "Количественный" + ДтКт;
    ПоляОбъекта.Организация    = Форма.Объект.Организация;
    БухгалтерскийУчетКлиентСервер.ПриИзмененииСчета(СтрокаТаблицы["Счет" + ДтКт], СтрокаТаблицы, ПоляОбъекта, Истина, , Ложь);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьСчетПоКоду(КодСчета)
    
    Возврат ПланыСчетов.Хозрасчетный.НайтиПоКоду(КодСчета);

КонецФункции
1 Мультук
 
гуру
22.12.21
15:05
(0)

1) Не пойму зачем формировать бух.операцию через форму. Честно.
2) Где заполняются поля "Количество" и "Сумма"
3) Я конечно извиняюсь, а где заполнение НоваяСтрока.СчетКт ?

Для сч =1 по 9 Цикл
        
    НоваяСтрока = ФормаДокумента.ХозрасчетныйНаборЗаписей.Добавить();
    НоваяСтрока.СчетДт = ПолучитьСчетПоКоду("10.0" + сч);
        
    ОбработатьИзменениеСчета(ФормаДокумента, "Дт", НоваяСтрока);
        
КонецЦикла;
2 ШурикОвёрт
 
22.12.21
15:09
(1) я же пишу на подобии этого заполняю, значение по ДтКт заполняются "визуально"корректно
3 Dmitrii
 
гуру
22.12.21
15:10
(0) >> всё заполняется хорошо.

Ты врешь. Или код не весь привёл.
А код твой - вообще феерическая бредятина.
4 ШурикОвёрт
 
22.12.21
15:10
(3) 1 сек сейчас всё запулю
5 Dmitrii
 
гуру
22.12.21
15:11
(2) >>  на подобии этого заполняю.

Ну значит и остатки у тебя списываются так же - на подобии.
6 ШурикОвёрт
 
22.12.21
15:12
+code

&НаКлиенте
Процедура Получить(Команда)
    Если ЗначениеЗаполнено(Дата) Тогда
        ВладелецФорма = ВладелецФормы.ЭтаФорма;
        ЗаполнитьТЗОстаткмиСчета(Дата);
        Счет = ПолучитьСчетПоКоду("ГТД");
        
        Для Каждого Строка Из ПрочитанныеДанные Цикл
            НоваяСтрокаХозрасчетный = ВладелецФорма.ХозрасчетныйНаборЗаписей.Добавить();
            ДтКт = Строка.ДтКт;    
            НоваяСтрокаХозрасчетный["Счет" + ДтКт] = Счет;
            НоваяСтрокаХозрасчетный["Количество" + ДтКт] = Строка.Количество;
            НоваяСтрокаХозрасчетный["Субконто" + ДтКт+1] = Строка.Номенклатура;
            НоваяСтрокаХозрасчетный["Субконто" + ДтКт+2] = Строка.НомерГТД;
            НоваяСтрокаХозрасчетный["Субконто" + ДтКт+3] = Строка.Страна;
            ОбработатьИзменениеСчета(ВладелецФормы, ДтКт, НоваяСтрокаХозрасчетный);
        КонецЦикла;

    Иначе
        Сообщить("Выберите Дату");
    КонецЕсли;
    
    ЭтаФорма.Закрыть();
    
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура ОбработатьИзменениеСчета(Форма, ДтКт, СтрокаТаблицы)
    
    ПоляФормы = Новый Структура("Субконто1,Субконто2,Субконто3");
    ПоляФормы.Субконто1 = "ХозрасчетныйСубконто" + ДтКт + "1";
    ПоляФормы.Субконто2 = "ХозрасчетныйСубконто" + ДтКт + "2";
    ПоляФормы.Субконто3 = "ХозрасчетныйСубконто" + ДтКт + "3";
    БухгалтерскийУчетКлиентСервер.ПриВыбореСчета(СтрокаТаблицы["Счет" + ДтКт], Форма, ПоляФормы, Неопределено, Истина, Ложь);
    
    ПоляОбъекта = Новый Структура("Субконто1,Субконто2,Субконто3,Подразделение,Валютный,Количественный,Организация");
    ПоляОбъекта.Субконто1      = "Субконто" + ДтКт + "1";
    ПоляОбъекта.Субконто2      = "Субконто" + ДтКт + "2";
    ПоляОбъекта.Субконто3      = "Субконто" + ДтКт + "3";
    ПоляОбъекта.Подразделение  = "Подразделение" + ДтКт;
    ПоляОбъекта.Валютный       = "Валютный" + ДтКт;
    ПоляОбъекта.Количественный = "Количественный" + ДтКт;
    ПоляОбъекта.Организация    = Форма.Объект.Организация;
    БухгалтерскийУчетКлиентСервер.ПриИзмененииСчета(СтрокаТаблицы["Счет" + ДтКт], СтрокаТаблицы, ПоляОбъекта, Истина, , Ложь);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьСчетПоКоду(КодСчета)
    
    Возврат ПланыСчетов.Хозрасчетный.НайтиПоКоду(КодСчета);
    
КонецФункции// ПолучитьСчетПоКоду()

//НомерГТД записанный из файла в ТЧ
&НаСервере
Процедура ЗаполнитьТЗОстаткмиСчета(Дата)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
        |    ХозрасчетныйОстатки.Субконто2 КАК НомерГТД,
        |    ХозрасчетныйОстатки.Субконто3 КАК Страна,
        |    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Количество
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &Счет, , ) КАК ХозрасчетныйОстатки";
    
    Запрос.УстановитьПараметр("Дата", Дата);
    Запрос.УстановитьПараметр("Счет", ПолучитьСчетПоКоду("ГТД"));
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        НоваяСтрока = ПрочитанныеДанные.Добавить();
        Если Выборка.Количество > 0 Тогда
            НоваяСтрока.ДтКт = "Кт";    
        ИначеЕсли Выборка.Количество < 0 Тогда
            НоваяСтрока.ДтКт = "Дт";
        КонецЕсли;
        НоваяСтрока.Количество = Sqrt(Pow(Выборка.Количество,2));
        НоваяСтрока.НомерГТД = Выборка.НомерГТД;
        НоваяСтрока.Страна = Выборка.Страна;
        НоваяСтрока.Номенклатура = Выборка.Номенклатура;
        
    КонецЦикла;    
    
        
    
КонецПроцедуры
7 ШурикОвёрт
 
22.12.21
15:12
(5)  отправил сообщением (6)
8 ШурикОвёрт
 
22.12.21
15:14
(5) я долго парился чего незаписывались данные, и нашёл отрывок  который привёл выше, и засунул в свой код, мб что-то подкорректировать нужно в том  коде под меня?
9 Мультук
 
гуру
22.12.21
15:15
(6)

Я считаю вот здесь ошибка, однозначно

НоваяСтрока.Количество = Sqrt(Pow(Выборка.Количество,2));

P.S.
Опять где-то горят торфяники? Хотя нет - зима.
10 ШурикОвёрт
 
22.12.21
15:16
(9) так тут я просто убираю отрицательное значение и всё, так что нет
11 Ненавижу 1С
 
гуру
22.12.21
15:17
(10) Это теперь так модно вычислять модуль числа?
12 Масянька
 
22.12.21
15:18
Активность?
13 ШурикОвёрт
 
22.12.21
15:19
(12) если после обновления документа зайти в "ещё" табличной части и нажать включить активность движений, то тогда всё работает
14 ШурикОвёрт
 
22.12.21
15:20
(12) программно я нашёл где значение меняется и просто выставил его в Истина, но всё равно не изменяет значения в регистре
15 ШурикОвёрт
 
22.12.21
15:21
(11) по западным тенденциям=)
16 ДенисЧ
 
22.12.21
15:21
(9) Да там не торфяники горят...
17 ШурикОвёрт
 
22.12.21
15:28
ладно бы если оно вообще не записывало значения в регистр, так при включении активности движений оно же записывает, значит оно просто где меняет "значение для записи", или не верно понимаю исправьте пож
18 Масянька
 
22.12.21
15:33
(17) Ищи и читай про док-т "Операция (бухгалтерский и налоговый учет)". Он очень прилично отличается от остальных док-ов.
PS "Значение для записи" - такого нет. Есть "Активность".
19 Мультук
 
гуру
22.12.21
15:46
(17)

А можно скриншот формы операции ?

P.S.
Он просто один и тот же счет сует и в дебет и в кредит :-(
20 ШурикОвёрт
 
22.12.21
15:52
(19) да, я вывожу счет в 0, отцательные остатки добавляю, положительные списываю
21 piter3
 
22.12.21
15:53
а не проще инвентаризацию заполнить,тч и ввести на основании
22 ШурикОвёрт
 
22.12.21
15:53
(19) крч я врое понял что я незаполнил , на каждое поля нужно добавить активность и док и тд сейчас поробую
23 Мультук
 
гуру
22.12.21
15:53
(20)

А можно скриншот формы операции ?
24 ШурикОвёрт
 
22.12.21
15:54
(21) я джун простой, что сказали то делаю
25 Мультук
 
гуру
22.12.21
15:57
Там забалансовый счет...

P.S.
А я чего-то уже и забыл как списывать с забаланса.
Старость не радость (с)
26 Масянька
 
22.12.21
15:59
(19) Но при установке активности пишет. Же. И в коде нет ни слова про активность.
27 Мультук
 
гуру
22.12.21
16:01
(26)

За такой код нужно откручивать руки прямо по ноги.
Особенно, если он вдруг заработает
28 Масянька
 
22.12.21
16:01
(27) Я бы просто прострелила коленки... Обе... Разрывными...
29 ШурикОвёрт
 
22.12.21
16:16
(26) код с активностью удалил, я просто значение на истина ставил после загрузки данных в тч, перед закрытием формы

P.S. Во юмористы собрались, я смотрю когда устроились только на работу сразу были со знаниями в...
30 ШурикОвёрт
 
22.12.21
16:18
(18) читаю сижу сенк
31 МихаилМ
 
22.12.21
16:26
спасибо создателям форума за ф-цию cloak
cloak('ШурикОвёрт'); и темы дегенерата ШурикОвёрт я больше не увижу.
32 ШурикОвёрт
 
22.12.21
16:27
(28) спасибо, прочитал исправил, всё работает
33 ШурикОвёрт
 
22.12.21
16:27
(31) ну т.к. а что мне тут высказывают и я высказал или глаз колит?
34 ШурикОвёрт
 
22.12.21
16:29
(31) удачи)))))
35 Масянька
 
22.12.21
16:37
(29) Юмористы...
Да, у многих присутствующих специфическое чувство юмора. Но у нашего правительства оно (чувство юмора) еще специфичнее - ничего, терпишь...
Не скажу за всех, но я (лично) через две недели (!!!) работы во франче (начало моего знакомства) сидела по ночам за мат. частью (основы бух. учета, автора не помню) - не понимала многих вещей.
А когда впервые столкнулась с операцией бух - прилично подолбилась прежде, чем что-то заработало. И очень со многим (в эске) так (изобретение лисапеда все-таки сказывается).
Твое дело (с учетом присутствия на форуме) - слушать. И стараться не поддаваться не подколки.
Тебе тоже - удачи.
36 Dmitrii
 
гуру
22.12.21
17:33
(33) >> или глаз колит?

Щеголяешь своим фееричным *авнокодом и спрашиваешь не колет ли глаз?
Да от такого не то что колет... кровавые слёзы текут и навязчивая мысль - как бы такое развидеть.
37 dekorn
 
22.12.21
19:37
Хозрасчетный.Остатки(&Дата

получает остатки на начало &Дата,
добавь туда секунду, будет тебе счастье