Имя: Пароль:
1C
1С v8
Проведение документа!
0 Aleksei_Pro
 
06.02.12
21:15
Ребят подскажите, документы при проведении попадают в ф-ю "ПередЗаписьюДокументаДляУдаленияДвиженийПередЗаписью" в глобальном модуле, я создал новый документ, но он у меня туда не попадает, что не предусмотрел?
1 Immortal
 
06.02.12
21:16
подписка на событие
2 Aleksei_Pro
 
06.02.12
21:17
спасибо
3 Aleksei_Pro
 
06.02.12
21:43
Подскажите, почему при повторном проведении, проводок нет, проводишь еще раз, проводки появляются, хотя модуль проведения отрабатывает?
4 kible
 
06.02.12
21:51
Попробуй в свойствах документа установить записывать модифицированные
5 Aleksei_Pro
 
06.02.12
21:53
(4) имеено это и стоит.
6 Aleksei_Pro
 
06.02.12
21:57
при проведении сначала удаляются движения, затем отрабатывает модуль проведения и проводки пропадают, после повторного проведения проводки появлются
7 Aleksei_Pro
 
06.02.12
22:06
Что может быть еще?
8 ОбычныйЧеловек
 
06.02.12
22:11
у тебя модифицированность документа происходит - поэтому в процедуру передЗаписи 2 раза и попадате система - поэтому второй раз и происходит обнуление
9 Aleksei_Pro
 
06.02.12
22:15
и как исправить?
10 ОбычныйЧеловек
 
06.02.12
22:22
(9) После того как сделал в своей процедуре то, что тебе нужно - сними модифицированность а лучше считывай движения Движения.Прочитать() или как ты там получаешь движения и уже с этим работай - там же все элементарно.
11 Aleksei_Pro
 
06.02.12
22:27
(10) не понимаю, у меня при проведении выбираются остатки и формируются проводжки, как снять можифицировннось?
12 ОбычныйЧеловек
 
06.02.12
22:30
(11) не важно, что делается - важно когда и как.
13 Aleksei_Pro
 
06.02.12
22:36
что значит когда и как, простой запрос  и формирование проводок, у 2 документов нормально все работаает, а у одного постоянно пропадают проводки, как мне подправить, вот начало когда:

   Перем Заголовок;
   
   Если ОбщегоНазначения.РучнаяКорректировкаОбработкаПроведения(РучнаяКорректировка,Отказ,Заголовок,ЭтотОбъект) Тогда
       Возврат
   КонецЕсли;

   // Вставить содержимое обработчика.
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ВидНоменклатуры",ВидНоменклатуры);
   Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.ОсновноеПроизводство);
   Запрос.УстановитьПараметр("Организация",Организация);
   Запрос.УстановитьПараметр("ДатаПериода",КонецДня(Дата));
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ХозрасчетныйОстаткиИОбороты.Счет,
   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
   |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
   |    ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Субконто3,
   |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
   |    ХозрасчетныйОстаткиИОбороты.Подразделение КАК Подразделение,
   |    ХозрасчетныйОстаткиИОбороты.СуммаНУКонечныйОстатокДт КАК СуммаНУКонечныйОстатокДт
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаПериода, &ДатаПериода, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
   |ГДЕ
   |    ХозрасчетныйОстаткиИОбороты.Субконто1 = &ВидНоменклатуры
   |
   |УПОРЯДОЧИТЬ ПО
   |    Субконто2,
   |    Подразделение,
   |    Субконто3
   |ИТОГИ
   |    СУММА(СуммаКонечныйОстатокДт),
   |    СУММА(СуммаНУКонечныйОстатокДт)
   |ПО
   |    Субконто2,
   |    Подразделение,
   |    Субконто3";    
   Результат = Запрос.Выполнить();
   ДвиЖ = Запрос.Выполнить();
14 ОбычныйЧеловек
 
06.02.12
22:38
(13) ты меня совсем не слушаешь - твой запрос тут не причем (какая разница как\откуда ты данные получаешь), у тебя проблема не в получении данных а в их записи.
15 Aleksei_Pro
 
06.02.12
22:43
(14) ну подскажи, как поправть
16 sanja26
 
06.02.12
22:49
попробуй Движения.Записать(Ложь)
17 Aleksei_Pro
 
06.02.12
22:51
(16) это в обработке проведения?
18 Aleksei_Pro
 
06.02.12
22:55
(17) в типовом документе этого же не реализовано, я по аналогии и сделал документ
19 ОбычныйЧеловек
 
06.02.12
22:58
(18) Тяжело гадать, что там у тебя в коде написано (в каким событиях и т.д.) - ты точно распиши в какой процедуре, что делаешь и код самой процедуры покажи (только именно момент записи а не подготовки данных)
20 Aleksei_Pro
 
