Имя: Пароль:
1C
1С v8
несоответствие счетов БУ и НУ
,
0 manti
 
09.04.12
10:47
Всем привет. В конфе УПП 1.3 есть документ установка соответствия счетов, в котором верно задан счет БУ и аналогичный счет в НУ.
Обработкой "Групповая обработка справочников и документов" я убираю признак НУ и вновь ставлю его, но данные счетов встают неверно, однако если вручную захожу и переставляю ризнак НУ то все встает как надо.
Как сделать автоматом через групповую обработку, поскольку документов очень много??
1 Maxus43
 
09.04.12
10:48
там из формы документа надо код перенести в обработку. при смене счета БУ который
2 Maxus43
 
09.04.12
10:49
Групповой обработкой - никак
3 manti
 
09.04.12
10:58
(2) тоесть вот этот код

СчетаУчетаВДокументах.ИнтерактивноПерезаполнитьСчетаУчета(ЭтотОбъект, Ложь, Новый Структура("Товары,ВозвратнаяТара"), Неопределено, ОтражатьВНалоговомУчете);
   
УстановитьВидимость();

Перенести в групповую обработку? или чем еще можно?
4 Maxus43
 
09.04.12
11:02
просто свою написать, в групповую то зачем
5 manti
 
09.04.12
11:06
может есть какие то готовые варианты?
6 hhhh
 
09.04.12
11:24
(5) обработка "Универсальный подбор и обработка объектов". Там есть произвольный алгоритм. Туда вставляешь этот чудо код и радуешься.
7 ДемонМаксвелла
 
09.04.12
11:43
УстановитьВидимость() тут ни при чем. И вообще, это в контексте формы только смысл имеет...
8 manti
 
09.04.12
12:05
(5) эта обработка стандартная в УПП? или ее скачивать?
9 manti
 
09.04.12
12:28
(6) нашел, как там поставить признак НУ и это условие? я скрин выложил. Так то поставл условия но не срабатывает..
http://s019.radikal.ru/i617/1204/75/a72ce7cdc533.jpg
10 hhhh
 
09.04.12
12:37
(9) ну там где Произвольный алгоритм, добавляешь новый алгоритм, щелкаешь, открывается текстовый редактор и ты туда пишешь типа

СчетаУчетаВДокументах.ИнтерактивноПерезаполнитьСчетаУчета(Объект, Ложь, Новый Структура("Товары,ВозвратнаяТара"), Неопределено, ОтражатьВНалоговомУчете);
Объект.Записать();
11 hhhh
 
09.04.12
12:38
(10)+ видимо

Объект.ОтражатьВНалоговомУчете);
12 manti
 
09.04.12
13:24
(11) hhhh, огромное Вам спасибо, зарботало
сделал вот так

Объект.ОтражатьВНалоговомУчете = Ложь;
Объект.ОтражатьВНалоговомУчете = Истина;
СчетаУчетаВДокументах.ИнтерактивноПерезаполнитьСчетаУчета(Объект, Ложь, Новый Структура("Товары,ВозвратнаяТара"), Неопределено, Объект.ОтражатьВНалоговомУчете);
Объект.Записать();
13 manti
 
10.04.12
09:51
(11) а если сложилась такая ситуация что нужно саму функцию в этом алгоритме вызывать?? Сделал так

Объект.ОтражатьВНалоговомУчете = Ложь;
Объект.ОтражатьВНалоговомУчете = Истина;