06.02.12
23:01
(19) весь код:
Процедура ОбработкаПроведения(Отказ)
   //     Заголовок для сообщений об ошибках проведения.    
   Перем Заголовок;
   
   Если ОбщегоНазначения.РучнаяКорректировкаОбработкаПроведения(РучнаяКорректировка,Отказ,Заголовок,ЭтотОбъект) Тогда
       Возврат
   КонецЕсли;
       
   ТЗ1 = новый ТаблицаЗначений;
   ТЗ1 = Тз.Выгрузить();
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы);
   Запрос.УстановитьПараметр("Организация",Организация);
   Запрос.УстановитьПараметр("ДатаПериода",КонецДня(КонПериода));
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ХозрасчетныйОстаткиИОбороты.Счет,
   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
   |    ХозрасчетныйОстаткиИОбороты.Подразделение КАК Подразделение,
   |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
   |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
   |    ХозрасчетныйОстаткиИОбороты.СуммаНУКонечныйОстатокДт КАК СуммаНУКонечныйОстатокДт
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаПериода, &ДатаПериода, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
   |
   |УПОРЯДОЧИТЬ ПО
   |    Субконто1,
   |    Подразделение,
   |    Субконто2
   |ИТОГИ
   |    СУММА(СуммаКонечныйОстатокДт),
   |    СУММА(СуммаНУКонечныйОстатокДт)
   |ПО
   |    Субконто1,
   |    Подразделение,
   |    Субконто2";    
   ДвиЖ = Запрос.Выполнить();            
   
   выход=0;
   Стр = 1;
   
   СтрокаТЗ =ТЗ1.Найти(стр);
   Сумма = СтрокаТЗ.Сч26;
   СуммаНУ = СтрокаТЗ.Сч26НУ;   // НУ
   
   Если Выход = 0 Тогда
       ВыбПоСтатьеЗатрат= ДвиЖ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Субконто1");
       Пока ВыбПоСтатьеЗатрат.Следующий() цикл
           Если Выход > 0 Тогда
               Прервать;
           КонецЕсли;
           ВыбПоПодразделению= ВыбПоСтатьеЗатрат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Подразделение");
           Пока ВыбПоПодразделению.Следующий() цикл
               Если Выход > 0 Тогда
                   Прервать;
               КонецЕсли;
               ВыбПоПоВидамРабот= ВыбПоПодразделению.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Субконто2");
               Пока ВыбПоПоВидамРабот.Следующий() Цикл
                   сальдо=ВыбПоПоВидамРабот.СуммаКонечныйОстатокДт;  
                   сальдоНУ = ВыбПоПоВидамРабот.СуммаНУКонечныйОстатокДт;       // НУ
                   Пока (сальдо>0) Цикл    // НУ
                       
                       НовЗапис = Движения.Хозрасчетный;    
                       НовЗапись = НовЗапис.Добавить();
                       НовЗапись.Период      = КонецДня(КонПериода);
                       НовЗапись.Организация = Организация;
                       
                       НовЗапись.СчетДт = ПланыСчетов.Хозрасчетный.Продажи_УправленческиеРасходыНеЕНВД;
                       
                       БухгалтерскийУчет.УстановитьСубконто(НовЗапись.СчетДт, НовЗапись.СубконтоДт,"НоменклатурныеГруппы",ТЗ1.Найти(стр).ВидНоменклатуры);
                       
                       // проводка по кредиту
                       НовЗапись.СчетКт = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы;
                       БухгалтерскийУчет.УстановитьСубконто(НовЗапись.СчетКт, НовЗапись.СубконтоКт, "СтатьиЗатрат",ВыбПоСтатьеЗатрат.Субконто1);
                       БухгалтерскийУчет.УстановитьСубконто(НовЗапись.СчетКт, НовЗапись.СубконтоКт, "ВидыРабот", ВыбПоПоВидамРабот.Субконто2);
                       БухгалтерскийУчет.УстановитьПодразделенияПроводки(НовЗапись,ВыбПоПодразделению.Подразделение , ВыбПоПодразделению.Подразделение);
                       
                       
                       НовЗапись.Сумма = Мин(Сальдо,Сумма);
                       НовЗапись.СуммаНУКт = Мин(сальдоНУ,СуммаНУ);   // НУ
                       
                       Сальдо = Сальдо - НовЗапись.Сумма;
                       сальдоНУ = сальдоНУ - НовЗапись.СуммаНУКт ;// НУ
                       
                       Сумма = Сумма - НовЗапись.Сумма;
                       СуммаНУ = СуммаНУ - НовЗапись.СуммаНУКт; // НУ
                       
                       Если (Сумма=0) и (СуммаНУ=0) Тогда    // НУ
                           Стр=Стр+1;
                           Если Стр > ТЗ1.Количество() Тогда
                               выход=1;
                               прервать;
                           Иначе
                               Сумма=ТЗ1.Найти(стр).Сч26;
                               СуммаНУ = ТЗ1.Найти(стр).Сч26НУ; // НУ
                           КонецЕсли;
                       КонецЕсли;
                   Конеццикла;
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;
   КонецЕсли;
   
КонецПроцедуры
21 ОбычныйЧеловек
 
06.02.12
23:10
(20) сделай так
НовЗапис=Движения.Хозрасчетный;
НовЗапис.Прочитать();
22 hhhh
 
06.02.12
23:31
(20) а вот это что за бред? Почему конец дня?
23 hhhh
 
06.02.12
23:31
Запрос.УстановитьПараметр("ДатаПериода",КонецДня(КонПериода));
24 Aleksei_Pro
 
06.02.12
23:39
(21) не правильно, он при каждом проведении 1 строку добавляет...
25 ОбычныйЧеловек
 
06.02.12
23:41
(24) так ты вынеси за цикл разумеется этот код
26 Aleksei_Pro
 
06.02.12
23:41
(23) ты правв..спасибо