Функция ИнтерактивноПерезаполнитьСчетаУчета(Объект, ЕстьСчетаВШапке, СтруктураТабличныхЧастей, ЗаполнятьБУ, ЗаполнятьНУ, ПрименениеУСН=Ложь)
   
   Если ЗаполнятьБУ<>Истина И ЗаполнятьНУ<>Истина Тогда
       Возврат Ложь;
   КонецЕсли;
   
   ЗаполнятьСчетаУчетаВДокументах = ЗаполнятьСчетаУчетаВДокументах(Объект.Дата);
   
   НадоЗаполнять                = Ложь;
   ТабличныеЧастиДляЗаполнения = Новый Массив;
   ЕстьНеунифицированныеТЧ    = Ложь;
   
   // Вопрос для заполненных табличных частей задаем всегда, если счета заполняются не при проведении документа.
   // В одном и том же документе могут быть счета учета заполняемые как в при заполнении, так и при проведении документа,
   // информация об этом - в значениях структуры табличных частей (ЛОЖЬ обозначает, что заполняются не при проведении).
   Для Каждого ДанныеТЧ Из СтруктураТабличныхЧастей Цикл
       
       Если ПустаяСтрока(ДанныеТЧ.Ключ) ИЛИ Объект[ДанныеТЧ.Ключ].Количество()>0 Тогда
           Если ДанныеТЧ.Значение = ЛОЖЬ Тогда
               ЕстьНеунифицированныеТЧ = Истина;
           ИначеЕсли ЗаполнятьСчетаУчетаВДокументах Тогда
               ТабличныеЧастиДляЗаполнения.Добавить(ДанныеТЧ.Ключ);
           КонецЕсли;
       КонецЕсли;
       
   КонецЦикла;
   
   НадоЗаполнять = ЕстьНеунифицированныеТЧ ИЛИ ТабличныеЧастиДляЗаполнения.Количество()>0;
   
   НадоСпрашивать= НадоЗаполнять; // Будем спрашивать пользователя, (1) если решили, что будем заполнять табличные части или счета номенклатуры и затрат в шапке
   // (2) если есть чем заполнить остальные счета шапки (например - счета расчетов) (см. далее)
   
   Если ЕстьСчетаВШапке Тогда // Такие, как счета расчетов
       
       СтруктураСчетовШапки = Объект.ЗаполнитьСтруктуруСчетовУчетаШапки(ЗаполнятьБУ=Истина, ЗаполнятьНУ=Истина); // параметры ЗаполнитьСтруктуруСчетовУчетаШапки() должны быть булевого типа
       
       //Проверим, надо ли менять/заполнять счета в шапке
       Если НЕ НадоЗаполнять Тогда
       
           // Проверим, есть ли в шапке значения, не соответствующие значениям по-умолчанию
           // Если они есть, то будем спрашивать пользователя.
           Для Каждого ДанныеСчета Из СтруктураСчетовШапки Цикл
               
               НадоЗаполнять = НадоЗаполнять ИЛИ Объект[ДанныеСчета.Ключ] <> ДанныеСчета.Значение;
               
               Если НадоЗаполнять И ЗначениеЗаполнено(Объект[ДанныеСчета.Ключ]) Тогда
                   НадоСпрашивать = Истина;
                   Прервать;
               КонецЕсли;
               
           КонецЦикла;
           
       КонецЕсли;
       
   КонецЕсли;
   
   Если НЕ НадоЗаполнять Тогда
       Возврат Ложь;
   КонецЕсли;
   
   // Зададим вопрос
   //Если НадоСпрашивать И НЕ РаботаСДиалогами.НеобходимоПерезаполнитьСчетаУчета(ЗаполнятьБУ, ЗаполнятьНУ,ПрименениеУСН) Тогда
       // ответили "НЕ надо перезаполнить счета"
   //    Возврат Ложь;
   //КонецЕсли;
   
   // Заполним шапку
   Если ЕстьСчетаВШапке Тогда
       ЗаполнитьЗначенияСвойств(Объект, СтруктураСчетовШапки);
   КонецЕсли;
   
   // Заполним "унифицированные" табличные части
   Для Каждого ИмяТЧ Из ТабличныеЧастиДляЗаполнения Цикл
       
       Если ПустаяСтрока(ИмяТЧ) Тогда
           
           Объект.ЗаполнитьСчетаУчетаВШапке();
           
       Иначе
           
           Объект.ЗаполнитьСчетаУчетаВТабЧасти(Объект[ИмяТЧ], ИмяТЧ, ЗаполнятьБУ, ЗаполнятьНУ);
           
       КонецЕсли;
       
   КонецЦикла;
   
   // Так как пользователь ответил, что надо перезаполнять счета, то вернем Истина
   Возврат Истина;
   
КонецФункции

ИнтерактивноПерезаполнитьСчетаУчета(Объект, Истина, Новый Структура("ОплатаБанковскимиКредитами,Товары,СоставНабора",Ложь), Неопределено, Объект.ОтражатьВНалоговомУчете);
Объект.Записать();

ругается на функцию Ожидается последовательность операторов
<<?>>Функция ИнтерактивноПерезаполнитьСчетаУчета..........................
14 GenV
 
10.04.12
09:53
(13) Функции в алгоритмах размещать нельзя, только непрерывный код. Создавай новый алгоритм с кодом функции и его будешь вызвать, если не хочешь код множить.
15 DrShad
 
10.04.12
09:58
(12) Объект.ОтражатьВНалоговомУчете = Ложь;
Объект.ОтражатьВНалоговомУчете = Истина;

нахера эти строки? какой в них смысл, если форма не открыта?
16 manti
 
10.04.12
13:32
(15) установка признака нал.учета)